From 52417f7df4d0a075a450e3036afca0900bb57e2c Mon Sep 17 00:00:00 2001 From: Widevine Buildbot Date: Thu, 16 Mar 2017 20:58:57 +0000 Subject: [PATCH] Generate SDK documents for commit 160700b452403897bc3055913912fa8a78f20d15 --- docs/annotated.html | 2 +- docs/classes.html | 2 +- ...ia_1_1mp4_1_1HandlerReference-members.html | 2 +- ..._1_1media_1_1RsaRequestSigner-members.html | 2 +- docs/d0/d06/mpd__flags_8cc_source.html | 2 +- ...ka_1_1media_1_1HttpKeyFetcher-members.html | 2 +- ...oder__configuration__record_8h_source.html | 2 +- docs/d0/d0e/muxer__options_8h_source.html | 62 +- ...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 | 80 +- .../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 | 4 +- ...ia_1_1mp4_1_1MediaInformation-members.html | 2 +- .../structshaka_1_1media_1_1StreamData.html | 2 +- ...haka_1_1media_1_1AudioTimestampHelper.html | 2 +- .../d4e/libcrypto__threading_8cc_source.html | 2 +- ...a_1_1media_1_1mp2t_1_1TsMuxer-members.html | 2 +- ...dia_1_1MpdNotifyMuxerListener-members.html | 2 +- ...classshaka_1_1media_1_1ThreadedIoFile.html | 2 +- ..._1_1StreamDescriptorCompareFn-members.html | 2 +- ...a_1_1media_1_1mp4_1_1VideoSampleEntry.html | 2 +- ...haka_1_1media_1_1mp4_1_1SampleToGroup.html | 2 +- docs/d0/d7d/decryptor__source_8h_source.html | 2 +- ...a_1_1media_1_1AesCbcEncryptor-members.html | 2 +- ...classshaka_1_1media_1_1Status-members.html | 2 +- .../d0/d93/classshaka_1_1media_1_1Status.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Movie.html | 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 | 10 +- ...1_1media_1_1EncryptionHandler-members.html | 2 +- ...classshaka_1_1media_1_1FixedKeySource.html | 2 +- docs/d0/dae/file__util_8h_source.html | 2 +- ...webm_1_1MultiSegmentSegmenter-members.html | 12 +- .../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 | 8 +- docs/d0/df3/packager__util_8cc_source.html | 341 ++--- ...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 | 197 ++- 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 | 57 +- .../d8e/webm__audio__client_8cc_source.html | 2 +- docs/d1/d8f/retired__flags_8h_source.html | 2 +- ...aka_1_1media_1_1H26xBitReader-members.html | 2 +- ...ssshaka_1_1media_1_1ByteQueue-members.html | 2 +- docs/d1/d9d/tracks__builder_8h_source.html | 2 +- ..._1_1mp4_1_1CodecConfiguration-members.html | 2 +- ...assshaka_1_1media_1_1mp4_1_1BoxBuffer.html | 2 +- ...ia_1_1wvm_1_1DemuxStreamIdMediaSample.html | 2 +- ...1NalUnitToByteStreamConverter-members.html | 2 +- ..._1media_1_1VPCodecConfigurationRecord.html | 2 +- ...lassshaka_1_1media_1_1Demuxer-members.html | 2 +- ...a_1_1media_1_1mp4_1_1VideoMediaHeader.html | 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 | 33 +- ...media_1_1mp4_1_1KeyRotationFragmenter.html | 5 +- 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 | 581 ++++----- ...haka_1_1media_1_1BufferWriter-members.html | 2 +- ...assshaka_1_1MockAdaptationSet-members.html | 2 +- docs/d2/dae/webm__muxer_8cc_source.html | 101 +- ...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 | 13 +- docs/d2/dd6/mkv__writer_8h_source.html | 2 +- ...a_1_1media_1_1ChunkingHandler-members.html | 2 +- ...lassshaka_1_1media_1_1WebMMediaParser.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPmt.html | 2 +- docs/d2/de6/packager__main_8cc_source.html | 1102 +++++++++-------- ...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 | 96 +- .../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 | 2 +- docs/d3/d72/fixed__key__source_8h_source.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1WebMMuxer.html | 2 +- .../classshaka_1_1media_1_1AesEncryptor.html | 2 +- ...a_1_1mp4_1_1ChunkInfoIterator-members.html | 2 +- docs/d3/d76/muxer__flags_8h_source.html | 2 +- ...dia_1_1mp4_1_1TextSampleEntry-members.html | 2 +- ...haka_1_1media_1_1RsaPublicKey-members.html | 2 +- ...lassshaka_1_1media_1_1WebMAudioClient.html | 2 +- docs/d3/d80/muxer__util_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1SampleToChunk.html | 2 +- .../structshaka_1_1media_1_1FileCloser.html | 2 +- .../d3/d8d/webm__audio__client_8h_source.html | 2 +- docs/d3/d90/ec3__audio__util_8cc_source.html | 2 +- .../classshaka_1_1media_1_1H264Parser.html | 2 +- docs/d3/d93/media__handler_8h_source.html | 10 +- .../d9c/encryption__handler_8cc_source.html | 4 +- docs/d3/da0/ec3__audio__util_8h_source.html | 2 +- ...dia_1_1webm_1_1SingleSegmentSegmenter.html | 13 +- ...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 | 4 +- ...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 | 12 +- ...edia_1_1mp4_1_1MP4MediaParser-members.html | 2 +- .../d0b/classshaka_1_1media_1_1TextTrack.html | 2 +- ...1_1media_1_1WebVttMediaParser-members.html | 2 +- ...haka_1_1media_1_1mp4_1_1EditListEntry.html | 2 +- ...lassshaka_1_1media_1_1AesCbcEncryptor.html | 2 +- ...ia_1_1mp4_1_1ChunkLargeOffset-members.html | 2 +- ...haka_1_1media_1_1mp4_1_1ID3v2-members.html | 2 +- ...1media_1_1mp4_1_1WebVTTSourceLabelBox.html | 2 +- docs/d4/d37/io__cache_8cc_source.html | 2 +- ...ructshaka_1_1media_1_1H264Sps-members.html | 2 +- ...lassshaka_1_1media_1_1ChunkingHandler.html | 2 +- ...pleAuxiliaryInformationOffset-members.html | 2 +- ...haka_1_1media_1_1H264WeightingFactors.html | 2 +- .../classshaka_1_1media_1_1Nalu-members.html | 2 +- ...assshaka_1_1media_1_1WebMWebVTTParser.html | 2 +- ...aka_1_1media_1_1DecryptConfig-members.html | 2 +- ...lassshaka_1_1media_1_1UdpFile-members.html | 2 +- .../d70/classshaka_1_1DashIopMpdNotifier.html | 2 +- .../structshaka_1_1SegmentInfo-members.html | 2 +- docs/d4/d83/cue_8cc_source.html | 2 +- docs/d4/d87/nalu__reader_8h_source.html | 2 +- ...dia_1_1HEVCDecoderConfigurationRecord.html | 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 | 214 ++-- ...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 | 79 +- ...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 | 4 +- ...ssshaka_1_1media_1_1EncryptionHandler.html | 2 +- ...2multi__segment__segmenter_8cc_source.html | 147 ++- 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 +- ...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 | 224 ++-- 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 | 6 +- .../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 +- ...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 | 4 +- .../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 | 10 +- ...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 | 2 +- ...1media_1_1mp4_1_1DecodingTime-members.html | 2 +- ...1media_1_1mp4_1_1TrackExtends-members.html | 2 +- ...1_1media_1_1mp2t_1_1ContinuityCounter.html | 2 +- ...1mp4_1_1CencSampleEncryptionInfoEntry.html | 2 +- .../de1/classshaka_1_1SimpleMpdNotifier.html | 2 +- .../de6/webm__crypto__helpers_8h_source.html | 2 +- ..._1_1media_1_1mp2t_1_1EsParser-members.html | 2 +- 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 | 149 ++- ...a_1_1media_1_1SegmentTestBase-members.html | 2 +- ...to__byte__stream__converter_8h_source.html | 2 +- ...media_1_1OnMediaEndParameters-members.html | 2 +- ...2single__segment__segmenter_8h_source.html | 2 +- docs/d9/d08/mock__mpd__builder_8h_source.html | 2 +- ...dia_1_1HlsNotifyMuxerListener-members.html | 2 +- .../classshaka_1_1media_1_1RsaPublicKey.html | 2 +- docs/d9/d12/chunking__handler_8cc_source.html | 230 ++-- .../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 | 60 +- ...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 | 64 +- ...aka_1_1media_1_1ClosureThread-members.html | 2 +- docs/d9/d86/limits_8h_source.html | 2 +- ..._1media_1_1WebMContentEncodingsClient.html | 2 +- ...assshaka_1_1media_1_1AesRequestSigner.html | 2 +- ...1ProtectionSystemSpecificInfo-members.html | 2 +- docs/d9/d90/text__track_8h_source.html | 2 +- docs/d9/da4/stream__descriptor_8h_source.html | 2 +- ...ka_1_1media_1_1MpdNotifyMuxerListener.html | 2 +- .../structshaka_1_1media_1_1Cue-members.html | 2 +- ..._1_1media_1_1mp4_1_1Segmenter-members.html | 41 +- ..._1_1CompositionOffsetIterator-members.html | 2 +- ...ntent__protection__element_8cc_source.html | 2 +- docs/d9/db9/muxer_8cc_source.html | 32 +- .../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 | 32 +- docs/da/d24/h265__parser_8h_source.html | 2 +- docs/da/d2a/text__stream__info_8h_source.html | 2 +- ...1_1media_1_1webm_1_1WebMMuxer-members.html | 2 +- ...ia_1_1mp4_1_1PixelAspectRatio-members.html | 2 +- ..._2multi__segment__segmenter_8h_source.html | 2 +- ...ructshaka_1_1ContentProtectionElement.html | 2 +- ...lassshaka_1_1media_1_1AudioStreamInfo.html | 2 +- ...1_1media_1_1mp4_1_1MovieExtendsHeader.html | 2 +- docs/da/d53/es__parser__h265_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1CompactSampleSize.html | 2 +- .../d5c/widevine__key__source_8h_source.html | 2 +- ...1_1H264VideoSliceHeaderParser-members.html | 2 +- ...mp4_1_1SingleSegmentSegmenter-members.html | 45 +- ..._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 | 15 +- docs/da/d88/mp4__muxer_8cc_source.html | 461 +++---- ...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 | 130 +- ..._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 | 4 +- ...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 | 2 +- ...to__unit__stream__converter_8h_source.html | 2 +- .../d31/track__run__iterator_8cc_source.html | 2 +- ...1_1mp2t_1_1PesPacketGenerator-members.html | 2 +- ...dia_1_1VideoSliceHeaderParser-members.html | 2 +- ...pd__notify__muxer__listener_8h_source.html | 2 +- .../d4b/classshaka_1_1MockAdaptationSet.html | 2 +- ...a_1_1mp4_1_1CompositionOffsetIterator.html | 2 +- .../db/d51/mp2t__media__parser_8h_source.html | 2 +- ..._single__segment__segmenter_8h_source.html | 2 +- .../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 | 12 +- ..._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 | 74 +- ...classshaka_1_1media_1_1ClusterBuilder.html | 2 +- ...ssshaka_1_1media_1_1mp4_1_1Fragmenter.html | 9 +- ...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 | 57 +- ...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 | 855 ++++++------- ...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 | 12 +- ...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 | 31 +- ...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 | 5 +- ...ebm_1_1SingleSegmentSegmenter-members.html | 12 +- ...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 | 2 +- docs/dd/d18/es__parser__adts_8h_source.html | 2 +- .../d19/video__stream__info_8cc_source.html | 2 +- .../dd/d30/wvm__media__parser_8cc_source.html | 2 +- docs/dd/d3b/mp4_2segmenter_8h_source.html | 129 +- ...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 | 9 +- ...info__dump__muxer__listener_8h_source.html | 2 +- docs/dd/dab/webm__muxer_8h_source.html | 32 +- ..._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 | 19 +- ...edia_1_1mp4_1_1OriginalFormat-members.html | 2 +- docs/dd/dce/structshaka_1_1media_1_1Cue.html | 2 +- docs/dd/dd2/buffer__writer_8h_source.html | 2 +- docs/dd/dd3/buffer__writer_8cc_source.html | 2 +- ...a_1_1media_1_1WebMVideoClient-members.html | 2 +- .../dd8/mock__muxer__listener_8cc_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1Box-members.html | 2 +- ...ka_1_1media_1_1VideoSliceHeaderParser.html | 2 +- ...ructshaka_1_1media_1_1H265Pps-members.html | 2 +- docs/dd/de7/xml__node_8h_source.html | 2 +- ...haka_1_1media_1_1MediaHandler-members.html | 2 +- docs/dd/dee/box__definitions_8cc_source.html | 2 +- ..._2multi__segment__segmenter_8h_source.html | 35 +- ...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 +- ...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 | 6 +- .../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 | 2 +- ..._1_1mp4_1_1SampleToGroupEntry-members.html | 2 +- docs/de/d6e/language__utils_8h_source.html | 2 +- .../de/d70/http__key__fetcher_8cc_source.html | 2 +- ...content__encodings__client_8cc_source.html | 2 +- docs/de/d7b/mp4__media__parser_8h_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPsi.html | 2 +- ...ox__definitions__comparison_8h_source.html | 2 +- ...ssshaka_1_1media_1_1LocalFile-members.html | 2 +- ...edia_1_1wvm_1_1PrevSampleData-members.html | 2 +- ...1_1mp4_1_1MovieFragmentHeader-members.html | 2 +- ...ssshaka_1_1media_1_1VP8Parser-members.html | 2 +- docs/de/da9/structshaka_1_1Element.html | 2 +- docs/de/dab/es__parser__h26x_8cc_source.html | 2 +- docs/de/dad/validate__flag_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1TextTrackConfig.html | 2 +- .../classshaka_1_1media_1_1H26xBitReader.html | 2 +- docs/de/dbf/udp__options_8h_source.html | 2 +- docs/de/dc1/demuxer_8h_source.html | 2 +- .../classshaka_1_1media_1_1H265Parser.html | 2 +- ..._1mp4_1_1DecodingTimeToSample-members.html | 2 +- docs/de/dcb/ts__segmenter_8h_source.html | 90 +- .../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 | 80 +- .../classshaka_1_1media_1_1Muxer-members.html | 2 +- ...aka_1_1media_1_1WebVttSampleConverter.html | 2 +- ...shaka_1_1media_1_1mp2t_1_1TsSegmenter.html | 42 +- ..._1_1media_1_1mp4_1_1MediaData-members.html | 2 +- ..._1media_1_1DecoderConfigurationRecord.html | 2 +- ...a_1_1media_1_1mp4_1_1MP4Muxer-members.html | 2 +- .../de4/structshaka_1_1media_1_1H264Pps.html | 2 +- ...edia_1_1H26xByteToUnitStreamConverter.html | 2 +- ...1media_1_1mp4_1_1DecodingTimeToSample.html | 2 +- ...a_1_1media_1_1mp4_1_1TrackRunIterator.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1Encryptor.html | 2 +- docs/de/dfa/muxer__listener_8h_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1OpusSpecific.html | 2 +- docs/de/dfd/stream__info_8cc_source.html | 2 +- .../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 | 2 +- ...ka_1_1media_1_1ThreadedIoFile-members.html | 2 +- ...t_1_1AacProgramMapTableWriter-members.html | 2 +- ...aka_1_1media_1_1RsaPrivateKey-members.html | 2 +- ..._1mp4_1_1EncryptingFragmenter-members.html | 53 +- 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 | 45 +- 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 | 187 +-- docs/df/dde/ts__section__psi_8cc_source.html | 2 +- ...haka_1_1media_1_1H264SEIRecoveryPoint.html | 2 +- .../de3/text__track__config_8cc_source.html | 2 +- docs/df/de9/segment__info_8h_source.html | 2 +- ...a_1_1ContentProtectionElement-members.html | 2 +- ...sshaka_1_1media_1_1UdpOptions-members.html | 2 +- ...dy__key__encryption__flags_8cc_source.html | 2 +- .../dir_0494b8c96e3190a776d2b97ade9c8ddf.html | 2 +- .../dir_2618cd273dea54f184e42d7a562af818.html | 2 +- .../dir_279fd47bebb21302c25cfb685e84c359.html | 2 +- .../dir_2eceb70145328c029a5f43350007537a.html | 2 +- .../dir_39dc0668bd5a501998f94e8b4e546c71.html | 2 +- .../dir_3e9291fd7a18fdecc763294cb2628910.html | 2 +- .../dir_49627ef5ef0630f6cf11dd06344c4cf0.html | 2 +- .../dir_5039d854a18988ed1f1dbebc120ffbf7.html | 2 +- .../dir_65f7acfa8cf3a5f1edc11faa2428b914.html | 2 +- .../dir_679a6f4e9fa092b388fc986148018f2a.html | 2 +- .../dir_7f5e01ba7faf319a30cabd201b6ef121.html | 2 +- .../dir_89dd766eb2df7d7257dbe806a34404af.html | 2 +- .../dir_aa73376d632f252584a1c0dfbefab2c4.html | 2 +- .../dir_b0da65f92a9541ef8f345654d4bd88fd.html | 2 +- .../dir_ba94ecd487194410fd7c4b70c530929c.html | 2 +- .../dir_c6ada2450b25ab5438a4dba6c9b890af.html | 2 +- .../dir_d422163b96683743ed3963d4aac17747.html | 2 +- .../dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html | 2 +- .../dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html | 2 +- docs/files.html | 2 +- docs/functions.html | 4 +- docs/functions_b.html | 2 +- docs/functions_c.html | 2 +- docs/functions_d.html | 2 +- docs/functions_e.html | 2 +- docs/functions_enum.html | 2 +- docs/functions_eval.html | 2 +- docs/functions_f.html | 15 +- docs/functions_func.html | 4 +- docs/functions_func_b.html | 2 +- docs/functions_func_c.html | 2 +- docs/functions_func_d.html | 2 +- docs/functions_func_e.html | 2 +- docs/functions_func_f.html | 9 +- docs/functions_func_g.html | 2 +- docs/functions_func_h.html | 2 +- docs/functions_func_i.html | 2 +- docs/functions_func_k.html | 2 +- docs/functions_func_l.html | 2 +- docs/functions_func_m.html | 2 +- docs/functions_func_n.html | 2 +- docs/functions_func_o.html | 2 +- docs/functions_func_p.html | 2 +- docs/functions_func_r.html | 2 +- docs/functions_func_s.html | 2 +- docs/functions_func_t.html | 2 +- docs/functions_func_u.html | 2 +- docs/functions_func_v.html | 2 +- docs/functions_func_w.html | 2 +- docs/functions_func_x.html | 2 +- docs/functions_func_~.html | 2 +- docs/functions_g.html | 2 +- docs/functions_h.html | 2 +- docs/functions_i.html | 2 +- docs/functions_k.html | 2 +- docs/functions_l.html | 2 +- docs/functions_m.html | 2 +- docs/functions_n.html | 2 +- docs/functions_o.html | 2 +- docs/functions_p.html | 2 +- docs/functions_r.html | 2 +- docs/functions_s.html | 6 +- docs/functions_t.html | 2 +- docs/functions_type.html | 2 +- docs/functions_u.html | 2 +- docs/functions_v.html | 2 +- docs/functions_vars.html | 12 +- docs/functions_w.html | 2 +- docs/functions_x.html | 2 +- docs/functions_~.html | 2 +- docs/hierarchy.html | 2 +- docs/index.html | 2 +- docs/namespacemembers.html | 2 +- docs/namespacemembers_func.html | 2 +- docs/namespaces.html | 2 +- docs/search/all_0.js | 2 +- docs/search/all_10.js | 5 +- docs/search/all_5.js | 4 +- docs/search/functions_0.js | 2 +- docs/search/functions_5.js | 2 +- docs/search/search.js | 2 +- docs/search/variables_2.js | 5 +- docs/search/variables_3.js | 7 +- docs/search/variables_4.js | 5 +- docs/search/variables_5.js | 2 +- docs/search/variables_6.js | 3 +- docs/search/variables_7.js | 8 +- docs/search/variables_8.js | 8 +- docs/search/variables_9.html | 26 - docs/search/variables_9.js | 4 - 1002 files changed, 4194 insertions(+), 4269 deletions(-) delete mode 100644 docs/search/variables_9.html delete mode 100644 docs/search/variables_9.js diff --git a/docs/annotated.html b/docs/annotated.html index 9f1e3818de..dd4e1b8f75 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -385,7 +385,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index 750c38cd58..cd3e8bf94e 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/d0/d00/structshaka_1_1media_1_1mp4_1_1HandlerReference-members.html b/docs/d0/d00/structshaka_1_1media_1_1mp4_1_1HandlerReference-members.html index 4299f32fc2..5b6d1780c5 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 3a5225f1f2..d4b7014ddb 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 dd4935f75c..59ca7df286 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 5c17a2910e..db8c1e64ee 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 1bf1f8ac0e..75862ad3e2 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 edc82ddcc1..f0df981936 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -107,49 +107,37 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
19  MuxerOptions();
20  ~MuxerOptions();
21 
-
26  double segment_duration = 0;
-
27 
-
30  double fragment_duration = 0;
-
31 
-
34  bool segment_sap_aligned = false;
+
27  int num_subsegments_per_sidx = 0;
+
28 
+
34  bool mp4_use_decoding_timestamp_in_timeline = false;
35 
-
39  bool fragment_sap_aligned = false;
+
39  std::string output_file_name;
40 
-
46  int num_subsegments_per_sidx = 0;
-
47 
-
53  bool mp4_use_decoding_timestamp_in_timeline = false;
-
54 
-
58  std::string output_file_name;
-
59 
-
64  std::string segment_template;
-
65 
-
67  std::string temp_dir;
-
68 
-
71  uint32_t bandwidth = 0;
-
72 
-
73  // Enable/disable subsample encryption for WebM containers.
-
74  bool webm_subsample_encryption = true;
-
75 };
-
76 
-
77 } // namespace media
-
78 } // namespace shaka
-
79 
-
80 #endif // MEDIA_BASE_MUXER_OPTIONS_H_
-
bool fragment_sap_aligned
Definition: muxer_options.h:39
-
std::string output_file_name
Definition: muxer_options.h:58
-
bool mp4_use_decoding_timestamp_in_timeline
Definition: muxer_options.h:53
-
bool segment_sap_aligned
Definition: muxer_options.h:34
+
45  std::string segment_template;
+
46 
+
48  std::string temp_dir;
+
49 
+
52  uint32_t bandwidth = 0;
+
53 
+
54  // Enable/disable subsample encryption for WebM containers.
+
55  bool webm_subsample_encryption = true;
+
56 };
+
57 
+
58 } // namespace media
+
59 } // namespace shaka
+
60 
+
61 #endif // MEDIA_BASE_MUXER_OPTIONS_H_
+
std::string output_file_name
Definition: muxer_options.h:39
+
bool mp4_use_decoding_timestamp_in_timeline
Definition: muxer_options.h:34
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
int num_subsegments_per_sidx
Definition: muxer_options.h:46
-
double fragment_duration
Definition: muxer_options.h:30
-
std::string temp_dir
Specify temporary directory for intermediate files.
Definition: muxer_options.h:67
-
double segment_duration
Definition: muxer_options.h:26
-
uint32_t bandwidth
Definition: muxer_options.h:71
-
std::string segment_template
Definition: muxer_options.h:64
+
int num_subsegments_per_sidx
Definition: muxer_options.h:27
+
std::string temp_dir
Specify temporary directory for intermediate files.
Definition: muxer_options.h:48
+
uint32_t bandwidth
Definition: muxer_options.h:52
+
std::string segment_template
Definition: muxer_options.h:45
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 b630d90e14..c62b1c5d58 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 48351bed73..c1d758bfa6 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 d3ee0179b3..2a139b00f4 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 92355d3693..57dfb44d2a 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 236053fda4..82e5931245 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 80493a1d66..a12a1e5dad 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 269406326b..e9166c2dc2 100644 --- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html +++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html @@ -101,14 +101,6 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - - - - - - - @@ -143,37 +135,7 @@ bool  diff --git a/docs/d0/d35/es__descriptor_8cc_source.html b/docs/d0/d35/es__descriptor_8cc_source.html index 45b337ed52..4311f6457f 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 3460b44b92..aa990a0cce 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 8bb7d26d6b..bbe72ee794 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 58f7e7d035..aee8256c9b 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 5655c5ba8e..dd96bd1d93 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 c3c32fa766..1ed25ffe7e 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 e3ad44879b..f6616c28c8 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 b4f1eb421d..19075cb5fa 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');

Public Attributes

double segment_duration = 0
 
double fragment_duration = 0
 
bool segment_sap_aligned = false
 
bool fragment_sap_aligned = false
 
int num_subsegments_per_sidx = 0
 
bool mp4_use_decoding_timestamp_in_timeline = false
webm_subsample_encryp

User-specified bit rate for the media stream. If zero, the muxer will attempt to estimate.

-

Definition at line 71 of file muxer_options.h.

- -
- - -
-
- - - - -
double shaka::media::MuxerOptions::fragment_duration = 0
-
-

Fragment duration in seconds. Should not be larger than the segment duration.

- -

Definition at line 30 of file muxer_options.h.

- -
-
- -
-
- - - - -
bool shaka::media::MuxerOptions::fragment_sap_aligned = false
-
-

Force fragments to begin with stream access points. Fragment duration may not be exactly what specified by segment_duration. Setting to true implies that segment_sap_aligned is true as well.

- -

Definition at line 39 of file muxer_options.h.

+

Definition at line 52 of file muxer_options.h.

@@ -188,7 +150,7 @@ bool 
webm_subsample_encryp

For ISO BMFF only. Set the flag use_decoding_timestamp_in_timeline, which if set to true, use decoding timestamp instead of presentation timestamp in media timeline, which is needed to workaround a Chromium bug that decoding timestamp is used in buffered range, https://crbug.com/398130.

-

Definition at line 53 of file muxer_options.h.

+

Definition at line 34 of file muxer_options.h.

@@ -203,7 +165,7 @@ bool 
webm_subsample_encryp

For ISO BMFF only. Set the number of subsegments in each SIDX box. If 0, a single SIDX box is used per segment. If -1, no SIDX box is used. Otherwise, the Muxer will pack N subsegments in the root SIDX of the segment, with segment_duration/N/fragment_duration fragments per subsegment.

-

Definition at line 46 of file muxer_options.h.

+

Definition at line 27 of file muxer_options.h.

@@ -218,37 +180,7 @@ bool 
webm_subsample_encryp

Output file name. If segment_template is not specified, the Muxer generates this single output file with all segments concatenated; Otherwise, it specifies the init segment name.

-

Definition at line 58 of file muxer_options.h.

- -
- - -
-
- - - - -
double shaka::media::MuxerOptions::segment_duration = 0
-
-

Segment duration in seconds. If single_segment is specified, this parameter sets the duration of a subsegment; otherwise, this parameter sets the duration of a segment. A segment can contain one or many fragments.

- -

Definition at line 26 of file muxer_options.h.

- -
-
- -
-
- - - - -
bool shaka::media::MuxerOptions::segment_sap_aligned = false
-
-

Force segments to begin with stream access points. Segment duration may not be exactly what specified by segment_duration.

- -

Definition at line 34 of file muxer_options.h.

+

Definition at line 39 of file muxer_options.h.

@@ -263,7 +195,7 @@ bool 
webm_subsample_encryp

Specify output segment name pattern for generated segments. It can furthermore be configured by using a subset of the SegmentTemplate identifiers: $RepresentationID$, $Number$, $Bandwidth$ and $Time. Optional.

-

Definition at line 64 of file muxer_options.h.

+

Definition at line 45 of file muxer_options.h.

@@ -274,7 +206,7 @@ bool 
webm_subsample_encryp diff --git a/docs/d0/d30/mock__mpd__notifier_8h_source.html b/docs/d0/d30/mock__mpd__notifier_8h_source.html index 3761d5da19..297af53420 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 ede25e5901..f72b3c4dd7 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 50725e253e..9916699023 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/d49/vod__media__info__dump__muxer__listener_8cc_source.html b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html index f4a95362b2..b81c0c0acb 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 @@ -233,11 +233,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
static bool WriteMediaInfoToFile(const MediaInfo &media_info, const std::string &output_file_path)
void OnEncryptionInfoReady(bool is_initial_encryption_info, FourCC protection_scheme, const std::vector< uint8_t > &default_key_id, const std::vector< uint8_t > &iv, const std::vector< ProtectionSystemSpecificInfo > &key_system_info) override
void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size) override
-
std::string segment_template
Definition: muxer_options.h:64
+
std::string segment_template
Definition: muxer_options.h:45
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 9236e785ba..3724a44785 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 0cb330afe5..a6efbc47fa 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 80ba428acc..8e3639be1b 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 477d844ed0..bf5ee3b21b 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 e936b5a53f..19da85f0c8 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 @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html b/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html index 92ef12b30d..7ae46556f1 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 6e4ead9c8c..30a3e39afe 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 7cb1e923c5..d31cce6d57 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 61f2b31644..ad51c6d9a4 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 09ca16eff6..f358cbd57c 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 809029d53e..20e93cd0b6 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 bb52929125..1ddec8f989 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 0ff94b613f..89f76d0af7 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 3ad6c00e94..b58bd47c49 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 14b0d0e943..7f82c72772 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 a6ac89c965..3a37ac0253 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 bd07c21216..1f50ca9e60 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 12fdc55da3..c73863ef5e 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 2853f67529..5207a61d9a 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 8c3c962eaf..6d94695d82 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 @@ -123,8 +123,10 @@ Public Member Functions   Status Finalize ()   -Status AddSample (const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample) -  +Status AddSample (int stream_id, std::shared_ptr< MediaSample > sample) +  +Status FinalizeSegment (int stream_id, bool is_subsegment) +  uint32_t GetReferenceTimeScale () const   @@ -170,7 +172,7 @@ void set_progress_target 

Detailed Description

-

Segmenter for MP4 Dash Video-On-Demand profile. A single MP4 file with a single segment is created, i.e. with only one SIDX box. The generated media file can contain one or many subsegments with subsegment duration defined by MuxerOptions.segment_duration. A subsegment can contain one or many fragments with fragment duration defined by MuxerOptions.fragment_duration. The actual subsegment or fragment duration may not match the requested duration exactly, but will be approximated. That is, the Segmenter tries to end subsegment/fragment at the first sample with overall subsegment/fragment duration not smaller than defined duration and yet meet SAP requirements. SingleSegmentSegmenter ignores MuxerOptions.num_subsegments_per_sidx.

+

Segmenter for MP4 Dash Video-On-Demand profile. A single MP4 file with a single segment is created, i.e. with only one SIDX box. The generated media file can contain one or many subsegments with subsegment duration defined by MuxerOptions.segment_duration. A subsegment can contain one or many fragments with fragment duration defined by MuxerOptions.fragment_duration. The actual subsegment or fragment duration may not match the requested duration exactly, but will be approximated. That is, the Segmenter tries to end subsegment/fragment at the first sample with overall subsegment/fragment duration not smaller than defined duration and yet meet SAP requirements. SingleSegmentSegmenter ignores MuxerOptions.num_subsegments_per_sidx.

Definition at line 28 of file single_segment_segmenter.h.

Member Function Documentation

@@ -259,7 +261,7 @@ void set_progress_target diff --git a/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html b/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html index 5ce7dbd5a2..27fce60417 100644 --- a/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html +++ b/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html index cd47f0dea0..f66a9bf6ff 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 e5e281d9dc..8cf787f30d 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 16d57a6e4f..4ef7b90793 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 @@ -95,11 +95,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - - - - + + + + + @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
AddSample(std::shared_ptr< MediaSample > sample)shaka::media::webm::Segmenter
cluster() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
cluster_length_in_time_scale() const (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
cues() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
DoFinalize() override (defined in shaka::media::webm::MultiSegmentSegmenter)shaka::media::webm::MultiSegmentSegmenterprotectedvirtual
DoInitialize(std::unique_ptr< MkvWriter > writer) override (defined in shaka::media::webm::MultiSegmentSegmenter)shaka::media::webm::MultiSegmentSegmenterprotectedvirtual
Finalize()shaka::media::webm::Segmenter
cues() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
DoFinalize() override (defined in shaka::media::webm::MultiSegmentSegmenter)shaka::media::webm::MultiSegmentSegmenterprotectedvirtual
DoInitialize(std::unique_ptr< MkvWriter > writer) override (defined in shaka::media::webm::MultiSegmentSegmenter)shaka::media::webm::MultiSegmentSegmenterprotectedvirtual
Finalize()shaka::media::webm::Segmenter
FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment) overrideshaka::media::webm::MultiSegmentSegmentervirtual
FromBMFFTimescale(uint64_t time_timescale)shaka::media::webm::Segmenterprotected
FromWebMTimecode(uint64_t time_webm_timecode)shaka::media::webm::Segmenterprotected
GetDuration() const shaka::media::webm::Segmenter
diff --git a/docs/d0/dc0/structshaka_1_1media_1_1SegmentInfo.html b/docs/d0/dc0/structshaka_1_1media_1_1SegmentInfo.html index 475e178f39..d0c3bc5564 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 3defc17c2c..e0e1ed1512 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 897744c81f..40a6de24eb 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 b398d7aaaf..06d8e07cbb 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 f167a3c534..4799c907a7 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 84147399a4..64eab942db 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 c9a37d1f55..b093210d9e 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 55325e885e..45d8c9a560 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 11d3cffa5e..2ab531728c 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -201,10 +201,10 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
118 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_TEST_UTILS_H_
Abstract class holds stream information.
Definition: stream_info.h:58
-
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
- +
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
+
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
std::string OutputFileName() const
Gets the file name of the current output file.
+
std::string OutputFileName() const
Gets the file name of the current output file.
std::shared_ptr< MediaSample > CreateSample(KeyFrameFlag key_frame_flag, uint64_t duration, SideDataFlag side_data_flag)
Creates a new media sample.
An implementation of IMkvWriter using our File type.
Definition: mkv_writer.h:21
void CreateAndInitializeSegmenter(const MuxerOptions &options, StreamInfo *info, KeySource *key_source, std::unique_ptr< webm::Segmenter > *result) const
Creates a Segmenter of the given type and initializes it.
@@ -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 b5428bf116..a915a3e0d6 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -110,184 +110,187 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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 std::unique_ptr<RequestSigner> CreateSigner() {
-
39  std::unique_ptr<RequestSigner> signer;
-
40 
-
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
+
24 #include "packager/media/chunking/chunking_handler.h"
+
25 #include "packager/media/file/file.h"
+
26 #include "packager/mpd/base/mpd_options.h"
+
27 
+
28 DEFINE_bool(mp4_use_decoding_timestamp_in_timeline,
+
29  false,
+
30  "If set, decoding timestamp instead of presentation timestamp will "
+
31  "be used when generating media timeline, e.g. timestamps in sidx "
+
32  "and mpd. This is to workaround a Chromium bug that decoding "
+
33  "timestamp is used in buffered range, https://crbug.com/398130.");
+
34 DEFINE_bool(dump_stream_info, false, "Dump demuxed stream info.");
+
35 
+
36 namespace shaka {
+
37 namespace media {
+
38 
+
39 std::unique_ptr<RequestSigner> CreateSigner() {
+
40  std::unique_ptr<RequestSigner> signer;
+
41 
+
42  if (!FLAGS_aes_signing_key.empty()) {
+
43  signer.reset(AesRequestSigner::CreateSigner(
+
44  FLAGS_signer, FLAGS_aes_signing_key, FLAGS_aes_signing_iv));
+
45  if (!signer) {
+
46  LOG(ERROR) << "Cannot create an AES signer object from '"
+
47  << FLAGS_aes_signing_key << "':'" << FLAGS_aes_signing_iv
+
48  << "'.";
+
49  return std::unique_ptr<RequestSigner>();
+
50  }
+
51  } else if (!FLAGS_rsa_signing_key_path.empty()) {
+
52  std::string rsa_private_key;
+
53  if (!File::ReadFileToString(FLAGS_rsa_signing_key_path.c_str(),
+
54  &rsa_private_key)) {
+
55  LOG(ERROR) << "Failed to read from '" << FLAGS_rsa_signing_key_path
+
56  << "'.";
+
57  return std::unique_ptr<RequestSigner>();
+
58  }
+
59  signer.reset(RsaRequestSigner::CreateSigner(FLAGS_signer, rsa_private_key));
+
60  if (!signer) {
+
61  LOG(ERROR) << "Cannot create a RSA signer object from '"
+
62  << FLAGS_rsa_signing_key_path << "'.";
+
63  return std::unique_ptr<RequestSigner>();
+
64  }
+
65  }
+
66  return signer;
+
67 }
+
68 
+
69 std::unique_ptr<KeySource> CreateEncryptionKeySource() {
+
70  std::unique_ptr<KeySource> encryption_key_source;
+
71  if (FLAGS_enable_widevine_encryption) {
+
72  std::unique_ptr<WidevineKeySource> widevine_key_source(
+
73  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
+
74  if (!FLAGS_signer.empty()) {
+
75  std::unique_ptr<RequestSigner> request_signer(CreateSigner());
+
76  if (!request_signer)
+
77  return std::unique_ptr<KeySource>();
+
78  widevine_key_source->set_signer(std::move(request_signer));
+
79  }
+
80 
+
81  std::vector<uint8_t> content_id;
+
82  if (!base::HexStringToBytes(FLAGS_content_id, &content_id)) {
+
83  LOG(ERROR) << "Invalid content_id hex string specified.";
+
84  return std::unique_ptr<KeySource>();
+
85  }
+
86  Status status = widevine_key_source->FetchKeys(content_id, FLAGS_policy);
+
87  if (!status.ok()) {
+
88  LOG(ERROR) << "Widevine encryption key source failed to fetch keys: "
+
89  << status.ToString();
+
90  return std::unique_ptr<KeySource>();
+
91  }
+
92  encryption_key_source = std::move(widevine_key_source);
+
93  } else if (FLAGS_enable_fixed_key_encryption) {
+
94  encryption_key_source = FixedKeySource::CreateFromHexStrings(
+
95  FLAGS_key_id, FLAGS_key, FLAGS_pssh, FLAGS_iv);
+
96  } else if (FLAGS_enable_playready_encryption) {
+
97  if (!FLAGS_playready_key_id.empty() && !FLAGS_playready_key.empty()) {
+
98  encryption_key_source = PlayReadyKeySource::CreateFromKeyAndKeyId(
+
99  FLAGS_playready_key_id, FLAGS_playready_key);
+
100  } else if (!FLAGS_playready_server_url.empty() &&
+
101  !FLAGS_program_identifier.empty()) {
+
102  std::unique_ptr<PlayReadyKeySource> playready_key_source;
+
103  if (!FLAGS_client_cert_file.empty() &&
+
104  !FLAGS_client_cert_private_key_file.empty() &&
+
105  !FLAGS_client_cert_private_key_password.empty()) {
+
106  playready_key_source.reset(new PlayReadyKeySource(
+
107  FLAGS_playready_server_url,
+
108  FLAGS_client_cert_file,
+
109  FLAGS_client_cert_private_key_file,
+
110  FLAGS_client_cert_private_key_password));
+
111  } else {
+
112  playready_key_source.reset(new PlayReadyKeySource(
+
113  FLAGS_playready_server_url));
+
114  }
+
115  if (!FLAGS_ca_file.empty()) {
+
116  playready_key_source->SetCaFile(FLAGS_ca_file);
+
117  }
+
118  playready_key_source->FetchKeysWithProgramIdentifier(FLAGS_program_identifier);
+
119  encryption_key_source = std::move(playready_key_source);
+
120  } else {
+
121  LOG(ERROR) << "Error creating PlayReady key source.";
+
122  return std::unique_ptr<KeySource>();
+
123  }
+
124  }
+
125  return encryption_key_source;
+
126 }
+
127 
+
128 std::unique_ptr<KeySource> CreateDecryptionKeySource() {
+
129  std::unique_ptr<KeySource> decryption_key_source;
+
130  if (FLAGS_enable_widevine_decryption) {
+
131  std::unique_ptr<WidevineKeySource> widevine_key_source(
+
132  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
+
133  if (!FLAGS_signer.empty()) {
+
134  std::unique_ptr<RequestSigner> request_signer(CreateSigner());
+
135  if (!request_signer)
+
136  return std::unique_ptr<KeySource>();
+
137  widevine_key_source->set_signer(std::move(request_signer));
+
138  }
+
139 
+
140  decryption_key_source = std::move(widevine_key_source);
+
141  } else if (FLAGS_enable_fixed_key_decryption) {
+
142  const char kNoPssh[] = "";
+
143  const char kNoIv[] = "";
+
144  decryption_key_source = FixedKeySource::CreateFromHexStrings(
+
145  FLAGS_key_id, FLAGS_key, kNoPssh, kNoIv);
+
146  }
+
147  return decryption_key_source;
+
148 }
+
149 
+
150 ChunkingOptions GetChunkingOptions() {
+
151  ChunkingOptions chunking_options;
+
152  chunking_options.segment_duration_in_seconds = FLAGS_segment_duration;
+
153  chunking_options.subsegment_duration_in_seconds = FLAGS_fragment_duration;
+
154  chunking_options.segment_sap_aligned = FLAGS_segment_sap_aligned;
+
155  chunking_options.subsegment_sap_aligned = FLAGS_fragment_sap_aligned;
+
156  return chunking_options;
+
157 }
+
158 
+
159 MuxerOptions GetMuxerOptions() {
+
160  MuxerOptions muxer_options;
+
161  muxer_options.num_subsegments_per_sidx = FLAGS_num_subsegments_per_sidx;
+
162  muxer_options.webm_subsample_encryption = FLAGS_webm_subsample_encryption;
+
163  if (FLAGS_mp4_use_decoding_timestamp_in_timeline) {
+
164  LOG(WARNING) << "Flag --mp4_use_decoding_timestamp_in_timeline is set. "
+
165  "Note that it is a temporary hack to workaround Chromium "
+
166  "bug https://crbug.com/398130. The flag may be removed "
+
167  "when the Chromium bug is fixed.";
+
168  }
+
169  muxer_options.mp4_use_decoding_timestamp_in_timeline =
+
170  FLAGS_mp4_use_decoding_timestamp_in_timeline;
+
171  muxer_options.temp_dir = FLAGS_temp_dir;
+
172  return muxer_options;
+
173 }
+
174 
+
175 MpdOptions GetMpdOptions(bool on_demand_profile) {
+
176  MpdOptions mpd_options;
+
177  mpd_options.dash_profile =
+
178  on_demand_profile ? DashProfile::kOnDemand : DashProfile::kLive;
+
179  mpd_options.mpd_type = (on_demand_profile || FLAGS_generate_static_mpd)
+
180  ? MpdType::kStatic
+
181  : MpdType::kDynamic;
+
182  mpd_options.availability_time_offset = FLAGS_availability_time_offset;
+
183  mpd_options.minimum_update_period = FLAGS_minimum_update_period;
+
184  mpd_options.min_buffer_time = FLAGS_min_buffer_time;
+
185  mpd_options.time_shift_buffer_depth = FLAGS_time_shift_buffer_depth;
+
186  mpd_options.suggested_presentation_delay = FLAGS_suggested_presentation_delay;
+
187  mpd_options.default_language = FLAGS_default_language;
+
188  return mpd_options;
+
189 }
+
190 
+
191 } // namespace media
+
192 } // 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)
void SetCaFile(const std::string &ca_file)
Sets the Certificate Authority file for validating self-signed certificates.
+ +
double segment_duration_in_seconds
Segment duration in seconds.
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:185
static std::unique_ptr< PlayReadyKeySource > CreateFromKeyAndKeyId(const std::string &key_id_hex, const std::string &key_hex)
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 9aa3b154b9..572625d12c 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 6e99b2102a..99037b35dd 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 7e0126c636..23150e64ef 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 85e8c6750f..3b3cca7487 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 62b9568a80..d14aa7330f 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 7acf983c6f..247d9e42eb 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 a554cc16c7..bde99ac3ee 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 @@ -176,106 +176,103 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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  }
+
90  const uint64_t header_size = init_end() + 1;
+
91  const uint64_t cues_pos = header_size - segment_payload_pos();
+
92  const uint64_t cues_size = UpdateCues(cues());
+
93  seek_head()->set_cues_pos(cues_pos);
+
94  seek_head()->set_cluster_pos(cues_pos + cues_size);
+
95 
+
96  // Write the header to the real output file.
+
97  const uint64_t file_size = writer()->Position() + cues_size;
+
98  Status temp = WriteSegmentHeader(file_size, real_writer_.get());
+
99  if (!temp.ok())
+
100  return temp;
+
101  DCHECK_EQ(real_writer_->Position(), static_cast<int64_t>(header_size));
+
102 
+
103  // Write the cues to the real output file.
+
104  set_index_start(real_writer_->Position());
+
105  if (!cues()->Write(real_writer_.get()))
+
106  return Status(error::FILE_FAILURE, "Error writing Cues data.");
+
107  set_index_end(real_writer_->Position() - 1);
+
108  DCHECK_EQ(real_writer_->Position(),
+
109  static_cast<int64_t>(segment_payload_pos() + cues_pos + cues_size));
+
110 
+
111  // Close the temp file and open it for reading.
+
112  set_writer(std::unique_ptr<MkvWriter>());
+
113  std::unique_ptr<File, FileCloser> temp_reader(
+
114  File::Open(temp_file_name_.c_str(), "r"));
+
115  if (!temp_reader)
+
116  return Status(error::FILE_FAILURE, "Error opening temp file.");
+
117 
+
118  // Skip the header that has already been written.
+
119  if (!ReadSkip(temp_reader.get(), header_size))
+
120  return Status(error::FILE_FAILURE, "Error reading temp file.");
+
121 
+
122  // Copy the rest of the data over.
+
123  if (!CopyFileWithClusterRewrite(temp_reader.get(), real_writer_.get(),
+
124  cluster()->Size())) {
+
125  return Status(error::FILE_FAILURE, "Error copying temp file.");
+
126  }
+
127 
+
128  // Close and delete the temp file.
+
129  temp_reader.reset();
+
130  if (!File::Delete(temp_file_name_.c_str())) {
+
131  LOG(WARNING) << "Unable to delete temporary file " << temp_file_name_;
+
132  }
+
133 
+
134  return real_writer_->Close();
+
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
+
137 bool TwoPassSingleSegmentSegmenter::CopyFileWithClusterRewrite(
+
138  File* source,
+
139  MkvWriter* dest,
+
140  uint64_t last_size) {
+
141  const int cluster_id_size = mkvmuxer::GetUIntSize(mkvmuxer::kMkvCluster);
+
142  const int cluster_size_size = 8; // The size of the Cluster size integer.
+
143  const int cluster_header_size = cluster_id_size + cluster_size_size;
+
144 
+
145  // We are at the start of a cluster, so copy the ID.
+
146  if (dest->WriteFromFile(source, cluster_id_size) != cluster_id_size)
+
147  return false;
+
148 
+
149  for (int i = 0; i < cues()->cue_entries_size() - 1; ++i) {
+
150  // Write the size of the cluster.
+
151  const mkvmuxer::CuePoint* cue = cues()->GetCueByIndex(i);
+
152  const mkvmuxer::CuePoint* next_cue = cues()->GetCueByIndex(i + 1);
+
153  const int64_t cluster_payload_size =
+
154  next_cue->cluster_pos() - cue->cluster_pos() - cluster_header_size;
+
155  if (mkvmuxer::WriteUIntSize(dest, cluster_payload_size, cluster_size_size))
+
156  return false;
+
157  if (!ReadSkip(source, cluster_size_size))
+
158  return false;
+
159 
+
160  // Copy the cluster and the next cluster's ID.
+
161  int64_t to_copy = cluster_payload_size + cluster_id_size;
+
162  if (dest->WriteFromFile(source, to_copy) != to_copy)
+
163  return false;
+
164 
+
165  // Update the progress; need to convert from WebM timecode to ISO BMFF.
+
166  const uint64_t webm_delta_time = next_cue->time() - cue->time();
+
167  const uint64_t delta_time = FromWebMTimecode(webm_delta_time);
+
168  UpdateProgress(delta_time);
+
169  }
+
170 
+
171  // The last cluster takes up until the cues.
+
172  const uint64_t last_cluster_payload_size = last_size - cluster_header_size;
+
173  if (mkvmuxer::WriteUIntSize(dest, last_cluster_payload_size,
+
174  cluster_size_size))
+
175  return false;
+
176  if (!ReadSkip(source, cluster_size_size))
+
177  return false;
+
178 
+
179  // Copy the last cluster.
+
180  return dest->WriteFromFile(source) ==
+
181  static_cast<int64_t>(last_cluster_payload_size);
+
182 }
+
183 
+
184 } // namespace webm
+
185 } // namespace media
+
186 } // 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
@@ -283,7 +280,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 60ea6b7981..ec04467ec4 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 15057407c0..07361024de 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 8f7f89857c..e35f8d9f99 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 66bc4d74f6..8fcb79d82a 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 c7f8f73cf2..315964cf52 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 63f40ce7ab..7fffec4095 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 61995fa677..714c771d23 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 f81ca4ff5a..2927a3c84e 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 f29448d25c..a8eafe06b5 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 b98ca6e6ef..35910c496e 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 aee87c7510..5f21065d58 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -483,7 +483,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html b/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html index ef982955dd..1a82641274 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 1b104cbedf..b75cbe6295 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 e35f9a0fe7..2c162c36ad 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 5fc9037921..55ac3b09f6 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 2c2ba55599..f39e10426f 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 c456266221..8c3e2177b2 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 3e94b535ba..2e74b594a0 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 5e55c8bf3a..649ffb8c46 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 83e0c16be6..fbb1bd3ed1 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 b5fb94bb12..5dc991def4 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 ef2e31260a..9bfe726612 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 fb18d391b6..0fbf20ab35 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 3e332b6053..7abbc4c97f 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 01c400a153..8d29f150f4 100644 --- a/docs/d1/d72/language__utils_8cc_source.html +++ b/docs/d1/d72/language__utils_8cc_source.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d74/mp2t__media__parser_8cc_source.html b/docs/d1/d74/mp2t__media__parser_8cc_source.html index cf24cba055..9bd67f448b 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 937f5fea97..dcfa623541 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 a93ab578cc..746ed6c355 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 d6078f5f86..794a0325ab 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 d04bbc3cde..e43ad0a14d 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 764bff3fb0..3447a2b877 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 01478aad29..0d08bff401 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 @@ -94,37 +94,38 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddSample(std::shared_ptr< MediaSample > sample) overrideshaka::media::mp4::EncryptingFragmentervirtual
CreateEncryptor()shaka::media::mp4::EncryptingFragmenterprotected
crypt_byte_block() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
data() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
earliest_presentation_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
EncryptingFragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf, std::unique_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *listener)shaka::media::mp4::EncryptingFragmenter
encryption_key() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
encryptor() (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
FinalizeFragment() overrideshaka::media::mp4::EncryptingFragmentervirtual
FinalizeFragmentForEncryption()shaka::media::mp4::EncryptingFragmenterprotectedvirtual
first_sap_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_duration() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_finalized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_initialized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
Fragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf)shaka::media::mp4::Fragmenter
GenerateSegmentReference(SegmentReference *reference)shaka::media::mp4::Fragmenter
InitializeFragment(int64_t first_sample_dts) overrideshaka::media::mp4::EncryptingFragmentervirtual
KeyRotationFragmenter(MovieFragment *moof, std::shared_ptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *muxer_listener)shaka::media::mp4::KeyRotationFragmenter
OptimizeSampleEntries(std::vector< T > *entries, T *default_value)shaka::media::mp4::Fragmenterprotected
PrepareFragmentForEncryption(bool enable_encryption) overrideshaka::media::mp4::KeyRotationFragmenterprotectedvirtual
protection_scheme() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
set_encryption_key(std::unique_ptr< EncryptionKey > encryption_key) (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)shaka::media::mp4::Fragmenterinline
skip_byte_block() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
traf() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinlineprotected
~EncryptingFragmenter() override (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenter
~Fragmenter() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmentervirtual
~KeyRotationFragmenter() override (defined in shaka::media::mp4::KeyRotationFragmenter)shaka::media::mp4::KeyRotationFragmenter
ClearFragmentFinalized() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
CreateEncryptor()shaka::media::mp4::EncryptingFragmenterprotected
crypt_byte_block() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
data() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
earliest_presentation_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
EncryptingFragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf, std::unique_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *listener)shaka::media::mp4::EncryptingFragmenter
encryption_key() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
encryptor() (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
FinalizeFragment() overrideshaka::media::mp4::EncryptingFragmentervirtual
FinalizeFragmentForEncryption()shaka::media::mp4::EncryptingFragmenterprotectedvirtual
first_sap_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_duration() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_finalized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_initialized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
Fragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf)shaka::media::mp4::Fragmenter
GenerateSegmentReference(SegmentReference *reference)shaka::media::mp4::Fragmenter
InitializeFragment(int64_t first_sample_dts) overrideshaka::media::mp4::EncryptingFragmentervirtual
KeyRotationFragmenter(MovieFragment *moof, std::shared_ptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *muxer_listener)shaka::media::mp4::KeyRotationFragmenter
OptimizeSampleEntries(std::vector< T > *entries, T *default_value)shaka::media::mp4::Fragmenterprotected
PrepareFragmentForEncryption(bool enable_encryption) overrideshaka::media::mp4::KeyRotationFragmenterprotectedvirtual
protection_scheme() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
set_encryption_key(std::unique_ptr< EncryptionKey > encryption_key) (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)shaka::media::mp4::Fragmenterinline
skip_byte_block() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
traf() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinlineprotected
~EncryptingFragmenter() override (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenter
~Fragmenter() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmentervirtual
~KeyRotationFragmenter() override (defined in shaka::media::mp4::KeyRotationFragmenter)shaka::media::mp4::KeyRotationFragmenter
diff --git a/docs/d1/d8e/webm__audio__client_8cc_source.html b/docs/d1/d8e/webm__audio__client_8cc_source.html index a1be7d1109..13f519fb42 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 ec3af811f7..26f8bb9b3f 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 4fba66879b..44ec9f4126 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 8fe1cb08cd..93d130d487 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 0bfd54b6d3..a01305a13b 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 cd2f1b0586..8f6cd9577c 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 702395d2b6..62c16e18bf 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 f2d3ab3de8..a321b3c116 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 4e4fdb2a94..c6e47ca519 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 3ddb2039e1..07a1676db8 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 7e1d68c3d4..d4bca0aeb0 100644 --- a/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html +++ b/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html b/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html index f1ec86d62e..80e324d5a7 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 0a14692f70..7b379d72b5 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 be704998c6..c15131d4dc 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 7ef6da2dbc..710c9ce3d3 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 9af1406443..66e848577b 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 3ebc99c61a..5a1773faaa 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 5d2b697313..19e65fbbff 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 8352e745d0..ca9eacd169 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 d4bfba8ab5..4fb0bded39 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 475d87e09a..4e84b28b58 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 ebf7fc4e6f..524b475504 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 ca7868dd33..6680630be5 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 694dc0421a..d22690e025 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 1d2cbf45ab..5005eedbed 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 ba18a3c4d5..6798766998 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 e14739c1f2..21f0852928 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 ab968f9ac2..afa5358c15 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 9977c8c5a4..acdf58e517 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 0318ba1b27..e3883e99f4 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 a083aa0b07..dae54fbbce 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 4ccfad103c..f28b658047 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 ec7b8b103d..9fd5f83b41 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 bfc27c90ee..82aac467e9 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 27c6389ec2..806da1163a 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 0a68a93a2c..5b1cbeda76 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 c43787b85e..df9d77825f 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 fc8a2bf2b3..b05199db63 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -111,24 +111,27 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
22 namespace media {
23 
24 class KeySource;
-
25 struct MuxerOptions;
-
26 
-
31 std::unique_ptr<KeySource> CreateEncryptionKeySource();
-
32 
-
37 std::unique_ptr<KeySource> CreateDecryptionKeySource();
-
38 
-
40 bool GetMuxerOptions(MuxerOptions* muxer_options);
-
41 
-
43 bool GetMpdOptions(bool on_demand_profile, MpdOptions* mpd_options);
-
44 
-
45 } // namespace media
-
46 } // namespace shaka
-
47 
-
48 #endif // PACKAGER_APP_PACKAGER_UTIL_H_
+
25 struct ChunkingOptions;
+
26 struct MuxerOptions;
+
27 
+
32 std::unique_ptr<KeySource> CreateEncryptionKeySource();
+
33 
+
38 std::unique_ptr<KeySource> CreateDecryptionKeySource();
+
39 
+
41 ChunkingOptions GetChunkingOptions();
+
42 
+
44 MuxerOptions GetMuxerOptions();
+
45 
+
47 MpdOptions GetMpdOptions(bool on_demand_profile);
+
48 
+
49 } // namespace media
+
50 } // namespace shaka
+
51 
+
52 #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 5fb148c6b1..9d5287a6f2 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 @@ -128,6 +128,9 @@ void GenerateSegmentReference (SegmentReference *reference)  Fill reference with current fragment information.
  + +void ClearFragmentFinalized () +  uint64_t fragment_duration () const   @@ -328,7 +331,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 4632b9b6b2..76308c8cbf 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 c63e960879..2ba90b695e 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 e2b3cf71e7..4d71ef1609 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 6e1da1818e..1d5aa2856f 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 ecd828a4b6..e69b238907 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 7fea8306a9..45a2b196f8 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 da28cf44b3..3072fb29b5 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 34f06cd88b..7daaffc991 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 f787884d1f..e23dbc3d5c 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 e9f7cdf157..7d850890b6 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 5593976f48..71a569f230 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 2f96a9a541..cbef7de2a6 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 a66c22dcfa..0fdf83a0cd 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 d4375a8ea9..c17388d183 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 20b3d65246..05c7bbdf18 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 a55d2fe627..ae70e46784 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 e52126412f..44164372e0 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 fea4e37eae..059b00c4f0 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 aa6860f94b..974e26336a 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 d24d9f99f0..ce56c38284 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 16df926f50..b2bcf514fa 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 3ddbff64d5..3e6d03c5ce 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 007face07b..9d9c43bd2c 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 06f9c666c8..d29154eea0 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 27ba0b81fc..da882d8ee9 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 3cc1c25c44..02c169ea07 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 3f680a93de..c4bf7dd2de 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 1580a4b3fd..2c1ed2ee1f 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 27d77b1dc0..aa673df872 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -267,333 +267,298 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
178  moof_->header.sequence_number = 0;
179 
180  moof_->tracks.resize(streams.size());
-
181  segment_durations_.resize(streams.size());
-
182  fragmenters_.resize(streams.size());
-
183  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
-
184  const bool kInitialEncryptionInfo = true;
-
185 
-
186  for (uint32_t i = 0; i < streams.size(); ++i) {
-
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 
-
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  // 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  }
+
181  fragmenters_.resize(streams.size());
+
182  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
+
183  const bool kInitialEncryptionInfo = true;
+
184 
+
185  for (uint32_t i = 0; i < streams.size(); ++i) {
+
186  moof_->tracks[i].header.track_id = i + 1;
+
187  if (streams[i]->stream_type() == kStreamVideo) {
+
188  // Use the first video stream as the reference stream (which is 1-based).
+
189  if (sidx_->reference_id == 0)
+
190  sidx_->reference_id = i + 1;
+
191  }
+
192  if (!encryption_key_source) {
+
193  fragmenters_[i].reset(new Fragmenter(streams[i], &moof_->tracks[i]));
+
194  continue;
+
195  }
+
196 
+
197  KeySource::TrackType track_type = GetTrackTypeForEncryption(
+
198  *streams[i], max_sd_pixels, max_hd_pixels, max_uhd1_pixels);
+
199  SampleDescription& description =
+
200  moov_->tracks[i].media.information.sample_table.description;
+
201  ProtectionPattern pattern =
+
202  GetProtectionPattern(protection_scheme, description.type);
+
203 
+
204  if (key_rotation_enabled) {
+
205  // Fill encrypted sample entry with default key.
+
206  EncryptionKey encryption_key;
+
207  encryption_key.key_id.assign(
+
208  kKeyRotationDefaultKeyId,
+
209  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
+
210  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
211  &encryption_key.iv)) {
+
212  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
213  }
+
214  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
+
215  protection_scheme, pattern, &description);
+
216  if (muxer_listener_) {
+
217  muxer_listener_->OnEncryptionInfoReady(
+
218  kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
+
219  encryption_key.iv, encryption_key.key_system_info);
+
220  }
+
221 
+
222  fragmenters_[i].reset(new KeyRotationFragmenter(
+
223  moof_.get(), streams[i], &moof_->tracks[i], encryption_key_source,
+
224  track_type,
+
225  crypto_period_duration_in_seconds * streams[i]->time_scale(),
+
226  clear_lead_in_seconds * streams[i]->time_scale(), protection_scheme,
+
227  pattern.crypt_byte_block, pattern.skip_byte_block, muxer_listener_));
+
228  continue;
+
229  }
+
230 
+
231  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
232  Status status =
+
233  encryption_key_source->GetKey(track_type, encryption_key.get());
+
234  if (!status.ok())
+
235  return status;
+
236  if (encryption_key->iv.empty()) {
+
237  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
238  &encryption_key->iv)) {
+
239  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
240  }
+
241  }
+
242 
+
243  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
+
244  protection_scheme, pattern, &description);
+
245 
+
246  if (moov_->pssh.empty()) {
+
247  moov_->pssh.resize(encryption_key->key_system_info.size());
+
248  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
+
249  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
+
250  }
+
251 
+
252  if (muxer_listener_) {
+
253  muxer_listener_->OnEncryptionInfoReady(
+
254  kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
+
255  encryption_key->iv, encryption_key->key_system_info);
+
256  }
+
257  }
+
258 
+
259  fragmenters_[i].reset(new EncryptingFragmenter(
+
260  streams[i], &moof_->tracks[i], std::move(encryption_key),
+
261  clear_lead_in_seconds * streams[i]->time_scale(), protection_scheme,
+
262  pattern.crypt_byte_block, pattern.skip_byte_block, muxer_listener_));
+
263  }
+
264 
+ +
266  for (uint32_t i = 0; i < streams.size(); ++i)
+
267  fragmenters_[i]->set_use_decoding_timestamp_in_timeline(true);
+
268  }
+
269 
+
270  // Choose the first stream if there is no VIDEO.
+
271  if (sidx_->reference_id == 0)
+
272  sidx_->reference_id = 1;
+
273  sidx_->timescale = streams[GetReferenceStreamId()]->time_scale();
+
274 
+
275  // Use media duration as progress target.
+
276  progress_target_ = streams[GetReferenceStreamId()]->duration();
+
277 
+
278  // Use the reference stream's time scale as movie time scale.
+
279  moov_->header.timescale = sidx_->timescale;
+
280  moof_->header.sequence_number = 1;
+
281 
+
282  // Fill in version information.
+
283  const std::string version = GetPackagerVersion();
+
284  if (!version.empty()) {
+
285  moov_->metadata.handler.handler_type = FOURCC_ID32;
+
286  moov_->metadata.id3v2.language.code = "eng";
+
287  moov_->metadata.id3v2.private_frame.owner = GetPackagerProjectUrl();
+
288  moov_->metadata.id3v2.private_frame.value = version;
+
289  }
+
290  return DoInitialize();
+
291 }
+
292 
+ +
294  // Set tracks and moov durations.
+
295  // Note that the updated moov box will be written to output file for VOD case
+
296  // only.
+
297  for (std::vector<Track>::iterator track = moov_->tracks.begin();
+
298  track != moov_->tracks.end();
+
299  ++track) {
+
300  track->header.duration = Rescale(track->media.header.duration,
+
301  track->media.header.timescale,
+
302  moov_->header.timescale);
+
303  if (track->header.duration > moov_->header.duration)
+
304  moov_->header.duration = track->header.duration;
+
305  }
+
306  moov_->extends.header.fragment_duration = moov_->header.duration;
+
307 
+
308  return DoFinalize();
+
309 }
+
310 
+ +
312  std::shared_ptr<MediaSample> sample) {
+
313  // Set default sample duration if it has not been set yet.
+
314  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
+
315  moov_->extends.tracks[stream_id].default_sample_duration =
+
316  sample->duration();
+
317  }
+
318 
+
319  DCHECK_LT(stream_id, static_cast<int>(fragmenters_.size()));
+
320  Fragmenter* fragmenter = fragmenters_[stream_id].get();
+
321  if (fragmenter->fragment_finalized()) {
+
322  return Status(error::FRAGMENT_FINALIZED,
+
323  "Current fragment is finalized already.");
+
324  }
+
325 
+
326  Status status = fragmenter->AddSample(sample);
+
327  if (!status.ok())
+
328  return status;
329 
-
330  if (fragmenter->fragment_finalized()) {
-
331  return Status(error::FRAGMENT_FINALIZED,
-
332  "Current fragment is finalized already.");
-
333  }
-
334 
-
335  bool finalize_fragment = false;
-
336  if (fragmenter->fragment_duration() >=
-
337  options_.fragment_duration * stream_info.time_scale()) {
-
338  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
339  finalize_fragment = true;
-
340  }
-
341  }
-
342  bool finalize_segment = false;
-
343  if (segment_durations_[stream_id] >=
-
344  options_.segment_duration * stream_info.time_scale()) {
-
345  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
346  finalize_segment = true;
-
347  finalize_fragment = true;
-
348  }
-
349  }
-
350 
-
351  Status status;
-
352  if (finalize_fragment) {
-
353  status = FinalizeFragment(finalize_segment, fragmenter);
-
354  if (!status.ok())
-
355  return status;
-
356  }
-
357 
-
358  status = fragmenter->AddSample(sample);
-
359  if (!status.ok())
-
360  return status;
-
361 
-
362  if (sample_duration_ == 0)
-
363  sample_duration_ = sample->duration();
-
364  moov_->tracks[stream_id].media.header.duration += sample->duration();
-
365  segment_durations_[stream_id] += sample->duration();
-
366  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
-
367  return Status::OK;
-
368 }
-
369 
-
370 uint32_t Segmenter::GetReferenceTimeScale() const {
-
371  return moov_->header.timescale;
-
372 }
-
373 
-
374 double Segmenter::GetDuration() const {
-
375  if (moov_->header.timescale == 0) {
-
376  // Handling the case where this is not properly initialized.
-
377  return 0.0;
-
378  }
-
379 
-
380  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  }
+
330  if (sample_duration_ == 0)
+
331  sample_duration_ = sample->duration();
+
332  moov_->tracks[stream_id].media.header.duration += sample->duration();
+
333  return Status::OK;
+
334 }
+
335 
+
336 Status Segmenter::FinalizeSegment(int stream_id, bool is_subsegment) {
+
337  DCHECK_LT(stream_id, static_cast<int>(fragmenters_.size()));
+
338  Fragmenter* fragmenter = fragmenters_[stream_id].get();
+
339  DCHECK(fragmenter);
+
340  fragmenter->FinalizeFragment();
+
341 
+
342  // Check if all tracks are ready for fragmentation.
+
343  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
+
344  if (!fragmenter->fragment_finalized())
+
345  return Status::OK;
+
346  }
+
347 
+
348  MediaData mdat;
+
349  // Data offset relative to 'moof': moof size + mdat header size.
+
350  // The code will also update box sizes for moof_ and its child boxes.
+
351  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
+
352  // 'traf' should follow 'mfhd' moof header box.
+
353  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
+
354  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
+
355  TrackFragment& traf = moof_->tracks[i];
+
356  if (traf.auxiliary_offset.offsets.size() > 0) {
+
357  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
+
358  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
+
359 
+
360  next_traf_position += traf.box_size();
+
361  // SampleEncryption 'senc' box should be the last box in 'traf'.
+
362  // |auxiliary_offset| should point to the data of SampleEncryption.
+
363  traf.auxiliary_offset.offsets[0] =
+
364  next_traf_position - traf.sample_encryption.box_size() +
+
365  traf.sample_encryption.HeaderSize() +
+
366  sizeof(uint32_t); // for sample count field in 'senc'
+
367  }
+
368  traf.runs[0].data_offset = data_offset + mdat.data_size;
+
369  mdat.data_size += static_cast<uint32_t>(fragmenters_[i]->data()->Size());
+
370  }
+
371 
+
372  // Generate segment reference.
+
373  sidx_->references.resize(sidx_->references.size() + 1);
+
374  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
+
375  &sidx_->references[sidx_->references.size() - 1]);
+
376  sidx_->references[sidx_->references.size() - 1].referenced_size =
+
377  data_offset + mdat.data_size;
+
378 
+
379  // Write the fragment to buffer.
+
380  moof_->Write(fragment_buffer_.get());
+
381  mdat.WriteHeader(fragment_buffer_.get());
+
382  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_)
+
383  fragment_buffer_->AppendBuffer(*fragmenter->data());
+
384 
+
385  // Increase sequence_number for next fragment.
+
386  ++moof_->header.sequence_number;
+
387 
+
388  for (std::unique_ptr<Fragmenter>& fragmenter : fragmenters_)
+
389  fragmenter->ClearFragmentFinalized();
+
390  if (!is_subsegment) {
+
391  Status status = DoFinalizeSegment();
+
392  // Reset segment information to initial state.
+
393  sidx_->references.clear();
+
394  return status;
+
395  }
+
396  return Status::OK;
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  // 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:58
- - -
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
- - +
399 uint32_t Segmenter::GetReferenceTimeScale() const {
+
400  return moov_->header.timescale;
+
401 }
+
402 
+
403 double Segmenter::GetDuration() const {
+
404  if (moov_->header.timescale == 0) {
+
405  // Handling the case where this is not properly initialized.
+
406  return 0.0;
+
407  }
+
408 
+
409  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
+
410 }
+
411 
+
412 void Segmenter::UpdateProgress(uint64_t progress) {
+
413  accumulated_progress_ += progress;
+
414 
+
415  if (!progress_listener_) return;
+
416  if (progress_target_ == 0) return;
+
417  // It might happen that accumulated progress exceeds progress_target due to
+
418  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
419  // progress.
+
420  if (accumulated_progress_ >= progress_target_) {
+
421  progress_listener_->OnProgress(1.0);
+
422  } else {
+
423  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
424  progress_target_);
+
425  }
+
426 }
+
427 
+
428 void Segmenter::SetComplete() {
+
429  if (!progress_listener_) return;
+
430  progress_listener_->OnProgress(1.0);
+
431 }
+
432 
+
433 uint32_t Segmenter::GetReferenceStreamId() {
+
434  DCHECK(sidx_);
+
435  return sidx_->reference_id - 1;
+
436 }
+
437 
+
438 } // namespace mp4
+
439 } // namespace media
+
440 } // namespace shaka
+ +
uint32_t HeaderSize() const final
Definition: box.cc:75
+ +
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:36
+
virtual Status GetKey(TrackType track_type, EncryptionKey *key)=0
+
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:111
+
uint32_t ComputeSize()
Definition: box.cc:50
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:123
+
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:105
static bool GenerateRandomIv(FourCC protection_scheme, std::vector< uint8_t > *iv)
Definition: aes_cryptor.cc:107
+
uint32_t box_size()
Definition: box.h:55
+
virtual uint32_t HeaderSize() const
Definition: box.cc:55
EncryptingFragmenter generates MP4 fragments with sample encrypted.
- +
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:267
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:231
+
virtual Status FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment)=0
Finalize the (sub)segment.
Definition: segmenter.cc:156
+
void WriteHeader(BufferWriter *writer)
Definition: box.cc:38
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 144d42b2b6..94d4bbdbb1 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 700d7d9175..5a517a06f4 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 6616c136d5..5302bf1a11 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -161,66 +161,77 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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);
+
75 Status WebMMuxer::AddSample(int stream_id,
+
76  std::shared_ptr<MediaSample> sample) {
+
77  DCHECK(segmenter_);
+
78  DCHECK_EQ(stream_id, 0);
+
79  return segmenter_->AddSample(sample);
+
80 }
+
81 
+
82 Status WebMMuxer::FinalizeSegment(int stream_id,
+
83  std::shared_ptr<SegmentInfo> segment_info) {
+
84  DCHECK(segmenter_);
+
85  DCHECK_EQ(stream_id, 0);
+
86  return segmenter_->FinalizeSegment(segment_info->start_timestamp,
+
87  segment_info->duration,
+
88  segment_info->is_subsegment);
89 }
90 
-
91 void WebMMuxer::FireOnMediaEndEvent() {
+
91 void WebMMuxer::FireOnMediaStartEvent() {
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
+
95  DCHECK(!streams().empty()) << "Media started without a stream.";
+
96 
+
97  const uint32_t timescale = streams().front()->time_scale();
+
98  muxer_listener()->OnMediaStart(options(), *streams().front(), timescale,
+
99  MuxerListener::kContainerWebM);
+
100 }
+
101 
+
102 void WebMMuxer::FireOnMediaEndEvent() {
+
103  if (!muxer_listener())
+
104  return;
+
105 
+
106  uint64_t init_range_start = 0;
+
107  uint64_t init_range_end = 0;
+
108  const bool has_init_range =
+
109  segmenter_->GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
+
110 
+
111  uint64_t index_range_start = 0;
+
112  uint64_t index_range_end = 0;
+
113  const bool has_index_range = segmenter_->GetIndexRangeStartAndEnd(
+
114  &index_range_start, &index_range_end);
+
115 
+
116  const float duration_seconds = segmenter_->GetDuration();
+
117 
+
118  const int64_t file_size =
+
119  File::GetFileSize(options().output_file_name.c_str());
+
120  if (file_size <= 0) {
+
121  LOG(ERROR) << "Invalid file size: " << file_size;
+
122  return;
+
123  }
+
124 
+
125  muxer_listener()->OnMediaEnd(has_init_range, init_range_start, init_range_end,
+
126  has_index_range, index_range_start,
+
127  index_range_end, duration_seconds, file_size);
+
128 }
+
129 
+
130 } // namespace webm
+
131 } // namespace media
+
132 } // 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: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 609804e335..818bfbaced 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 bfb4e6559e..2c356f1504 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 3f88e3e7d0..645d1f80ec 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 544e9fe3eb..e673548a39 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 48524cc2dc..d125193835 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 e512a62db8..34a92d3b6e 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 a42f1ce562..7333827767 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 93bda19746..fc53cddbf5 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 c83acd0d0f..65eb98452c 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 aea17a6676..45e137f2b3 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 12d3496720..de7de43ebd 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 @@ -112,6 +112,10 @@ Public Member Functions  MultiSegmentSegmenter (const MuxerOptions &options)  
Segmenter implementation overrides.
+ +Status FinalizeSegment (uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment) override + Finalize the (sub)segment.
+  bool GetInitRangeStartAndEnd (uint64_t *start, uint64_t *end) override   bool GetIndexRangeStartAndEnd (uint64_t *start, uint64_t *end) override @@ -183,9 +187,6 @@ int track_id () const uint64_t segment_payload_pos () const   - -uint64_t cluster_length_in_time_scale () const - 

Detailed Description

An implementation of a Segmenter for a multi-segment. Since this does not use seeking, it does not matter if the underlying files support seeking.

@@ -227,7 +228,7 @@ uint64_t cluster_length_in

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

-

Definition at line 28 of file multi_segment_segmenter.cc.

+

Definition at line 50 of file multi_segment_segmenter.cc.

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

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

-

Definition at line 23 of file multi_segment_segmenter.cc.

+

Definition at line 45 of file multi_segment_segmenter.cc.

@@ -277,7 +278,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 cbbae9aeb9..8ca9ad4081 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 abcb085ec8..0461e69848 100644 --- a/docs/d2/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html +++ b/docs/d2/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html b/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html index 5824136bec..628e1a5c95 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 3906678628..4dc11603cd 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 0cc09a965f..f1fd839531 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -123,558 +123,560 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
34 #include "packager/media/base/key_source.h"
35 #include "packager/media/base/muxer_options.h"
36 #include "packager/media/base/muxer_util.h"
-
37 #include "packager/media/event/hls_notify_muxer_listener.h"
-
38 #include "packager/media/event/mpd_notify_muxer_listener.h"
-
39 #include "packager/media/event/vod_media_info_dump_muxer_listener.h"
-
40 #include "packager/media/file/file.h"
-
41 #include "packager/media/formats/mp2t/ts_muxer.h"
-
42 #include "packager/media/formats/mp4/mp4_muxer.h"
-
43 #include "packager/media/formats/webm/webm_muxer.h"
-
44 #include "packager/mpd/base/dash_iop_mpd_notifier.h"
-
45 #include "packager/mpd/base/media_info.pb.h"
-
46 #include "packager/mpd/base/mpd_builder.h"
-
47 #include "packager/mpd/base/simple_mpd_notifier.h"
-
48 #include "packager/version/version.h"
-
49 
-
50 #if defined(OS_WIN)
-
51 #include <codecvt>
-
52 #include <functional>
-
53 #include <locale>
-
54 #endif // defined(OS_WIN)
-
55 
-
56 DEFINE_bool(use_fake_clock_for_muxer,
-
57  false,
-
58  "Set to true to use a fake clock for muxer. With this flag set, "
-
59  "creation time and modification time in outputs are set to 0. "
-
60  "Should only be used for testing.");
-
61 DEFINE_bool(override_version,
-
62  false,
-
63  "Override packager version in the generated outputs with "
-
64  "--test_version if it is set to true. Should be used for "
-
65  "testing only.");
-
66 DEFINE_string(test_version,
-
67  "",
-
68  "Packager version for testing. Ignored if --override_version is "
-
69  "false. Should be used for testing only.");
-
70 
-
71 namespace shaka {
-
72 namespace media {
-
73 namespace {
-
74 
-
75 const char kUsage[] =
-
76  "%s [flags] <stream_descriptor> ...\n\n"
-
77  " stream_descriptor consists of comma separated field_name/value pairs:\n"
-
78  " field_name=value,[field_name=value,]...\n"
-
79  " Supported field names are as follows:\n"
-
80  " - input (in): Required input/source media file path or network stream\n"
-
81  " URL.\n"
-
82  " - stream_selector (stream): Required field with value 'audio',\n"
-
83  " 'video', or stream number (zero based).\n"
-
84  " - output (out): Required output file (single file) or initialization\n"
-
85  " file path (multiple file).\n"
-
86  " - segment_template (segment): Optional value which specifies the\n"
-
87  " naming pattern for the segment files, and that the stream should be\n"
-
88  " split into multiple files. Its presence should be consistent across\n"
-
89  " streams.\n"
-
90  " - bandwidth (bw): Optional value which contains a user-specified\n"
-
91  " content bit rate for the stream, in bits/sec. If specified, this\n"
-
92  " value is propagated to the $Bandwidth$ template parameter for\n"
-
93  " segment names. If not specified, its value may be estimated.\n"
-
94  " - language (lang): Optional value which contains a user-specified\n"
-
95  " language tag. If specified, this value overrides any language\n"
-
96  " metadata in the input track.\n"
-
97  " - output_format (format): Optional value which specifies the format\n"
-
98  " of the output files (MP4 or WebM). If not specified, it will be\n"
-
99  " derived from the file extension of the output file.\n"
-
100  " - hls_name: Required for audio when outputting HLS.\n"
-
101  " name of the output stream. This is not (necessarily) the same as\n"
-
102  " output. This is used as the NAME attribute for EXT-X-MEDIA\n"
-
103  " - hls_group_id: Required for audio when outputting HLS.\n"
-
104  " The group ID for the output stream. For HLS this is used as the\n"
-
105  " GROUP-ID attribute for EXT-X-MEDIA.\n"
-
106  " - playlist_name: Required for HLS output.\n"
-
107  " Name of the playlist for the stream. Usually ends with '.m3u8'.\n";
-
108 
-
109 const char kMediaInfoSuffix[] = ".media_info";
-
110 
-
111 enum ExitStatus {
-
112  kSuccess = 0,
-
113  kArgumentValidationFailed,
-
114  kPackagingFailed,
-
115  kInternalError,
-
116 };
-
117 
-
118 // TODO(rkuroiwa): Write TTML and WebVTT parser (demuxing) for a better check
-
119 // and for supporting live/segmenting (muxing). With a demuxer and a muxer,
-
120 // CreateRemuxJobs() shouldn't treat text as a special case.
-
121 std::string DetermineTextFileFormat(const std::string& file) {
-
122  std::string content;
-
123  if (!File::ReadFileToString(file.c_str(), &content)) {
-
124  LOG(ERROR) << "Failed to open file " << file
-
125  << " to determine file format.";
-
126  return "";
-
127  }
-
128  MediaContainerName container_name = DetermineContainer(
-
129  reinterpret_cast<const uint8_t*>(content.data()), content.size());
-
130  if (container_name == CONTAINER_WEBVTT) {
-
131  return "vtt";
-
132  } else if (container_name == CONTAINER_TTML) {
-
133  return "ttml";
-
134  }
-
135 
-
136  return "";
-
137 }
-
138 
-
139 FourCC GetProtectionScheme(const std::string& protection_scheme) {
-
140  if (protection_scheme == "cenc") {
-
141  return FOURCC_cenc;
-
142  } else if (protection_scheme == "cens") {
-
143  return FOURCC_cens;
-
144  } else if (protection_scheme == "cbc1") {
-
145  return FOURCC_cbc1;
-
146  } else if (protection_scheme == "cbcs") {
-
147  return FOURCC_cbcs;
-
148  } else {
-
149  LOG(ERROR) << "Unknown protection scheme: " << protection_scheme;
-
150  return FOURCC_NULL;
-
151  }
-
152 }
-
153 
-
154 } // namespace
-
155 
-
156 // A fake clock that always return time 0 (epoch). Should only be used for
-
157 // testing.
-
158 class FakeClock : public base::Clock {
-
159  public:
-
160  base::Time Now() override { return base::Time(); }
-
161 };
-
162 
-
163 // Demux, Mux(es) and worker thread used to remux a source file/stream.
-
164 class RemuxJob : public base::SimpleThread {
-
165  public:
-
166  RemuxJob(std::unique_ptr<Demuxer> demuxer)
-
167  : SimpleThread("RemuxJob"), demuxer_(std::move(demuxer)) {}
-
168 
-
169  ~RemuxJob() override {}
-
170 
-
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  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  }
-
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  }
+
37 #include "packager/media/chunking/chunking_handler.h"
+
38 #include "packager/media/event/hls_notify_muxer_listener.h"
+
39 #include "packager/media/event/mpd_notify_muxer_listener.h"
+
40 #include "packager/media/event/vod_media_info_dump_muxer_listener.h"
+
41 #include "packager/media/file/file.h"
+
42 #include "packager/media/formats/mp2t/ts_muxer.h"
+
43 #include "packager/media/formats/mp4/mp4_muxer.h"
+
44 #include "packager/media/formats/webm/webm_muxer.h"
+
45 #include "packager/mpd/base/dash_iop_mpd_notifier.h"
+
46 #include "packager/mpd/base/media_info.pb.h"
+
47 #include "packager/mpd/base/mpd_builder.h"
+
48 #include "packager/mpd/base/simple_mpd_notifier.h"
+
49 #include "packager/version/version.h"
+
50 
+
51 #if defined(OS_WIN)
+
52 #include <codecvt>
+
53 #include <functional>
+
54 #include <locale>
+
55 #endif // defined(OS_WIN)
+
56 
+
57 DEFINE_bool(use_fake_clock_for_muxer,
+
58  false,
+
59  "Set to true to use a fake clock for muxer. With this flag set, "
+
60  "creation time and modification time in outputs are set to 0. "
+
61  "Should only be used for testing.");
+
62 DEFINE_bool(override_version,
+
63  false,
+
64  "Override packager version in the generated outputs with "
+
65  "--test_version if it is set to true. Should be used for "
+
66  "testing only.");
+
67 DEFINE_string(test_version,
+
68  "",
+
69  "Packager version for testing. Ignored if --override_version is "
+
70  "false. Should be used for testing only.");
+
71 
+
72 namespace shaka {
+
73 namespace media {
+
74 namespace {
+
75 
+
76 const char kUsage[] =
+
77  "%s [flags] <stream_descriptor> ...\n\n"
+
78  " stream_descriptor consists of comma separated field_name/value pairs:\n"
+
79  " field_name=value,[field_name=value,]...\n"
+
80  " Supported field names are as follows:\n"
+
81  " - input (in): Required input/source media file path or network stream\n"
+
82  " URL.\n"
+
83  " - stream_selector (stream): Required field with value 'audio',\n"
+
84  " 'video', or stream number (zero based).\n"
+
85  " - output (out): Required output file (single file) or initialization\n"
+
86  " file path (multiple file).\n"
+
87  " - segment_template (segment): Optional value which specifies the\n"
+
88  " naming pattern for the segment files, and that the stream should be\n"
+
89  " split into multiple files. Its presence should be consistent across\n"
+
90  " streams.\n"
+
91  " - bandwidth (bw): Optional value which contains a user-specified\n"
+
92  " content bit rate for the stream, in bits/sec. If specified, this\n"
+
93  " value is propagated to the $Bandwidth$ template parameter for\n"
+
94  " segment names. If not specified, its value may be estimated.\n"
+
95  " - language (lang): Optional value which contains a user-specified\n"
+
96  " language tag. If specified, this value overrides any language\n"
+
97  " metadata in the input track.\n"
+
98  " - output_format (format): Optional value which specifies the format\n"
+
99  " of the output files (MP4 or WebM). If not specified, it will be\n"
+
100  " derived from the file extension of the output file.\n"
+
101  " - hls_name: Required for audio when outputting HLS.\n"
+
102  " name of the output stream. This is not (necessarily) the same as\n"
+
103  " output. This is used as the NAME attribute for EXT-X-MEDIA\n"
+
104  " - hls_group_id: Required for audio when outputting HLS.\n"
+
105  " The group ID for the output stream. For HLS this is used as the\n"
+
106  " GROUP-ID attribute for EXT-X-MEDIA.\n"
+
107  " - playlist_name: Required for HLS output.\n"
+
108  " Name of the playlist for the stream. Usually ends with '.m3u8'.\n";
+
109 
+
110 const char kMediaInfoSuffix[] = ".media_info";
+
111 
+
112 enum ExitStatus {
+
113  kSuccess = 0,
+
114  kArgumentValidationFailed,
+
115  kPackagingFailed,
+
116  kInternalError,
+
117 };
+
118 
+
119 // TODO(rkuroiwa): Write TTML and WebVTT parser (demuxing) for a better check
+
120 // and for supporting live/segmenting (muxing). With a demuxer and a muxer,
+
121 // CreateRemuxJobs() shouldn't treat text as a special case.
+
122 std::string DetermineTextFileFormat(const std::string& file) {
+
123  std::string content;
+
124  if (!File::ReadFileToString(file.c_str(), &content)) {
+
125  LOG(ERROR) << "Failed to open file " << file
+
126  << " to determine file format.";
+
127  return "";
+
128  }
+
129  MediaContainerName container_name = DetermineContainer(
+
130  reinterpret_cast<const uint8_t*>(content.data()), content.size());
+
131  if (container_name == CONTAINER_WEBVTT) {
+
132  return "vtt";
+
133  } else if (container_name == CONTAINER_TTML) {
+
134  return "ttml";
+
135  }
+
136 
+
137  return "";
+
138 }
+
139 
+
140 FourCC GetProtectionScheme(const std::string& protection_scheme) {
+
141  if (protection_scheme == "cenc") {
+
142  return FOURCC_cenc;
+
143  } else if (protection_scheme == "cens") {
+
144  return FOURCC_cens;
+
145  } else if (protection_scheme == "cbc1") {
+
146  return FOURCC_cbc1;
+
147  } else if (protection_scheme == "cbcs") {
+
148  return FOURCC_cbcs;
+
149  } else {
+
150  LOG(ERROR) << "Unknown protection scheme: " << protection_scheme;
+
151  return FOURCC_NULL;
+
152  }
+
153 }
+
154 
+
155 } // namespace
+
156 
+
157 // A fake clock that always return time 0 (epoch). Should only be used for
+
158 // testing.
+
159 class FakeClock : public base::Clock {
+
160  public:
+
161  base::Time Now() override { return base::Time(); }
+
162 };
+
163 
+
164 // Demux, Mux(es) and worker thread used to remux a source file/stream.
+
165 class RemuxJob : public base::SimpleThread {
+
166  public:
+
167  RemuxJob(std::unique_ptr<Demuxer> demuxer)
+
168  : SimpleThread("RemuxJob"), demuxer_(std::move(demuxer)) {}
+
169 
+
170  ~RemuxJob() override {}
+
171 
+
172  Demuxer* demuxer() { return demuxer_.get(); }
+
173  Status status() { return status_; }
+
174 
+
175  private:
+
176  void Run() override {
+
177  DCHECK(demuxer_);
+
178  status_ = demuxer_->Run();
+
179  }
+
180 
+
181  std::unique_ptr<Demuxer> demuxer_;
+
182  Status status_;
+
183 
+
184  DISALLOW_COPY_AND_ASSIGN(RemuxJob);
+
185 };
+
186 
+
187 bool StreamInfoToTextMediaInfo(const StreamDescriptor& stream_descriptor,
+
188  const MuxerOptions& stream_muxer_options,
+
189  MediaInfo* text_media_info) {
+
190  const std::string& language = stream_descriptor.language;
+
191  std::string format = DetermineTextFileFormat(stream_descriptor.input);
+
192  if (format.empty()) {
+
193  LOG(ERROR) << "Failed to determine the text file format for "
+
194  << stream_descriptor.input;
+
195  return false;
+
196  }
+
197 
+
198  if (!File::Copy(stream_descriptor.input.c_str(),
+
199  stream_muxer_options.output_file_name.c_str())) {
+
200  LOG(ERROR) << "Failed to copy the input file (" << stream_descriptor.input
+
201  << ") to output file (" << stream_muxer_options.output_file_name
+
202  << ").";
+
203  return false;
+
204  }
+
205 
+
206  text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
+
207  text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
+
208 
+
209  if (stream_muxer_options.bandwidth != 0) {
+
210  text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
+
211  } else {
+
212  // Text files are usually small and since the input is one file; there's no
+
213  // way for the player to do ranged requests. So set this value to something
+
214  // reasonable.
+
215  text_media_info->set_bandwidth(256);
+
216  }
+
217 
+
218  MediaInfo::TextInfo* text_info = text_media_info->mutable_text_info();
+
219  text_info->set_format(format);
+
220  if (!language.empty())
+
221  text_info->set_language(language);
+
222 
+
223  return true;
+
224 }
+
225 
+
226 std::shared_ptr<Muxer> CreateOutputMuxer(const MuxerOptions& options,
+
227  MediaContainerName container) {
+
228  if (container == CONTAINER_WEBM) {
+
229  return std::shared_ptr<Muxer>(new webm::WebMMuxer(options));
+
230  } else if (container == CONTAINER_MPEG2TS) {
+
231  return std::shared_ptr<Muxer>(new mp2t::TsMuxer(options));
+
232  } else {
+
233  DCHECK_EQ(container, CONTAINER_MOV);
+
234  return std::shared_ptr<Muxer>(new mp4::MP4Muxer(options));
+
235  }
+
236 }
+
237 
+
238 bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
+
239  const ChunkingOptions& chunking_options,
+
240  const MuxerOptions& muxer_options,
+
241  FakeClock* fake_clock,
+
242  KeySource* key_source,
+
243  MpdNotifier* mpd_notifier,
+
244  hls::HlsNotifier* hls_notifier,
+
245  std::vector<std::unique_ptr<RemuxJob>>* remux_jobs) {
+
246  // No notifiers OR (mpd_notifier XOR hls_notifier); which is NAND.
+
247  DCHECK(!(mpd_notifier && hls_notifier));
+
248  DCHECK(remux_jobs);
+
249 
+
250  std::string previous_input;
+
251  int stream_number = 0;
+
252  for (StreamDescriptorList::const_iterator
+
253  stream_iter = stream_descriptors.begin();
+
254  stream_iter != stream_descriptors.end();
+
255  ++stream_iter, ++stream_number) {
+
256  // Process stream descriptor.
+
257  MuxerOptions stream_muxer_options(muxer_options);
+
258  stream_muxer_options.output_file_name = stream_iter->output;
+
259  if (!stream_iter->segment_template.empty()) {
+
260  if (!ValidateSegmentTemplate(stream_iter->segment_template)) {
+
261  LOG(ERROR) << "ERROR: segment template with '"
+
262  << stream_iter->segment_template << "' is invalid.";
+
263  return false;
+
264  }
+
265  stream_muxer_options.segment_template = stream_iter->segment_template;
+
266  }
+
267  stream_muxer_options.bandwidth = stream_iter->bandwidth;
+
268 
+
269  // Handle text input.
+
270  if (stream_iter->stream_selector == "text") {
+
271  MediaInfo text_media_info;
+
272  if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
+
273  &text_media_info)) {
+
274  return false;
+
275  }
+
276 
+
277  if (mpd_notifier) {
+
278  uint32_t unused;
+
279  if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
+
280  LOG(ERROR) << "Failed to process text file " << stream_iter->input;
+
281  } else {
+
282  mpd_notifier->Flush();
+
283  }
+
284  } else if (FLAGS_output_media_info) {
+ +
286  text_media_info,
+
287  stream_muxer_options.output_file_name + kMediaInfoSuffix);
+
288  } else {
+
289  NOTIMPLEMENTED()
+
290  << "--mpd_output or --output_media_info flags are "
+
291  "required for text output. Skipping manifest related output for "
+
292  << stream_iter->input;
+
293  }
+
294  continue;
+
295  }
+
296 
+
297  if (stream_iter->input != previous_input) {
+
298  // New remux job needed. Create demux and job thread.
+
299  std::unique_ptr<Demuxer> demuxer(new Demuxer(stream_iter->input));
+
300  demuxer->set_dump_stream_info(FLAGS_dump_stream_info);
+
301  if (FLAGS_enable_widevine_decryption ||
+
302  FLAGS_enable_fixed_key_decryption) {
+
303  std::unique_ptr<KeySource> key_source(CreateDecryptionKeySource());
+
304  if (!key_source)
+
305  return false;
+
306  demuxer->SetKeySource(std::move(key_source));
+
307  }
+
308  remux_jobs->emplace_back(new RemuxJob(std::move(demuxer)));
+
309  previous_input = stream_iter->input;
+
310  // Skip setting up muxers if output is not needed.
+
311  if (stream_iter->output.empty())
+
312  continue;
+
313  }
+
314  DCHECK(!remux_jobs->empty());
+
315 
+
316  std::shared_ptr<Muxer> muxer(
+
317  CreateOutputMuxer(stream_muxer_options, stream_iter->output_format));
+
318  if (FLAGS_use_fake_clock_for_muxer) muxer->set_clock(fake_clock);
+
319 
+
320  if (key_source) {
+
321  muxer->SetKeySource(key_source,
+
322  FLAGS_max_sd_pixels,
+
323  FLAGS_max_hd_pixels,
+
324  FLAGS_max_uhd1_pixels,
+
325  FLAGS_clear_lead,
+
326  FLAGS_crypto_period_duration,
+
327  GetProtectionScheme(FLAGS_protection_scheme));
+
328  }
+
329 
+
330  std::unique_ptr<MuxerListener> muxer_listener;
+
331  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
+
332  if (FLAGS_output_media_info) {
+
333  const std::string output_media_info_file_name =
+
334  stream_muxer_options.output_file_name + kMediaInfoSuffix;
+
335  std::unique_ptr<VodMediaInfoDumpMuxerListener>
+
336  vod_media_info_dump_muxer_listener(
+
337  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
+
338  muxer_listener = std::move(vod_media_info_dump_muxer_listener);
+
339  }
+
340  if (mpd_notifier) {
+
341  std::unique_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
+
342  new MpdNotifyMuxerListener(mpd_notifier));
+
343  muxer_listener = std::move(mpd_notify_muxer_listener);
+
344  }
+
345 
+
346  if (hls_notifier) {
+
347  // TODO(rkuroiwa): Do some smart stuff to group the audios, e.g. detect
+
348  // languages.
+
349  std::string group_id = stream_iter->hls_group_id;
+
350  std::string name = stream_iter->hls_name;
+
351  std::string hls_playlist_name = stream_iter->hls_playlist_name;
+
352  if (group_id.empty())
+
353  group_id = "audio";
+
354  if (name.empty())
+
355  name = base::StringPrintf("stream_%d", stream_number);
+
356  if (hls_playlist_name.empty())
+
357  hls_playlist_name = base::StringPrintf("stream_%d.m3u8", stream_number);
+
358 
+
359  muxer_listener.reset(new HlsNotifyMuxerListener(hls_playlist_name, name,
+
360  group_id, hls_notifier));
+
361  }
+
362 
+
363  if (muxer_listener)
+
364  muxer->SetMuxerListener(std::move(muxer_listener));
+
365 
+
366  auto chunking_handler = std::make_shared<ChunkingHandler>(chunking_options);
+
367  Status status = chunking_handler->SetHandler(0, std::move(muxer));
+
368 
+
369  auto* demuxer = remux_jobs->back()->demuxer();
+
370  const std::string& stream_selector = stream_iter->stream_selector;
+
371  status.Update(demuxer->SetHandler(stream_selector, chunking_handler));
+
372 
+
373  if (!status.ok()) {
+
374  LOG(ERROR) << "Failed to setup graph: " << status;
+
375  return false;
+
376  }
+
377  if (!stream_iter->language.empty())
+
378  demuxer->SetLanguageOverride(stream_selector, stream_iter->language);
+
379  }
+
380 
+
381  // Initialize processing graph.
+
382  for (const std::unique_ptr<RemuxJob>& job : *remux_jobs) {
+
383  Status status = job->demuxer()->Initialize();
+
384  if (!status.ok()) {
+
385  LOG(ERROR) << "Failed to initialize processing graph " << status;
+
386  return false;
+
387  }
+
388  }
+
389  return true;
+
390 }
+
391 
+
392 Status RunRemuxJobs(const std::vector<std::unique_ptr<RemuxJob>>& remux_jobs) {
+
393  // Start the job threads.
+
394  for (const std::unique_ptr<RemuxJob>& job : remux_jobs)
+
395  job->Start();
+
396 
+
397  // Wait for all jobs to complete or an error occurs.
+
398  Status status;
+
399  bool all_joined;
+
400  do {
+
401  all_joined = true;
+
402  for (const std::unique_ptr<RemuxJob>& job : remux_jobs) {
+
403  if (job->HasBeenJoined()) {
+
404  status = job->status();
+
405  if (!status.ok())
+
406  break;
+
407  } else {
+
408  all_joined = false;
+
409  job->Join();
+
410  }
+
411  }
+
412  } while (!all_joined && status.ok());
+
413 
+
414  return status;
+
415 }
+
416 
+
417 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
+
418  const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
+
419  if (protection_scheme == FOURCC_NULL)
+
420  return false;
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))
+
422  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
+
423  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
+
424  "work together.";
+
425  return false;
+
426  }
+
427 
+
428  // Since there isn't a muxer listener that can output both MPD and HLS,
+
429  // disallow specifying both MPD and HLS flags.
+
430  if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
+
431  LOG(ERROR) << "Cannot output both MPD and HLS.";
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;
+
433  }
+
434 
+
435  ChunkingOptions chunking_options = GetChunkingOptions();
+
436  MuxerOptions muxer_options = GetMuxerOptions();
+
437 
+
438  DCHECK(!stream_descriptors.empty());
+
439  // On demand profile generates single file segment while live profile
+
440  // generates multiple segments specified using segment template.
+
441  const bool on_demand_dash_profile =
+
442  stream_descriptors.begin()->segment_template.empty();
+
443  for (const auto& stream_descriptor : stream_descriptors) {
+
444  if (on_demand_dash_profile != stream_descriptor.segment_template.empty()) {
+
445  LOG(ERROR) << "Inconsistent stream descriptor specification: "
+
446  "segment_template should be specified for none or all "
+
447  "stream descriptors.";
+
448  return false;
+
449  }
+
450  }
+
451  if (FLAGS_output_media_info && !on_demand_dash_profile) {
+
452  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
+
453  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported for "
+
454  "on-demand profile (not using segment_template).";
+
455  return false;
+
456  }
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)
+
458  MpdOptions mpd_options = GetMpdOptions(on_demand_dash_profile);
+
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, chunking_options, muxer_options,
+
501  &fake_clock, encryption_key_source.get(),
+
502  mpd_notifier.get(), 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)
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)
@@ -684,7 +686,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 382dabab23..d68ba2d591 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 0434b43066..2766537653 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 bd3a74be1a..21ad7593c6 100644 --- a/docs/d2/de9/media__handler_8cc_source.html +++ b/docs/d2/de9/media__handler_8cc_source.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
11 
12 Status MediaHandler::SetHandler(int output_stream_index,
13  std::shared_ptr<MediaHandler> handler) {
-
14  if (!ValidateOutputStreamIndex(output_stream_index))
+
14  if (output_stream_index < 0)
15  return Status(error::INVALID_ARGUMENT, "Invalid output stream index");
16  if (output_handlers_.find(output_stream_index) != output_handlers_.end()) {
17  return Status(error::ALREADY_EXISTS,
@@ -119,59 +119,61 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
30  if (!status.ok())
31  return status;
32  for (auto& pair : output_handlers_) {
-
33  status = pair.second.first->Initialize();
-
34  if (!status.ok())
-
35  return status;
-
36  }
-
37  initialized_ = true;
-
38  return Status::OK;
-
39 }
-
40 
-
41 Status MediaHandler::OnFlushRequest(int input_stream_index) {
-
42  // The default implementation treats the output stream index to be identical
-
43  // to the input stream index, which is true for most handlers.
-
44  const int output_stream_index = input_stream_index;
-
45  return FlushDownstream(output_stream_index);
-
46 }
-
47 
-
48 bool MediaHandler::ValidateOutputStreamIndex(int stream_index) const {
-
49  return stream_index >= 0 && stream_index < num_input_streams_;
-
50 }
-
51 
-
52 Status MediaHandler::Dispatch(std::unique_ptr<StreamData> stream_data) {
-
53  int output_stream_index = stream_data->stream_index;
-
54  auto handler_it = output_handlers_.find(output_stream_index);
-
55  if (handler_it == output_handlers_.end()) {
-
56  return Status(error::NOT_FOUND,
-
57  "No output handler exist at the specified index.");
-
58  }
-
59  stream_data->stream_index = handler_it->second.second;
-
60  return handler_it->second.first->Process(std::move(stream_data));
-
61 }
-
62 
-
63 Status MediaHandler::FlushDownstream(int output_stream_index) {
-
64  auto handler_it = output_handlers_.find(output_stream_index);
-
65  if (handler_it == output_handlers_.end()) {
-
66  return Status(error::NOT_FOUND,
-
67  "No output handler exist at the specified index.");
-
68  }
-
69  return handler_it->second.first->OnFlushRequest(handler_it->second.second);
-
70 }
-
71 
-
72 } // namespace media
-
73 } // namespace shaka
+
33  if (!ValidateOutputStreamIndex(pair.first))
+
34  return Status(error::INVALID_ARGUMENT, "Invalid output stream index");
+
35  status = pair.second.first->Initialize();
+
36  if (!status.ok())
+
37  return status;
+
38  }
+
39  initialized_ = true;
+
40  return Status::OK;
+
41 }
+
42 
+
43 Status MediaHandler::OnFlushRequest(int input_stream_index) {
+
44  // The default implementation treats the output stream index to be identical
+
45  // to the input stream index, which is true for most handlers.
+
46  const int output_stream_index = input_stream_index;
+
47  return FlushDownstream(output_stream_index);
+
48 }
+
49 
+
50 bool MediaHandler::ValidateOutputStreamIndex(int stream_index) const {
+
51  return stream_index >= 0 && stream_index < num_input_streams_;
+
52 }
+
53 
+
54 Status MediaHandler::Dispatch(std::unique_ptr<StreamData> stream_data) {
+
55  int output_stream_index = stream_data->stream_index;
+
56  auto handler_it = output_handlers_.find(output_stream_index);
+
57  if (handler_it == output_handlers_.end()) {
+
58  return Status(error::NOT_FOUND,
+
59  "No output handler exist at the specified index.");
+
60  }
+
61  stream_data->stream_index = handler_it->second.second;
+
62  return handler_it->second.first->Process(std::move(stream_data));
+
63 }
+
64 
+
65 Status MediaHandler::FlushDownstream(int output_stream_index) {
+
66  auto handler_it = output_handlers_.find(output_stream_index);
+
67  if (handler_it == output_handlers_.end()) {
+
68  return Status(error::NOT_FOUND,
+
69  "No output handler exist at the specified index.");
+
70  }
+
71  return handler_it->second.first->OnFlushRequest(handler_it->second.second);
+
72 }
+
73 
+
74 } // namespace media
+
75 } // namespace shaka
Status SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)
Connect downstream handler at the specified output stream index.
virtual Status InitializeInternal()=0
-
Status Dispatch(std::unique_ptr< StreamData > stream_data)
-
Status FlushDownstream(int output_stream_index)
Flush the downstream connected at the specified output stream index.
-
virtual bool ValidateOutputStreamIndex(int stream_index) const
Validate if the stream at the specified index actually exists.
-
virtual Status OnFlushRequest(int input_stream_index)
Event handler for flush request at the specific input stream index.
+
Status Dispatch(std::unique_ptr< StreamData > stream_data)
+
Status FlushDownstream(int output_stream_index)
Flush the downstream connected at the specified output stream index.
+
virtual bool ValidateOutputStreamIndex(int stream_index) const
Validate if the stream at the specified index actually exists.
+
virtual Status OnFlushRequest(int input_stream_index)
Event handler for flush request at the specific input stream index.
diff --git a/docs/d2/de9/mock__muxer__listener_8h_source.html b/docs/d2/de9/mock__muxer__listener_8h_source.html index c90b2301f5..b4f6d40309 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 d4312ac4e7..b72e11dab4 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 0b635daae7..65cb5e5cb0 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 eac77248e4..fdca913a28 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 1a40bbaed8..76c0db2950 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 f33a8e915e..40a8fbf97d 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 ca2730d13e..68d09c2759 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 2746eeb0c9..ec1453f585 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 10acc42e05..b6432f8b44 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 fa22627b86..ab89cfdd42 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 80be5c0e21..6b218e5f30 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 0c228e9902..724acf5267 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 74bfffc9d0..7a33f80464 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 6f0556dc4e..b9fb0d80c3 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 553183b985..b6946f0827 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 df87b8f212..6620176c8b 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 016df7a90c..7e56361875 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 bbe8a3a20f..b517af05f6 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 b75d52f725..5f919298ef 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 5c00591e88..cc38df5377 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 619f87c50d..efb6815412 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 a875db50f2..d86429617a 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 6d5e9cc69d..54953e73f7 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 ea1597d72e..db02ceb4d9 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 4aa6747502..3be494d01d 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 @@ -249,7 +249,7 @@ const std::map< int, std::pair
diff --git a/docs/d3/d72/fixed__key__source_8h_source.html b/docs/d3/d72/fixed__key__source_8h_source.html index 26a12173b9..13625155ca 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 676783874f..21aab297d4 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 @@ -253,7 +253,7 @@ const std::map< int, std::pair
diff --git a/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html b/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html index 573f4c9f4e..3d6c98fe30 100644 --- a/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html +++ b/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html @@ -236,7 +236,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/d3/d75/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html b/docs/d3/d75/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html index 0ccac0ba3d..9dd4d098c4 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 164ebc6b3c..0ce2e6d653 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 d30770fa6c..1049b32b76 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 7d85910e88..05b346c4f4 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 ca21a16715..517aef6c06 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 14ecde17d8..4dcdc07bfb 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 a885e72d2a..bb13bee1c7 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 18c9ce89e9..0c85a5f0a3 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 5ddd0a19dd..71993efb4b 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 30567425df..bb5d3e9404 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 6741b2742f..c170ebe111 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 3371157535..d48514d43e 100644 --- a/docs/d3/d93/media__handler_8h_source.html +++ b/docs/d3/d93/media__handler_8h_source.html @@ -255,14 +255,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Status SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)
Connect downstream handler at the specified output stream index.
virtual Status InitializeInternal()=0
-
Status Dispatch(std::unique_ptr< StreamData > stream_data)
+
Status Dispatch(std::unique_ptr< StreamData > stream_data)
-
Status FlushDownstream(int output_stream_index)
Flush the downstream connected at the specified output stream index.
+
Status FlushDownstream(int output_stream_index)
Flush the downstream connected at the specified output stream index.
Status DispatchEncryptionConfig(int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)
Dispatch the encryption config to downstream handlers.
-
virtual bool ValidateOutputStreamIndex(int stream_index) const
Validate if the stream at the specified index actually exists.
-
virtual Status OnFlushRequest(int input_stream_index)
Event handler for flush request at the specific input stream index.
+
virtual bool ValidateOutputStreamIndex(int stream_index) const
Validate if the stream at the specified index actually exists.
+
virtual Status OnFlushRequest(int input_stream_index)
Event handler for flush request at the specific input stream index.
virtual Status Process(std::unique_ptr< StreamData > stream_data)=0
Status DispatchSegmentInfo(int stream_index, std::shared_ptr< SegmentInfo > segment_info)
Dispatch the segment info to downstream handlers.
Status AddHandler(std::shared_ptr< MediaHandler > handler)
Connect downstream handler to the next availble output stream index.
Definition: media_handler.h:80
@@ -276,7 +276,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 d8166e07a7..b47961f34a 100644 --- a/docs/d3/d9c/encryption__handler_8cc_source.html +++ b/docs/d3/d9c/encryption__handler_8cc_source.html @@ -510,7 +510,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
421 } // namespace shaka
Abstract class holds stream information.
Definition: stream_info.h:58
-
Status Dispatch(std::unique_ptr< StreamData > stream_data)
+
Status Dispatch(std::unique_ptr< StreamData > stream_data)
virtual Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key)=0
@@ -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 84f94b5103..f89e0ba967 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 7f931180a6..8e88be379a 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 @@ -113,6 +113,10 @@ Public Member Functions  SingleSegmentSegmenter (const MuxerOptions &options)  
Segmenter implementation overrides.
+ +Status FinalizeSegment (uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment) override + Finalize the (sub)segment.
+  bool GetInitRangeStartAndEnd (uint64_t *start, uint64_t *end) override   bool GetIndexRangeStartAndEnd (uint64_t *start, uint64_t *end) override @@ -202,9 +206,6 @@ int track_id () const uint64_t segment_payload_pos () const   - -uint64_t cluster_length_in_time_scale () const - 

Detailed Description

An implementation of a Segmenter for a single-segment. This assumes that the output file is seekable. For non-seekable files, use TwoPassSingleSegmentSegmenter.

@@ -246,7 +247,7 @@ uint64_t cluster_length_in

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

-

Definition at line 79 of file single_segment_segmenter.cc.

+

Definition at line 46 of file single_segment_segmenter.cc.

@@ -285,7 +286,7 @@ uint64_t cluster_length_in

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

-

Definition at line 70 of file single_segment_segmenter.cc.

+

Definition at line 37 of file single_segment_segmenter.cc.

@@ -296,7 +297,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 481be164fc..a204d20c65 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 673347b81f..3865aefb41 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 5daee3a554..92081c0908 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 95f15e9d79..6ef715fe6e 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 9ce26efeed..d642f4fcbc 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 e690bdad9b..3ff02bb3a4 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 d1ccd3e7f3..b8db3705d8 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 eb91609cd5..eb1eade1fe 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -410,7 +410,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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
-
Status FlushDownstream(int output_stream_index)
Flush the downstream connected at the specified output stream index.
+
Status FlushDownstream(int output_stream_index)
Flush the downstream connected at the specified output stream index.
void SetKeySource(std::unique_ptr< KeySource > key_source)
Definition: demuxer.cc:78
virtual int64_t Read(void *buffer, uint64_t length)=0
Status DispatchMediaSample(int stream_index, std::shared_ptr< MediaSample > media_sample)
Dispatch the media sample to downstream handlers.
@@ -420,7 +420,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html b/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html index b7487932c2..e71f49c30a 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 82d2bd01ff..dabf16c372 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 147b6b4b6d..31f29fdd02 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 bc21763c2e..18d5987468 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 f3848daab1..0e0201cbf3 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 833f6b8728..a6f300cdc4 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 c71f5c6af1..d81b1729cb 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 a9fa650472..c673b312f4 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 bd475a724d..1f896b45af 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 084a313024..dcbb7b329d 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -288,24 +288,24 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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:383
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:399
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:412
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:428
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:108
+
uint32_t sample_duration() const
Definition: segmenter.h:114
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
Status WriteToFile(File *file)
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 f1d7892a73..8b731e6309 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 a1b3cc827f..3b46556d1a 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 8be65d50d6..8ae1d8b2db 100644 --- a/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html +++ b/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html b/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html index 85303ed792..4b698e9eb0 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 f6748c1bc7..311cd0f714 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 3a97378fc9..267ab0c86c 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 4de3082eee..c3c17ce9bf 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 b26060a19d..37e319bc7c 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 fa0854c7ef..fd583ee136 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 cf8c5bcb91..57f3a3d808 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 a2ebf3328c..9264b70222 100644 --- a/docs/d4/d43/classshaka_1_1media_1_1ChunkingHandler.html +++ b/docs/d4/d43/classshaka_1_1media_1_1ChunkingHandler.html @@ -268,7 +268,7 @@ class ChunkingHandlerTest< diff --git a/docs/d4/d4a/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html b/docs/d4/d4a/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html index 892fb72ccc..5c94e03856 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 7771e4612f..f1505d8bc0 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 5507d2bc16..0bdf5fff85 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 3a806c9206..50571234ba 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 8ecbe614b9..38a9528327 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 8b5bcc7ddb..eb42afccd1 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 e7871a4504..ea11f0cf82 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 d72e54ea96..31e2bb8b56 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 61b99cb516..03981e8698 100644 --- a/docs/d4/d83/cue_8cc_source.html +++ b/docs/d4/d83/cue_8cc_source.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d87/nalu__reader_8h_source.html b/docs/d4/d87/nalu__reader_8h_source.html index 3354d6f58b..b342cda659 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 3bac434492..e931d5426f 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 8374a077c4..46f537ef16 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 bb4711ed9b..bbb8f6ec95 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 33336c7f06..dbffe2efc6 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 224fdbf84c..cbd44633db 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 0635c2a6ec..c6834bb80c 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -164,142 +164,134 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
76  MuxerOptions ret;
77  ret.output_file_name = output_file_name_;
-
78  ret.segment_duration = 30; // seconds
-
79  ret.fragment_duration = 30; // seconds
-
80  ret.segment_sap_aligned = false;
-
81  ret.fragment_sap_aligned = false;
-
82  // Use memory files for temp storage. Normally this would be a bad idea
-
83  // since it wouldn't support large files, but for tests the files are small.
-
84  ret.temp_dir = std::string(kMemoryFilePrefix) + "temp/";
-
85  return ret;
-
86 }
-
87 
- -
89  return new VideoStreamInfo(kTrackId, kTimeScale, kDuration, kCodec,
-
90  kCodecString, NULL, 0, kWidth, kHeight,
-
91  kPixelWidth, kPixelHeight, kTrickPlayRate,
-
92  kNaluLengthSize, kLanguage, false);
+
78  // Use memory files for temp storage. Normally this would be a bad idea
+
79  // since it wouldn't support large files, but for tests the files are small.
+
80  ret.temp_dir = std::string(kMemoryFilePrefix) + "temp/";
+
81  return ret;
+
82 }
+
83 
+ +
85  return new VideoStreamInfo(kTrackId, kTimeScale, kDuration, kCodec,
+
86  kCodecString, NULL, 0, kWidth, kHeight,
+
87  kPixelWidth, kPixelHeight, kTrickPlayRate,
+
88  kNaluLengthSize, kLanguage, false);
+
89 }
+
90 
+
91 std::string SegmentTestBase::OutputFileName() const {
+
92  return output_file_name_;
93 }
94 
-
95 std::string SegmentTestBase::OutputFileName() const {
-
96  return output_file_name_;
-
97 }
+
95 SegmentTestBase::ClusterParser::ClusterParser() : in_cluster_(false) {}
+
96 
+
97 SegmentTestBase::ClusterParser::~ClusterParser() {}
98 
-
99 SegmentTestBase::ClusterParser::ClusterParser() : in_cluster_(false) {}
-
100 
-
101 SegmentTestBase::ClusterParser::~ClusterParser() {}
-
102 
-
103 void SegmentTestBase::ClusterParser::PopulateFromCluster(
-
104  const std::string& file_name) {
-
105  cluster_sizes_.clear();
-
106  std::string file_contents;
-
107  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
-
108 
-
109  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
-
110  const size_t size = file_contents.size();
-
111  WebMListParser cluster_parser(kWebMIdCluster, this);
-
112  size_t position = 0;
-
113  while (position < size) {
-
114  int read = cluster_parser.Parse(data + position,
-
115  static_cast<int>(size - position));
-
116  ASSERT_LT(0, read);
-
117 
-
118  cluster_parser.Reset();
-
119  position += read;
-
120  }
-
121 }
-
122 
-
123 void SegmentTestBase::ClusterParser::PopulateFromSegment(
-
124  const std::string& file_name) {
-
125  cluster_sizes_.clear();
-
126  std::string file_contents;
-
127  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
-
128 
-
129  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
-
130  const size_t size = file_contents.size();
-
131  WebMListParser header_parser(kWebMIdEBMLHeader, this);
-
132  int offset = header_parser.Parse(data, static_cast<int>(size));
-
133  ASSERT_LT(0, offset);
-
134 
-
135  WebMListParser segment_parser(kWebMIdSegment, this);
-
136  ASSERT_LT(
-
137  0, segment_parser.Parse(data + offset, static_cast<int>(size) - offset));
-
138 }
-
139 
-
140 int SegmentTestBase::ClusterParser::GetFrameCountForCluster(size_t i) const {
-
141  DCHECK(i < cluster_sizes_.size());
-
142  return cluster_sizes_[i];
+
99 void SegmentTestBase::ClusterParser::PopulateFromCluster(
+
100  const std::string& file_name) {
+
101  cluster_sizes_.clear();
+
102  std::string file_contents;
+
103  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
+
104 
+
105  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
+
106  const size_t size = file_contents.size();
+
107  WebMListParser cluster_parser(kWebMIdCluster, this);
+
108  size_t position = 0;
+
109  while (position < size) {
+
110  int read = cluster_parser.Parse(data + position,
+
111  static_cast<int>(size - position));
+
112  ASSERT_LT(0, read);
+
113 
+
114  cluster_parser.Reset();
+
115  position += read;
+
116  }
+
117 }
+
118 
+
119 void SegmentTestBase::ClusterParser::PopulateFromSegment(
+
120  const std::string& file_name) {
+
121  cluster_sizes_.clear();
+
122  std::string file_contents;
+
123  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
+
124 
+
125  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
+
126  const size_t size = file_contents.size();
+
127  WebMListParser header_parser(kWebMIdEBMLHeader, this);
+
128  int offset = header_parser.Parse(data, static_cast<int>(size));
+
129  ASSERT_LT(0, offset);
+
130 
+
131  WebMListParser segment_parser(kWebMIdSegment, this);
+
132  ASSERT_LT(
+
133  0, segment_parser.Parse(data + offset, static_cast<int>(size) - offset));
+
134 }
+
135 
+
136 int SegmentTestBase::ClusterParser::GetFrameCountForCluster(size_t i) const {
+
137  DCHECK(i < cluster_sizes_.size());
+
138  return cluster_sizes_[i];
+
139 }
+
140 
+
141 size_t SegmentTestBase::ClusterParser::cluster_count() const {
+
142  return cluster_sizes_.size();
143 }
144 
-
145 size_t SegmentTestBase::ClusterParser::cluster_count() const {
-
146  return cluster_sizes_.size();
-
147 }
-
148 
-
149 WebMParserClient* SegmentTestBase::ClusterParser::OnListStart(int id) {
-
150  if (id == kWebMIdCluster) {
-
151  if (in_cluster_)
-
152  return NULL;
+
145 WebMParserClient* SegmentTestBase::ClusterParser::OnListStart(int id) {
+
146  if (id == kWebMIdCluster) {
+
147  if (in_cluster_)
+
148  return NULL;
+
149 
+
150  cluster_sizes_.push_back(0);
+
151  in_cluster_ = true;
+
152  }
153 
-
154  cluster_sizes_.push_back(0);
-
155  in_cluster_ = true;
-
156  }
-
157 
-
158  return this;
-
159 }
-
160 
-
161 bool SegmentTestBase::ClusterParser::OnListEnd(int id) {
-
162  if (id == kWebMIdCluster) {
-
163  if (!in_cluster_)
-
164  return false;
-
165  in_cluster_ = false;
-
166  }
-
167 
+
154  return this;
+
155 }
+
156 
+
157 bool SegmentTestBase::ClusterParser::OnListEnd(int id) {
+
158  if (id == kWebMIdCluster) {
+
159  if (!in_cluster_)
+
160  return false;
+
161  in_cluster_ = false;
+
162  }
+
163 
+
164  return true;
+
165 }
+
166 
+
167 bool SegmentTestBase::ClusterParser::OnUInt(int id, int64_t val) {
168  return true;
169 }
170 
-
171 bool SegmentTestBase::ClusterParser::OnUInt(int id, int64_t val) {
+
171 bool SegmentTestBase::ClusterParser::OnFloat(int id, double val) {
172  return true;
173 }
174 
-
175 bool SegmentTestBase::ClusterParser::OnFloat(int id, double val) {
-
176  return true;
-
177 }
-
178 
-
179 bool SegmentTestBase::ClusterParser::OnBinary(int id,
-
180  const uint8_t* data,
-
181  int size) {
-
182  if (in_cluster_ && (id == kWebMIdSimpleBlock || id == kWebMIdBlock)) {
-
183  cluster_sizes_.back()++;
-
184  }
-
185 
+
175 bool SegmentTestBase::ClusterParser::OnBinary(int id,
+
176  const uint8_t* data,
+
177  int size) {
+
178  if (in_cluster_ && (id == kWebMIdSimpleBlock || id == kWebMIdBlock)) {
+
179  cluster_sizes_.back()++;
+
180  }
+
181 
+
182  return true;
+
183 }
+
184 
+
185 bool SegmentTestBase::ClusterParser::OnString(int id, const std::string& str) {
186  return true;
187 }
188 
-
189 bool SegmentTestBase::ClusterParser::OnString(int id, const std::string& str) {
-
190  return true;
-
191 }
-
192 
-
193 } // namespace media
-
194 } // namespace shaka
+
189 } // namespace media
+
190 } // namespace shaka
- -
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
- - +
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
+
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
std::string OutputFileName() const
Gets the file name of the current output file.
+
std::string OutputFileName() const
Gets the file name of the current output file.
std::shared_ptr< MediaSample > CreateSample(KeyFrameFlag key_frame_flag, uint64_t duration, SideDataFlag side_data_flag)
Creates a new media sample.
-
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:185
-
std::string temp_dir
Specify temporary directory for intermediate files.
Definition: muxer_options.h:67
+
std::string temp_dir
Specify temporary directory for intermediate files.
Definition: muxer_options.h:48
MuxerOptions CreateMuxerOptions() const
Creates a Muxer options object for testing.
static std::shared_ptr< MediaSample > CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)
Definition: media_sample.cc:45
-
Holds video stream information.
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 64ba373a12..2277f0fccb 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 1d6977a714..32097ad54e 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 d031b7300b..e086c1238b 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 27cae78f45..3bb7196acf 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 48782216cb..c2abb7d871 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 4756835adf..2da031303a 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 9ede280462..7c66c16f41 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 36bbd96ae5..0279383b8f 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 79c2326aac..2cb033ee5b 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 502d324fa3..b16fc617fd 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 c1eb01e211..e19bfc8e20 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 d7a29510a4..d194a1ad4f 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 822f690a74..354fab4067 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 d0bfba4d05..367c16fde0 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 1353171864..144f2b415f 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 d516f69afe..eae472c9a9 100644 --- a/docs/d4/df5/webvtt__sample__converter_8cc_source.html +++ b/docs/d4/df5/webvtt__sample__converter_8cc_source.html @@ -416,7 +416,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html b/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html index 0ae2f789fe..4bf4938f28 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 ae0cde40c9..de437dee58 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 36b9beb718..e5c460ddf4 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 4170fda237..b35ab20f71 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 2ad6077e1c..c44d682f6b 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 e263f35128..3d693dee19 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 61ca1668da..ab4a46edb6 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 fe0b341f0d..792fc9f1bb 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 cadcf0b0e0..61898e3382 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 419fe03e0f..f4bd9fa6a7 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 b85d5e0ed1..3c679a6709 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 d328c0e775..ab9ae0489e 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 494cac39c7..3a22d28357 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 ee5fac8ab8..d259833917 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 00a24ef532..04f47415f0 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 9b5065d449..1fcb656587 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 5bad6198bc..9590fb3b02 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -114,52 +114,55 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
28  explicit SingleSegmentSegmenter(const MuxerOptions& options);
29  ~SingleSegmentSegmenter() override;
30 
-
33  bool GetInitRangeStartAndEnd(uint64_t* start, uint64_t* end) override;
-
34  bool GetIndexRangeStartAndEnd(uint64_t* start, uint64_t* end) override;
-
36 
-
37  protected:
-
38  MkvWriter* writer() { return writer_.get(); }
-
39  uint64_t init_end() { return init_end_; }
-
40  void set_init_end(uint64_t end) { init_end_ = end; }
-
41  void set_index_start(uint64_t start) { index_start_ = start; }
-
42  void set_index_end(uint64_t end) { index_end_ = end; }
-
43  void set_writer(std::unique_ptr<MkvWriter> writer) {
-
44  writer_ = std::move(writer);
-
45  }
-
46 
-
47  // Segmenter implementation overrides.
-
48  Status DoInitialize(std::unique_ptr<MkvWriter> writer) override;
-
49  Status DoFinalize() override;
-
50 
-
51  private:
-
52  // Segmenter implementation overrides.
-
53  Status NewSubsegment(uint64_t start_timescale) override;
-
54  Status NewSegment(uint64_t start_timescale) override;
-
55 
-
56  std::unique_ptr<MkvWriter> writer_;
-
57  uint64_t init_end_;
-
58  uint64_t index_start_;
-
59  uint64_t index_end_;
-
60 
-
61  DISALLOW_COPY_AND_ASSIGN(SingleSegmentSegmenter);
-
62 };
-
63 
-
64 } // namespace webm
-
65 } // namespace media
-
66 } // namespace shaka
-
67 
-
68 #endif // MEDIA_FORMATS_WEBM_SINGLE_SEGMENT_SEGMENTER_H_
-
bool GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end) override
+
33  Status FinalizeSegment(uint64_t start_timescale,
+
34  uint64_t duration_timescale,
+
35  bool is_subsegment) override;
+
36  bool GetInitRangeStartAndEnd(uint64_t* start, uint64_t* end) override;
+
37  bool GetIndexRangeStartAndEnd(uint64_t* start, uint64_t* end) override;
+
39 
+
40  protected:
+
41  MkvWriter* writer() { return writer_.get(); }
+
42  uint64_t init_end() { return init_end_; }
+
43  void set_init_end(uint64_t end) { init_end_ = end; }
+
44  void set_index_start(uint64_t start) { index_start_ = start; }
+
45  void set_index_end(uint64_t end) { index_end_ = end; }
+
46  void set_writer(std::unique_ptr<MkvWriter> writer) {
+
47  writer_ = std::move(writer);
+
48  }
+
49 
+
50  // Segmenter implementation overrides.
+
51  Status DoInitialize(std::unique_ptr<MkvWriter> writer) override;
+
52  Status DoFinalize() override;
+
53 
+
54  private:
+
55  // Segmenter implementation overrides.
+
56  Status NewSegment(uint64_t start_timescale, bool is_subsegment) override;
+
57 
+
58  std::unique_ptr<MkvWriter> writer_;
+
59  uint64_t init_end_;
+
60  uint64_t index_start_;
+
61  uint64_t index_end_;
+
62 
+
63  DISALLOW_COPY_AND_ASSIGN(SingleSegmentSegmenter);
+
64 };
+
65 
+
66 } // namespace webm
+
67 } // namespace media
+
68 } // namespace shaka
+
69 
+
70 #endif // MEDIA_FORMATS_WEBM_SINGLE_SEGMENT_SEGMENTER_H_
+
bool GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end) override
-
bool GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end) override
+
bool GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end) override
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
An implementation of IMkvWriter using our File type.
Definition: mkv_writer.h:21
+
Status FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment) override
Finalize the (sub)segment.
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 b54e2dde71..951c10e30b 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 9a790157cc..c0a49be90c 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 c5f24ecd8a..120de752c8 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 47eca6d6b1..a15be74e33 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 cf7c0f40a5..bc4b671934 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 9df192d8a3..447abb3d76 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 558f9262f3..9a0dd64e8a 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 f1182a999a..628e26c8dd 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 a5b9ddb9b6..e712c264dc 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 47db7a3f86..8f1c1d5d1f 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 3c4c99247b..2b3cc469a8 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 5f5a39de4f..6879a5c4e6 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 cc1016c5f5..7709e78135 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 9236c4395f..b4eb9a7767 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 dcff0b82a6..e6019222eb 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 ebe144dbe2..04e4ff510d 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 499fee5e27..75bd85f85f 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 91a1d44c9d..359affc43c 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 bde6da8eca..f27ef5c9dc 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 174ff6536b..53b8cf0fde 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 0e604b8b3b..d8c62092fe 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 395ba7828f..4cd7300a7f 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 7f36434931..36996c992a 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 12f38f93bc..81ba9c9512 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 b03cbb8741..2a609b4a72 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 39ea4a4d97..b31bc0b82d 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 d5d033f2af..d3f0d7c023 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 f57da042b3..d2eaf9f415 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 9469ee894c..c570703557 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 1036ed8129..910134fcf2 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 436a508b7f..2750d4278e 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 9b75753009..58f6def528 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 1aeac61f9d..04586fd56c 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 aaa9a769b5..a31ac82307 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 f31623ac6c..362c58308a 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 097f9a09de..d8c63f6336 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 0f076c4f4f..dab30bb94a 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 30a49dfe20..bdb10837d3 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 0ac0cde69f..2c65d24053 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 7f522de0be..a1c33564ba 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 f40eb508b0..bf5bbd2e6e 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 2d747e2cf0..124a405c9c 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 4c35afefc8..f58916c5a2 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 80829c38c5..694179afa3 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 2604e4442e..c02f368289 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -125,7 +125,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 76a4bb208d..bb273ed8e8 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 a31bfd47c6..4b96f7903e 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 7951a0610e..8252681d8c 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 74a10e63b0..3466b21cc4 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 650062568a..12faab6722 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 ee17f3eac4..9413d5f01f 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 72758cc147..ca927b5393 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 60ff858e3f..c87041821d 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 5045d930eb..eacec062e0 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -497,11 +497,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
-
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:100
+
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:102
diff --git a/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html b/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html index b0a53aefe3..5e07cf12e3 100644 --- a/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html +++ b/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html @@ -259,7 +259,7 @@ class EncryptionHandlerTes diff --git a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html index dfd39f7d13..3589e2d5a4 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -104,89 +104,80 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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
+
18 
+
19 MultiSegmentSegmenter::MultiSegmentSegmenter(const MuxerOptions& options)
+
20  : Segmenter(options), num_segment_(0) {}
+
21 
+
22 MultiSegmentSegmenter::~MultiSegmentSegmenter() {}
+
23 
+ +
25  uint64_t duration_timescale,
+
26  bool is_subsegment) {
+
27  CHECK(cluster());
+
28  Status status = Segmenter::FinalizeSegment(start_timescale,
+
29  duration_timescale, is_subsegment);
+
30  if (!status.ok())
+
31  return status;
+
32  if (!cluster()->Finalize())
+
33  return Status(error::FILE_FAILURE, "Error finalizing segment.");
+
34  if (!is_subsegment) {
+
35  if (muxer_listener()) {
+
36  const uint64_t size = cluster()->Size();
+
37  muxer_listener()->OnNewSegment(writer_->file()->file_name(),
+
38  start_timescale, duration_timescale, size);
+
39  }
+
40  VLOG(1) << "WEBM file '" << writer_->file()->file_name() << "' finalized.";
+
41  }
+
42  return Status::OK;
+
43 }
+
44 
+
45 bool MultiSegmentSegmenter::GetInitRangeStartAndEnd(uint64_t* start,
+
46  uint64_t* end) {
+
47  return false;
+
48 }
+
49 
+
50 bool MultiSegmentSegmenter::GetIndexRangeStartAndEnd(uint64_t* start,
+
51  uint64_t* end) {
+
52  return false;
+
53 }
+
54 
+
55 Status MultiSegmentSegmenter::DoInitialize(std::unique_ptr<MkvWriter> writer) {
+
56  writer_ = std::move(writer);
+
57  return WriteSegmentHeader(0, writer_.get());
+
58 }
+
59 
+
60 Status MultiSegmentSegmenter::DoFinalize() {
+
61  return writer_->Close();
+
62 }
+
63 
+
64 Status MultiSegmentSegmenter::NewSegment(uint64_t start_timescale,
+
65  bool is_subsegment) {
+
66  if (!is_subsegment) {
+
67  // Create a new file for the new segment.
+
68  std::string segment_name =
+
69  GetSegmentName(options().segment_template, start_timescale,
+
70  num_segment_, options().bandwidth);
+
71  writer_.reset(new MkvWriter);
+
72  Status status = writer_->Open(segment_name);
+
73  if (!status.ok())
+
74  return status;
+
75  num_segment_++;
+
76  }
+
77 
+
78  uint64_t start_webm_timecode = FromBMFFTimescale(start_timescale);
+
79  return SetCluster(start_webm_timecode, 0, writer_.get());
+
80 }
+
81 
+
82 } // namespace webm
+
83 } // namespace media
+
84 } // namespace shaka
+
Status FinalizeSegment(int stream_id, bool is_subsegment)
Definition: segmenter.cc:336
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 fc6704f1e0..58c8b3946b 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 9bb5f005e8..b2965a5ed8 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 a8afcb7e63..b420a11a7c 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 2a85b9658a..72a254ed50 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 380e1335eb..f2defc1bc5 100644 --- a/docs/d6/d6a/cue_8h_source.html +++ b/docs/d6/d6a/cue_8h_source.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d6c/h26x__bit__reader_8cc_source.html b/docs/d6/d6c/h26x__bit__reader_8cc_source.html index ec4408a277..e2ae42b8d6 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 4adcff23a0..c06d7392be 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 843bb365c4..2ced2bda63 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 7706e91302..8890f16e5e 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 2dd358006d..ec50c773da 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 db2d318486..8a286dd101 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 dce9136c26..c968ffad06 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 5f7d804119..adeb286003 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 6a8c8cbde1..6a685e1b1c 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 afc287e369..b6c62d88d2 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 c38de67439..5ba5806afd 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 cd3082701a..7a9fe09c3c 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 90cad64d81..dc2c680926 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 8c70a656f0..917aaca070 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 f91c3c2c96..e4316c8897 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 0acdc2076e..651edcc214 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 a2b7c33360..d97f54aa5a 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 dd95fd2465..fed268fc9f 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 680ae86271..b94ab2769f 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_1VideoStreamInfo.html b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html index b3446df336..8f849381f1 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 1ad8ba27f5..701ef65147 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 a86c2d45db..d61ab36b71 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 b1137e8dfa..96544a44d4 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 9d6aa8773a..878f0e08db 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 acfc7499af..1468da53c1 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 ca0223684c..9cf074e6e7 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 69ab24756d..9984bd59c0 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 acb1c6a978..062e11291e 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 c2b58572e7..d44b3546a1 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 b9c86bf49e..dd0d9e6a52 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 78dde66eda..a8555c4d63 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 b54463d8b9..41923394bd 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 d51629d8e9..aca4fd6219 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 0d270bef3b..ac4c8d09ab 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 59bb719969..7d8859a94f 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -171,124 +171,106 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
82 }
83 
-
85  return Flush();
+
85  return Status::OK;
86 }
87 
-
88 // First checks whether the sample is a key frame. If so and the segment has
-
89 // passed the segment duration, then flush the generator and write all the data
-
90 // to file.
-
91 Status TsSegmenter::AddSample(std::shared_ptr<MediaSample> sample) {
-
92  const bool passed_segment_duration =
-
93  current_segment_total_sample_duration_ > muxer_options_.segment_duration;
-
94  if (sample->is_key_frame() && passed_segment_duration) {
-
95  Status status = Flush();
-
96  if (!status.ok())
-
97  return status;
-
98  }
-
99 
-
100  if (!ts_writer_file_opened_ && !sample->is_key_frame())
-
101  LOG(WARNING) << "A segment will start with a non key frame.";
+
88 Status TsSegmenter::AddSample(std::shared_ptr<MediaSample> sample) {
+
89  if (!ts_writer_file_opened_ && !sample->is_key_frame())
+
90  LOG(WARNING) << "A segment will start with a non key frame.";
+
91 
+
92  if (!pes_packet_generator_->PushSample(sample)) {
+
93  return Status(error::MUXER_FAILURE,
+
94  "Failed to add sample to PesPacketGenerator.");
+
95  }
+
96  return WritePesPacketsToFile();
+
97 }
+
98 
+
99 void TsSegmenter::InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer) {
+
100  ts_writer_ = std::move(writer);
+
101 }
102 
-
103  if (!pes_packet_generator_->PushSample(sample)) {
-
104  return Status(error::MUXER_FAILURE,
-
105  "Failed to add sample to PesPacketGenerator.");
-
106  }
+ +
104  std::unique_ptr<PesPacketGenerator> generator) {
+
105  pes_packet_generator_ = std::move(generator);
+
106 }
107 
-
108  const double scaled_sample_duration = sample->duration() * timescale_scale_;
-
109  current_segment_total_sample_duration_ +=
-
110  scaled_sample_duration / kTsTimescale;
+ +
109  ts_writer_file_opened_ = value;
+
110 }
111 
-
112  return WritePesPacketsToFile();
-
113 }
-
114 
-
115 void TsSegmenter::InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer) {
-
116  ts_writer_ = std::move(writer);
-
117 }
-
118 
- -
120  std::unique_ptr<PesPacketGenerator> generator) {
-
121  pes_packet_generator_ = std::move(generator);
-
122 }
-
123 
- -
125  ts_writer_file_opened_ = value;
-
126 }
-
127 
-
128 Status TsSegmenter::OpenNewSegmentIfClosed(uint32_t next_pts) {
-
129  if (ts_writer_file_opened_)
-
130  return Status::OK;
-
131  const std::string segment_name =
-
132  GetSegmentName(muxer_options_.segment_template, next_pts,
-
133  segment_number_++, muxer_options_.bandwidth);
-
134  if (!ts_writer_->NewSegment(segment_name))
-
135  return Status(error::MUXER_FAILURE, "Failed to initilize TsPacketWriter.");
-
136  current_segment_start_time_ = next_pts;
-
137  current_segment_path_ = segment_name;
-
138  ts_writer_file_opened_ = true;
-
139  return Status::OK;
-
140 }
-
141 
-
142 Status TsSegmenter::WritePesPacketsToFile() {
-
143  while (pes_packet_generator_->NumberOfReadyPesPackets() > 0u) {
-
144  std::unique_ptr<PesPacket> pes_packet =
-
145  pes_packet_generator_->GetNextPesPacket();
-
146 
-
147  Status status = OpenNewSegmentIfClosed(pes_packet->pts());
-
148  if (!status.ok())
-
149  return status;
-
150 
-
151  if (!ts_writer_->AddPesPacket(std::move(pes_packet)))
-
152  return Status(error::MUXER_FAILURE, "Failed to add PES packet.");
-
153  }
-
154  return Status::OK;
-
155 }
-
156 
-
157 Status TsSegmenter::Flush() {
-
158  if (!pes_packet_generator_->Flush()) {
-
159  return Status(error::MUXER_FAILURE,
-
160  "Failed to flush PesPacketGenerator.");
-
161  }
-
162  Status status = WritePesPacketsToFile();
-
163  if (!status.ok())
-
164  return status;
-
165 
-
166  // This method may be called from Finalize() so ts_writer_file_opened_ could
-
167  // be false.
-
168  if (ts_writer_file_opened_) {
-
169  if (!ts_writer_->FinalizeSegment()) {
-
170  return Status(error::MUXER_FAILURE, "Failed to finalize TsWriter.");
-
171  }
-
172  if (listener_) {
-
173  const int64_t file_size =
-
174  File::GetFileSize(current_segment_path_.c_str());
-
175  listener_->OnNewSegment(
-
176  current_segment_path_, current_segment_start_time_,
-
177  current_segment_total_sample_duration_ * kTsTimescale, file_size);
-
178  }
-
179  ts_writer_file_opened_ = false;
-
180  total_duration_in_seconds_ += current_segment_total_sample_duration_;
-
181  }
-
182  current_segment_total_sample_duration_ = 0.0;
-
183  current_segment_start_time_ = 0;
-
184  current_segment_path_.clear();
-
185  return NotifyEncrypted();
-
186 }
-
187 
-
188 Status TsSegmenter::NotifyEncrypted() {
-
189  if (encryption_key_ && total_duration_in_seconds_ >= clear_lead_in_seconds_) {
-
190  if (listener_)
-
191  listener_->OnEncryptionStart();
-
192 
-
193  if (!pes_packet_generator_->SetEncryptionKey(std::move(encryption_key_)))
-
194  return Status(error::INTERNAL_ERROR, "Failed to set encryption key.");
-
195  ts_writer_->SignalEncrypted();
-
196  }
-
197  return Status::OK;
-
198 }
-
199 
-
200 } // namespace mp2t
-
201 } // namespace media
-
202 } // namespace shaka
+
112 Status TsSegmenter::OpenNewSegmentIfClosed(uint32_t next_pts) {
+
113  if (ts_writer_file_opened_)
+
114  return Status::OK;
+
115  const std::string segment_name =
+
116  GetSegmentName(muxer_options_.segment_template, next_pts,
+
117  segment_number_++, muxer_options_.bandwidth);
+
118  if (!ts_writer_->NewSegment(segment_name))
+
119  return Status(error::MUXER_FAILURE, "Failed to initilize TsPacketWriter.");
+
120  current_segment_path_ = segment_name;
+
121  ts_writer_file_opened_ = true;
+
122  return Status::OK;
+
123 }
+
124 
+
125 Status TsSegmenter::WritePesPacketsToFile() {
+
126  while (pes_packet_generator_->NumberOfReadyPesPackets() > 0u) {
+
127  std::unique_ptr<PesPacket> pes_packet =
+
128  pes_packet_generator_->GetNextPesPacket();
+
129 
+
130  Status status = OpenNewSegmentIfClosed(pes_packet->pts());
+
131  if (!status.ok())
+
132  return status;
+
133 
+
134  if (!ts_writer_->AddPesPacket(std::move(pes_packet)))
+
135  return Status(error::MUXER_FAILURE, "Failed to add PES packet.");
+
136  }
+
137  return Status::OK;
+
138 }
+
139 
+
140 Status TsSegmenter::FinalizeSegment(uint64_t start_timestamp,
+
141  uint64_t duration) {
+
142  if (!pes_packet_generator_->Flush()) {
+
143  return Status(error::MUXER_FAILURE,
+
144  "Failed to flush PesPacketGenerator.");
+
145  }
+
146  Status status = WritePesPacketsToFile();
+
147  if (!status.ok())
+
148  return status;
+
149 
+
150  // This method may be called from Finalize() so ts_writer_file_opened_ could
+
151  // be false.
+
152  if (ts_writer_file_opened_) {
+
153  if (!ts_writer_->FinalizeSegment()) {
+
154  return Status(error::MUXER_FAILURE, "Failed to finalize TsWriter.");
+
155  }
+
156  if (listener_) {
+
157  const int64_t file_size =
+
158  File::GetFileSize(current_segment_path_.c_str());
+
159  listener_->OnNewSegment(current_segment_path_,
+
160  start_timestamp * timescale_scale_,
+
161  duration * timescale_scale_, file_size);
+
162  }
+
163  ts_writer_file_opened_ = false;
+
164  total_duration_in_seconds_ += duration * timescale_scale_ / kTsTimescale;
+
165  }
+
166  current_segment_path_.clear();
+
167  return NotifyEncrypted();
+
168 }
+
169 
+
170 Status TsSegmenter::NotifyEncrypted() {
+
171  if (encryption_key_ && total_duration_in_seconds_ >= clear_lead_in_seconds_) {
+
172  if (listener_)
+
173  listener_->OnEncryptionStart();
+
174 
+
175  if (!pes_packet_generator_->SetEncryptionKey(std::move(encryption_key_)))
+
176  return Status(error::INTERNAL_ERROR, "Failed to set encryption key.");
+
177  ts_writer_->SignalEncrypted();
+
178  }
+
179  return Status::OK;
+
180 }
+
181 
+
182 } // namespace mp2t
+
183 } // namespace media
+
184 } // namespace shaka
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
virtual void OnEncryptionInfoReady(bool is_initial_encryption_info, FourCC protection_scheme, const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< ProtectionSystemSpecificInfo > &key_system_info)=0
@@ -297,26 +279,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual void OnEncryptionStart()=0
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
virtual Status GetKey(TrackType track_type, EncryptionKey *key)=0
-
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: ts_segmenter.cc:91
+
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: ts_segmenter.cc:88
TsSegmenter(const MuxerOptions &options, MuxerListener *listener)
Definition: ts_segmenter.cc:27
static bool GenerateRandomIv(FourCC protection_scheme, std::vector< uint8_t > *iv)
Definition: aes_cryptor.cc:107
-
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.
+
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.
Definition: ts_segmenter.cc:99
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
+
Status FinalizeSegment(uint64_t start_timestamp, uint64_t duration)
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
- - + - + diff --git a/docs/d6/ded/ts__packet_8h_source.html b/docs/d6/ded/ts__packet_8h_source.html index 706c9a5909..3314d03a50 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 5b99688854..a609f7ca64 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 ccaaafa892..47eb14c802 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 c389ece5de..4b13614df1 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 d3f788f1a4..ea9a9ed76c 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 5c87078bf5..dfcfe4fe4b 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 b38910c59b..d7382e260c 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 9979e1b9f5..8da570d1db 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 665c614842..48b1422140 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 173235718d..3a1dc619bd 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 c4170f000d..095f5c4e3c 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 1867dfe796..c4ccd14863 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 791a3e33d6..0e0845ec4f 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 a7ea6b0979..a418a8afd2 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 adfbf5612c..5d92afdec6 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 fa7d116ad2..f44dd3364e 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 9f1b6a854b..066bcab52d 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 075c25b8d0..6b7822d03e 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 d704e8942a..1199d6f4f7 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 4a9d117c90..551283bfb7 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 eed67a6960..fcadeebd4b 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 c81e3dc155..6b3f69ade6 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 178cd58631..ae494260f9 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 002dba3845..91c198a407 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 85374161fe..7a4eae73be 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 c831aeb6ea..6aa00e58d9 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 b8882a4818..7999a71f3e 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 3267288aaf..9f64821154 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 48df91d764..bff9aafa46 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 5039b26165..6071cdaad7 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 7abcc2788e..0561c414f0 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 7350e11e4e..9a40ed0003 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 2c289da426..94b19bd7a4 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 ca447af996..78d2403eeb 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 8f277bfc29..d9dd266cd0 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 e50fc10c46..566459bd05 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 a3a0e0a403..d23ab45c66 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 fb3d8974ea..36232b06b7 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 40baff8897..67318e1041 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 5cfa692138..af0f7deddf 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 dc28e5eb1a..4677a18ed2 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 0ac3f61f22..7dd8711721 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 cfca081499..62ebe58826 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 216de84be3..116e0ea895 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 b7b02f76c7..7ce88207a2 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 33484d86bf..2af38086d0 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 e29ea18b53..3d8b1e1577 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 ad3aec995e..0056f6991f 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 198b987e08..c973312f29 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 a375aa122e..1f15880cbf 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 ca02fed331..b257776d84 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 7d8f4d9c22..b346f3ee9d 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 8abbfa4a66..9a43feeef7 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 b327be2569..4296dbca0a 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 9c715c8c86..4bdb467375 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 85b0a33479..3d430287be 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 7c7d6a20bb..a4bb1c1b31 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 80f1d8c890..ccb9d1fa94 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 8a147f0f04..3d29883e50 100644 --- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html +++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html @@ -94,14 +94,10 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - @@ -109,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
bandwidthshaka::media::MuxerOptions
fragment_durationshaka::media::MuxerOptions
fragment_sap_alignedshaka::media::MuxerOptions
mp4_use_decoding_timestamp_in_timelineshaka::media::MuxerOptions
MuxerOptions() (defined in shaka::media::MuxerOptions)shaka::media::MuxerOptions
num_subsegments_per_sidxshaka::media::MuxerOptions
output_file_nameshaka::media::MuxerOptions
segment_durationshaka::media::MuxerOptions
segment_sap_alignedshaka::media::MuxerOptions
segment_templateshaka::media::MuxerOptions
temp_dirshaka::media::MuxerOptions
webm_subsample_encryption (defined in shaka::media::MuxerOptions)shaka::media::MuxerOptions
diff --git a/docs/d8/d19/bandwidth__estimator_8h_source.html b/docs/d8/d19/bandwidth__estimator_8h_source.html index c9034cf52f..b8ed1ef3bd 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 bdf6a0a73d..fcc0c97da7 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 8c0ae6f0aa..3085068bb6 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 200986d7cb..c1f4fc55a3 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 e07a0622c5..00c6b7d92b 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 adddb2efd8..2337e1e30f 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 63cb448f5d..8484800132 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 56497a2b50..233026e1b6 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/d6a/classshaka_1_1media_1_1ClusterBuilder-members.html b/docs/d8/d6a/classshaka_1_1media_1_1ClusterBuilder-members.html index 8818a1e407..1eaf0c882a 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 f7a7df171c..fdcefde231 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 19113d818a..8155ea5607 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 0d6147f630..d5faa37cbe 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 574a6a6964..475557da92 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 06eaa07435..d11438b37d 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 30ad4e86f7..0b67b25ec5 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 3e46cf37e0..fe494f1eb0 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 efde47240e..0ed378e648 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 f732cd1c1e..7109029b7e 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 81a962642d..3e0cf08842 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 d8887e3534..034516992c 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 1a9ab4fe1e..904b6e79a1 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 b61f51ea91..abbb6acc80 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 6cc07b9232..ffa9f8ddfb 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -298,11 +298,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:169
-
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:100
+
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:102
diff --git a/docs/d8/d9c/webm__tracks__parser_8cc_source.html b/docs/d8/d9c/webm__tracks__parser_8cc_source.html index e4aa466a65..193bc5f29b 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 7108b969ae..10cbb9c80b 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 9d98df3291..fc9a9bfa5e 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 34021d472d..405c90ce1e 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 2c34fe9dc6..193f0cc4c9 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 0875e3b1a3..366f756176 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daf/namespaceshaka.html b/docs/d8/daf/namespaceshaka.html index 4232e8627f..e8388f121c 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 1832ac2c51..602778d3ff 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 @@ -123,8 +123,10 @@ Public Member Functions   Status Finalize ()   -Status AddSample (const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample) -  +Status AddSample (int stream_id, std::shared_ptr< MediaSample > sample) +  +Status FinalizeSegment (int stream_id, bool is_subsegment) +  uint32_t GetReferenceTimeScale () const   @@ -170,7 +172,7 @@ void set_progress_target 

Detailed Description

-

Segmenter for MP4 live, main and simple profiles. The generated media file can contain one or many segments with segment duration defined by MuxerOptions.segment_duration. A segment can contain one or many subsegments defined by num_subsegments_per_sidx. A subsegment can contain one or many fragments with fragment duration defined by MuxerOptions.fragment_duration. The actual segment or fragment duration may not match the requested duration exactly, but will be approximated. That is, the Segmenter tries to end segment/fragment at the first sample with overall segment/fragment duration not smaller than defined duration and yet meet SAP requirements. The generated segments are written to files defined by MuxerOptions.segment_template if specified; otherwise, the segments are appended to the main output file specified by MuxerOptions.output_file_name.

+

Segmenter for MP4 live, main and simple profiles. The generated media file can contain one or many segments with segment duration defined by MuxerOptions.segment_duration. A segment can contain one or many subsegments defined by num_subsegments_per_sidx. A subsegment can contain one or many fragments with fragment duration defined by MuxerOptions.fragment_duration. The actual segment or fragment duration may not match the requested duration exactly, but will be approximated. That is, the Segmenter tries to end segment/fragment at the first sample with overall segment/fragment duration not smaller than defined duration and yet meet SAP requirements. The generated segments are written to files defined by MuxerOptions.segment_template if specified; otherwise, the segments are appended to the main output file specified by MuxerOptions.output_file_name.

Definition at line 31 of file multi_segment_segmenter.h.

Member Function Documentation

@@ -259,7 +261,7 @@ void set_progress_target diff --git a/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html b/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html index d33b6b2894..9e440e8d26 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 34ec83c288..e537055b35 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 705cfe0097..46b3c6e4d3 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 16c09608cb..50c4e51fb8 100644 --- a/docs/d8/dca/ts__writer_8h_source.html +++ b/docs/d8/dca/ts__writer_8h_source.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html b/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html index 282fa67332..6c839a6933 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 c04a01e78a..b28a91cf15 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 d748766657..b95a577aa8 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 eeca5d37c5..71f5f423e2 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 f667e79976..66daa79d57 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 7ea5bbcbcb..c8538adc5b 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 7df2e6dce8..866cd9927e 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 67641e0229..ed8e7cc799 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 5de5837a4f..a8b08d8d06 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 a56e6faccc..22b3a30289 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 ff09feca79..35bf9277b9 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -107,81 +107,94 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
18 
19 SingleSegmentSegmenter::~SingleSegmentSegmenter() {}
20 
-
21 Status SingleSegmentSegmenter::DoInitialize(std::unique_ptr<MkvWriter> writer) {
-
22  writer_ = std::move(writer);
-
23  Status ret = WriteSegmentHeader(0, writer_.get());
-
24  init_end_ = writer_->Position() - 1;
-
25  seek_head()->set_cluster_pos(init_end_ + 1 - segment_payload_pos());
-
26  return ret;
-
27 }
-
28 
-
29 Status SingleSegmentSegmenter::DoFinalize() {
-
30  if (!cluster()->Finalize())
-
31  return Status(error::FILE_FAILURE, "Error finalizing cluster.");
-
32 
-
33  // Write the Cues to the end of the file.
-
34  index_start_ = writer_->Position();
-
35  seek_head()->set_cues_pos(index_start_ - segment_payload_pos());
-
36  if (!cues()->Write(writer_.get()))
-
37  return Status(error::FILE_FAILURE, "Error writing Cues data.");
-
38 
-
39  // The WebM index is at the end of the file.
-
40  index_end_ = writer_->Position() - 1;
-
41  writer_->Position(0);
-
42 
-
43  Status status = WriteSegmentHeader(index_end_ + 1, writer_.get());
-
44  status.Update(writer_->Close());
-
45  return status;
-
46 }
-
47 
-
48 Status SingleSegmentSegmenter::NewSubsegment(uint64_t start_timescale) {
-
49  return Status::OK;
-
50 }
-
51 
-
52 Status SingleSegmentSegmenter::NewSegment(uint64_t start_timescale) {
-
53  if (cluster() && !cluster()->Finalize())
-
54  return Status(error::FILE_FAILURE, "Error finalizing cluster.");
-
55 
-
56  // Create a new Cue point.
-
57  uint64_t position = writer_->Position();
-
58  uint64_t start_webm_timecode = FromBMFFTimescale(start_timescale);
-
59 
-
60  mkvmuxer::CuePoint* cue_point = new mkvmuxer::CuePoint;
-
61  cue_point->set_time(start_webm_timecode);
-
62  cue_point->set_track(track_id());
-
63  cue_point->set_cluster_pos(position - segment_payload_pos());
-
64  if (!cues()->AddCue(cue_point))
-
65  return Status(error::INTERNAL_ERROR, "Error adding CuePoint.");
-
66 
-
67  return SetCluster(start_webm_timecode, position, writer_.get());
-
68 }
+ +
22  uint64_t duration_timescale,
+
23  bool is_subsegment) {
+
24  Status status = Segmenter::FinalizeSegment(start_timescale,
+
25  duration_timescale, is_subsegment);
+
26  if (!status.ok())
+
27  return status;
+
28  // No-op for subsegment in single segment mode.
+
29  if (is_subsegment)
+
30  return Status::OK;
+
31  CHECK(cluster());
+
32  if (!cluster()->Finalize())
+
33  return Status(error::FILE_FAILURE, "Error finalizing cluster.");
+
34  return Status::OK;
+
35 }
+
36 
+
37 bool SingleSegmentSegmenter::GetInitRangeStartAndEnd(uint64_t* start,
+
38  uint64_t* end) {
+
39  // The init range is the header, from the start of the file to the size of
+
40  // the header.
+
41  *start = 0;
+
42  *end = init_end_;
+
43  return true;
+
44 }
+
45 
+
46 bool SingleSegmentSegmenter::GetIndexRangeStartAndEnd(uint64_t* start,
+
47  uint64_t* end) {
+
48  // The index is the Cues element, which is always placed at the end of the
+
49  // file.
+
50  *start = index_start_;
+
51  *end = index_end_;
+
52  return true;
+
53 }
+
54 
+
55 Status SingleSegmentSegmenter::DoInitialize(std::unique_ptr<MkvWriter> writer) {
+
56  writer_ = std::move(writer);
+
57  Status ret = WriteSegmentHeader(0, writer_.get());
+
58  init_end_ = writer_->Position() - 1;
+
59  seek_head()->set_cluster_pos(init_end_ + 1 - segment_payload_pos());
+
60  return ret;
+
61 }
+
62 
+
63 Status SingleSegmentSegmenter::DoFinalize() {
+
64  // Write the Cues to the end of the file.
+
65  index_start_ = writer_->Position();
+
66  seek_head()->set_cues_pos(index_start_ - segment_payload_pos());
+
67  if (!cues()->Write(writer_.get()))
+
68  return Status(error::FILE_FAILURE, "Error writing Cues data.");
69 
-
70 bool SingleSegmentSegmenter::GetInitRangeStartAndEnd(uint64_t* start,
-
71  uint64_t* end) {
-
72  // The init range is the header, from the start of the file to the size of
-
73  // the header.
-
74  *start = 0;
-
75  *end = init_end_;
-
76  return true;
+
70  // The WebM index is at the end of the file.
+
71  index_end_ = writer_->Position() - 1;
+
72  writer_->Position(0);
+
73 
+
74  Status status = WriteSegmentHeader(index_end_ + 1, writer_.get());
+
75  status.Update(writer_->Close());
+
76  return status;
77 }
78 
-
79 bool SingleSegmentSegmenter::GetIndexRangeStartAndEnd(uint64_t* start,
-
80  uint64_t* end) {
-
81  // The index is the Cues element, which is always placed at the end of the
-
82  // file.
-
83  *start = index_start_;
-
84  *end = index_end_;
-
85  return true;
-
86 }
+
79 Status SingleSegmentSegmenter::NewSegment(uint64_t start_timescale,
+
80  bool is_subsegment) {
+
81  // No-op for subsegment in single segment mode.
+
82  if (is_subsegment)
+
83  return Status::OK;
+
84  // Create a new Cue point.
+
85  uint64_t position = writer_->Position();
+
86  uint64_t start_webm_timecode = FromBMFFTimescale(start_timescale);
87 
-
88 } // namespace webm
-
89 } // namespace media
-
90 } // namespace shaka
- +
88  mkvmuxer::CuePoint* cue_point = new mkvmuxer::CuePoint;
+
89  cue_point->set_time(start_webm_timecode);
+
90  cue_point->set_track(track_id());
+
91  cue_point->set_cluster_pos(position - segment_payload_pos());
+
92  if (!cues()->AddCue(cue_point))
+
93  return Status(error::INTERNAL_ERROR, "Error adding CuePoint.");
+
94 
+
95  return SetCluster(start_webm_timecode, position, writer_.get());
+
96 }
+
97 
+
98 } // namespace webm
+
99 } // namespace media
+
100 } // namespace shaka
+
Status FinalizeSegment(int stream_id, bool is_subsegment)
Definition: segmenter.cc:336
+
void Update(const Status &new_status)
Definition: status.h:127
+ + 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 a1c6a621fd..f810f7c08d 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 0a4ef63fa5..598ae395f1 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 2046c2c513..9583bac540 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 d9b63a9267..63855c9fc7 100644 --- a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html +++ b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d08/mock__mpd__builder_8h_source.html b/docs/d9/d08/mock__mpd__builder_8h_source.html index f4c107a6b7..526d24a007 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 3a88b1e681..41c2d55264 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 14880c02ed..240866d31d 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 63c457f1c2..9725655c8c 100644 --- a/docs/d9/d12/chunking__handler_8cc_source.html +++ b/docs/d9/d12/chunking__handler_8cc_source.html @@ -231,122 +231,124 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
142  const int64_t segment_index = timestamp / segment_duration_;
143  if (segment_index != current_segment_index_) {
144  current_segment_index_ = segment_index;
-
145  new_segment = true;
-
146  }
-
147  }
-
148  if (!new_segment && subsegment_duration_ > 0 &&
-
149  (is_key_frame || !chunking_options_.subsegment_sap_aligned)) {
-
150  const int64_t subsegment_index =
-
151  (timestamp - segment_info_[main_stream_index_]->start_timestamp) /
-
152  subsegment_duration_;
-
153  if (subsegment_index != current_subsegment_index_) {
-
154  current_subsegment_index_ = subsegment_index;
-
155  new_subsegment = true;
-
156  }
-
157  }
-
158 
-
159  Status status;
-
160  if (new_segment || new_subsegment) {
-
161  // Dispatch the samples before |timestamp| - See the implemention on how we
-
162  // determine if a sample is before |timestamp|..
-
163  status.Update(DispatchNonMainSamples(timestamp));
-
164  }
-
165 
-
166  if (new_segment) {
-
167  status.Update(DispatchSegmentInfoForAllStreams());
-
168  segment_info_[main_stream_index_]->start_timestamp = timestamp;
-
169  }
-
170  if (subsegment_duration_ > 0 && (new_segment || new_subsegment)) {
-
171  status.Update(DispatchSubsegmentInfoForAllStreams());
-
172  subsegment_info_[main_stream_index_]->start_timestamp = timestamp;
-
173  }
-
174  if (!status.ok())
-
175  return status;
-
176 
-
177  // Dispatch non-main samples for the next segment.
-
178  return DispatchNonMainSamples(kTimeStampToDispatchAllSamples);
-
179 }
-
180 
-
181 Status ChunkingHandler::DispatchNonMainSamples(int64_t timestamp_threshold) {
-
182  Status status;
-
183  while (status.ok() && !non_main_samples_.empty()) {
-
184  DCHECK_EQ(non_main_samples_.front()->stream_data_type,
-
185  StreamDataType::kMediaSample);
-
186  const int stream_index = non_main_samples_.front()->stream_index;
-
187  const MediaSample* sample = non_main_samples_.front()->media_sample.get();
-
188  // If the portion of the sample before |timestamp_threshold| is bigger than
-
189  // the other portion, we consider it part of the current segment.
-
190  const int64_t timestamp = sample->dts() + sample->duration() / 2;
-
191  const bool stop =
-
192  (timestamp_threshold != kTimeStampToDispatchAllSamples &&
-
193  (static_cast<double>(timestamp) / time_scales_[stream_index]) >
-
194  (static_cast<double>(timestamp_threshold) /
-
195  time_scales_[main_stream_index_]));
-
196  VLOG(3) << "Sample ts: " << sample->dts() << " "
-
197  << " duration: " << sample->duration()
-
198  << " scale: " << time_scales_[stream_index] << "\n"
-
199  << " threshold: " << timestamp_threshold
-
200  << " scale: " << time_scales_[main_stream_index_]
-
201  << (stop ? " stop "
-
202  : (segment_info_[stream_index] ? " dispatch "
-
203  : " discard "));
-
204  if (stop)
-
205  break;
-
206  // Only dispatch samples if the segment has started, otherwise discard
-
207  // them.
-
208  if (segment_info_[stream_index]) {
-
209  if (segment_info_[stream_index]->start_timestamp == -1)
-
210  segment_info_[stream_index]->start_timestamp = sample->dts();
-
211  if (subsegment_info_[stream_index] &&
-
212  subsegment_info_[stream_index]->start_timestamp == -1) {
-
213  subsegment_info_[stream_index]->start_timestamp = sample->dts();
-
214  }
-
215  last_sample_end_timestamps_[stream_index] =
-
216  sample->dts() + sample->duration();
-
217  status.Update(Dispatch(std::move(non_main_samples_.front())));
-
218  }
-
219  non_main_samples_.pop_front();
-
220  }
-
221  return status;
-
222 }
-
223 
-
224 Status ChunkingHandler::DispatchSegmentInfoForAllStreams() {
-
225  Status status;
-
226  for (int i = 0; i < static_cast<int>(segment_info_.size()) && status.ok();
-
227  ++i) {
-
228  if (segment_info_[i] && segment_info_[i]->start_timestamp != -1) {
-
229  segment_info_[i]->duration =
-
230  last_sample_end_timestamps_[i] - segment_info_[i]->start_timestamp;
-
231  status.Update(DispatchSegmentInfo(i, std::move(segment_info_[i])));
-
232  }
-
233  segment_info_[i].reset(new SegmentInfo);
-
234  subsegment_info_[i].reset();
-
235  }
-
236  return status;
-
237 }
-
238 
-
239 Status ChunkingHandler::DispatchSubsegmentInfoForAllStreams() {
-
240  Status status;
-
241  for (int i = 0; i < static_cast<int>(subsegment_info_.size()) && status.ok();
-
242  ++i) {
-
243  if (subsegment_info_[i] && subsegment_info_[i]->start_timestamp != -1) {
-
244  subsegment_info_[i]->duration =
-
245  last_sample_end_timestamps_[i] - subsegment_info_[i]->start_timestamp;
-
246  status.Update(DispatchSegmentInfo(i, std::move(subsegment_info_[i])));
-
247  }
-
248  subsegment_info_[i].reset(new SegmentInfo);
-
249  subsegment_info_[i]->is_subsegment = true;
-
250  }
-
251  return status;
-
252 }
-
253 
-
254 } // namespace media
-
255 } // namespace shaka
+
145  // Reset subsegment index.
+
146  current_subsegment_index_ = 0;
+
147  new_segment = true;
+
148  }
+
149  }
+
150  if (!new_segment && subsegment_duration_ > 0 &&
+
151  (is_key_frame || !chunking_options_.subsegment_sap_aligned)) {
+
152  const int64_t subsegment_index =
+
153  (timestamp - segment_info_[main_stream_index_]->start_timestamp) /
+
154  subsegment_duration_;
+
155  if (subsegment_index != current_subsegment_index_) {
+
156  current_subsegment_index_ = subsegment_index;
+
157  new_subsegment = true;
+
158  }
+
159  }
+
160 
+
161  Status status;
+
162  if (new_segment || new_subsegment) {
+
163  // Dispatch the samples before |timestamp| - See the implemention on how we
+
164  // determine if a sample is before |timestamp|..
+
165  status.Update(DispatchNonMainSamples(timestamp));
+
166  }
+
167 
+
168  if (new_segment) {
+
169  status.Update(DispatchSegmentInfoForAllStreams());
+
170  segment_info_[main_stream_index_]->start_timestamp = timestamp;
+
171  }
+
172  if (subsegment_duration_ > 0 && (new_segment || new_subsegment)) {
+
173  status.Update(DispatchSubsegmentInfoForAllStreams());
+
174  subsegment_info_[main_stream_index_]->start_timestamp = timestamp;
+
175  }
+
176  if (!status.ok())
+
177  return status;
+
178 
+
179  // Dispatch non-main samples for the next segment.
+
180  return DispatchNonMainSamples(kTimeStampToDispatchAllSamples);
+
181 }
+
182 
+
183 Status ChunkingHandler::DispatchNonMainSamples(int64_t timestamp_threshold) {
+
184  Status status;
+
185  while (status.ok() && !non_main_samples_.empty()) {
+
186  DCHECK_EQ(non_main_samples_.front()->stream_data_type,
+
187  StreamDataType::kMediaSample);
+
188  const int stream_index = non_main_samples_.front()->stream_index;
+
189  const MediaSample* sample = non_main_samples_.front()->media_sample.get();
+
190  // If the portion of the sample before |timestamp_threshold| is bigger than
+
191  // the other portion, we consider it part of the current segment.
+
192  const int64_t timestamp = sample->dts() + sample->duration() / 2;
+
193  const bool stop =
+
194  (timestamp_threshold != kTimeStampToDispatchAllSamples &&
+
195  (static_cast<double>(timestamp) / time_scales_[stream_index]) >
+
196  (static_cast<double>(timestamp_threshold) /
+
197  time_scales_[main_stream_index_]));
+
198  VLOG(3) << "Sample ts: " << sample->dts() << " "
+
199  << " duration: " << sample->duration()
+
200  << " scale: " << time_scales_[stream_index] << "\n"
+
201  << " threshold: " << timestamp_threshold
+
202  << " scale: " << time_scales_[main_stream_index_]
+
203  << (stop ? " stop "
+
204  : (segment_info_[stream_index] ? " dispatch "
+
205  : " discard "));
+
206  if (stop)
+
207  break;
+
208  // Only dispatch samples if the segment has started, otherwise discard
+
209  // them.
+
210  if (segment_info_[stream_index]) {
+
211  if (segment_info_[stream_index]->start_timestamp == -1)
+
212  segment_info_[stream_index]->start_timestamp = sample->dts();
+
213  if (subsegment_info_[stream_index] &&
+
214  subsegment_info_[stream_index]->start_timestamp == -1) {
+
215  subsegment_info_[stream_index]->start_timestamp = sample->dts();
+
216  }
+
217  last_sample_end_timestamps_[stream_index] =
+
218  sample->dts() + sample->duration();
+
219  status.Update(Dispatch(std::move(non_main_samples_.front())));
+
220  }
+
221  non_main_samples_.pop_front();
+
222  }
+
223  return status;
+
224 }
+
225 
+
226 Status ChunkingHandler::DispatchSegmentInfoForAllStreams() {
+
227  Status status;
+
228  for (int i = 0; i < static_cast<int>(segment_info_.size()) && status.ok();
+
229  ++i) {
+
230  if (segment_info_[i] && segment_info_[i]->start_timestamp != -1) {
+
231  segment_info_[i]->duration =
+
232  last_sample_end_timestamps_[i] - segment_info_[i]->start_timestamp;
+
233  status.Update(DispatchSegmentInfo(i, std::move(segment_info_[i])));
+
234  }
+
235  segment_info_[i].reset(new SegmentInfo);
+
236  subsegment_info_[i].reset();
+
237  }
+
238  return status;
+
239 }
+
240 
+
241 Status ChunkingHandler::DispatchSubsegmentInfoForAllStreams() {
+
242  Status status;
+
243  for (int i = 0; i < static_cast<int>(subsegment_info_.size()) && status.ok();
+
244  ++i) {
+
245  if (subsegment_info_[i] && subsegment_info_[i]->start_timestamp != -1) {
+
246  subsegment_info_[i]->duration =
+
247  last_sample_end_timestamps_[i] - subsegment_info_[i]->start_timestamp;
+
248  status.Update(DispatchSegmentInfo(i, std::move(subsegment_info_[i])));
+
249  }
+
250  subsegment_info_[i].reset(new SegmentInfo);
+
251  subsegment_info_[i]->is_subsegment = true;
+
252  }
+
253  return status;
+
254 }
+
255 
+
256 } // namespace media
+
257 } // namespace shaka
Status Process(std::unique_ptr< StreamData > stream_data) override
-
Status Dispatch(std::unique_ptr< StreamData > stream_data)
+
Status Dispatch(std::unique_ptr< StreamData > stream_data)
Status InitializeInternal() override
-
Status FlushDownstream(int output_stream_index)
Flush the downstream connected at the specified output stream index.
+
Status FlushDownstream(int output_stream_index)
Flush the downstream connected at the specified output stream index.
Status DispatchSegmentInfo(int stream_index, std::shared_ptr< SegmentInfo > segment_info)
Dispatch the segment info to downstream handlers.
Class to hold a media sample.
Definition: media_sample.h:22
@@ -357,7 +359,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 52383218d7..35f151a17f 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 f4feb384ba..902bdabc60 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 1d7791ab9d..72614ec339 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 4274e7d9c3..39d297f9c7 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 60f539d469..f8cbf23afd 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 @@ -116,8 +116,10 @@ Public Member Functions   Status Finalize ()   -Status AddSample (const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample) -  +Status AddSample (int stream_id, std::shared_ptr< MediaSample > sample) +  +Status FinalizeSegment (int stream_id, bool is_subsegment) +  virtual bool GetInitRange (size_t *offset, size_t *size)=0   virtual bool GetIndexRange (size_t *offset, size_t *size)=0 @@ -170,15 +172,15 @@ void set_progress_targetDefinition at line 40 of file segmenter.h.

Member Function Documentation

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

Parameters
+
stream_idis the zero-based stream index.
samplepoints to the sample to be added.
Returns
OK on success, an error status otherwise.
-

Definition at line 318 of file segmenter.cc.

+

Definition at line 311 of file segmenter.cc.

@@ -221,7 +224,44 @@ void 
set_progress_targetFinalize the segmenter.

Returns
OK on success, an error status otherwise.
-

Definition at line 294 of file segmenter.cc.

+

Definition at line 293 of file segmenter.cc.

+ + + + +
+
+ + + + + + + + + + + + + + + + + + +
Status shaka::media::mp4::Segmenter::FinalizeSegment (int stream_id,
bool is_subsegment 
)
+
+

Finalize the segment / subsegment.

+
Parameters
+ + + +
stream_idis the zero-based stream index.
is_subsegmentindicates if it is a subsegment (fragment).
+
+
+
Returns
OK on success, an error status otherwise.
+ +

Definition at line 336 of file segmenter.cc.

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

Definition at line 374 of file segmenter.cc.

+

Definition at line 403 of file segmenter.cc.

@@ -432,7 +472,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 108 of file segmenter.h.

+

Definition at line 114 of file segmenter.h.

@@ -443,7 +483,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 64e048377f..e1ad68b9c8 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 a73eee3d37..7924642e54 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 1737f6c092..f82e5c7b6c 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 e8e83dcd5e..9cb9644ed7 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 a9955641c4..d34b37d490 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 3a7ea6c9b8..cd5015dedd 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 6a37023958..d2e9678bb4 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 324a3ab5e6..d89b43a61c 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 e915d59987..96bf012db2 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 d2fed88924..b7ffbb8ecd 100644 --- a/docs/d9/d76/ts__muxer_8cc_source.html +++ b/docs/d9/d76/ts__muxer_8cc_source.html @@ -123,38 +123,48 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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
+
37 Status TsMuxer::AddSample(int stream_id, std::shared_ptr<MediaSample> sample) {
+
38  DCHECK_EQ(stream_id, 0);
+
39  return segmenter_->AddSample(sample);
+
40 }
+
41 
+
42 Status TsMuxer::FinalizeSegment(int stream_id,
+
43  std::shared_ptr<SegmentInfo> segment_info) {
+
44  DCHECK_EQ(stream_id, 0);
+
45  return segment_info->is_subsegment
+
46  ? Status::OK
+
47  : segmenter_->FinalizeSegment(segment_info->start_timestamp,
+
48  segment_info->duration);
+
49 }
+
50 
+
51 void TsMuxer::FireOnMediaStartEvent() {
+
52  if (!muxer_listener())
+
53  return;
+
54  muxer_listener()->OnMediaStart(options(), *streams().front(), kTsTimescale,
+
55  MuxerListener::kContainerWebM);
+
56 }
+
57 
+
58 void TsMuxer::FireOnMediaEndEvent() {
+
59  if (!muxer_listener())
+
60  return;
+
61 
+
62  // For now, there is no single file TS segmenter. So all the values passed
+
63  // here are false and 0. Called just to notify the MuxerListener.
+
64  const bool kHasInitRange = true;
+
65  const bool kHasIndexRange = true;
+
66  muxer_listener()->OnMediaEnd(!kHasInitRange, 0, 0, !kHasIndexRange, 0, 0, 0,
+
67  0);
+
68 }
+
69 
+
70 } // namespace mp2t
+
71 } // namespace media
+
72 } // 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 7c6d959be1..642841dbe0 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 e5b6dfaf8d..ef43f6042e 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 abb3f1f55d..4f15ea4f19 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 49572ff6e3..1e0a196d47 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 0239fc8b06..1ed6a231cd 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 4f58e91ec6..d610ed3673 100644 --- a/docs/d9/d90/text__track_8h_source.html +++ b/docs/d9/d90/text__track_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/da4/stream__descriptor_8h_source.html b/docs/d9/da4/stream__descriptor_8h_source.html index 963595c21e..bf84c9529d 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 e6ce452e3a..2f898f4904 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 a5ec06ba77..9547e97b46 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 857b8da0d4..d8e3ca241e 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,30 +93,31 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + +
AddSample(const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
AddSample(int stream_id, 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
GetDuration() const shaka::media::mp4::Segmenter
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< 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
progress_target() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
sample_duration() const shaka::media::mp4::Segmenterinline
Segmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
set_progress_target(uint64_t progress_target) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
SetComplete()shaka::media::mp4::Segmenterprotected
sidx() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
UpdateProgress(uint64_t progress)shaka::media::mp4::Segmenterprotected
~Segmenter() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmentervirtual
FinalizeSegment(int stream_id, bool is_subsegment)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
GetDuration() const shaka::media::mp4::Segmenter
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< 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
progress_target() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
sample_duration() const shaka::media::mp4::Segmenterinline
Segmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
set_progress_target(uint64_t progress_target) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
SetComplete()shaka::media::mp4::Segmenterprotected
sidx() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
UpdateProgress(uint64_t progress)shaka::media::mp4::Segmenterprotected
~Segmenter() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmentervirtual
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 5ec63831da..a2fc51f9d2 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 2eec88ac37..c085b97b02 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 5a438387e3..8168eb9f12 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -153,19 +153,23 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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
+
67  case StreamDataType::kSegmentInfo:
+
68  return FinalizeSegment(stream_data->stream_index,
+
69  std::move(stream_data->segment_info));
+
70  case StreamDataType::kMediaSample:
+
71  return AddSample(stream_data->stream_index,
+
72  std::move(stream_data->media_sample));
+
73  default:
+
74  VLOG(3) << "Stream data type "
+
75  << static_cast<int>(stream_data->stream_data_type) << " ignored.";
+
76  break;
+
77  }
+
78  // No dispatch for muxer.
+
79  return Status::OK;
+
80 }
+
81 
+
82 } // namespace media
+
83 } // namespace shaka
void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:56
@@ -176,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html b/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html index 8d6b33edca..9725b04ce4 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 f707d627aa..c401e81be7 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 446d0a54fe..a69ab67d84 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 63bda8b810..65415348e0 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 3164922134..669c676662 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 58d4fbd6d3..5a13a9ed38 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 521e4feaa2..d0a5ee31ff 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 4602a8193d..e6b1a417cf 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 d569c7bc51..5154679e37 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 1d21b63b8b..50d9a65c70 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 93f4b543b1..6c51feeb4a 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 8bfc5b5003..a6c2a773a5 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 d73b931d11..eeeb4e6152 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 5258323db1..6a2adf9aba 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 7458d7c8c3..4be826987f 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 3c7a16580e..5aad27627a 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 f298f69ac9..64b1e121ba 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 75926fc6a3..aa533c3d25 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 f078e5bfdb..c9931723c9 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 a7fc0d7a07..e4dbc21ad8 100644 --- a/docs/da/d23/ts__muxer_8h_source.html +++ b/docs/da/d23/ts__muxer_8h_source.html @@ -113,21 +113,23 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
26  // Muxer implementation.
27  Status InitializeMuxer() override;
28  Status Finalize() override;
-
29  Status DoAddSample(std::shared_ptr<MediaSample> sample) override;
-
30 
-
31  void FireOnMediaStartEvent();
-
32  void FireOnMediaEndEvent();
-
33 
-
34  std::unique_ptr<TsSegmenter> segmenter_;
+
29  Status AddSample(int stream_id, std::shared_ptr<MediaSample> sample) override;
+
30  Status FinalizeSegment(int stream_id,
+
31  std::shared_ptr<SegmentInfo> sample) override;
+
32 
+
33  void FireOnMediaStartEvent();
+
34  void FireOnMediaEndEvent();
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_
+
36  std::unique_ptr<TsSegmenter> segmenter_;
+
37 
+
38  DISALLOW_COPY_AND_ASSIGN(TsMuxer);
+
39 };
+
40 
+
41 } // namespace mp2t
+
42 } // namespace media
+
43 } // namespace shaka
+
44 
+
45 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_MUXER_H_
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -135,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d24/h265__parser_8h_source.html b/docs/da/d24/h265__parser_8h_source.html index 5728e34cfc..41b2b9f43a 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 89205d7e04..395c967065 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html b/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html index d2c36fa5ac..0b0e520428 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 @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html b/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html index 1b2bced8d7..417e33adfe 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 31e3414c4f..6608e3d090 100644 --- a/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html +++ b/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d43/structshaka_1_1ContentProtectionElement.html b/docs/da/d43/structshaka_1_1ContentProtectionElement.html index 96c594f61a..3b39bcf3ce 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 217266af8d..2c1d13003f 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 f41eeb897d..96125cce1a 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 fa6be780ad..cc2cdf88df 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 53e7424037..763c64765c 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 8f0c17ef5d..868e940e9e 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 69b4ba1a77..42ce354cd7 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 b97c3e63ce..e76fa250cd 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,32 +93,33 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
AddSample(const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
AddSample(int stream_id, 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
GetDuration() const shaka::media::mp4::Segmenter
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< 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
progress_target() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
sample_duration() const shaka::media::mp4::Segmenterinline
Segmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
set_progress_target(uint64_t progress_target) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
SetComplete()shaka::media::mp4::Segmenterprotected
sidx() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
SingleSegmentSegmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::SingleSegmentSegmenter)shaka::media::mp4::SingleSegmentSegmenter
UpdateProgress(uint64_t progress)shaka::media::mp4::Segmenterprotected
~Segmenter() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmentervirtual
~SingleSegmentSegmenter() override (defined in shaka::media::mp4::SingleSegmentSegmenter)shaka::media::mp4::SingleSegmentSegmenter
FinalizeSegment(int stream_id, bool is_subsegment)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
GetDuration() const shaka::media::mp4::Segmenter
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< 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
progress_target() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
sample_duration() const shaka::media::mp4::Segmenterinline
Segmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
set_progress_target(uint64_t progress_target) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
SetComplete()shaka::media::mp4::Segmenterprotected
sidx() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
SingleSegmentSegmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::SingleSegmentSegmenter)shaka::media::mp4::SingleSegmentSegmenter
UpdateProgress(uint64_t progress)shaka::media::mp4::Segmenterprotected
~Segmenter() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmentervirtual
~SingleSegmentSegmenter() override (defined in shaka::media::mp4::SingleSegmentSegmenter)shaka::media::mp4::SingleSegmentSegmenter
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 b9f7ba2eb7..44ed74bdf1 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 7c8a2546ea..d45618cb84 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 3c84807767..3bdd7c93fe 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 95b84b2275..f0a27d0afa 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 @@ -95,16 +95,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - - - - - + + + + + + +
AddSample(std::shared_ptr< MediaSample > sample)shaka::media::mp2t::TsSegmenter
Finalize()shaka::media::mp2t::TsSegmenter
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)shaka::media::mp2t::TsSegmenter
InjectPesPacketGeneratorForTesting(std::unique_ptr< PesPacketGenerator > generator)shaka::media::mp2t::TsSegmenter
InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)shaka::media::mp2t::TsSegmenter
SetTsWriterFileOpenedForTesting(bool value)shaka::media::mp2t::TsSegmenter
TsSegmenter(const MuxerOptions &options, MuxerListener *listener)shaka::media::mp2t::TsSegmenter
~TsSegmenter() (defined in shaka::media::mp2t::TsSegmenter)shaka::media::mp2t::TsSegmenter
FinalizeSegment(uint64_t start_timestamp, uint64_t duration)shaka::media::mp2t::TsSegmenter
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)shaka::media::mp2t::TsSegmenter
InjectPesPacketGeneratorForTesting(std::unique_ptr< PesPacketGenerator > generator)shaka::media::mp2t::TsSegmenter
InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)shaka::media::mp2t::TsSegmenter
SetTsWriterFileOpenedForTesting(bool value)shaka::media::mp2t::TsSegmenter
TsSegmenter(const MuxerOptions &options, MuxerListener *listener)shaka::media::mp2t::TsSegmenter
~TsSegmenter() (defined in shaka::media::mp2t::TsSegmenter)shaka::media::mp2t::TsSegmenter
diff --git a/docs/da/d88/mp4__muxer_8cc_source.html b/docs/da/d88/mp4__muxer_8cc_source.html index 6cfe3c702c..eb8bf10c7c 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -250,242 +250,251 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
161  return Status::OK;
162 }
163 
-
164 Status MP4Muxer::DoAddSample(std::shared_ptr<MediaSample> sample) {
+
164 Status MP4Muxer::AddSample(int stream_id, std::shared_ptr<MediaSample> sample) {
165  DCHECK(segmenter_);
-
166  return segmenter_->AddSample(*streams()[0], sample);
+
166  return segmenter_->AddSample(stream_id, 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  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();
+
169 Status MP4Muxer::FinalizeSegment(int stream_id,
+
170  std::shared_ptr<SegmentInfo> segment_info) {
+
171  DCHECK(segmenter_);
+
172  VLOG(3) << "Finalize " << (segment_info->is_subsegment ? "sub" : "")
+
173  << "segment " << segment_info->start_timestamp << " duration "
+
174  << segment_info->duration;
+
175  return segmenter_->FinalizeSegment(stream_id, segment_info->is_subsegment);
+
176 }
+
177 
+
178 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
+
179  int64_t now = IsoTimeNow();
+
180  trak->header.creation_time = now;
+
181  trak->header.modification_time = now;
+
182  trak->header.duration = 0;
+
183  trak->media.header.creation_time = now;
+
184  trak->media.header.modification_time = now;
+
185  trak->media.header.timescale = info->time_scale();
+
186  trak->media.header.duration = 0;
+
187  if (!info->language().empty()) {
+
188  // Strip off the subtag, if any.
+
189  std::string main_language = info->language();
+
190  size_t dash = main_language.find('-');
+
191  if (dash != std::string::npos) {
+
192  main_language.erase(dash);
+
193  }
+
194 
+
195  // ISO-639-2/T main language code should be 3 characters.
+
196  if (main_language.size() != 3) {
+
197  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
+
198  << "language code, ignoring.";
+
199  } else {
+
200  trak->media.header.language.code = main_language;
+
201  }
+
202  }
+
203 }
+
204 
+
205 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
+
206  Track* trak,
+
207  uint32_t track_id) {
+
208  InitializeTrak(video_info, trak);
+
209 
+
210  // width and height specify the track's visual presentation size as
+
211  // fixed-point 16.16 values.
+
212  uint32_t pixel_width = video_info->pixel_width();
+
213  uint32_t pixel_height = video_info->pixel_height();
+
214  if (pixel_width == 0 || pixel_height == 0) {
+
215  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
+
216  pixel_width = 1;
+
217  pixel_height = 1;
+
218  }
+
219  const double sample_aspect_ratio =
+
220  static_cast<double>(pixel_width) / pixel_height;
+
221  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
+
222  trak->header.height = video_info->height() * 0x10000;
+
223 
+
224  VideoSampleEntry video;
+
225  video.format = CodecToFourCC(video_info->codec());
+
226  video.width = video_info->width();
+
227  video.height = video_info->height();
+
228  video.codec_configuration.data = video_info->codec_config();
+
229  if (pixel_width != 1 || pixel_height != 1) {
+
230  video.pixel_aspect.h_spacing = pixel_width;
+
231  video.pixel_aspect.v_spacing = pixel_height;
+
232  }
+
233 
+
234  SampleDescription& sample_description =
+
235  trak->media.information.sample_table.description;
+
236  sample_description.type = kVideo;
+
237  sample_description.video_entries.push_back(video);
+
238 }
+
239 
+
240 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
+
241  Track* trak,
+
242  uint32_t track_id) {
+
243  InitializeTrak(audio_info, trak);
+
244 
+
245  trak->header.volume = 0x100;
+
246 
+
247  AudioSampleEntry audio;
+
248  audio.format = CodecToFourCC(audio_info->codec());
+
249  switch(audio_info->codec()){
+
250  case kCodecAAC:
+
251  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
+
252  audio.esds.es_descriptor.set_esid(track_id);
+
253  audio.esds.es_descriptor.set_decoder_specific_info(
+
254  audio_info->codec_config());
+
255  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
+
256  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
+
257  break;
+
258  case kCodecDTSC:
+
259  case kCodecDTSH:
+
260  case kCodecDTSL:
+
261  case kCodecDTSE:
+
262  case kCodecDTSM:
+
263  audio.ddts.extra_data = audio_info->codec_config();
+
264  audio.ddts.max_bitrate = audio_info->max_bitrate();
+
265  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
+
266  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
+
267  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
268  break;
-
269  default:
-
270  NOTIMPLEMENTED();
+
269  case kCodecAC3:
+
270  audio.dac3.data = audio_info->codec_config();
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;
+
272  case kCodecEAC3:
+
273  audio.dec3.data = audio_info->codec_config();
+
274  break;
+
275  case kCodecOpus:
+
276  audio.dops.opus_identification_header = audio_info->codec_config();
+
277  break;
+
278  default:
+
279  NOTIMPLEMENTED();
+
280  break;
+
281  }
+
282 
+
283  audio.channelcount = audio_info->num_channels();
+
284  audio.samplesize = audio_info->sample_bits();
+
285  audio.samplerate = audio_info->sampling_frequency();
+
286  SampleTable& sample_table = trak->media.information.sample_table;
+
287  SampleDescription& sample_description = sample_table.description;
+
288  sample_description.type = kAudio;
+
289  sample_description.audio_entries.push_back(audio);
+
290 
+
291  // Opus requires at least one sample group description box and at least one
+
292  // sample to group box with grouping type 'roll' within sample table box.
+
293  if (audio_info->codec() == kCodecOpus) {
+
294  sample_table.sample_group_descriptions.resize(1);
+
295  SampleGroupDescription& sample_group_description =
+
296  sample_table.sample_group_descriptions.back();
+
297  sample_group_description.grouping_type = FOURCC_roll;
+
298  sample_group_description.audio_roll_recovery_entries.resize(1);
+
299  // The roll distance is expressed in sample units and always takes negative
+
300  // values.
+
301  const uint64_t kNanosecondsPerSecond = 1000000000ull;
+
302  sample_group_description.audio_roll_recovery_entries[0].roll_distance =
+
303  (0 - (audio_info->seek_preroll_ns() * audio.samplerate +
+
304  kNanosecondsPerSecond / 2)) /
+
305  kNanosecondsPerSecond;
+
306 
+
307  sample_table.sample_to_groups.resize(1);
+
308  SampleToGroup& sample_to_group = sample_table.sample_to_groups.back();
+
309  sample_to_group.grouping_type = FOURCC_roll;
+
310 
+
311  sample_to_group.entries.resize(1);
+
312  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
313  // All samples are in track fragments.
+
314  sample_to_group_entry.sample_count = 0;
+
315  sample_to_group_entry.group_description_index =
+
316  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
+
317  } else if (audio_info->seek_preroll_ns() != 0) {
+
318  LOG(WARNING) << "Unexpected seek preroll for codec " << audio_info->codec();
+
319  return;
+
320  }
+
321 }
322 
-
323  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
324  return true;
-
325 }
-
326 
-
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;
+
323 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
324  DCHECK(start && end);
+
325  size_t range_offset = 0;
+
326  size_t range_size = 0;
+
327  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
+
328 
+
329  if (!has_range)
+
330  return false;
+
331 
+
332  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
333  return true;
+
334 }
335 
-
336  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
337  return true;
-
338 }
-
339 
-
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;
+
336 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
337  DCHECK(start && end);
+
338  size_t range_offset = 0;
+
339  size_t range_size = 0;
+
340  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
+
341 
+
342  if (!has_range)
+
343  return false;
+
344 
+
345  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
346  return true;
+
347 }
+
348 
+
349 void MP4Muxer::FireOnMediaStartEvent() {
+
350  if (!muxer_listener())
+
351  return;
+
352 
+
353  if (streams().size() > 1) {
+
354  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
+
355  return;
+
356  }
+
357  DCHECK(!streams().empty()) << "Media started without a stream.";
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);
+
359  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
+
360  muxer_listener()->OnMediaStart(options(), *streams().front(), timescale,
+
361  MuxerListener::kContainerMp4);
+
362 }
363 
-
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  }
+
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);
377 
-
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
+
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
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: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
@@ -495,7 +504,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html b/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html index 8cfbc44d7d..ea54d2dce9 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 75fa6e3455..31ad0a9f85 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 bcd1604af6..340e8f1309 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 9271470260..614413d751 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 9e276f2940..a084ddd022 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 a529ca6e3a..bf5c5ce339 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 94312b0ba9..d440edc423 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 e5018581e7..3cc6bf5983 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 b01e99f336..58ac5a3468 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 e72223d37d..3713ac5c4a 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 bcd55e432e..6888a7475d 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 1f4e85d220..99fe953f72 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 0560ce773a..f7fde72eb7 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 1056e1a306..9b4af182d7 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 b7db1d4ddd..d060ce3211 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 570fe035b7..9e1c3db1ba 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -128,68 +128,70 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
51 
54 
-
55  uint64_t fragment_duration() const { return fragment_duration_; }
-
56  uint64_t first_sap_time() const { return first_sap_time_; }
-
57  uint64_t earliest_presentation_time() const {
-
58  return earliest_presentation_time_;
-
59  }
-
60  bool fragment_initialized() const { return fragment_initialized_; }
-
61  bool fragment_finalized() const { return fragment_finalized_; }
-
62  BufferWriter* data() { return data_.get(); }
-
63 
- -
69  bool use_decoding_timestamp_in_timeline) {
-
70  use_decoding_timestamp_in_timeline_ = use_decoding_timestamp_in_timeline;
-
71  }
-
72 
-
73  protected:
-
74  TrackFragment* traf() { return traf_; }
-
75 
-
79  template <typename T>
-
80  bool OptimizeSampleEntries(std::vector<T>* entries, T* default_value);
-
81 
-
82  private:
-
83  // Check if the current fragment starts with SAP.
-
84  bool StartsWithSAP();
-
85 
-
86  bool use_decoding_timestamp_in_timeline_;
-
87  TrackFragment* traf_;
-
88  uint64_t seek_preroll_;
-
89  bool fragment_initialized_;
-
90  bool fragment_finalized_;
-
91  uint64_t fragment_duration_;
-
92  int64_t earliest_presentation_time_;
-
93  int64_t first_sap_time_;
-
94  std::unique_ptr<BufferWriter> data_;
-
95 
-
96  DISALLOW_COPY_AND_ASSIGN(Fragmenter);
-
97 };
-
98 
-
99 template <typename T>
-
100 bool Fragmenter::OptimizeSampleEntries(std::vector<T>* entries,
-
101  T* default_value) {
-
102  DCHECK(entries);
-
103  DCHECK(default_value);
-
104  DCHECK(!entries->empty());
-
105 
-
106  typename std::vector<T>::const_iterator it = entries->begin();
-
107  T value = *it;
-
108  for (; it < entries->end(); ++it)
-
109  if (value != *it)
-
110  return false;
-
111 
-
112  // Clear |entries| if it contains only one value.
-
113  entries->clear();
-
114  *default_value = value;
-
115  return true;
-
116 }
-
117 
-
118 } // namespace mp4
-
119 } // namespace media
-
120 } // namespace shaka
-
121 
-
122 #endif // MEDIA_FORMATS_MP4_FRAGMENTER_H_
-
void set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)
Definition: fragmenter.h:68
+
55  void ClearFragmentFinalized() { fragment_finalized_ = false; }
+
56 
+
57  uint64_t fragment_duration() const { return fragment_duration_; }
+
58  uint64_t first_sap_time() const { return first_sap_time_; }
+
59  uint64_t earliest_presentation_time() const {
+
60  return earliest_presentation_time_;
+
61  }
+
62  bool fragment_initialized() const { return fragment_initialized_; }
+
63  bool fragment_finalized() const { return fragment_finalized_; }
+
64  BufferWriter* data() { return data_.get(); }
+
65 
+ +
71  bool use_decoding_timestamp_in_timeline) {
+
72  use_decoding_timestamp_in_timeline_ = use_decoding_timestamp_in_timeline;
+
73  }
+
74 
+
75  protected:
+
76  TrackFragment* traf() { return traf_; }
+
77 
+
81  template <typename T>
+
82  bool OptimizeSampleEntries(std::vector<T>* entries, T* default_value);
+
83 
+
84  private:
+
85  // Check if the current fragment starts with SAP.
+
86  bool StartsWithSAP();
+
87 
+
88  bool use_decoding_timestamp_in_timeline_;
+
89  TrackFragment* traf_;
+
90  uint64_t seek_preroll_;
+
91  bool fragment_initialized_;
+
92  bool fragment_finalized_;
+
93  uint64_t fragment_duration_;
+
94  int64_t earliest_presentation_time_;
+
95  int64_t first_sap_time_;
+
96  std::unique_ptr<BufferWriter> data_;
+
97 
+
98  DISALLOW_COPY_AND_ASSIGN(Fragmenter);
+
99 };
+
100 
+
101 template <typename T>
+
102 bool Fragmenter::OptimizeSampleEntries(std::vector<T>* entries,
+
103  T* default_value) {
+
104  DCHECK(entries);
+
105  DCHECK(default_value);
+
106  DCHECK(!entries->empty());
+
107 
+
108  typename std::vector<T>::const_iterator it = entries->begin();
+
109  T value = *it;
+
110  for (; it < entries->end(); ++it)
+
111  if (value != *it)
+
112  return false;
+
113 
+
114  // Clear |entries| if it contains only one value.
+
115  entries->clear();
+
116  *default_value = value;
+
117  return true;
+
118 }
+
119 
+
120 } // namespace mp4
+
121 } // namespace media
+
122 } // namespace shaka
+
123 
+
124 #endif // MEDIA_FORMATS_MP4_FRAGMENTER_H_
+
void set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)
Definition: fragmenter.h:70
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:92
@@ -200,11 +202,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:169
-
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:100
+
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:102
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 1b0f43810c..debe19053d 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 2f6f0faf69..24f42ea898 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 7d44159056..202595abe4 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 d7b1cda365..4d3b7ec017 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 5a73ee0192..5a8a334d20 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 be79f81104..e55a03558f 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 cc48be06d8..d6032ad57c 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 b5600f684b..b542f401ec 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 7bc1b7d360..6549b29029 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 45fb2ebeff..f96e8b63cc 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 a884732f8e..19bb2a4eee 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 b44b8d7501..e9d6f4c97b 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 3e33b3de1d..62d699c693 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 48d9a6cccd..3002e80ad2 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 ab6806ac27..f27aa78652 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 82c0c4c270..3003b89337 100644 --- a/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.html +++ b/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.html @@ -215,7 +215,7 @@ const std::map< int, std::pair

Dispatch the stream data to downstream handlers. Note that stream_data.stream_index should be the output stream index.

-

Definition at line 52 of file media_handler.cc.

+

Definition at line 54 of file media_handler.cc.

@@ -297,7 +297,7 @@ const std::map< int, std::pair
diff --git a/docs/db/d02/structshaka_1_1media_1_1ChunkingOptions.html b/docs/db/d02/structshaka_1_1media_1_1ChunkingOptions.html index 72530489d8..e2dc783abe 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 ed0390fd75..c2a821107a 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 778abde931..e56fd5e947 100644 --- a/docs/db/d0b/webvtt__sample__converter_8h_source.html +++ b/docs/db/d0b/webvtt__sample__converter_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html b/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html index 91243dc78f..6105ff9699 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 096168c3af..154d0c16fd 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 ddaf994620..c5afff3830 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 71e8a5fb25..d90eb51a3e 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 16e6a1226e..beecbcb84e 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 @@ -250,7 +250,7 @@ const std::map< int, std::pair
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 7c0643e771..2f6af6f625 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 ee457df8ee..17adf9c7a1 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 94d36964e3..bd632a8e6e 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 79cbd0b08a..0a9c199a94 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 e122a17a0f..a1cdd095cb 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 ca040f6c86..0b5bfc1446 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 6325ff4bbc..dc1213393c 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 528c3364c7..1bf0854279 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 5067198450..9e787ed1ae 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 8b1781d4ec..33cf6c2a14 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 dc54811141..aa612de881 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 78049576b1..cd166422db 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 298e350401..4c78d3016a 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html b/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html index 51169bb2e4..975bf37514 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 b5d8acd56f..fecf9300e9 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 e8e1376f39..b4787de847 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 c305345e90..e52e1bf96f 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 c3511c7803..0e52f0f202 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 @@ -95,11 +95,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - - - - + + + + + @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
AddSample(std::shared_ptr< MediaSample > sample)shaka::media::webm::Segmenter
cluster() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
cluster_length_in_time_scale() const (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
cues() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
DoFinalize() override (defined in shaka::media::webm::TwoPassSingleSegmentSegmenter)shaka::media::webm::TwoPassSingleSegmentSegmentervirtual
DoInitialize(std::unique_ptr< MkvWriter > writer) override (defined in shaka::media::webm::TwoPassSingleSegmentSegmenter)shaka::media::webm::TwoPassSingleSegmentSegmentervirtual
Finalize()shaka::media::webm::Segmenter
cues() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
DoFinalize() override (defined in shaka::media::webm::TwoPassSingleSegmentSegmenter)shaka::media::webm::TwoPassSingleSegmentSegmentervirtual
DoInitialize(std::unique_ptr< MkvWriter > writer) override (defined in shaka::media::webm::TwoPassSingleSegmentSegmenter)shaka::media::webm::TwoPassSingleSegmentSegmentervirtual
Finalize()shaka::media::webm::Segmenter
FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment) overrideshaka::media::webm::SingleSegmentSegmentervirtual
FromBMFFTimescale(uint64_t time_timescale)shaka::media::webm::Segmenterprotected
FromWebMTimecode(uint64_t time_webm_timecode)shaka::media::webm::Segmenterprotected
GetDuration() const shaka::media::webm::Segmenter
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 9bb30cd435..1e9f1d552e 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 38af5aad2c..817c140d74 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 5c46b0f44d..6ed15efe98 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 685a3044e4..d4a51c876e 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 8cd18f0838..432838a0d9 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -123,42 +123,44 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
37  // Muxer implementation overrides.
38  Status InitializeMuxer() override;
39  Status Finalize() override;
-
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_;
+
40  Status AddSample(int stream_id, std::shared_ptr<MediaSample> sample) override;
+
41  Status FinalizeSegment(int stream_id,
+
42  std::shared_ptr<SegmentInfo> segment_info) override;
+
43 
+
44  // Generate Audio/Video Track box.
+
45  void InitializeTrak(const StreamInfo* info, Track* trak);
+
46  void GenerateAudioTrak(const AudioStreamInfo* audio_info,
+
47  Track* trak,
+
48  uint32_t track_id);
+
49  void GenerateVideoTrak(const VideoStreamInfo* video_info,
+
50  Track* trak,
+
51  uint32_t track_id);
+
52 
+
53  // Gets |start| and |end| initialization range. Returns true if there is an
+
54  // init range and sets start-end byte-range-spec specified in RFC2616.
+
55  bool GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end);
+
56 
+
57  // Gets |start| and |end| index range. Returns true if there is an index range
+
58  // and sets start-end byte-range-spec specified in RFC2616.
+
59  bool GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end);
+
60 
+
61  // Fire events if there are no errors and Muxer::muxer_listener() is not NULL.
+
62  void FireOnMediaStartEvent();
+
63  void FireOnMediaEndEvent();
+
64 
+
65  // Get time in seconds since midnight, Jan. 1, 1904, in UTC Time.
+
66  uint64_t IsoTimeNow();
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_
+
68  std::unique_ptr<Segmenter> segmenter_;
+
69 
+
70  DISALLOW_COPY_AND_ASSIGN(MP4Muxer);
+
71 };
+
72 
+
73 } // namespace mp4
+
74 } // namespace media
+
75 } // namespace shaka
+
76 
+
77 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
Abstract class holds stream information.
Definition: stream_info.h:58
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
@@ -171,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html b/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html index 4487f41972..1f8cfe8a4f 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 9f00453df6..e4f6479f21 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 @@ -123,6 +123,9 @@ virtual void GenerateSegmentReference (SegmentReference *reference)  Fill reference with current fragment information.
  + +void ClearFragmentFinalized () +  uint64_t fragment_duration () const   @@ -301,7 +304,7 @@ template<typename T >

Optimize sample entries table. If all values in entries are identical, then entries is cleared and the value is assigned to default_value; otherwise it is a NOP. Return true if the table is optimized.

-

Definition at line 100 of file fragmenter.h.

+

Definition at line 102 of file fragmenter.h.

@@ -328,7 +331,7 @@ template<typename T >

Set the flag use_decoding_timestamp_in_timeline, which if set to true, use decoding timestamp instead of presentation timestamp in media timeline, which is needed to workaround a Chromium bug that decoding timestamp is used in buffered range, https://crbug.com/398130.

-

Definition at line 68 of file fragmenter.h.

+

Definition at line 70 of file fragmenter.h.

@@ -339,7 +342,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 65bb2031e5..b740394734 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 c602137207..e8c2ec0d9a 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 0a926b6c4f..93717fea49 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 1d69da2edc..b072a5f15c 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 3e1766d3c1..ac3fd92a55 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 3e971f2e90..8e35c2653d 100644 --- a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html +++ b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html @@ -292,7 +292,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 76a078616c..e3883f9a47 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 f20a3f567c..a9512e6ac0 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 41566fcdb3..955d7cec0c 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 52c99c5b33..1cf6090310 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 a4ed5e55c9..cfa23beea8 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 8ac0008183..928941e099 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 033d63bae4..0bc8b8b2e4 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 8c7df0b049..0fd2bae8a9 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 4bd3a64aed..d1abdb69d7 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 092d41a3ec..fd155babbe 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 94da484903..6cb8efc285 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 033d2c0e45..988996732d 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 81ea20539f..30a06b5bd4 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 66431db3c7..6dd6727549 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 d2785ec8e8..320c51fda7 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 05b7bb17ed..732ba1412c 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 952ccd91a3..bc0861e880 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 8108967ed5..7deead1392 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -174,32 +174,37 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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_;
+
126  // Add a new sample.
+
127  virtual Status AddSample(int stream_id,
+
128  std::shared_ptr<MediaSample> sample) = 0;
+
129 
+
130  // Finalize the segment or subsegment.
+
131  virtual Status FinalizeSegment(int stream_id,
+
132  std::shared_ptr<SegmentInfo> segment_info) = 0;
+
133 
+
134  MuxerOptions options_;
+
135  std::vector<std::shared_ptr<StreamInfo>> streams_;
+
136  KeySource* encryption_key_source_;
+
137  uint32_t max_sd_pixels_;
+
138  uint32_t max_hd_pixels_;
+
139  uint32_t max_uhd1_pixels_;
+
140  double clear_lead_in_seconds_;
+
141  double crypto_period_duration_in_seconds_;
+
142  FourCC protection_scheme_;
+
143  bool cancelled_;
144 
-
145  DISALLOW_COPY_AND_ASSIGN(Muxer);
-
146 };
-
147 
-
148 } // namespace media
-
149 } // namespace shaka
-
150 
-
151 #endif // MEDIA_BASE_MUXER_H_
+
145  std::unique_ptr<MuxerListener> muxer_listener_;
+
146  std::unique_ptr<ProgressListener> progress_listener_;
+
147  // An external injected clock, can be NULL.
+
148  base::Clock* clock_;
+
149 
+
150  DISALLOW_COPY_AND_ASSIGN(Muxer);
+
151 };
+
152 
+
153 } // namespace media
+
154 } // namespace shaka
+
155 
+
156 #endif // MEDIA_BASE_MUXER_H_
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -216,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html index 2258072eb5..d5eda33733 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 fe54a63632..faa9d455ce 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 70f5e567f9..6600e662e3 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 cf7e1b3ab2..eace94c73a 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 6e7bcd8a39..9ac157bb0a 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 a805dfde92..427bfd8d5e 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 6322b56326..b4dd72cf5b 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 8c6aeb759d..c2c2deab81 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 b20e8c3796..28804ffb38 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 fb2248b2a2..ba5cdda892 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 28e5249f75..ead2d839af 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 6af3ae0c63..6a41ca799f 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 c8709a96be..44918f8a3f 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 328e79cd15..01a4035ec6 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 c04c11a59c..4911997abe 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 c86be77189..7fc226a489 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 deb7640a07..1d9ebcd97c 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 1c531401e1..4389138667 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 b90c126dc6..a4c7ff9a3c 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 20eb5ad072..6913b7e75e 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 9f26598637..b5e760fb14 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 2c5a4fa580..9df44938c4 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 ccafe9773a..5b723f7b09 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -97,457 +97,419 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
8 
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/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;
+
11 #include "packager/media/base/media_handler.h"
+
12 #include "packager/media/base/media_sample.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) : options_(options) {}
+
33 
+
34 Segmenter::~Segmenter() {}
+
35 
+
36 Status Segmenter::Initialize(std::unique_ptr<MkvWriter> writer,
+
37  StreamInfo* info,
+
38  ProgressListener* progress_listener,
+
39  MuxerListener* muxer_listener,
+
40  KeySource* encryption_key_source,
+
41  uint32_t max_sd_pixels,
+
42  uint32_t max_hd_pixels,
+
43  uint32_t max_uhd1_pixels,
+
44  double clear_lead_in_seconds) {
+
45  muxer_listener_ = muxer_listener;
+
46  info_ = info;
+
47  clear_lead_ = clear_lead_in_seconds;
+
48 
+
49  // Use media duration as progress target.
+
50  progress_target_ = info_->duration();
+
51  progress_listener_ = progress_listener;
+
52 
+
53  segment_info_.Init();
+
54  segment_info_.set_timecode_scale(kTimecodeScale);
+
55 
+
56  const std::string version = GetPackagerVersion();
+
57  if (!version.empty()) {
+
58  segment_info_.set_writing_app(
+
59  (GetPackagerProjectUrl() + " version " + version).c_str());
+
60  }
+
61 
+
62  if (options().segment_template.empty()) {
+
63  // Set an initial duration so the duration element is written; will be
+
64  // overwritten at the end. This works because this is a float and floats
+
65  // are always the same size.
+
66  segment_info_.set_duration(1);
+
67  }
+
68 
+
69  Status status;
+
70  if (encryption_key_source) {
+
71  status = InitializeEncryptor(encryption_key_source,
+
72  max_sd_pixels,
+
73  max_hd_pixels,
+
74  max_uhd1_pixels);
+
75  if (!status.ok())
+
76  return status;
+
77  }
+
78 
+
79  // Create the track info.
+
80  switch (info_->stream_type()) {
+
81  case kStreamVideo:
+
82  status = CreateVideoTrack(static_cast<VideoStreamInfo*>(info_));
+
83  break;
+
84  case kStreamAudio:
+
85  status = CreateAudioTrack(static_cast<AudioStreamInfo*>(info_));
+
86  break;
+
87  default:
+
88  NOTIMPLEMENTED() << "Not implemented for stream type: "
+
89  << info_->stream_type();
+
90  status = Status(error::UNIMPLEMENTED, "Not implemented for stream type");
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 }
+
92  if (!status.ok())
+
93  return status;
+
94 
+
95  return DoInitialize(std::move(writer));
+
96 }
+
97 
+ +
99  uint64_t duration =
+
100  prev_sample_->pts() - first_timestamp_ + prev_sample_->duration();
+
101  segment_info_.set_duration(FromBMFFTimescale(duration));
+
102  return DoFinalize();
+
103 }
+
104 
+
105 Status Segmenter::AddSample(std::shared_ptr<MediaSample> sample) {
+
106  if (sample_duration_ == 0) {
+
107  first_timestamp_ = sample->pts();
+
108  sample_duration_ = sample->duration();
+
109  if (muxer_listener_)
+
110  muxer_listener_->OnSampleDurationReady(sample_duration_);
+
111  }
+
112 
+
113  UpdateProgress(sample->duration());
+
114 
+
115  // This writes frames in a delay. Meaning that the previous frame is written
+
116  // on this call to AddSample. The current frame is stored until the next
+
117  // call. This is done to determine which frame is the last in a Cluster.
+
118  // This first block determines if this is a new Cluster and writes the
+
119  // previous frame first before creating the new Cluster.
+
120 
+
121  Status status;
+
122  if (new_segment_ || new_subsegment_) {
+
123  status = NewSegment(sample->pts(), new_subsegment_);
+
124  } else {
+
125  status = WriteFrame(false /* write_duration */);
+
126  }
+
127  if (!status.ok())
+
128  return status;
+
129 
+
130  // Encrypt the frame.
+
131  if (encryptor_) {
+
132  // Don't enable encryption in the middle of a segment, i.e. only at the
+
133  // first frame of a segment.
+
134  if (new_segment_ && !enable_encryption_) {
+
135  if (sample->pts() - first_timestamp_ >=
+
136  clear_lead_ * info_->time_scale()) {
+
137  enable_encryption_ = true;
+
138  if (muxer_listener_)
+
139  muxer_listener_->OnEncryptionStart();
+
140  }
+
141  }
+
142 
+
143  status = encryptor_->EncryptFrame(sample, enable_encryption_);
+
144  if (!status.ok()) {
+
145  LOG(ERROR) << "Error encrypting frame.";
+
146  return status;
+
147  }
+
148  }
+
149 
+
150  new_subsegment_ = false;
+
151  new_segment_ = false;
+
152  prev_sample_ = sample;
+
153  return Status::OK;
+
154 }
+
155 
+
156 Status Segmenter::FinalizeSegment(uint64_t start_timescale,
+
157  uint64_t duration_timescale,
+
158  bool is_subsegment) {
+
159  if (is_subsegment)
+
160  new_subsegment_ = true;
+
161  else
+
162  new_segment_ = true;
+
163  return WriteFrame(true /* write duration */);
+
164 }
+
165 
+
166 float Segmenter::GetDuration() const {
+
167  return static_cast<float>(segment_info_.duration()) *
+
168  segment_info_.timecode_scale() / kSecondsToNs;
+
169 }
+
170 
+
171 uint64_t Segmenter::FromBMFFTimescale(uint64_t time_timescale) {
+
172  // Convert the time from BMFF time_code to WebM timecode scale.
+
173  const int64_t time_ns =
+
174  kSecondsToNs * time_timescale / info_->time_scale();
+
175  return time_ns / segment_info_.timecode_scale();
+
176 }
+
177 
+
178 uint64_t Segmenter::FromWebMTimecode(uint64_t time_webm_timecode) {
+
179  // Convert the time to BMFF time_code from WebM timecode scale.
+
180  const int64_t time_ns = time_webm_timecode * segment_info_.timecode_scale();
+
181  return time_ns * info_->time_scale() / kSecondsToNs;
+
182 }
+
183 
+
184 Status Segmenter::WriteSegmentHeader(uint64_t file_size, MkvWriter* writer) {
+
185  Status error_status(error::FILE_FAILURE, "Error writing segment header.");
+
186 
+
187  if (!WriteEbmlHeader(writer))
+
188  return error_status;
+
189 
+
190  if (WriteID(writer, mkvmuxer::kMkvSegment) != 0)
+
191  return error_status;
+
192 
+
193  const uint64_t segment_size_size = 8;
+
194  segment_payload_pos_ = writer->Position() + segment_size_size;
+
195  if (file_size > 0) {
+
196  // We want the size of the segment element, so subtract the header.
+
197  if (WriteUIntSize(writer, file_size - segment_payload_pos_,
+
198  segment_size_size) != 0)
+
199  return error_status;
+
200  if (!seek_head_.Write(writer))
+
201  return error_status;
+
202  } else {
+
203  if (SerializeInt(writer, mkvmuxer::kEbmlUnknownValue, segment_size_size) !=
+
204  0)
+
205  return error_status;
+
206  // We don't know the header size, so write a placeholder.
+
207  if (!seek_head_.WriteVoid(writer))
+
208  return error_status;
+
209  }
+
210 
+
211  seek_head_.set_info_pos(writer->Position() - segment_payload_pos_);
+
212  if (!segment_info_.Write(writer))
+
213  return error_status;
+
214 
+
215  seek_head_.set_tracks_pos(writer->Position() - segment_payload_pos_);
+
216  if (!tracks_.Write(writer))
+
217  return error_status;
+
218 
+
219  return Status::OK;
+
220 }
+
221 
+
222 Status Segmenter::SetCluster(uint64_t start_webm_timecode,
+
223  uint64_t position,
+
224  MkvWriter* writer) {
+
225  const uint64_t scale = segment_info_.timecode_scale();
+
226  cluster_.reset(new mkvmuxer::Cluster(start_webm_timecode, position, scale));
+
227  cluster_->Init(writer);
+
228  return Status::OK;
+
229 }
+
230 
+
231 void Segmenter::UpdateProgress(uint64_t progress) {
+
232  accumulated_progress_ += progress;
+
233  if (!progress_listener_ || progress_target_ == 0)
+
234  return;
+
235  // It might happen that accumulated progress exceeds progress_target due to
+
236  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
237  // progress.
+
238  if (accumulated_progress_ >= progress_target_) {
+
239  progress_listener_->OnProgress(1.0);
+
240  } else {
+
241  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
242  progress_target_);
+
243  }
+
244 }
+
245 
+
246 Status Segmenter::CreateVideoTrack(VideoStreamInfo* info) {
+
247  // The seed is only used to create a UID which we overwrite later.
+
248  unsigned int seed = 0;
+
249  mkvmuxer::VideoTrack* track = new mkvmuxer::VideoTrack(&seed);
+
250  if (!track)
+
251  return Status(error::INTERNAL_ERROR, "Failed to create video track.");
+
252 
+
253  if (info->codec() == kCodecVP8) {
+
254  track->set_codec_id(mkvmuxer::Tracks::kVp8CodecId);
+
255  } else if (info->codec() == kCodecVP9) {
+
256  track->set_codec_id(mkvmuxer::Tracks::kVp9CodecId);
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);
+
258  // The |StreamInfo::codec_config| field is stored using the MP4 format; we
+
259  // need to convert it to the WebM format.
+
260  VPCodecConfigurationRecord vp_config;
+
261  if (!vp_config.ParseMP4(info->codec_config())) {
+
262  return Status(error::INTERNAL_ERROR,
+
263  "Unable to parse VP9 codec configuration");
+
264  }
+
265 
+
266  std::vector<uint8_t> codec_config;
+
267  vp_config.WriteWebM(&codec_config);
+
268  if (!track->SetCodecPrivate(codec_config.data(), codec_config.size())) {
+
269  return Status(error::INTERNAL_ERROR,
+
270  "Private codec data required for VP9 streams");
+
271  }
+
272  } else {
+
273  LOG(ERROR) << "Only VP8 and VP9 video codecs are supported.";
+
274  return Status(error::UNIMPLEMENTED,
+
275  "Only VP8 and VP9 video codecs are supported.");
+
276  }
+
277 
+
278  track->set_uid(info->track_id());
+
279  if (!info->language().empty())
+
280  track->set_language(info->language().c_str());
+
281  track->set_type(mkvmuxer::Tracks::kVideo);
+
282  track->set_width(info->width());
+
283  track->set_height(info->height());
+
284  track->set_display_height(info->height());
+
285  track->set_display_width(info->width() * info->pixel_width() /
+
286  info->pixel_height());
+
287 
+
288  if (encryptor_)
+
289  encryptor_->AddTrackInfo(track);
+
290 
+
291  tracks_.AddTrack(track, info->track_id());
+
292  track_id_ = track->number();
+
293  return Status::OK;
+
294 }
+
295 
+
296 Status Segmenter::CreateAudioTrack(AudioStreamInfo* info) {
+
297  // The seed is only used to create a UID which we overwrite later.
+
298  unsigned int seed = 0;
+
299  mkvmuxer::AudioTrack* track = new mkvmuxer::AudioTrack(&seed);
+
300  if (!track)
+
301  return Status(error::INTERNAL_ERROR, "Failed to create audio track.");
+
302 
+
303  if (info->codec() == kCodecOpus) {
+
304  track->set_codec_id(mkvmuxer::Tracks::kOpusCodecId);
+
305  } else if (info->codec() == kCodecVorbis) {
+
306  track->set_codec_id(mkvmuxer::Tracks::kVorbisCodecId);
+
307  } else {
+
308  LOG(ERROR) << "Only Vorbis and Opus audio codec is supported.";
+
309  return Status(error::UNIMPLEMENTED,
+
310  "Only Vorbis and Opus audio codecs are supported.");
+
311  }
+
312  if (!track->SetCodecPrivate(info->codec_config().data(),
+
313  info->codec_config().size())) {
+
314  return Status(error::INTERNAL_ERROR,
+
315  "Private codec data required for audio streams");
+
316  }
+
317 
+
318  track->set_uid(info->track_id());
+
319  if (!info->language().empty())
+
320  track->set_language(info->language().c_str());
+
321  track->set_type(mkvmuxer::Tracks::kAudio);
+
322  track->set_sample_rate(info->sampling_frequency());
+
323  track->set_channels(info->num_channels());
+
324  track->set_seek_pre_roll(info->seek_preroll_ns());
+
325  track->set_codec_delay(info->codec_delay_ns());
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 }
+
327  if (encryptor_)
+
328  encryptor_->AddTrackInfo(track);
+
329 
+
330  tracks_.AddTrack(track, info->track_id());
+
331  track_id_ = track->number();
+
332  return Status::OK;
+
333 }
+
334 
+
335 Status Segmenter::InitializeEncryptor(KeySource* key_source,
+
336  uint32_t max_sd_pixels,
+
337  uint32_t max_hd_pixels,
+
338  uint32_t max_uhd1_pixels) {
+
339  encryptor_.reset(new Encryptor());
+
340  const KeySource::TrackType track_type =
+
341  GetTrackTypeForEncryption(*info_, max_sd_pixels, max_hd_pixels,
+
342  max_uhd1_pixels);
+
343  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
+
344  return Status::OK;
+
345  return encryptor_->Initialize(muxer_listener_, track_type, info_->codec(),
+
346  key_source, options_.webm_subsample_encryption);
+
347 }
+
348 
+
349 Status Segmenter::WriteFrame(bool write_duration) {
+
350  // Create a frame manually so we can create non-SimpleBlock frames. This
+
351  // is required to allow the frame duration to be added. If the duration
+
352  // is not set, then a SimpleBlock will still be written.
+
353  mkvmuxer::Frame frame;
+
354 
+
355  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
+
356  return Status(error::MUXER_FAILURE,
+
357  "Error adding sample to segment: Frame::Init failed");
+
358  }
+
359 
+
360  if (write_duration) {
+
361  const uint64_t duration_ns =
+
362  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
+
363  frame.set_duration(duration_ns);
+
364  }
+
365  frame.set_is_key(prev_sample_->is_key_frame());
+
366  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
+
367  frame.set_track_number(track_id_);
+
368 
+
369  if (prev_sample_->side_data_size() > 0) {
+
370  uint64_t block_add_id;
+
371  // First 8 bytes of side_data is the BlockAddID element's value, which is
+
372  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
+
373  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
+
374  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
+
375  if (!frame.AddAdditionalData(
+
376  prev_sample_->side_data() + sizeof(block_add_id),
+
377  prev_sample_->side_data_size() - sizeof(block_add_id),
+
378  block_add_id)) {
+
379  return Status(
+
380  error::MUXER_FAILURE,
+
381  "Error adding sample to segment: Frame::AddAditionalData Failed");
+
382  }
+
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;
+
385  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
+
386  const int64_t timestamp_ns =
+
387  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
+
388  frame.set_reference_block_timestamp(timestamp_ns);
+
389  }
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
+
391  // GetRelativeTimecode will return -1 if the relative timecode is too large
+
392  // to fit in the frame.
+
393  if (cluster_->GetRelativeTimecode(frame.timestamp() /
+
394  cluster_->timecode_scale()) < 0) {
+
395  const double segment_duration =
+
396  static_cast<double>(frame.timestamp()) / kSecondsToNs;
+
397  LOG(ERROR) << "Error adding sample to segment: segment too large, "
+
398  << segment_duration << " seconds.";
+
399  return Status(error::MUXER_FAILURE,
+
400  "Error adding sample to segment: segment too large");
+
401  }
+
402 
+
403  if (!cluster_->AddFrame(&frame)) {
+
404  return Status(error::MUXER_FAILURE,
+
405  "Error adding sample to segment: Cluster::AddFrame failed");
+
406  }
+
407 
+
408  // A reference frame is needed for non-keyframes. Having a reference to the
+
409  // previous block is good enough.
+
410  // See libwebm Segment::AddGenericFrame
+
411  reference_frame_timestamp_ = prev_sample_->pts();
+
412  return Status::OK;
+
413 }
+
414 
+
415 } // namespace webm
+
416 } // namespace media
+
417 } // namespace shaka
+
Status FinalizeSegment(int stream_id, bool is_subsegment)
Definition: segmenter.cc:336
Abstract class holds stream information.
Definition: stream_info.h:58
- -
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 UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:412
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
Class for parsing or writing VP codec configuration record.
virtual void OnEncryptionStart()=0
-
This class listens to progress updates events.
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
@@ -555,20 +517,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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
+
Status AddSample(int stream_id, std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:311
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
- -
double GetDuration() const
Definition: segmenter.cc:374
+
double GetDuration() const
Definition: segmenter.cc:403
Holds video stream information.
diff --git a/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html b/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html index e493ed74ff..a086b81a75 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 accc0fa680..741d743e56 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 1f687f7883..43ae3017ec 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 29c456cbdf..83ba106ac6 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 1ce60b8ca4..c684e8e2be 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 @@ -95,11 +95,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - - - - + + + + + @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
AddSample(std::shared_ptr< MediaSample > sample)shaka::media::webm::Segmenter
cluster() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
cluster_length_in_time_scale() const (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
cues() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
DoFinalize()=0 (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterprotectedpure virtual
DoInitialize(std::unique_ptr< MkvWriter > writer)=0 (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterprotectedpure virtual
Finalize()shaka::media::webm::Segmenter
cues() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
DoFinalize()=0 (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterprotectedpure virtual
DoInitialize(std::unique_ptr< MkvWriter > writer)=0 (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterprotectedpure virtual
Finalize()shaka::media::webm::Segmenter
FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment)=0shaka::media::webm::Segmenterpure virtual
FromBMFFTimescale(uint64_t time_timescale)shaka::media::webm::Segmenterprotected
FromWebMTimecode(uint64_t time_webm_timecode)shaka::media::webm::Segmenterprotected
GetDuration() const shaka::media::webm::Segmenter
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 e71a9271c9..cfbc49d2cc 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 77dcd35e79..608eec9af4 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 9ab65cba52..e20ef0d837 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 473c1874c2..fe2ee26501 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 b38a091f74..9734f9d8fb 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 7951bcee67..531f256a81 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 476eb27c29..626e09c1a5 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 98277c2ec2..eb3b533ec5 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 5f049fcdcf..3996cc36fa 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 a7d74b7785..1b1570c7f4 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 069afc1bc2..2103538814 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 78def45d9f..80def001ef 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 98f633b557..46939eba63 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 ed5217f689..f8da0342f3 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 06586de70e..c07d8ad26c 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 b5546b450a..3890b2ad8f 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 5463d0bdfb..b50af1f1af 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 @@ -94,24 +94,25 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - - - - - - - - - + + + + + + + + + + + + + + +
AddSample(std::shared_ptr< MediaSample > sample)shaka::media::mp4::Fragmentervirtual
data() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
earliest_presentation_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
FinalizeFragment()shaka::media::mp4::Fragmentervirtual
first_sap_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_duration() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_finalized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_initialized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
Fragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf)shaka::media::mp4::Fragmenter
GenerateSegmentReference(SegmentReference *reference)shaka::media::mp4::Fragmenter
InitializeFragment(int64_t first_sample_dts)shaka::media::mp4::Fragmentervirtual
OptimizeSampleEntries(std::vector< T > *entries, T *default_value)shaka::media::mp4::Fragmenterprotected
set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)shaka::media::mp4::Fragmenterinline
traf() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinlineprotected
~Fragmenter() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmentervirtual
ClearFragmentFinalized() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
data() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
earliest_presentation_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
FinalizeFragment()shaka::media::mp4::Fragmentervirtual
first_sap_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_duration() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_finalized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_initialized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
Fragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf)shaka::media::mp4::Fragmenter
GenerateSegmentReference(SegmentReference *reference)shaka::media::mp4::Fragmenter
InitializeFragment(int64_t first_sample_dts)shaka::media::mp4::Fragmentervirtual
OptimizeSampleEntries(std::vector< T > *entries, T *default_value)shaka::media::mp4::Fragmenterprotected
set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)shaka::media::mp4::Fragmenterinline
traf() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinlineprotected
~Fragmenter() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmentervirtual
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 dcc055144b..50a0f45682 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 37ddad2e51..5a0cfe6e9a 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 00e18c7937..6d23977f26 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 fef8aba6a2..5d1b356919 100644 --- a/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html +++ b/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html @@ -261,7 +261,7 @@ std::shared_ptr< diff --git a/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html b/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html index 4a420dac44..be0370f21a 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 @@ -130,6 +130,9 @@ void GenerateSegmentReference (SegmentReference *reference)  Fill reference with current fragment information.
  + +void ClearFragmentFinalized () +  uint64_t fragment_duration () const   @@ -405,7 +408,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 5da6252e04..5aee38ca49 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 @@ -95,11 +95,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - - - - + + + + + @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
AddSample(std::shared_ptr< MediaSample > sample)shaka::media::webm::Segmenter
cluster() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
cluster_length_in_time_scale() const (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
cues() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
DoFinalize() override (defined in shaka::media::webm::SingleSegmentSegmenter)shaka::media::webm::SingleSegmentSegmenterprotectedvirtual
DoInitialize(std::unique_ptr< MkvWriter > writer) override (defined in shaka::media::webm::SingleSegmentSegmenter)shaka::media::webm::SingleSegmentSegmenterprotectedvirtual
Finalize()shaka::media::webm::Segmenter
cues() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected
DoFinalize() override (defined in shaka::media::webm::SingleSegmentSegmenter)shaka::media::webm::SingleSegmentSegmenterprotectedvirtual
DoInitialize(std::unique_ptr< MkvWriter > writer) override (defined in shaka::media::webm::SingleSegmentSegmenter)shaka::media::webm::SingleSegmentSegmenterprotectedvirtual
Finalize()shaka::media::webm::Segmenter
FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment) overrideshaka::media::webm::SingleSegmentSegmentervirtual
FromBMFFTimescale(uint64_t time_timescale)shaka::media::webm::Segmenterprotected
FromWebMTimecode(uint64_t time_webm_timecode)shaka::media::webm::Segmenterprotected
GetDuration() const shaka::media::webm::Segmenter
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 95012bfb25..0dbc33dc78 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 2a04cc0c61..5581fe3cfa 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 4172b65c3a..17687939ea 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 642322d6aa..0f6242d372 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 1ff217eb40..cac473c823 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 9f44332b05..c45ce2a5c2 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 d97e17843e..d40ee610bc 100644 --- a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html +++ b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html @@ -462,7 +462,7 @@ const std::map< int, std::pair
diff --git a/docs/dd/d18/es__parser__adts_8h_source.html b/docs/dd/d18/es__parser__adts_8h_source.html index 8e4591e312..33cae036b4 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 4225cbd407..70165ac427 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 5ea9bc7041..53c4b2b9b9 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 adc85c4dc2..a8f66fc6f6 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -140,87 +140,84 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
82 
85  Status Finalize();
86 
-
90  Status AddSample(const StreamInfo& stream_Info,
-
91  std::shared_ptr<MediaSample> sample);
+
91  Status AddSample(int stream_id, 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;
+
97  Status FinalizeSegment(int stream_id, bool is_subsegment);
+
98 
+
101  virtual bool GetInitRange(size_t* offset, size_t* size) = 0;
102 
-
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();
+
105  virtual bool GetIndexRange(size_t* offset, size_t* size) = 0;
+
106 
+
107  uint32_t GetReferenceTimeScale() const;
+
108 
+
110  double GetDuration() const;
+
111 
+
114  uint32_t sample_duration() const { return sample_duration_; }
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  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 } // 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:58
-
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
+
116  protected:
+
118  void UpdateProgress(uint64_t progress);
+
120  void SetComplete();
+
121 
+
122  const MuxerOptions& options() const { return options_; }
+
123  FileType* ftyp() { return ftyp_.get(); }
+
124  Movie* moov() { return moov_.get(); }
+
125  BufferWriter* fragment_buffer() { return fragment_buffer_.get(); }
+
126  SegmentIndex* sidx() { return sidx_.get(); }
+
127  MuxerListener* muxer_listener() { return muxer_listener_; }
+
128  uint64_t progress_target() { return progress_target_; }
+
129 
+
130  void set_progress_target(uint64_t progress_target) {
+
131  progress_target_ = progress_target;
+
132  }
+
133 
+
134  private:
+
135  virtual Status DoInitialize() = 0;
+
136  virtual Status DoFinalize() = 0;
+
137  virtual Status DoFinalizeSegment() = 0;
+
138 
+
139  uint32_t GetReferenceStreamId();
+
140 
+
141  const MuxerOptions& options_;
+
142  std::unique_ptr<FileType> ftyp_;
+
143  std::unique_ptr<Movie> moov_;
+
144  std::unique_ptr<MovieFragment> moof_;
+
145  std::unique_ptr<BufferWriter> fragment_buffer_;
+
146  std::unique_ptr<SegmentIndex> sidx_;
+
147  std::vector<std::unique_ptr<Fragmenter>> fragmenters_;
+
148  MuxerListener* muxer_listener_;
+
149  ProgressListener* progress_listener_;
+
150  uint64_t progress_target_;
+
151  uint64_t accumulated_progress_;
+
152  uint32_t sample_duration_;
+
153 
+
154  DISALLOW_COPY_AND_ASSIGN(Segmenter);
+
155 };
+
156 
+
157 } // namespace mp4
+
158 } // namespace media
+
159 } // namespace shaka
+
160 
+
161 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
+
Status FinalizeSegment(int stream_id, bool is_subsegment)
Definition: segmenter.cc:336
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:412
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:428
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:108
+
uint32_t sample_duration() const
Definition: segmenter.h:114
This class listens to progress updates events.
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
- + +
Status AddSample(int stream_id, std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:311
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
double GetDuration() const
Definition: segmenter.cc:374
+
double GetDuration() const
Definition: segmenter.cc:403
virtual bool GetIndexRange(size_t *offset, size_t *size)=0
diff --git a/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html b/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html index c9a47fac7c..ec9dc3b137 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 711ee70999..ef203f247d 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 6d92cf4cc3..a90c8d8e11 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 a8cc462f5b..ddec47d3eb 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 fc16258532..fb3962da88 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 cd689ef5f6..04036b9ad8 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 284b8eff14..d70c8a4b0f 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 1f84fb1186..1799a9e75f 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 3ac0f466f2..fcfd5fd79f 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 eb785fe073..a7156a4bbc 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 dd91bc9804..3076378a5a 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 490e79d63e..d1899d2935 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 79231dad43..5975a2e49d 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 e76f4e14d3..f74d3d5bdf 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 37e71f89de..40b4e6dfca 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 0a469eb038..2912152cd6 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 ca615b618b..bc31840ec0 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 5357ad9b72..63ab9d5f64 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 a9589316e7..5bd7e139aa 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 76c2cdd111..ca724ca08a 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 f4b12e73ba..fb1d5133e3 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 4e76bc59fd..03d27f866c 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 d31ecf9bd8..f4a1344edd 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 d3c54de9a4..049438a379 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 b80138d936..c5e94a7afe 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 60beebb29d..ea785481de 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 @@ -121,6 +121,10 @@ Public Member Functions  SingleSegmentSegmenter (const MuxerOptions &options)   + +Status FinalizeSegment (uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment) override + Finalize the (sub)segment.
+  bool GetInitRangeStartAndEnd (uint64_t *start, uint64_t *end) override   bool GetIndexRangeStartAndEnd (uint64_t *start, uint64_t *end) override @@ -205,9 +209,6 @@ int track_id () const uint64_t segment_payload_pos () const   - -uint64_t cluster_length_in_time_scale () const - 

Detailed Description

An implementation of a Segmenter for a single-segment that performs two passes. This does not use seeking and is used for non-seekable files.

@@ -220,7 +221,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 ec453b1006..674854af69 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 aaad6a1d99..4374cf14fe 100644 --- a/docs/dd/dab/webm__muxer_8h_source.html +++ b/docs/dd/dab/webm__muxer_8h_source.html @@ -113,21 +113,23 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
26  // Muxer implementation overrides.
27  Status InitializeMuxer() override;
28  Status Finalize() override;
-
29  Status DoAddSample(std::shared_ptr<MediaSample> sample) override;
-
30 
-
31  void FireOnMediaStartEvent();
-
32  void FireOnMediaEndEvent();
-
33 
-
34  std::unique_ptr<Segmenter> segmenter_;
+
29  Status AddSample(int stream_id, std::shared_ptr<MediaSample> sample) override;
+
30  Status FinalizeSegment(int stream_id,
+
31  std::shared_ptr<SegmentInfo> segment_info) override;
+
32 
+
33  void FireOnMediaStartEvent();
+
34  void FireOnMediaEndEvent();
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_
+
36  std::unique_ptr<Segmenter> segmenter_;
+
37 
+
38  DISALLOW_COPY_AND_ASSIGN(WebMMuxer);
+
39 };
+
40 
+
41 } // namespace webm
+
42 } // namespace media
+
43 } // namespace shaka
+
44 
+
45 #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
@@ -136,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dae/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html b/docs/dd/dae/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html index 9fc561b5ae..bc1861b804 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 252f3cffb3..749c73b108 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 8652f07057..7992a6987a 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 ffa9694920..33f1e2ee66 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 d091e35acf..3398153df8 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 44833f6aa5..8aca740d3c 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 cc4b8071d7..4894cd8fbc 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 0d1c6eb483..aa6f937f2c 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 0ac8eb39e8..f2cb64b93f 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 0ca53044d4..3a6211b5d4 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 94ba638164..131d8f2779 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 85d041e544..0b636ff430 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 @@ -117,6 +117,10 @@ Public Member Functions   Status AddSample (std::shared_ptr< MediaSample > sample)   + +virtual Status FinalizeSegment (uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment)=0 + Finalize the (sub)segment.
+  virtual bool GetInitRangeStartAndEnd (uint64_t *start, uint64_t *end)=0   virtual bool GetIndexRangeStartAndEnd (uint64_t *start, uint64_t *end)=0 @@ -171,9 +175,6 @@ int track_id () const uint64_t segment_payload_pos () const   - -uint64_t cluster_length_in_time_scale () const -  virtual Status DoInitialize (std::unique_ptr< MkvWriter > writer)=0   @@ -207,7 +208,7 @@ virtual Sta
Returns
OK on success, an error status otherwise.
-

Definition at line 123 of file segmenter.cc.

+

Definition at line 105 of file segmenter.cc.

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

Finalize the segmenter.

Returns
OK on success, an error status otherwise.
-

Definition at line 112 of file segmenter.cc.

+

Definition at line 98 of file segmenter.cc.

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

Definition at line 50 of file segmenter.cc.

+

Definition at line 36 of file segmenter.cc.

@@ -441,7 +442,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 c37221358f..69760bd374 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 88cc6381f5..2ab61a747c 100644 --- a/docs/dd/dce/structshaka_1_1media_1_1Cue.html +++ b/docs/dd/dce/structshaka_1_1media_1_1Cue.html @@ -125,7 +125,7 @@ std::string comment diff --git a/docs/dd/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index 721720c059..cdff3c0c94 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 d031fcbdc1..94fb82e45f 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 074305a08c..788c9141c2 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 c43f815b52..b54eaddd12 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 ec6b879515..54a4ecd7dc 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 fda51dffd9..67a60a941d 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 e59641f671..5987f3436b 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 6fc742bf13..8405c06cc0 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 f7cf02532a..bdf532d1c6 100644 --- a/docs/dd/de9/classshaka_1_1media_1_1MediaHandler-members.html +++ b/docs/dd/de9/classshaka_1_1media_1_1MediaHandler-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dee/box__definitions_8cc_source.html b/docs/dd/dee/box__definitions_8cc_source.html index 1c179643d1..7ff6d3f287 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 1831621006..76400cd93c 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -113,20 +113,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
26  explicit MultiSegmentSegmenter(const MuxerOptions& options);
27  ~MultiSegmentSegmenter() override;
28 
-
31  bool GetInitRangeStartAndEnd(uint64_t* start, uint64_t* end) override;
-
32  bool GetIndexRangeStartAndEnd(uint64_t* start, uint64_t* end) override;
-
34 
-
35  protected:
-
36  // Segmenter implementation overrides.
-
37  Status DoInitialize(std::unique_ptr<MkvWriter> writer) override;
-
38  Status DoFinalize() override;
-
39 
-
40  private:
-
41  // Segmenter implementation overrides.
-
42  Status NewSubsegment(uint64_t start_timescale) override;
-
43  Status NewSegment(uint64_t start_timescale) override;
-
44 
-
45  Status FinalizeSegment();
+
31  Status FinalizeSegment(uint64_t start_timescale,
+
32  uint64_t duration_timescale,
+
33  bool is_subsegment) override;
+
34  bool GetInitRangeStartAndEnd(uint64_t* start, uint64_t* end) override;
+
35  bool GetIndexRangeStartAndEnd(uint64_t* start, uint64_t* end) override;
+
37 
+
38  protected:
+
39  // Segmenter implementation overrides.
+
40  Status DoInitialize(std::unique_ptr<MkvWriter> writer) override;
+
41  Status DoFinalize() override;
+
42 
+
43  private:
+
44  // Segmenter implementation overrides.
+
45  Status NewSegment(uint64_t start_timescale, bool is_subsegment) override;
46 
47  std::unique_ptr<MkvWriter> writer_;
48  uint32_t num_segment_;
@@ -139,8 +139,9 @@ 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
+
Status FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment) override
Finalize the (sub)segment.
+
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 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html index 03cad01777..60b7b3b958 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 b2186a586c..b784c102b0 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 9a6ccb8e13..75951e856d 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 5e04f67670..eefa58068b 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 cc3313483a..1418a08e48 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/d16/classshaka_1_1media_1_1TextTrackConfig-members.html b/docs/de/d16/classshaka_1_1media_1_1TextTrackConfig-members.html index 53f3c751ae..f9c7c6cdc1 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 5c1bfe0a5e..eb3127ea6a 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 46a71078d2..74ad8a3fbd 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 8dc2e92696..1eefa20c83 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -300,15 +300,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
virtual 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:267
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:231
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 c016edcc78..792de539b3 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 2265cefeec..caffc6f87f 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 986165ff42..c530bd5325 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 5e14a17d70..f3d301a967 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 ee79baa3cc..46cf3f36bb 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 ad59608c02..92782bf645 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 4f45226379..c3d759a5dd 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 a3c1089d3b..18bbd24df7 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 a9f80cfcc4..b641b6421d 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 6ea218d652..57d0e62383 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 0fbc96a3ab..0b920b3c1a 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 1250f17980..ed1de59c59 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 9e60c08eb9..7b11e50e53 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 0a557c2f03..50e8b771ed 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 86a07bb381..22a7149ed1 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 85e3e0ec84..12a4d61669 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 faef955be0..d5a45f898d 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 19cb156e39..6419566189 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 0c7c7dc6a4..f4904f0252 100644 --- a/docs/de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html +++ b/docs/de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html @@ -257,7 +257,7 @@ void  diff --git a/docs/de/d6c/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html b/docs/de/d6c/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html index 2f4e2e9032..3b5437a136 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 57c7147700..e565a1f754 100644 --- a/docs/de/d6e/language__utils_8h_source.html +++ b/docs/de/d6e/language__utils_8h_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d70/http__key__fetcher_8cc_source.html b/docs/de/d70/http__key__fetcher_8cc_source.html index c0ad75d3fe..879444b26c 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 063581b500..a238cbf288 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 1187902c71..35e89008cd 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 5d58b7d021..77eb96a870 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 9bf2fd77b1..755e0ceb38 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 703e03b2c5..3d09730e42 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 2d82dfa721..a315dfce5e 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 134c264d9e..dfc4cabf69 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 4c0b2d7c19..77e628f100 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 454dd4a049..bebc447936 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 aec4dc3073..1088e8d7a7 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 08fb4f4df0..b7dd48597e 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 92fce38285..a943451ca9 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 5b3ba4c26e..11482a106c 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 85aeb5d0e7..5410b90257 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 cf929e515e..83ae331a25 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -224,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html b/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html index 7f847ff9d2..1f71534079 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 fa19011999..6a1fc31acb 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 d0fae92219..97c65a7769 100644 --- a/docs/de/dcb/ts__segmenter_8h_source.html +++ b/docs/de/dcb/ts__segmenter_8h_source.html @@ -131,52 +131,45 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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();
+
64  // TODO(kqyang): Remove the usage of segment start timestamp and duration in
+
65  // xx_segmenter, which could cause confusions on which is the source of truth
+
66  // as the segment start timestamp and duration could be tracked locally.
+
67  Status FinalizeSegment(uint64_t start_timestamp, uint64_t duration);
+
68 
+
70  void InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer);
+
71 
+ +
74  std::unique_ptr<PesPacketGenerator> generator);
+
75 
+
77  void SetTsWriterFileOpenedForTesting(bool value);
78 
-
79  // If conditions are met, notify objects that the data is encrypted.
-
80  Status NotifyEncrypted();
+
79  private:
+
80  Status OpenNewSegmentIfClosed(uint32_t next_pts);
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;
+
82  // Writes PES packets (carried in TsPackets) to a file. If a file is not open,
+
83  // it will open one. This will not close the file.
+
84  Status WritePesPacketsToFile();
+
85 
+
86  // If conditions are met, notify objects that the data is encrypted.
+
87  Status NotifyEncrypted();
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;
+
89  const MuxerOptions& muxer_options_;
+
90  MuxerListener* const listener_;
+
91 
+
92  // Scale used to scale the input stream to TS's timesccale (which is 90000).
+
93  // Used for calculating the duration in seconds fo the current segment.
+
94  double timescale_scale_ = 1.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  // 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_;
@@ -199,20 +192,21 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Abstract class holds stream information.
Definition: stream_info.h:58
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
+
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: ts_segmenter.cc:88
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.
+
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.
Definition: ts_segmenter.cc:99
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
+
Status FinalizeSegment(uint64_t start_timestamp, uint64_t duration)
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
diff --git a/docs/de/dcc/mock__mpd__notifier_8cc_source.html b/docs/de/dcc/mock__mpd__notifier_8cc_source.html index 974948e217..4ec2b0b933 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 5193e7f955..9097239b47 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 1d37fed172..10f2523cc1 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 245788e2c8..3008ebcaa3 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -162,53 +162,49 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
73 }
74 
75 void SetDefaultMuxerOptionsValues(MuxerOptions* muxer_options) {
-
76  muxer_options->segment_duration = 10.0;
-
77  muxer_options->fragment_duration = 10.0;
-
78  muxer_options->segment_sap_aligned = true;
-
79  muxer_options->fragment_sap_aligned = true;
-
80  muxer_options->num_subsegments_per_sidx = 0;
-
81  muxer_options->output_file_name = "test_output_file_name.mp4";
-
82  muxer_options->segment_template.clear();
-
83  muxer_options->temp_dir.clear();
-
84 }
-
85 
-
86 std::vector<ProtectionSystemSpecificInfo> GetDefaultKeySystemInfo() {
-
87  const uint8_t kPsshData[] = {'p', 's', 's', 'h'};
-
88  const uint8_t kTestSystemId[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
-
89  0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,
-
90  0x0c, 0x0d, 0x0e, 0x0f};
-
91 
-
92  ProtectionSystemSpecificInfo info;
-
93  info.set_system_id(kTestSystemId, arraysize(kTestSystemId));
-
94  info.set_pssh_data(
-
95  std::vector<uint8_t>(kPsshData, kPsshData + arraysize(kPsshData)));
-
96  info.set_pssh_box_version(0);
-
97 
-
98  std::vector<ProtectionSystemSpecificInfo> key_system_info;
-
99  key_system_info.push_back(info);
-
100  return key_system_info;
+
76  muxer_options->num_subsegments_per_sidx = 0;
+
77  muxer_options->output_file_name = "test_output_file_name.mp4";
+
78  muxer_options->segment_template.clear();
+
79  muxer_options->temp_dir.clear();
+
80 }
+
81 
+
82 std::vector<ProtectionSystemSpecificInfo> GetDefaultKeySystemInfo() {
+
83  const uint8_t kPsshData[] = {'p', 's', 's', 'h'};
+
84  const uint8_t kTestSystemId[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+
85  0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,
+
86  0x0c, 0x0d, 0x0e, 0x0f};
+
87 
+
88  ProtectionSystemSpecificInfo info;
+
89  info.set_system_id(kTestSystemId, arraysize(kTestSystemId));
+
90  info.set_pssh_data(
+
91  std::vector<uint8_t>(kPsshData, kPsshData + arraysize(kPsshData)));
+
92  info.set_pssh_box_version(0);
+
93 
+
94  std::vector<ProtectionSystemSpecificInfo> key_system_info;
+
95  key_system_info.push_back(info);
+
96  return key_system_info;
+
97 }
+
98 
+
99 void ExpectMediaInfoEqual(const MediaInfo& expect, const MediaInfo& actual) {
+
100  ASSERT_TRUE(MediaInfoEqual(expect, actual));
101 }
102 
-
103 void ExpectMediaInfoEqual(const MediaInfo& expect, const MediaInfo& actual) {
-
104  ASSERT_TRUE(MediaInfoEqual(expect, actual));
-
105 }
-
106 
-
107 bool MediaInfoEqual(const MediaInfo& expect, const MediaInfo& actual) {
-
108  // I found out here
-
109  // https://groups.google.com/forum/#!msg/protobuf/5sOExQkB2eQ/ZSBNZI0K54YJ
-
110  // that the best way to check equality is to serialize and check equality.
-
111  std::string expect_serialized = expect.SerializeAsString();
-
112  std::string actual_serialized = actual.SerializeAsString();
-
113  EXPECT_EQ(expect_serialized, actual_serialized);
-
114  return expect_serialized == actual_serialized;
-
115 }
-
116 
-
117 } // namespace media
-
118 } // namespace shaka
+
103 bool MediaInfoEqual(const MediaInfo& expect, const MediaInfo& actual) {
+
104  // I found out here
+
105  // https://groups.google.com/forum/#!msg/protobuf/5sOExQkB2eQ/ZSBNZI0K54YJ
+
106  // that the best way to check equality is to serialize and check equality.
+
107  std::string expect_serialized = expect.SerializeAsString();
+
108  std::string actual_serialized = actual.SerializeAsString();
+
109  EXPECT_EQ(expect_serialized, actual_serialized);
+
110  return expect_serialized == actual_serialized;
+
111 }
+
112 
+
113 } // namespace media
+
114 } // namespace shaka
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 56df07d6bc..458a26540e 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html +++ b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html b/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html index 595811b0d2..0ffa5a1915 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html +++ b/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html @@ -257,7 +257,7 @@ Public Member Functions diff --git a/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html b/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html index fb3ae42d75..820d508c97 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 @@ -104,6 +104,8 @@ Public Member Functions   Status AddSample (std::shared_ptr< MediaSample > sample)   +Status FinalizeSegment (uint64_t start_timestamp, uint64_t duration) +  void InjectTsWriterForTesting (std::unique_ptr< TsWriter > writer)  Only for testing.
@@ -178,7 +180,7 @@ void 
Returns
OK on success.
-

Definition at line 91 of file ts_segmenter.cc.

+

Definition at line 88 of file ts_segmenter.cc.

@@ -199,6 +201,42 @@ void 84 of file ts_segmenter.cc.

+ + + +
+
+ + + + + + + + + + + + + + + + + + +
Status shaka::media::mp2t::TsSegmenter::FinalizeSegment (uint64_t start_timestamp,
uint64_t duration 
)
+
+

Flush all the samples that are (possibly) buffered and write them to the current segment, this will close the file. If a file is not already opened before calling this, this will open one and write them to file.

+
Parameters
+ + + +
start_timestampis the segment's start timestamp in the input stream's time scale.
durationis the segment's duration in the input stream's time scale.
+
+
+ +

Definition at line 140 of file ts_segmenter.cc.

+
@@ -268,7 +306,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 c99d19f733..e51b545efd 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 759207ed1f..6e6a46bf5a 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 613dd27b5a..69205a2491 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 @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/de4/structshaka_1_1media_1_1H264Pps.html b/docs/de/de4/structshaka_1_1media_1_1H264Pps.html index 4d3e799188..08e5ac9357 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 6459b2d22d..4afda52c63 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 c7f80da233..d98ff819c3 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 a153b90a72..9ad4bde20c 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 05f86e69d0..e32f48e2fa 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 f917c16419..0d4c0057eb 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 884f56c070..bb3331fe6e 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 68e14de575..941875055b 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 9d16d46bf9..1371b85ece 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 c9b3f0b2e5..0f3037b1aa 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 51242992d7..a376e65d3f 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 409d8afef7..9ada52a8e8 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 ad477d516c..5accac4c8d 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 6192392d49..d2c7c7dd48 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 bf535c800f..228e730d45 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 5199c4fff0..4bf57dbc39 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 7b12606da5..9713f75fab 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 33ad838078..f4f0ecb6ca 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 116e03dbd3..741c7d2392 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 e25ba0780c..632914e9d4 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 e9c52ead3e..b95aae08cc 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 f05c074333..273886e598 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 41182dff31..42af021796 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 955c354c2c..eae6170186 100644 --- a/docs/df/d46/classshaka_1_1media_1_1Muxer.html +++ b/docs/df/d46/classshaka_1_1media_1_1Muxer.html @@ -478,7 +478,7 @@ const std::map< int, std::pair
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 342c645792..950d385f82 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 5131762f11..7b6a3238f4 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 ea187813c8..cc03683de4 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 ddd58f18ad..d6d762a493 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 @@ -94,35 +94,36 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + +
AddSample(std::shared_ptr< MediaSample > sample) overrideshaka::media::mp4::EncryptingFragmentervirtual
CreateEncryptor()shaka::media::mp4::EncryptingFragmenterprotected
crypt_byte_block() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
data() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
earliest_presentation_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
EncryptingFragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf, std::unique_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *listener)shaka::media::mp4::EncryptingFragmenter
encryption_key() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
encryptor() (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
FinalizeFragment() overrideshaka::media::mp4::EncryptingFragmentervirtual
FinalizeFragmentForEncryption()shaka::media::mp4::EncryptingFragmenterprotectedvirtual
first_sap_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_duration() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_finalized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_initialized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
Fragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf)shaka::media::mp4::Fragmenter
GenerateSegmentReference(SegmentReference *reference)shaka::media::mp4::Fragmenter
InitializeFragment(int64_t first_sample_dts) overrideshaka::media::mp4::EncryptingFragmentervirtual
OptimizeSampleEntries(std::vector< T > *entries, T *default_value)shaka::media::mp4::Fragmenterprotected
PrepareFragmentForEncryption(bool enable_encryption)shaka::media::mp4::EncryptingFragmenterprotectedvirtual
protection_scheme() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
set_encryption_key(std::unique_ptr< EncryptionKey > encryption_key) (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)shaka::media::mp4::Fragmenterinline
skip_byte_block() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
traf() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinlineprotected
~EncryptingFragmenter() override (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenter
~Fragmenter() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmentervirtual
ClearFragmentFinalized() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
CreateEncryptor()shaka::media::mp4::EncryptingFragmenterprotected
crypt_byte_block() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
data() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
earliest_presentation_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
EncryptingFragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf, std::unique_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *listener)shaka::media::mp4::EncryptingFragmenter
encryption_key() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
encryptor() (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
FinalizeFragment() overrideshaka::media::mp4::EncryptingFragmentervirtual
FinalizeFragmentForEncryption()shaka::media::mp4::EncryptingFragmenterprotectedvirtual
first_sap_time() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_duration() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_finalized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
fragment_initialized() const (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinline
Fragmenter(std::shared_ptr< StreamInfo > info, TrackFragment *traf)shaka::media::mp4::Fragmenter
GenerateSegmentReference(SegmentReference *reference)shaka::media::mp4::Fragmenter
InitializeFragment(int64_t first_sample_dts) overrideshaka::media::mp4::EncryptingFragmentervirtual
OptimizeSampleEntries(std::vector< T > *entries, T *default_value)shaka::media::mp4::Fragmenterprotected
PrepareFragmentForEncryption(bool enable_encryption)shaka::media::mp4::EncryptingFragmenterprotectedvirtual
protection_scheme() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
set_encryption_key(std::unique_ptr< EncryptionKey > encryption_key) (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)shaka::media::mp4::Fragmenterinline
skip_byte_block() const (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenterinlineprotected
traf() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmenterinlineprotected
~EncryptingFragmenter() override (defined in shaka::media::mp4::EncryptingFragmenter)shaka::media::mp4::EncryptingFragmenter
~Fragmenter() (defined in shaka::media::mp4::Fragmenter)shaka::media::mp4::Fragmentervirtual
diff --git a/docs/df/d60/classshaka_1_1MockMpdBuilder.html b/docs/df/d60/classshaka_1_1MockMpdBuilder.html index 49f395b56c..ca54050d49 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 529ebe2b45..571438e81b 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 7f17d73bb1..65bba3f67d 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 227d5105de..5d0773daa5 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 d3a0883a9c..905e301b2e 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 f463cb7f20..d43c57261a 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 b3e4f3a442..987f03a651 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 58daeac215..7bdabee29c 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 d0ee48f9ac..3119edd009 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 f3642fad26..a744f8a0c9 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 c125d2d990..91107592b3 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 811433420d..4a7f96e1a6 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 56ea9b8eda..a9d80cec22 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 91e45e40c2..ecb2a656f4 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,32 +93,33 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
AddSample(const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
AddSample(int stream_id, 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
GetDuration() const shaka::media::mp4::Segmenter
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< 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
options() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
progress_target() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
sample_duration() const shaka::media::mp4::Segmenterinline
Segmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
set_progress_target(uint64_t progress_target) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
SetComplete()shaka::media::mp4::Segmenterprotected
sidx() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
UpdateProgress(uint64_t progress)shaka::media::mp4::Segmenterprotected
~MultiSegmentSegmenter() override (defined in shaka::media::mp4::MultiSegmentSegmenter)shaka::media::mp4::MultiSegmentSegmenter
~Segmenter() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmentervirtual
FinalizeSegment(int stream_id, bool is_subsegment)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
GetDuration() const shaka::media::mp4::Segmenter
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< 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
options() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
progress_target() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
sample_duration() const shaka::media::mp4::Segmenterinline
Segmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
set_progress_target(uint64_t progress_target) (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
SetComplete()shaka::media::mp4::Segmenterprotected
sidx() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
UpdateProgress(uint64_t progress)shaka::media::mp4::Segmenterprotected
~MultiSegmentSegmenter() override (defined in shaka::media::mp4::MultiSegmentSegmenter)shaka::media::mp4::MultiSegmentSegmenter
~Segmenter() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmentervirtual
diff --git a/docs/df/d8d/es__parser__h26x_8h_source.html b/docs/df/d8d/es__parser__h26x_8h_source.html index 1b4f82328e..36893aaa7a 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 09c8062588..20f0e9e3b1 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 68ce923d51..7efa6e6dc4 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 46ec3e652c..3e459dfe62 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 efa813e153..be82e53549 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 6054da89c7..562d7ef520 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 9bb972d47f..4eec64e35b 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 93316e95bb..0f6fa87f2c 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 f4f1178c99..def7a2f1d7 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 eba161a4a3..039d41d032 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 a42c3f8fca..b54ec4433f 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 0cbb8bcc28..43ecee81e7 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 32bb98a759..1526a86028 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 10bc3dae2d..a82130609a 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -138,67 +138,66 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
73 
77  Status AddSample(std::shared_ptr<MediaSample> sample);
78 
-
81  virtual bool GetInitRangeStartAndEnd(uint64_t* start, uint64_t* end) = 0;
-
82 
-
85  virtual bool GetIndexRangeStartAndEnd(uint64_t* start, uint64_t* end) = 0;
-
86 
-
88  float GetDuration() const;
-
89 
-
90  protected:
-
93  uint64_t FromBMFFTimescale(uint64_t time_timescale);
-
95  uint64_t FromWebMTimecode(uint64_t time_webm_timecode);
-
97  Status WriteSegmentHeader(uint64_t file_size, MkvWriter* writer);
-
99  Status SetCluster(uint64_t start_webm_timecode,
-
100  uint64_t position,
-
101  MkvWriter* writer);
-
102 
-
104  void UpdateProgress(uint64_t progress);
-
105  void set_progress_target(uint64_t target) { progress_target_ = target; }
-
106 
-
107  const MuxerOptions& options() const { return options_; }
-
108  mkvmuxer::Cluster* cluster() { return cluster_.get(); }
-
109  mkvmuxer::Cues* cues() { return &cues_; }
-
110  MuxerListener* muxer_listener() { return muxer_listener_; }
-
111  StreamInfo* info() { return info_; }
-
112  SeekHead* seek_head() { return &seek_head_; }
-
113 
-
114  int track_id() const { return track_id_; }
-
115  uint64_t segment_payload_pos() const { return segment_payload_pos_; }
-
116  uint64_t cluster_length_in_time_scale() const {
-
117  return cluster_length_in_time_scale_;
-
118  }
-
119 
-
120  virtual Status DoInitialize(std::unique_ptr<MkvWriter> writer) = 0;
-
121  virtual Status DoFinalize() = 0;
-
122 
-
123  private:
-
124  Status CreateVideoTrack(VideoStreamInfo* info);
-
125  Status CreateAudioTrack(AudioStreamInfo* info);
-
126  Status InitializeEncryptor(KeySource* key_source, uint32_t max_sd_pixels,
-
127  uint32_t max_hd_pixels, uint32_t max_uhd1_pixels);
-
128 
-
129  // Writes the previous frame to the file.
-
130  Status WriteFrame(bool write_duration);
-
131 
-
132  // This is called when there needs to be a new subsegment. This does nothing
-
133  // in single-segment mode. In multi-segment mode this creates a new Cluster
-
134  // element.
-
135  virtual Status NewSubsegment(uint64_t start_timescale) = 0;
-
136  // This is called when there needs to be a new segment. In single-segment
-
137  // mode, this creates a new Cluster element. In multi-segment mode this
-
138  // creates a new output file.
-
139  virtual Status NewSegment(uint64_t start_timescale) = 0;
-
140 
-
141  // Store the previous sample so we know which one is the last frame.
-
142  std::shared_ptr<MediaSample> prev_sample_;
-
143  // The reference frame timestamp; used to populate the ReferenceBlock element
-
144  // when writing non-keyframe BlockGroups.
-
145  uint64_t reference_frame_timestamp_;
-
146 
-
147  const MuxerOptions& options_;
-
148  std::unique_ptr<Encryptor> encryptor_;
-
149  double clear_lead_;
-
150  bool enable_encryption_; // Encryption is enabled only after clear_lead_.
+
80  virtual Status FinalizeSegment(uint64_t start_timescale,
+
81  uint64_t duration_timescale,
+
82  bool is_subsegment) = 0;
+
83 
+
86  virtual bool GetInitRangeStartAndEnd(uint64_t* start, uint64_t* end) = 0;
+
87 
+
90  virtual bool GetIndexRangeStartAndEnd(uint64_t* start, uint64_t* end) = 0;
+
91 
+
93  float GetDuration() const;
+
94 
+
95  protected:
+
98  uint64_t FromBMFFTimescale(uint64_t time_timescale);
+
100  uint64_t FromWebMTimecode(uint64_t time_webm_timecode);
+
102  Status WriteSegmentHeader(uint64_t file_size, MkvWriter* writer);
+
104  Status SetCluster(uint64_t start_webm_timecode,
+
105  uint64_t position,
+
106  MkvWriter* writer);
+
107 
+
109  void UpdateProgress(uint64_t progress);
+
110  void set_progress_target(uint64_t target) { progress_target_ = target; }
+
111 
+
112  const MuxerOptions& options() const { return options_; }
+
113  mkvmuxer::Cluster* cluster() { return cluster_.get(); }
+
114  mkvmuxer::Cues* cues() { return &cues_; }
+
115  MuxerListener* muxer_listener() { return muxer_listener_; }
+
116  StreamInfo* info() { return info_; }
+
117  SeekHead* seek_head() { return &seek_head_; }
+
118 
+
119  int track_id() const { return track_id_; }
+
120  uint64_t segment_payload_pos() const { return segment_payload_pos_; }
+
121 
+
122  virtual Status DoInitialize(std::unique_ptr<MkvWriter> writer) = 0;
+
123  virtual Status DoFinalize() = 0;
+
124 
+
125  private:
+
126  Status CreateVideoTrack(VideoStreamInfo* info);
+
127  Status CreateAudioTrack(AudioStreamInfo* info);
+
128  Status InitializeEncryptor(KeySource* key_source, uint32_t max_sd_pixels,
+
129  uint32_t max_hd_pixels, uint32_t max_uhd1_pixels);
+
130 
+
131  // Writes the previous frame to the file.
+
132  Status WriteFrame(bool write_duration);
+
133 
+
134  // This is called when there needs to be a new (sub)segment.
+
135  // In single-segment mode, a Cluster is a segment and there is no subsegment.
+
136  // In multi-segment mode, a new file is a segment and the clusters in the file
+
137  // are subsegments.
+
138  virtual Status NewSegment(uint64_t start_timescale, bool is_subsegment) = 0;
+
139 
+
140  // Store the previous sample so we know which one is the last frame.
+
141  std::shared_ptr<MediaSample> prev_sample_;
+
142  // The reference frame timestamp; used to populate the ReferenceBlock element
+
143  // when writing non-keyframe BlockGroups.
+
144  uint64_t reference_frame_timestamp_ = 0;
+
145 
+
146  const MuxerOptions& options_;
+
147  std::unique_ptr<Encryptor> encryptor_;
+
148  double clear_lead_ = 0;
+
149  // Encryption is enabled only after clear_lead_.
+
150  bool enable_encryption_ = false;
151 
152  std::unique_ptr<mkvmuxer::Cluster> cluster_;
153  mkvmuxer::Cues cues_;
@@ -206,57 +205,59 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
155  mkvmuxer::SegmentInfo segment_info_;
156  mkvmuxer::Tracks tracks_;
157 
-
158  StreamInfo* info_;
-
159  MuxerListener* muxer_listener_;
-
160  ProgressListener* progress_listener_;
-
161  uint64_t progress_target_;
-
162  uint64_t accumulated_progress_;
-
163  uint64_t first_timestamp_;
-
164  int64_t sample_duration_;
+
158  StreamInfo* info_ = nullptr;
+
159  MuxerListener* muxer_listener_ = nullptr;
+
160  ProgressListener* progress_listener_ = nullptr;
+
161  uint64_t progress_target_ = 0;
+
162  uint64_t accumulated_progress_ = 0;
+
163  uint64_t first_timestamp_ = 0;
+
164  int64_t sample_duration_ = 0;
165  // The position (in bytes) of the start of the Segment payload in the init
166  // file. This is also the size of the header before the SeekHead.
-
167  uint64_t segment_payload_pos_;
+
167  uint64_t segment_payload_pos_ = 0;
168 
-
169  // Durations in timescale.
-
170  uint64_t cluster_length_in_time_scale_;
-
171  uint64_t segment_length_in_time_scale_;
-
172 
-
173  int track_id_;
-
174 
-
175  DISALLOW_COPY_AND_ASSIGN(Segmenter);
-
176 };
-
177 
-
178 } // namespace webm
-
179 } // namespace media
-
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:220
+
169  // Indicate whether a new segment needed to be created, which is always true
+
170  // in the beginning.
+
171  bool new_segment_ = true;
+
172  // Indicate whether a new subsegment needed to be created.
+
173  bool new_subsegment_ = false;
+
174  int track_id_ = 0;
+
175 
+
176  DISALLOW_COPY_AND_ASSIGN(Segmenter);
+
177 };
+
178 
+
179 } // namespace webm
+
180 } // namespace media
+
181 } // namespace shaka
+
182 
+
183 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_H_
+
Status WriteSegmentHeader(uint64_t file_size, MkvWriter *writer)
Writes the Segment header to writer.
Definition: segmenter.cc:184
Abstract class holds stream information.
Definition: stream_info.h:58
- + -
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
+
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:36
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:258
+
Status SetCluster(uint64_t start_webm_timecode, uint64_t position, MkvWriter *writer)
Creates a Cluster object with the given parameters.
Definition: segmenter.cc:222
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:123
+
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:105
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:267
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:231
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:214
+
uint64_t FromWebMTimecode(uint64_t time_webm_timecode)
Converts the given time in WebM timecode to ISO BMFF timescale.
Definition: segmenter.cc:178
Holds video stream information.
Holds audio stream information.
-
uint64_t FromBMFFTimescale(uint64_t time_timescale)
Definition: segmenter.cc:207
+
uint64_t FromBMFFTimescale(uint64_t time_timescale)
Definition: segmenter.cc:171
+
virtual Status FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment)=0
Finalize the (sub)segment.
Definition: segmenter.cc:156
diff --git a/docs/df/dde/ts__section__psi_8cc_source.html b/docs/df/dde/ts__section__psi_8cc_source.html index f5f9bcd19e..305a04bc96 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 119a6650fd..137b124dbb 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 f5c77e2d72..236e2626e6 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 073312cab4..258a59cb0d 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 07c7a07bd0..8cfc90d899 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 3fb58d54ed..5c900a5e4c 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 9d3122456c..0e092048d5 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 b8dad0045b..99ff697d65 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 9aaef1c3e4..f9eea146a2 100644 --- a/docs/dir_2618cd273dea54f184e42d7a562af818.html +++ b/docs/dir_2618cd273dea54f184e42d7a562af818.html @@ -136,7 +136,7 @@ Files diff --git a/docs/dir_279fd47bebb21302c25cfb685e84c359.html b/docs/dir_279fd47bebb21302c25cfb685e84c359.html index 1e8d60412e..9e506df506 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 590ddc644a..18b452f541 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 6ea9f4b578..a88ae7a703 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 918b79bb97..db4144791c 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 69420df48b..a4d1636f84 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 48aab918a3..2abd62cb08 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 907c269969..6c3230ae39 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 fcbe14aa93..26c5d0f136 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 b00b9d5468..97ba5ee04b 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 f450663bdc..ce9c6893d1 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 3f0f010385..a8770f7ec4 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 f4fcd09914..b12ce27a00 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 136a724f12..f48db6afed 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 4d3aeb4111..b359bcf033 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -257,7 +257,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index c391c393f3..7fce32742e 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 5799760449..c2ca030d48 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 369d3bdedc..c5e5821c1c 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 46a97d086a..908c5fa6bc 100644 --- a/docs/files.html +++ b/docs/files.html @@ -451,7 +451,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index 46d54db7c0..9e59e90b98 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -181,7 +181,7 @@ 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
  • AddSubsample() @@ -252,7 +252,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index 00e4fe7983..d9fd2ca9fc 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 979df76e0c..164e5b5d68 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -253,7 +253,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index b329eb4d10..07e2710aec 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 edb394b077..88e2f9fb27 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 af8c2bb043..a853149537 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 092e4d528b..f40426dc55 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 390c74dbf2..58eb7a5e3d 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -146,7 +146,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::EncryptingFragmenter
  • FinalizeSegment() -: shaka::media::mp2t::TsWriter +: shaka::media::mp2t::TsSegmenter +, shaka::media::mp2t::TsWriter +, shaka::media::mp4::Segmenter +, shaka::media::webm::MultiSegmentSegmenter +, shaka::media::webm::Segmenter +, shaka::media::webm::SingleSegmentSegmenter
  • Flush() : shaka::DashIopMpdNotifier @@ -173,12 +178,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • ForceSetSegmentAlignment() : shaka::AdaptationSet
  • -
  • fragment_duration -: shaka::media::MuxerOptions -
  • -
  • fragment_sap_aligned -: shaka::media::MuxerOptions -
  • Fragmenter() : shaka::media::mp4::Fragmenter
  • @@ -198,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index 1e65c10c43..03a6918a69 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -181,7 +181,7 @@ 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
  • AddSubsample() @@ -252,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 008dc739d0..3eaff5f127 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 ad6ad4d404..f3ba001bb2 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -247,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 0bcbeec7a5..99d165f44a 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 676fd7e726..1dbe6315a1 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 0226c4f7da..d049a5c99f 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -146,7 +146,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::EncryptingFragmenter
  • FinalizeSegment() -: shaka::media::mp2t::TsWriter +: shaka::media::mp2t::TsSegmenter +, shaka::media::mp2t::TsWriter +, shaka::media::mp4::Segmenter +, shaka::media::webm::MultiSegmentSegmenter +, shaka::media::webm::Segmenter +, shaka::media::webm::SingleSegmentSegmenter
  • Flush() : shaka::DashIopMpdNotifier @@ -192,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index d47ddd22c8..7e72d1d3e7 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 6d4cbce6f9..072a5ba3ff 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 34522e13d9..b7cf5eda55 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -220,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 bb3c34c181..6949bdbfcf 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 2ab6b27ab5..f5e2ce6621 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 c0ef448f2f..732adc218c 100644 --- a/docs/functions_func_m.html +++ b/docs/functions_func_m.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_n.html b/docs/functions_func_n.html index 909519a21a..df834a09fd 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 8f6817529b..922a4d20ec 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -198,7 +198,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index c287d6d4f0..0be67a6b08 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -242,7 +242,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index f5132ddc29..7576d7b7c9 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index 5873a28448..243620a4f6 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -296,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 ebc66946b9..33f033cab2 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -177,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 9e90f37f34..1b96196e83 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 921dab5a32..c18689579b 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_w.html b/docs/functions_func_w.html index 4272cf10cb..2f225f5512 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index bcf2363be9..f1ca092dc2 100644 --- a/docs/functions_func_x.html +++ b/docs/functions_func_x.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_~.html b/docs/functions_func_~.html index cf914104ec..ab7a2d1b75 100644 --- a/docs/functions_func_~.html +++ b/docs/functions_func_~.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_g.html b/docs/functions_g.html index ecd25f7f5c..15dcddb000 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -274,7 +274,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 94e89b5b08..a20038cc6f 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_i.html b/docs/functions_i.html index b675467410..4a4ab34f46 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index 908b0bf1ef..b6f147c380 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_l.html b/docs/functions_l.html index b83c7fe751..87dc05e9da 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_m.html b/docs/functions_m.html index 8f1d256a12..c0593a06c7 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index d4b585de17..765bb042ad 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_o.html b/docs/functions_o.html index e5627dad4c..7b6b8d1e11 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index 917409bfec..8a76516293 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -251,7 +251,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 1eb70d48db..abab069b4d 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index ff9a6f4e0b..f22d291f74 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -156,15 +156,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Seekable() : shaka::media::MkvWriter
  • -
  • segment_duration -: shaka::media::MuxerOptions -
  • segment_duration_in_seconds : shaka::media::ChunkingOptions
  • segment_sap_aligned : shaka::media::ChunkingOptions -, shaka::media::MuxerOptions
  • segment_template : shaka::media::MuxerOptions @@ -318,7 +314,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index e66f5b2659..8ee1de8288 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index cce00a3480..26c5fdc5c3 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 bddf0cd143..bc1d3526ec 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 1ab48912ce..c1b1da8e60 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_vars.html b/docs/functions_vars.html index 7771431234..a0119d80ec 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -102,12 +102,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • crypto_period_duration_in_seconds : shaka::media::EncryptionOptions
  • -
  • fragment_duration -: shaka::media::MuxerOptions -
  • -
  • fragment_sap_aligned -: shaka::media::MuxerOptions -
  • kADTSHeaderSize : shaka::media::AACAudioSpecificConfig
  • @@ -144,15 +138,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • sample_encryption_data : shaka::media::mp4::SampleEncryption
  • -
  • segment_duration -: shaka::media::MuxerOptions -
  • segment_duration_in_seconds : shaka::media::ChunkingOptions
  • segment_sap_aligned : shaka::media::ChunkingOptions -, shaka::media::MuxerOptions
  • segment_template : shaka::media::MuxerOptions @@ -170,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index c0d726571c..4796c59dcd 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 330fa0d66e..68b1636b02 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 7ec8064d0a..32b1646b0b 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 9f1863e95c..db76db7ccc 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -381,7 +381,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/index.html b/docs/index.html index a4ca82f6c8..d603b35801 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 160635def3..3b2689ef2c 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 6e810ed397..4aeb97b596 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 3ec51b1b5f..db731c4c4b 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 acd52c3bda..2d945e3c1c 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -23,7 +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#ab73caca6e3c9821a5f17c236bd798a1b',1,'shaka::media::mp4::Segmenter::AddSample()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aad137d0ae95d3e47a32725276970e324',1,'shaka::media::webm::Segmenter::AddSample()']]], + ['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#a3be336ca9df9686a9f186b51bbd8b021',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/all_10.js b/docs/search/all_10.js index f879e91ae3..dd79b0eeb8 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -24,9 +24,8 @@ var searchData= ['seek',['Seek',['../d3/d61/classshaka_1_1media_1_1File.html#a3baaa3207abaeb6af1a8239ee866b5d3',1,'shaka::media::File::Seek()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#a6cb6e6bf3a47fbcda6d759ff4f551939',1,'shaka::media::LocalFile::Seek()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#af99f8c96589175e9a2f386e6a2ed4f35',1,'shaka::media::MemoryFile::Seek()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#a4a30faf9c8e8b367bcfebb7b642d73e7',1,'shaka::media::ThreadedIoFile::Seek()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a78fa34d29e01054536a19eaac7ed51c4',1,'shaka::media::UdpFile::Seek()']]], ['seekable',['Seekable',['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#a8d0429e7922752db3f01d43e6340465a',1,'shaka::media::MkvWriter']]], ['seekhead',['SeekHead',['../dc/d16/classshaka_1_1media_1_1SeekHead.html',1,'shaka::media']]], - ['segment_5fduration',['segment_duration',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a4e98ad5fc7bbc2df0cb95df3f1db9687',1,'shaka::media::MuxerOptions']]], ['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_5fsap_5faligned',['segment_sap_aligned',['../db/d02/structshaka_1_1media_1_1ChunkingOptions.html#a0ae39a9eef9c4adc63916fa594f0fe64',1,'shaka::media::ChunkingOptions']]], ['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']]], @@ -78,8 +77,8 @@ var searchData= ['soundmediaheader',['SoundMediaHeader',['../d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html',1,'shaka::media::mp4']]], ['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',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)']]], + ['status',['Status',['../d0/d93/classshaka_1_1media_1_1Status.html',1,'shaka::media']]], ['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']]], diff --git a/docs/search/all_5.js b/docs/search/all_5.js index 31f4af682e..a3b60bc2aa 100644 --- a/docs/search/all_5.js +++ b/docs/search/all_5.js @@ -8,13 +8,11 @@ var searchData= ['finalize',['Finalize',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#ac92da7c996e2a270fd704facc8f7a149',1,'shaka::media::mp2t::TsSegmenter::Finalize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a464a30159b8888a54254356d191947ac',1,'shaka::media::mp4::Segmenter::Finalize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aa84782877f1afaf9519a552ac3d5d417',1,'shaka::media::webm::Segmenter::Finalize()']]], ['finalizefragment',['FinalizeFragment',['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a0de01823838c543cb8f6f8e330712ac2',1,'shaka::media::mp4::EncryptingFragmenter::FinalizeFragment()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#a0295126af5e6b278a980021f43ae17ea',1,'shaka::media::mp4::Fragmenter::FinalizeFragment()']]], ['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']]], + ['finalizesegment',['FinalizeSegment',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#ac0c76888b5c3b3a25600a3f126dc92f8',1,'shaka::media::mp2t::TsSegmenter::FinalizeSegment()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#ae9979f940d7a07127709576aa1f766a1',1,'shaka::media::mp2t::TsWriter::FinalizeSegment()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a21fcf0f3074416762a52fd54b4ec8a03',1,'shaka::media::mp4::Segmenter::FinalizeSegment()'],['../d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html#a5d7029844e7c14bf88c70d3b34d96adf',1,'shaka::media::webm::MultiSegmentSegmenter::FinalizeSegment()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#abf471f83977c2db988694916abb712ff',1,'shaka::media::webm::Segmenter::FinalizeSegment()'],['../d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html#a0fde214c6f5907d4eda9b439b78c7288',1,'shaka::media::webm::SingleSegmentSegmenter::FinalizeSegment()']]], ['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()']]], ['flushdownstream',['FlushDownstream',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a12bf0d7f548d971c709c8644461dc9d3',1,'shaka::media::MediaHandler']]], ['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']]], ['fragmenter',['Fragmenter',['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#a1be96f51fc8ea765aab7142df1bf6006',1,'shaka::media::mp4::Fragmenter']]], ['fragmenter',['Fragmenter',['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html',1,'shaka::media::mp4']]], ['frequency',['frequency',['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a10f2acc7fcf3ec9de2fe3598c255786d',1,'shaka::media::AACAudioSpecificConfig']]], diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js index f15f06fb3c..e6208c288b 100644 --- a/docs/search/functions_0.js +++ b/docs/search/functions_0.js @@ -18,7 +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#ab73caca6e3c9821a5f17c236bd798a1b',1,'shaka::media::mp4::Segmenter::AddSample()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aad137d0ae95d3e47a32725276970e324',1,'shaka::media::webm::Segmenter::AddSample()']]], + ['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#a3be336ca9df9686a9f186b51bbd8b021',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_5.js b/docs/search/functions_5.js index aeb271735b..cae3440ad9 100644 --- a/docs/search/functions_5.js +++ b/docs/search/functions_5.js @@ -5,7 +5,7 @@ var searchData= ['finalize',['Finalize',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#ac92da7c996e2a270fd704facc8f7a149',1,'shaka::media::mp2t::TsSegmenter::Finalize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a464a30159b8888a54254356d191947ac',1,'shaka::media::mp4::Segmenter::Finalize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aa84782877f1afaf9519a552ac3d5d417',1,'shaka::media::webm::Segmenter::Finalize()']]], ['finalizefragment',['FinalizeFragment',['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a0de01823838c543cb8f6f8e330712ac2',1,'shaka::media::mp4::EncryptingFragmenter::FinalizeFragment()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#a0295126af5e6b278a980021f43ae17ea',1,'shaka::media::mp4::Fragmenter::FinalizeFragment()']]], ['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']]], + ['finalizesegment',['FinalizeSegment',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#ac0c76888b5c3b3a25600a3f126dc92f8',1,'shaka::media::mp2t::TsSegmenter::FinalizeSegment()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#ae9979f940d7a07127709576aa1f766a1',1,'shaka::media::mp2t::TsWriter::FinalizeSegment()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a21fcf0f3074416762a52fd54b4ec8a03',1,'shaka::media::mp4::Segmenter::FinalizeSegment()'],['../d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html#a5d7029844e7c14bf88c70d3b34d96adf',1,'shaka::media::webm::MultiSegmentSegmenter::FinalizeSegment()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#abf471f83977c2db988694916abb712ff',1,'shaka::media::webm::Segmenter::FinalizeSegment()'],['../d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html#a0fde214c6f5907d4eda9b439b78c7288',1,'shaka::media::webm::SingleSegmentSegmenter::FinalizeSegment()']]], ['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()']]], ['flushdownstream',['FlushDownstream',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a12bf0d7f548d971c709c8644461dc9d3',1,'shaka::media::MediaHandler']]], ['forcesetsegmentalignment',['ForceSetSegmentAlignment',['../d8/d8e/classshaka_1_1AdaptationSet.html#a40532ecbed5f71de85bde0cb7eb1ef9d',1,'shaka::AdaptationSet']]], diff --git a/docs/search/search.js b/docs/search/search.js index 40a7e4d408..99aa2d4362 100644 --- a/docs/search/search.js +++ b/docs/search/search.js @@ -11,7 +11,7 @@ var indexSectionsWithContent = 1: "abcdefhiklmnoprstuvwx", 2: "s", 3: "abcdefghiklmnoprstuvwx~", - 4: "bcfkmnopst", + 4: "bckmnopst", 5: "in", 6: "p", 7: "k" diff --git a/docs/search/variables_2.js b/docs/search/variables_2.js index 7b53039364..bdfe8b9da7 100644 --- a/docs/search/variables_2.js +++ b/docs/search/variables_2.js @@ -1,5 +1,6 @@ var searchData= [ - ['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']]] + ['kadtsheadersize',['kADTSHeaderSize',['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a233ffcb063079b9ca34863c48d4a19e1',1,'shaka::media::AACAudioSpecificConfig']]], + ['kdecryptionkeysize',['kDecryptionKeySize',['../de/d49/classshaka_1_1media_1_1DecryptConfig.html#afa140203b87d3e46d5fd94b231734f53',1,'shaka::media::DecryptConfig']]], + ['korderinvalid',['kOrderInvalid',['../dc/da6/classshaka_1_1media_1_1ContentEncoding.html#a3ba32d5ca8b0688b2dc6b2ec8a5be6d2',1,'shaka::media::ContentEncoding']]] ]; diff --git a/docs/search/variables_3.js b/docs/search/variables_3.js index bdfe8b9da7..d718a6be1f 100644 --- a/docs/search/variables_3.js +++ b/docs/search/variables_3.js @@ -1,6 +1,7 @@ var searchData= [ - ['kadtsheadersize',['kADTSHeaderSize',['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a233ffcb063079b9ca34863c48d4a19e1',1,'shaka::media::AACAudioSpecificConfig']]], - ['kdecryptionkeysize',['kDecryptionKeySize',['../de/d49/classshaka_1_1media_1_1DecryptConfig.html#afa140203b87d3e46d5fd94b231734f53',1,'shaka::media::DecryptConfig']]], - ['korderinvalid',['kOrderInvalid',['../dc/da6/classshaka_1_1media_1_1ContentEncoding.html#a3ba32d5ca8b0688b2dc6b2ec8a5be6d2',1,'shaka::media::ContentEncoding']]] + ['max_5fhd_5fpixels',['max_hd_pixels',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#a0fc40dd8a1e5f6a62c948ee851650d9b',1,'shaka::media::EncryptionOptions']]], + ['max_5fsd_5fpixels',['max_sd_pixels',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#a2709a421f1d96bffc888fcd493c8e0a3',1,'shaka::media::EncryptionOptions']]], + ['max_5fuhd1_5fpixels',['max_uhd1_pixels',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#a8e6825654b6047b410955818bcfa1014',1,'shaka::media::EncryptionOptions']]], + ['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']]] ]; diff --git a/docs/search/variables_4.js b/docs/search/variables_4.js index d718a6be1f..a224fec24b 100644 --- a/docs/search/variables_4.js +++ b/docs/search/variables_4.js @@ -1,7 +1,4 @@ var searchData= [ - ['max_5fhd_5fpixels',['max_hd_pixels',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#a0fc40dd8a1e5f6a62c948ee851650d9b',1,'shaka::media::EncryptionOptions']]], - ['max_5fsd_5fpixels',['max_sd_pixels',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#a2709a421f1d96bffc888fcd493c8e0a3',1,'shaka::media::EncryptionOptions']]], - ['max_5fuhd1_5fpixels',['max_uhd1_pixels',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#a8e6825654b6047b410955818bcfa1014',1,'shaka::media::EncryptionOptions']]], - ['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']]] + ['num_5fsubsegments_5fper_5fsidx',['num_subsegments_per_sidx',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a2db773300dadf681c40bef0b3eca3ece',1,'shaka::media::MuxerOptions']]] ]; diff --git a/docs/search/variables_5.js b/docs/search/variables_5.js index a224fec24b..5565b9b77c 100644 --- a/docs/search/variables_5.js +++ b/docs/search/variables_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['num_5fsubsegments_5fper_5fsidx',['num_subsegments_per_sidx',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a2db773300dadf681c40bef0b3eca3ece',1,'shaka::media::MuxerOptions']]] + ['output_5ffile_5fname',['output_file_name',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a5397ee8759a663aea68261600e528d82',1,'shaka::media::MuxerOptions']]] ]; diff --git a/docs/search/variables_6.js b/docs/search/variables_6.js index 5565b9b77c..fd0c1a01b1 100644 --- a/docs/search/variables_6.js +++ b/docs/search/variables_6.js @@ -1,4 +1,5 @@ var searchData= [ - ['output_5ffile_5fname',['output_file_name',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a5397ee8759a663aea68261600e528d82',1,'shaka::media::MuxerOptions']]] + ['private_5fframe',['private_frame',['../d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html#a33c145fa8ed1417799dce66a94f8e95c',1,'shaka::media::mp4::ID3v2']]], + ['protection_5fscheme',['protection_scheme',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#ac858b4c03e49e871e07e38fc35893088',1,'shaka::media::EncryptionOptions']]] ]; diff --git a/docs/search/variables_7.js b/docs/search/variables_7.js index fd0c1a01b1..33fdee95d6 100644 --- a/docs/search/variables_7.js +++ b/docs/search/variables_7.js @@ -1,5 +1,9 @@ var searchData= [ - ['private_5fframe',['private_frame',['../d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html#a33c145fa8ed1417799dce66a94f8e95c',1,'shaka::media::mp4::ID3v2']]], - ['protection_5fscheme',['protection_scheme',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#ac858b4c03e49e871e07e38fc35893088',1,'shaka::media::EncryptionOptions']]] + ['sample_5fencryption_5fdata',['sample_encryption_data',['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a621791262888f30b4ee8a8acb37cd5a3',1,'shaka::media::mp4::SampleEncryption']]], + ['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',['../db/d02/structshaka_1_1media_1_1ChunkingOptions.html#a0ae39a9eef9c4adc63916fa594f0fe64',1,'shaka::media::ChunkingOptions']]], + ['segment_5ftemplate',['segment_template',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#ab98cfd28046fc5c52ab2a45dba1a339a',1,'shaka::media::MuxerOptions']]], + ['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']]] ]; diff --git a/docs/search/variables_8.js b/docs/search/variables_8.js index 37d2b933a1..1c19a50ff1 100644 --- a/docs/search/variables_8.js +++ b/docs/search/variables_8.js @@ -1,10 +1,4 @@ var searchData= [ - ['sample_5fencryption_5fdata',['sample_encryption_data',['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a621791262888f30b4ee8a8acb37cd5a3',1,'shaka::media::mp4::SampleEncryption']]], - ['segment_5fduration',['segment_duration',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a4e98ad5fc7bbc2df0cb95df3f1db9687',1,'shaka::media::MuxerOptions']]], - ['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']]], - ['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']]] + ['temp_5fdir',['temp_dir',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a872d1150a71d9f0fb5db0ab81334d614',1,'shaka::media::MuxerOptions']]] ]; diff --git a/docs/search/variables_9.html b/docs/search/variables_9.html deleted file mode 100644 index 78cc249f7d..0000000000 --- a/docs/search/variables_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/search/variables_9.js b/docs/search/variables_9.js deleted file mode 100644 index 1c19a50ff1..0000000000 --- a/docs/search/variables_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['temp_5fdir',['temp_dir',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a872d1150a71d9f0fb5db0ab81334d614',1,'shaka::media::MuxerOptions']]] -];