diff --git a/docs/annotated.html b/docs/annotated.html index 5675bc5c58..9142bee184 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -371,7 +371,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index ec2114281f..36dc300d0c 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/d0/d00/structshaka_1_1media_1_1mp4_1_1HandlerReference-members.html b/docs/d0/d00/structshaka_1_1media_1_1mp4_1_1HandlerReference-members.html index 30efaab59d..fc9df33e08 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 4c5c10f18b..f52952c85c 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 a121ee0807..46ac5b4675 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html b/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html index d77bd37437..e5c1a2440b 100644 --- a/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html +++ b/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html b/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html index a20c33051c..202a3acaba 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 7b5873ccf6..bfe2dec888 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html b/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html index 04233926cd..8b27f28c37 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 50db0a5d9c..9da439c723 100644 --- a/docs/d0/d11/structshaka_1_1media_1_1VPxFrameInfo.html +++ b/docs/d0/d11/structshaka_1_1media_1_1VPxFrameInfo.html @@ -121,7 +121,7 @@ uint32_t height diff --git a/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html b/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html index 334f423248..b7a714b8d3 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 93c0d0e2ba..1573194966 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 05b116dddf..7e6479ebf7 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 be2ae06ca0..647829aab7 100644 --- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html +++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html @@ -291,7 +291,7 @@ bool webm_subsample_encryp diff --git a/docs/d0/d30/mock__mpd__notifier_8h_source.html b/docs/d0/d30/mock__mpd__notifier_8h_source.html index 2bc75ad240..f5df3b1f66 100644 --- a/docs/d0/d30/mock__mpd__notifier_8h_source.html +++ b/docs/d0/d30/mock__mpd__notifier_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d32/mp2t__common_8h_source.html b/docs/d0/d32/mp2t__common_8h_source.html index 2790cfe849..4c07192a4f 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 853f1aea1b..cadc9d4875 100644 --- a/docs/d0/d33/classshaka_1_1MockRepresentation.html +++ b/docs/d0/d33/classshaka_1_1MockRepresentation.html @@ -160,7 +160,7 @@ Additional Inherited Members diff --git a/docs/d0/d35/es__descriptor_8cc_source.html b/docs/d0/d35/es__descriptor_8cc_source.html index 5d6f645b04..83e797a981 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 ff0a2ec038..f492b3a9bf 100644 --- a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html +++ b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html @@ -220,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/webm__constants_8h_source.html b/docs/d0/d3a/webm__constants_8h_source.html index 819ae268d3..1f4d70165f 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 d1cb73076e..5914c41403 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 13490630c1..9207c54e7c 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 71da3a039a..1484005621 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -258,7 +258,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d46/fourccs_8h_source.html b/docs/d0/d46/fourccs_8h_source.html index 694b50178b..9f4cdfa67d 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -248,7 +248,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html index d77ea21606..f1b2aee1f0 100644 --- a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html +++ b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html b/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html index 8620314e77..1c3eb587fb 100644 --- a/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html +++ b/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html b/docs/d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html index 2b2b4e0fbc..9d3ce0d812 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 f63a24e095..9505b4a9a1 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 9433623cc3..53a73e2d44 100644 --- a/docs/d0/d53/classshaka_1_1media_1_1mp2t_1_1TsMuxer-members.html +++ b/docs/d0/d53/classshaka_1_1media_1_1mp2t_1_1TsMuxer-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html b/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html index f54f0f21fe..a52ba41668 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 50244c3823..6cf4bcb83b 100644 --- a/docs/d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html +++ b/docs/d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html @@ -204,7 +204,7 @@ Additional Inherited Members

Implements shaka::media::File.

-

Definition at line 56 of file threaded_io_file.cc.

+

Definition at line 58 of file threaded_io_file.cc.

@@ -233,7 +233,7 @@ Additional Inherited Members

Implements shaka::media::File.

-

Definition at line 108 of file threaded_io_file.cc.

+

Definition at line 110 of file threaded_io_file.cc.

@@ -280,7 +280,7 @@ Additional Inherited Members

Implements shaka::media::File.

-

Definition at line 70 of file threaded_io_file.cc.

+

Definition at line 72 of file threaded_io_file.cc.

@@ -316,7 +316,7 @@ Additional Inherited Members

Implements shaka::media::File.

-

Definition at line 118 of file threaded_io_file.cc.

+

Definition at line 120 of file threaded_io_file.cc.

@@ -344,7 +344,7 @@ Additional Inherited Members

Implements shaka::media::File.

-

Definition at line 102 of file threaded_io_file.cc.

+

Definition at line 104 of file threaded_io_file.cc.

@@ -380,7 +380,7 @@ Additional Inherited Members

Implements shaka::media::File.

-

Definition at line 147 of file threaded_io_file.cc.

+

Definition at line 149 of file threaded_io_file.cc.

@@ -427,7 +427,7 @@ Additional Inherited Members

Implements shaka::media::File.

-

Definition at line 87 of file threaded_io_file.cc.

+

Definition at line 89 of file threaded_io_file.cc.

@@ -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 4b96f74bac..76081d91b5 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 b55d688e47..33305a81d7 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 cb36021b3c..4e2e6d1823 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 83ce809735..94b67c15f1 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 881dee00a3..287e53aed3 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 026ed5f468..c3b3fce1a8 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 f2b9451b36..bc6519720a 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 79799ea0af..4e3c032212 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 d1af6bc134..6bb7b0079b 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 a0b8b71b5e..12570602d6 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 7cbfbfdc92..8eaf23a940 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 454eeedf3d..4af2133d80 100644 --- a/docs/d0/da6/stream__descriptor_8cc_source.html +++ b/docs/d0/da6/stream__descriptor_8cc_source.html @@ -295,7 +295,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html b/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html index b290d299fb..7560b0e9e9 100644 --- a/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html +++ b/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html @@ -259,7 +259,7 @@ void set_progress_target diff --git a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html index 29d7102961..7457650247 100644 --- a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html +++ b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html @@ -213,7 +213,7 @@ Additional Inherited Members -

Definition at line 86 of file fixed_key_source.cc.

+

Definition at line 87 of file fixed_key_source.cc.

@@ -249,7 +249,7 @@ Additional Inherited Members

Implements shaka::media::KeySource.

-

Definition at line 17 of file fixed_key_source.cc.

+

Definition at line 18 of file fixed_key_source.cc.

@@ -285,7 +285,7 @@ Additional Inherited Members

Implements shaka::media::KeySource.

-

Definition at line 22 of file fixed_key_source.cc.

+

Definition at line 23 of file fixed_key_source.cc.

@@ -321,7 +321,7 @@ Additional Inherited Members

Implements shaka::media::KeySource.

-

Definition at line 28 of file fixed_key_source.cc.

+

Definition at line 29 of file fixed_key_source.cc.

@@ -375,7 +375,7 @@ Additional Inherited Members

Implements shaka::media::KeySource.

-

Definition at line 54 of file fixed_key_source.cc.

+

Definition at line 55 of file fixed_key_source.cc.

@@ -422,7 +422,7 @@ Additional Inherited Members

Implements shaka::media::KeySource.

-

Definition at line 33 of file fixed_key_source.cc.

+

Definition at line 34 of file fixed_key_source.cc.

@@ -469,7 +469,7 @@ Additional Inherited Members

Implements shaka::media::KeySource.

-

Definition at line 40 of file fixed_key_source.cc.

+

Definition at line 41 of file fixed_key_source.cc.

@@ -480,7 +480,7 @@ Additional Inherited Members diff --git a/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html b/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html index 673a57d9c3..26a0ed1c51 100644 --- a/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html +++ b/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dc1/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html b/docs/d0/dc1/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html index be267167c3..2ecfa1dbbe 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 a29021be83..8e6e0051b2 100644 --- a/docs/d0/dc8/classshaka_1_1xml_1_1AdaptationSetXmlNode-members.html +++ b/docs/d0/dc8/classshaka_1_1xml_1_1AdaptationSetXmlNode-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dce/classshaka_1_1media_1_1RsaPrivateKey.html b/docs/d0/dce/classshaka_1_1media_1_1RsaPrivateKey.html index b104525eba..ee95bb7708 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 dce21294c7..6a9f654148 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 b33ff48ec4..8a9e6677e9 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 7ee3d8a786..37314647bc 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 7b6e27290b..3d4b5f8bd8 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 1ff20da4f2..fee68521ea 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -216,7 +216,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 547cd0d6c4..a659c1331d 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -329,12 +329,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
240 } // 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)
-
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:186
+
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)
+
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:185
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 206dad7bdb..829e06559a 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 503e756663..0f87238bec 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 5d696f4310..a602d2e273 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 550ecf9afd..64dbe883b0 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 72252fdb6c..01483d41f1 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 40619c5c6d..531324884f 100644 --- a/docs/d1/d13/status_8h_source.html +++ b/docs/d1/d13/status_8h_source.html @@ -239,7 +239,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html b/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html index 4a5e478630..e78d28328f 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 @@ -273,11 +273,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
185 } // namespace shaka
virtual bool Open()=0
Internal open. Should not be used directly.
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
-
static bool Delete(const char *file_name)
Definition: file.cc:164
+
static bool Delete(const char *file_name)
Definition: file.cc:163
diff --git a/docs/d1/d1d/muxer__flags_8cc_source.html b/docs/d1/d1d/muxer__flags_8cc_source.html index e10d54be59..f86f12ce33 100644 --- a/docs/d1/d1d/muxer__flags_8cc_source.html +++ b/docs/d1/d1d/muxer__flags_8cc_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html index 9d39ca5872..d8a591953b 100644 --- a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html +++ b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html @@ -407,7 +407,7 @@ static std::string  diff --git a/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html b/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html index e9089c897e..baae8f7e83 100644 --- a/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html +++ b/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html @@ -235,7 +235,7 @@ Public Member Functions diff --git a/docs/d1/d27/key__fetcher_8h_source.html b/docs/d1/d27/key__fetcher_8h_source.html index dd19ab191c..52fb402040 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 24fc6074f8..93a5f72792 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 558c55c1d6..c16ff64157 100644 --- a/docs/d1/d2a/decryptor__source_8cc_source.html +++ b/docs/d1/d2a/decryptor__source_8cc_source.html @@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html b/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html index b40f4a1428..206e375d17 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 9876ac6d7e..288ea7429f 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 a4c6c00ff7..f4bf1a0730 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -488,7 +488,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html b/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html index 6e9a0fb782..8af44fa432 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 6062cd72d7..95f4acdb7b 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 8ce9fc3ce9..e0c52a1bd7 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 dfea6fa374..8a06b02a32 100644 --- a/docs/d1/d37/es__parser__h264_8h_source.html +++ b/docs/d1/d37/es__parser__h264_8h_source.html @@ -152,7 +152,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 a5a5c94888..b789166b0d 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 968f61aca4..4186f3229b 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 d7a42eb378..fb82b92c0e 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 5fb1dcae1d..41343f25d3 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 32111a2d42..f9218d6453 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 536a57ec8b..5347af75d0 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 c2a79788ec..aadc553037 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 05f9a816eb..dde44c9e09 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 9f43def213..fb6343f6fe 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 a419888342..06c0632ed2 100644 --- a/docs/d1/d72/language__utils_8cc_source.html +++ b/docs/d1/d72/language__utils_8cc_source.html @@ -226,7 +226,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d74/mp2t__media__parser_8cc_source.html b/docs/d1/d74/mp2t__media__parser_8cc_source.html index afced796d7..f1d1349bdb 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -537,7 +537,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 fbe447df61..67adc0b45b 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 2a34fc7ba1..267f43a5f1 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -270,7 +270,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html b/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html index 5a9dc08d99..88b9de9bcb 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 6aeb00da7d..be8f47074a 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 2849d48e84..5a869014f2 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 6e50d11f4b..1a7103c3be 100644 --- a/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html +++ b/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d8e/webm__audio__client_8cc_source.html b/docs/d1/d8e/webm__audio__client_8cc_source.html index e5fda96b19..6c2497d6c2 100644 --- a/docs/d1/d8e/webm__audio__client_8cc_source.html +++ b/docs/d1/d8e/webm__audio__client_8cc_source.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d91/classshaka_1_1media_1_1H26xBitReader-members.html b/docs/d1/d91/classshaka_1_1media_1_1H26xBitReader-members.html index 48e472ca8c..6723d55790 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 12446309ac..ed680be561 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 d488457825..59c7d602df 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 2c5a0170d2..f8a07c244b 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 4927658cf6..09c7cab9f9 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 98eb409e58..f6bce21a8b 100644 --- a/docs/d1/da1/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html +++ b/docs/d1/da1/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html @@ -116,7 +116,7 @@ scoped_refptr< diff --git a/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html b/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html index 3e99b57171..da00be3f25 100644 --- a/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html +++ b/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html b/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html index 1a30389e05..9cd18471be 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 63e5af2640..efe71878c8 100644 --- a/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html +++ b/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html b/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html index bc957b3e62..bc08d7eb30 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 4308dad808..c19ce0b367 100644 --- a/docs/d1/db2/decoder__configuration__record_8h_source.html +++ b/docs/d1/db2/decoder__configuration__record_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dc2/h26x__bit__reader_8h_source.html b/docs/d1/dc2/h26x__bit__reader_8h_source.html index 842a43890a..e911c9f37a 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 18b70c2d2c..6b4e380b49 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -195,7 +195,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 534e5be5bc..2cac9932e9 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 b87056d421..d668975c53 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 d5d9a2065a..e94cb02aec 100644 --- a/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html +++ b/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de2/composition__offset__iterator_8cc_source.html b/docs/d1/de2/composition__offset__iterator_8cc_source.html index 38a3aaeded..fe6c013e4b 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 f7ddfb54f1..02ff48a361 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 f0567b9775..ad9c0704c6 100644 --- a/docs/d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html +++ b/docs/d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/d1/de7/structshaka_1_1media_1_1H265ReferencePictureListModifications-members.html b/docs/d1/de7/structshaka_1_1media_1_1H265ReferencePictureListModifications-members.html index d1734077a5..b13460a662 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 b76ec48646..b5c517c7ca 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 47bc0569b5..854240876c 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 94ed2f0535..d49f0186b3 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 e27d6c2a1d..6048f17399 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 f6ef78e1fb..329f31f5cb 100644 --- a/docs/d1/df3/structshaka_1_1MpdOptions.html +++ b/docs/d1/df3/structshaka_1_1MpdOptions.html @@ -127,7 +127,7 @@ double suggested_presentat diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html index 0932bcff44..94561d14b4 100644 --- a/docs/d1/df5/nalu__reader_8cc_source.html +++ b/docs/d1/df5/nalu__reader_8cc_source.html @@ -434,7 +434,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html b/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html index e218d2463f..3487ccfe13 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 392af815f3..1b905dffb3 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 2884ca3c39..9b30902bbd 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 1c885758d8..70b408882d 100644 --- a/docs/d2/d0f/classshaka_1_1MpdBuilder-members.html +++ b/docs/d2/d0f/classshaka_1_1MpdBuilder-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d0f/structshaka_1_1media_1_1wvm_1_1PrevSampleData.html b/docs/d2/d0f/structshaka_1_1media_1_1wvm_1_1PrevSampleData.html index e4f709bc2f..13150b95ee 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 dffab584c2..a0f4bf44f3 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 b887bc3862..482afd5b4d 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 dc559fb27b..e17ea5d591 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -119,203 +119,205 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
30  size_(0),
31  eof_(false),
32  flushing_(false),
-
33  flush_complete_event_(false, false),
-
34  internal_file_error_(0),
-
35  task_exit_event_(false, false) {
-
36  DCHECK(internal_file_);
-
37 }
-
38 
-
39 ThreadedIoFile::~ThreadedIoFile() {}
+
33  flush_complete_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+
34  base::WaitableEvent::InitialState::NOT_SIGNALED),
+
35  internal_file_error_(0),
+
36  task_exit_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+
37  base::WaitableEvent::InitialState::NOT_SIGNALED) {
+
38  DCHECK(internal_file_);
+
39 }
40 
- -
42  DCHECK(internal_file_);
-
43 
-
44  if (!internal_file_->Open())
-
45  return false;
-
46 
-
47  position_ = 0;
-
48  size_ = internal_file_->Size();
-
49 
-
50  base::WorkerPool::PostTask(FROM_HERE, base::Bind(&ThreadedIoFile::TaskHandler,
-
51  base::Unretained(this)),
-
52  true /* task_is_slow */);
-
53  return true;
-
54 }
-
55 
- -
57  DCHECK(internal_file_);
-
58 
-
59  if (mode_ == kOutputMode)
-
60  Flush();
-
61 
-
62  cache_.Close();
-
63  task_exit_event_.Wait();
-
64 
-
65  bool result = internal_file_.release()->Close();
-
66  delete this;
-
67  return result;
-
68 }
-
69 
-
70 int64_t ThreadedIoFile::Read(void* buffer, uint64_t length) {
-
71  DCHECK(internal_file_);
-
72  DCHECK_EQ(kInputMode, mode_);
-
73 
-
74  if (NoBarrier_Load(&eof_) && !cache_.BytesCached())
-
75  return 0;
-
76 
-
77  if (NoBarrier_Load(&internal_file_error_))
-
78  return NoBarrier_Load(&internal_file_error_);
-
79 
-
80 
-
81  uint64_t bytes_read = cache_.Read(buffer, length);
-
82  position_ += bytes_read;
-
83 
-
84  return bytes_read;
-
85 }
-
86 
-
87 int64_t ThreadedIoFile::Write(const void* buffer, uint64_t length) {
-
88  DCHECK(internal_file_);
-
89  DCHECK_EQ(kOutputMode, mode_);
-
90 
-
91  if (NoBarrier_Load(&internal_file_error_))
-
92  return NoBarrier_Load(&internal_file_error_);
-
93 
-
94  uint64_t bytes_written = cache_.Write(buffer, length);
-
95  position_ += bytes_written;
-
96  if (position_ > size_)
-
97  size_ = position_;
-
98 
-
99  return bytes_written;
-
100 }
-
101 
- -
103  DCHECK(internal_file_);
-
104 
-
105  return size_;
-
106 }
-
107 
- -
109  DCHECK(internal_file_);
-
110  DCHECK_EQ(kOutputMode, mode_);
-
111 
-
112  flushing_ = true;
-
113  cache_.Close();
-
114  flush_complete_event_.Wait();
-
115  return internal_file_->Flush();
-
116 }
-
117 
-
118 bool ThreadedIoFile::Seek(uint64_t position) {
-
119  if (mode_ == kOutputMode) {
-
120  // Writing. Just flush the cache and seek.
-
121  if (!Flush()) return false;
-
122  if (!internal_file_->Seek(position)) return false;
-
123  } else {
-
124  // Reading. Close cache, wait for thread task to exit, seek, and re-post
-
125  // the task.
-
126  cache_.Close();
-
127  task_exit_event_.Wait();
-
128  bool result = internal_file_->Seek(position);
-
129  if (!result) {
-
130  // Seek failed. Seek to logical position instead.
-
131  if (!internal_file_->Seek(position_) && (position != position_)) {
-
132  LOG(WARNING) << "Seek failed. ThreadedIoFile left in invalid state.";
-
133  }
-
134  }
-
135  cache_.Reopen();
-
136  eof_ = false;
-
137  base::WorkerPool::PostTask(
-
138  FROM_HERE,
-
139  base::Bind(&ThreadedIoFile::TaskHandler, base::Unretained(this)),
-
140  true /* task_is_slow */);
-
141  if (!result) return false;
-
142  }
-
143  position_ = position;
-
144  return true;
-
145 }
-
146 
-
147 bool ThreadedIoFile::Tell(uint64_t* position) {
-
148  DCHECK(position);
-
149 
-
150  *position = position_;
-
151  return true;
-
152 }
-
153 
-
154 void ThreadedIoFile::TaskHandler() {
-
155  if (mode_ == kInputMode)
-
156  RunInInputMode();
-
157  else
-
158  RunInOutputMode();
-
159  task_exit_event_.Signal();
-
160 }
-
161 
-
162 void ThreadedIoFile::RunInInputMode() {
-
163  DCHECK(internal_file_);
-
164  DCHECK_EQ(kInputMode, mode_);
-
165 
-
166  while (true) {
-
167  int64_t read_result = internal_file_->Read(&io_buffer_[0],
-
168  io_buffer_.size());
-
169  if (read_result <= 0) {
-
170  NoBarrier_Store(&eof_, read_result == 0);
-
171  NoBarrier_Store(&internal_file_error_, read_result);
-
172  cache_.Close();
-
173  return;
-
174  }
-
175  if (cache_.Write(&io_buffer_[0], read_result) == 0) {
-
176  return;
-
177  }
-
178  }
-
179 }
-
180 
-
181 void ThreadedIoFile::RunInOutputMode() {
-
182  DCHECK(internal_file_);
-
183  DCHECK_EQ(kOutputMode, mode_);
-
184 
-
185  while (true) {
-
186  uint64_t write_bytes = cache_.Read(&io_buffer_[0], io_buffer_.size());
-
187  if (write_bytes == 0) {
-
188  if (flushing_) {
-
189  cache_.Reopen();
-
190  flushing_ = false;
-
191  flush_complete_event_.Signal();
-
192  } else {
-
193  return;
-
194  }
-
195  } else {
-
196  uint64_t bytes_written(0);
-
197  while (bytes_written < write_bytes) {
-
198  int64_t write_result = internal_file_->Write(
-
199  &io_buffer_[bytes_written], write_bytes - bytes_written);
-
200  if (write_result < 0) {
-
201  NoBarrier_Store(&internal_file_error_, write_result);
-
202  cache_.Close();
-
203  return;
-
204  }
-
205  bytes_written += write_result;
-
206  }
-
207  }
-
208  }
-
209 }
-
210 
-
211 } // namespace media
-
212 } // namespace shaka
-
bool Tell(uint64_t *position) override
-
bool Seek(uint64_t position) override
- - -
int64_t Write(const void *buffer, uint64_t length) override
-
void Reopen()
Reopens the cache. Any data still in the cache will be lost.
Definition: io_cache.cc:116
-
uint64_t Read(void *buffer, uint64_t size)
Definition: io_cache.cc:38
-
bool Open() override
Internal open. Should not be used directly.
- -
uint64_t BytesCached()
Definition: io_cache.cc:125
- -
uint64_t Write(const void *buffer, uint64_t size)
Definition: io_cache.cc:66
-
int64_t Read(void *buffer, uint64_t length) override
+
41 ThreadedIoFile::~ThreadedIoFile() {}
+
42 
+ +
44  DCHECK(internal_file_);
+
45 
+
46  if (!internal_file_->Open())
+
47  return false;
+
48 
+
49  position_ = 0;
+
50  size_ = internal_file_->Size();
+
51 
+
52  base::WorkerPool::PostTask(FROM_HERE, base::Bind(&ThreadedIoFile::TaskHandler,
+
53  base::Unretained(this)),
+
54  true /* task_is_slow */);
+
55  return true;
+
56 }
+
57 
+ +
59  DCHECK(internal_file_);
+
60 
+
61  if (mode_ == kOutputMode)
+
62  Flush();
+
63 
+
64  cache_.Close();
+
65  task_exit_event_.Wait();
+
66 
+
67  bool result = internal_file_.release()->Close();
+
68  delete this;
+
69  return result;
+
70 }
+
71 
+
72 int64_t ThreadedIoFile::Read(void* buffer, uint64_t length) {
+
73  DCHECK(internal_file_);
+
74  DCHECK_EQ(kInputMode, mode_);
+
75 
+
76  if (NoBarrier_Load(&eof_) && !cache_.BytesCached())
+
77  return 0;
+
78 
+
79  if (NoBarrier_Load(&internal_file_error_))
+
80  return NoBarrier_Load(&internal_file_error_);
+
81 
+
82 
+
83  uint64_t bytes_read = cache_.Read(buffer, length);
+
84  position_ += bytes_read;
+
85 
+
86  return bytes_read;
+
87 }
+
88 
+
89 int64_t ThreadedIoFile::Write(const void* buffer, uint64_t length) {
+
90  DCHECK(internal_file_);
+
91  DCHECK_EQ(kOutputMode, mode_);
+
92 
+
93  if (NoBarrier_Load(&internal_file_error_))
+
94  return NoBarrier_Load(&internal_file_error_);
+
95 
+
96  uint64_t bytes_written = cache_.Write(buffer, length);
+
97  position_ += bytes_written;
+
98  if (position_ > size_)
+
99  size_ = position_;
+
100 
+
101  return bytes_written;
+
102 }
+
103 
+ +
105  DCHECK(internal_file_);
+
106 
+
107  return size_;
+
108 }
+
109 
+ +
111  DCHECK(internal_file_);
+
112  DCHECK_EQ(kOutputMode, mode_);
+
113 
+
114  flushing_ = true;
+
115  cache_.Close();
+
116  flush_complete_event_.Wait();
+
117  return internal_file_->Flush();
+
118 }
+
119 
+
120 bool ThreadedIoFile::Seek(uint64_t position) {
+
121  if (mode_ == kOutputMode) {
+
122  // Writing. Just flush the cache and seek.
+
123  if (!Flush()) return false;
+
124  if (!internal_file_->Seek(position)) return false;
+
125  } else {
+
126  // Reading. Close cache, wait for thread task to exit, seek, and re-post
+
127  // the task.
+
128  cache_.Close();
+
129  task_exit_event_.Wait();
+
130  bool result = internal_file_->Seek(position);
+
131  if (!result) {
+
132  // Seek failed. Seek to logical position instead.
+
133  if (!internal_file_->Seek(position_) && (position != position_)) {
+
134  LOG(WARNING) << "Seek failed. ThreadedIoFile left in invalid state.";
+
135  }
+
136  }
+
137  cache_.Reopen();
+
138  eof_ = false;
+
139  base::WorkerPool::PostTask(
+
140  FROM_HERE,
+
141  base::Bind(&ThreadedIoFile::TaskHandler, base::Unretained(this)),
+
142  true /* task_is_slow */);
+
143  if (!result) return false;
+
144  }
+
145  position_ = position;
+
146  return true;
+
147 }
+
148 
+
149 bool ThreadedIoFile::Tell(uint64_t* position) {
+
150  DCHECK(position);
+
151 
+
152  *position = position_;
+
153  return true;
+
154 }
+
155 
+
156 void ThreadedIoFile::TaskHandler() {
+
157  if (mode_ == kInputMode)
+
158  RunInInputMode();
+
159  else
+
160  RunInOutputMode();
+
161  task_exit_event_.Signal();
+
162 }
+
163 
+
164 void ThreadedIoFile::RunInInputMode() {
+
165  DCHECK(internal_file_);
+
166  DCHECK_EQ(kInputMode, mode_);
+
167 
+
168  while (true) {
+
169  int64_t read_result = internal_file_->Read(&io_buffer_[0],
+
170  io_buffer_.size());
+
171  if (read_result <= 0) {
+
172  NoBarrier_Store(&eof_, read_result == 0);
+
173  NoBarrier_Store(&internal_file_error_, read_result);
+
174  cache_.Close();
+
175  return;
+
176  }
+
177  if (cache_.Write(&io_buffer_[0], read_result) == 0) {
+
178  return;
+
179  }
+
180  }
+
181 }
+
182 
+
183 void ThreadedIoFile::RunInOutputMode() {
+
184  DCHECK(internal_file_);
+
185  DCHECK_EQ(kOutputMode, mode_);
+
186 
+
187  while (true) {
+
188  uint64_t write_bytes = cache_.Read(&io_buffer_[0], io_buffer_.size());
+
189  if (write_bytes == 0) {
+
190  if (flushing_) {
+
191  cache_.Reopen();
+
192  flushing_ = false;
+
193  flush_complete_event_.Signal();
+
194  } else {
+
195  return;
+
196  }
+
197  } else {
+
198  uint64_t bytes_written(0);
+
199  while (bytes_written < write_bytes) {
+
200  int64_t write_result = internal_file_->Write(
+
201  &io_buffer_[bytes_written], write_bytes - bytes_written);
+
202  if (write_result < 0) {
+
203  NoBarrier_Store(&internal_file_error_, write_result);
+
204  cache_.Close();
+
205  return;
+
206  }
+
207  bytes_written += write_result;
+
208  }
+
209  }
+
210  }
+
211 }
+
212 
+
213 } // namespace media
+
214 } // namespace shaka
+
bool Tell(uint64_t *position) override
+
bool Seek(uint64_t position) override
+ + +
int64_t Write(const void *buffer, uint64_t length) override
+
void Reopen()
Reopens the cache. Any data still in the cache will be lost.
Definition: io_cache.cc:118
+
uint64_t Read(void *buffer, uint64_t size)
Definition: io_cache.cc:40
+
bool Open() override
Internal open. Should not be used directly.
+ +
uint64_t BytesCached()
Definition: io_cache.cc:127
+ +
uint64_t Write(const void *buffer, uint64_t size)
Definition: io_cache.cc:68
+
int64_t Read(void *buffer, uint64_t length) override
diff --git a/docs/d2/d24/packager__util_8h_source.html b/docs/d2/d24/packager__util_8h_source.html index d3480a53dd..08861627df 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html b/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html index dbee7b972f..c89c79c65d 100644 --- a/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html +++ b/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html @@ -328,7 +328,7 @@ void set_encryption_key diff --git a/docs/d2/d30/tracks__builder_8cc_source.html b/docs/d2/d30/tracks__builder_8cc_source.html index cb7756ab9d..c1101acc0f 100644 --- a/docs/d2/d30/tracks__builder_8cc_source.html +++ b/docs/d2/d30/tracks__builder_8cc_source.html @@ -487,7 +487,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d33/video__slice__header__parser_8h_source.html b/docs/d2/d33/video__slice__header__parser_8h_source.html index 59194f7955..f4e1049869 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 9d2adbf36f..f96f8ca07a 100644 --- a/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html +++ b/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d3c/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html b/docs/d2/d3c/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html index 413fd7844a..c96addec33 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 c167a6fddd..2718ee606b 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 cfa7d6c249..d4ee0de0e2 100644 --- a/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html +++ b/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html @@ -291,7 +291,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4d/file_8h_source.html b/docs/d2/d4d/file_8h_source.html index 5ff9842ea8..4c24a63e56 100644 --- a/docs/d2/d4d/file_8h_source.html +++ b/docs/d2/d4d/file_8h_source.html @@ -171,27 +171,27 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
152 
153 #endif // PACKAGER_FILE_FILE_H_
virtual bool Open()=0
Internal open. Should not be used directly.
-
static File * OpenWithNoBuffering(const char *file_name, const char *mode)
Definition: file.cc:153
-
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:204
+
static File * OpenWithNoBuffering(const char *file_name, const char *mode)
Definition: file.cc:152
+
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:203
virtual int64_t Size()=0
virtual ~File()
Definition: file.h:132
virtual bool Close()=0
virtual int64_t Write(const void *buffer, uint64_t length)=0
Define an abstract file interface.
Definition: file.h:24
virtual int64_t Read(void *buffer, uint64_t length)=0
-
static int64_t CopyFile(File *source, File *destination)
Definition: file.cc:233
+
static int64_t CopyFile(File *source, File *destination)
Definition: file.cc:232
virtual bool Tell(uint64_t *position)=0
const std::string & file_name() const
Definition: file.h:91
-
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:177
-
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:186
+
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:176
+
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:185
virtual bool Flush()=0
virtual bool Seek(uint64_t position)=0
Declaration of class which implements a thread-safe circular buffer.
-
static bool Delete(const char *file_name)
Definition: file.cc:164
+
static bool Delete(const char *file_name)
Definition: file.cc:163
diff --git a/docs/d2/d4f/structshaka_1_1Element-members.html b/docs/d2/d4f/structshaka_1_1Element-members.html index 707c01d907..01593a3a3f 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 734cfad3a7..4ef717afbf 100644 --- a/docs/d2/d51/classshaka_1_1MockMpdNotifier-members.html +++ b/docs/d2/d51/classshaka_1_1MockMpdNotifier-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html b/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html index ed8adc83c6..c2e6aea4e1 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 02a2b68bda..07e1f97ba4 100644 --- a/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html +++ b/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html b/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html index f0f7f1048a..d6a271d7c2 100644 --- a/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html +++ b/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d61/structshaka_1_1media_1_1H264ModificationOfPicNum-members.html b/docs/d2/d61/structshaka_1_1media_1_1H264ModificationOfPicNum-members.html index f4518ab821..884c215c86 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 e83befcfdd..55d76d0470 100644 --- a/docs/d2/d62/simple__mpd__notifier_8h_source.html +++ b/docs/d2/d62/simple__mpd__notifier_8h_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d62/structshaka_1_1media_1_1mp4_1_1Movie-members.html b/docs/d2/d62/structshaka_1_1media_1_1mp4_1_1Movie-members.html index ce35ef0929..553753732b 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 f116e3d52e..fd00001113 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 fd1b4ba99c..4e4d552894 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 dcbdba924f..cce452e73a 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 fc42d9360c..4baab14ca2 100644 --- a/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html +++ b/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html index 496dc97cad..b050d4efec 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -239,7 +239,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7e/aac__audio__specific__config_8h_source.html b/docs/d2/d7e/aac__audio__specific__config_8h_source.html index 6195d3c39b..fcbfe2498a 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 ecd465c5df..bcc57846bd 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 9a340c4394..0a94673f66 100644 --- a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html +++ b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html @@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html b/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html index 64c952652f..a05bba0119 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 3bbe3bf565..ce349317b2 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 42ce9cade6..dfd42d3259 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 be17bd3b86..dd79c509e4 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 430d934bdb..8f667d218a 100644 --- a/docs/d2/da6/threaded__io__file_8h_source.html +++ b/docs/d2/da6/threaded__io__file_8h_source.html @@ -158,21 +158,21 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
73 } // namespace shaka
74 
75 #endif // PACKAGER_FILE_THREADED_IO_FILE_H
-
bool Tell(uint64_t *position) override
-
bool Seek(uint64_t position) override
- +
bool Tell(uint64_t *position) override
+
bool Seek(uint64_t position) override
+
Define an abstract file interface.
Definition: file.h:24
-
int64_t Write(const void *buffer, uint64_t length) override
-
bool Open() override
Internal open. Should not be used directly.
- - +
int64_t Write(const void *buffer, uint64_t length) override
+
bool Open() override
Internal open. Should not be used directly.
+ +
Declaration of class which implements a thread-safe circular buffer.
Definition: io_cache.h:20
-
int64_t Read(void *buffer, uint64_t length) override
+
int64_t Read(void *buffer, uint64_t length) override
Declaration of class which implements a thread-safe circular buffer.
diff --git a/docs/d2/da8/mp4_2segmenter_8cc_source.html b/docs/d2/da8/mp4_2segmenter_8cc_source.html index da3ee96c4c..37264387d8 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -135,8 +135,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
46  uint8_t skip_byte_block;
47 };
48 
-
49 COMPILE_ASSERT(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
-
50  cenc_key_id_must_be_size_16);
+
49 static_assert(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
+
50  "cenc_key_id_must_be_size_16");
51 
52 uint64_t Rescale(uint64_t time_in_old_scale,
53  uint32_t old_scale,
@@ -577,7 +577,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Status AddSample(scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:118
-
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:47
+
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:46
virtual Status GetKey(TrackType track_type, EncryptionKey *key)=0
@@ -601,7 +601,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da9/classshaka_1_1media_1_1BufferWriter-members.html b/docs/d2/da9/classshaka_1_1media_1_1BufferWriter-members.html index 99cc4dfa01..b18eedf6fd 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 d437c5f28d..d7ccca3a66 100644 --- a/docs/d2/dae/classshaka_1_1MockAdaptationSet-members.html +++ b/docs/d2/dae/classshaka_1_1MockAdaptationSet-members.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dae/webm__muxer_8cc_source.html b/docs/d2/dae/webm__muxer_8cc_source.html index 4d1336c38a..af4b630e7c 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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:177
+
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
@@ -225,7 +225,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html b/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html index 22d8a7fffc..08f31c499f 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 857de7b34c..3c08a696ac 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 c3b57c0bc9..e4dd842b84 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 26c90c3990..050363f411 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 9787ff617f..71a1233ae3 100644 --- a/docs/d2/dc3/structshaka_1_1media_1_1mp4_1_1Track-members.html +++ b/docs/d2/dc3/structshaka_1_1media_1_1mp4_1_1Track-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dc7/structshaka_1_1MpdOptions-members.html b/docs/d2/dc7/structshaka_1_1MpdOptions-members.html index c8d5c9d89a..74af498952 100644 --- a/docs/d2/dc7/structshaka_1_1MpdOptions-members.html +++ b/docs/d2/dc7/structshaka_1_1MpdOptions-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dcd/program__map__table__writer_8h_source.html b/docs/d2/dcd/program__map__table__writer_8h_source.html index eeaac8cc6c..9089b48fa6 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 543915c55d..ee3289bc3c 100644 --- a/docs/d2/dcd/structshaka_1_1media_1_1mp4_1_1EditList-members.html +++ b/docs/d2/dcd/structshaka_1_1media_1_1mp4_1_1EditList-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html b/docs/d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html index 99949d28f2..27e8ac342b 100644 --- a/docs/d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html +++ b/docs/d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html @@ -277,7 +277,7 @@ double cluster_length_sec< diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index eeb3adc4a7..d90fa11d2f 100644 --- a/docs/d2/dd6/mkv__writer_8h_source.html +++ b/docs/d2/dd6/mkv__writer_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html b/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html index 72784b9522..8b3cb73273 100644 --- a/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html +++ b/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/d2/de3/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt.html b/docs/d2/de3/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt.html index f7ca8e91d0..fd56812fb6 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 8f960639f4..edf97032fb 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -375,7 +375,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
286  }
287 
288  if (mpd_notifier) {
-
289  uint32 unused;
+
289  uint32_t unused;
290  if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
291  LOG(ERROR) << "Failed to process text file " << stream_iter->input;
292  } else {
@@ -558,8 +558,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
469  if (!FLAGS_mpd_output.empty()) {
470  DashProfile profile =
471  FLAGS_single_segment ? kOnDemandProfile : kLiveProfile;
-
472  std::vector<std::string> base_urls;
-
473  base::SplitString(FLAGS_base_urls, ',', &base_urls);
+
472  std::vector<std::string> base_urls = base::SplitString(
+
473  FLAGS_base_urls, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
474  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
475  mpd_notifier.reset(new DashIopMpdNotifier(profile, mpd_options, base_urls,
476  FLAGS_mpd_output));
@@ -683,15 +683,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
594  return shaka::media::PackagerMain(argc, argv);
595 }
596 #endif // defined(OS_WIN)
-
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:204
+
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)
-
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:186
+
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:185
bool ValidateFixedCryptoFlags()
diff --git a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html index 04ed480ba9..6075fa5b48 100644 --- a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html b/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html index 5a22b30ba7..e419bb84f0 100644 --- a/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html +++ b/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/de9/mock__muxer__listener_8h_source.html b/docs/d2/de9/mock__muxer__listener_8h_source.html index 6b009c5228..e1b1141e42 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 a24f2446cb..b69931a55f 100644 --- a/docs/d2/deb/es__parser_8h_source.html +++ b/docs/d2/deb/es__parser_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dee/classshaka_1_1media_1_1mp2t_1_1TsSectionPes-members.html b/docs/d2/dee/classshaka_1_1media_1_1mp2t_1_1TsSectionPes-members.html index ce71bd645f..0d7303251a 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 49c80ea9c0..3b3046353f 100644 --- a/docs/d2/dee/pes__packet__generator_8cc_source.html +++ b/docs/d2/dee/pes__packet__generator_8cc_source.html @@ -328,7 +328,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html b/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html index b5b9977729..99da1d6103 100644 --- a/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html +++ b/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html @@ -128,7 +128,7 @@ int cluster_count () c diff --git a/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html b/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html index b225ff1798..2710d5097b 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 ba87d799ac..6d40bbaa95 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 fb95f4df5d..21aca062c8 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 138711d4a7..a96ab12f84 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 2e6374922f..4d30987049 100644 --- a/docs/d3/d0a/classshaka_1_1media_1_1MediaParser.html +++ b/docs/d3/d0a/classshaka_1_1media_1_1MediaParser.html @@ -298,7 +298,7 @@ Public Member Functions diff --git a/docs/d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html b/docs/d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html index 858abcbfac..fbd1c94a2b 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 69aa5f750e..34a2ae8fe0 100644 --- a/docs/d3/d12/classshaka_1_1media_1_1LibcryptoThreading-members.html +++ b/docs/d3/d12/classshaka_1_1media_1_1LibcryptoThreading-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d15/udp__file__win_8cc_source.html b/docs/d3/d15/udp__file__win_8cc_source.html index 552781e623..f7ebe8335c 100644 --- a/docs/d3/d15/udp__file__win_8cc_source.html +++ b/docs/d3/d15/udp__file__win_8cc_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d18/classshaka_1_1media_1_1mp2t_1_1TsSectionPat-members.html b/docs/d3/d18/classshaka_1_1media_1_1mp2t_1_1TsSectionPat-members.html index 77eeeffab7..e4d69f8731 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 6814b57c0b..e90795c3ed 100644 --- a/docs/d3/d19/io__cache_8h_source.html +++ b/docs/d3/d19/io__cache_8h_source.html @@ -150,19 +150,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
85 
86 #endif // PACKAGER_FILE_IO_CACHE_H
-
void Clear()
Empties the cache.
Definition: io_cache.cc:102
- -
void WaitUntilEmptyOrClosed()
Waits until the cache is empty or has been closed.
Definition: io_cache.cc:145
-
uint64_t BytesFree()
Definition: io_cache.cc:130
-
void Reopen()
Reopens the cache. Any data still in the cache will be lost.
Definition: io_cache.cc:116
-
uint64_t Read(void *buffer, uint64_t size)
Definition: io_cache.cc:38
-
uint64_t BytesCached()
Definition: io_cache.cc:125
-
uint64_t Write(const void *buffer, uint64_t size)
Definition: io_cache.cc:66
+
void Clear()
Empties the cache.
Definition: io_cache.cc:104
+ +
void WaitUntilEmptyOrClosed()
Waits until the cache is empty or has been closed.
Definition: io_cache.cc:147
+
uint64_t BytesFree()
Definition: io_cache.cc:132
+
void Reopen()
Reopens the cache. Any data still in the cache will be lost.
Definition: io_cache.cc:118
+
uint64_t Read(void *buffer, uint64_t size)
Definition: io_cache.cc:40
+
uint64_t BytesCached()
Definition: io_cache.cc:127
+
uint64_t Write(const void *buffer, uint64_t size)
Definition: io_cache.cc:68
Declaration of class which implements a thread-safe circular buffer.
Definition: io_cache.h:20
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 e8c977557d..0cb6b18d1f 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 dddd6a410a..f51d1f4d1c 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 f03b56d441..20fb8b79d7 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 6d1543c7fd..e7af0d94b0 100644 --- a/docs/d3/d56/decrypt__config_8cc_source.html +++ b/docs/d3/d56/decrypt__config_8cc_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d61/classshaka_1_1media_1_1File.html b/docs/d3/d61/classshaka_1_1media_1_1File.html index 7ac6fb2c3a..91d20e18e0 100644 --- a/docs/d3/d61/classshaka_1_1media_1_1File.html +++ b/docs/d3/d61/classshaka_1_1media_1_1File.html @@ -270,7 +270,7 @@ class ThreadedIoFile
Returns
true on success, false otherwise.
-

Definition at line 204 of file file.cc.

+

Definition at line 203 of file file.cc.

@@ -315,7 +315,7 @@ class ThreadedIoFile
Returns
Number of bytes written, or a value < 0 on error.
-

Definition at line 233 of file file.cc.

+

Definition at line 232 of file file.cc.

@@ -367,7 +367,7 @@ class ThreadedIoFile
Returns
Number of bytes written, or a value < 0 on error.
-

Definition at line 237 of file file.cc.

+

Definition at line 236 of file file.cc.

@@ -401,7 +401,7 @@ class ThreadedIoFile
Returns
true if successful, false otherwise.
-

Definition at line 164 of file file.cc.

+

Definition at line 163 of file file.cc.

@@ -481,7 +481,7 @@ class ThreadedIoFile
Returns
The size of a file in bytes on success, a value < 0 otherwise. The file will be opened and closed in the process.
-

Definition at line 177 of file file.cc.

+

Definition at line 176 of file file.cc.

@@ -526,7 +526,7 @@ class ThreadedIoFile
Returns
A File pointer on success, false otherwise.
-

Definition at line 142 of file file.cc.

+

Definition at line 141 of file file.cc.

@@ -571,7 +571,7 @@ class ThreadedIoFile
Returns
A File pointer on success, false otherwise.
-

Definition at line 153 of file file.cc.

+

Definition at line 152 of file file.cc.

@@ -661,7 +661,7 @@ class ThreadedIoFile
Returns
true on success, false otherwise.
-

Definition at line 186 of file file.cc.

+

Definition at line 185 of file file.cc.

@@ -811,7 +811,7 @@ class ThreadedIoFile diff --git a/docs/d3/d62/continuity__counter_8h_source.html b/docs/d3/d62/continuity__counter_8h_source.html index 3ce38c9aaa..7299f40b47 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 bc54208f5b..713bf07959 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 b0742bdf77..266762187b 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 a856285984..1631f54501 100644 --- a/docs/d3/d67/classshaka_1_1media_1_1WebMVideoClient.html +++ b/docs/d3/d67/classshaka_1_1media_1_1WebMVideoClient.html @@ -190,7 +190,7 @@ An empty scoped_refptr if there was unexpected values in the provided parameters diff --git a/docs/d3/d6b/fixed__key__source_8cc_source.html b/docs/d3/d6b/fixed__key__source_8cc_source.html index a71d462810..4a5fb000b3 100644 --- a/docs/d3/d6b/fixed__key__source_8cc_source.html +++ b/docs/d3/d6b/fixed__key__source_8cc_source.html @@ -95,158 +95,159 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
6 
7 #include "packager/media/base/fixed_key_source.h"
8 
-
9 #include "packager/base/logging.h"
-
10 #include "packager/base/strings/string_number_conversions.h"
-
11 
-
12 namespace shaka {
-
13 namespace media {
-
14 
-
15 FixedKeySource::~FixedKeySource() {}
-
16 
-
17 Status FixedKeySource::FetchKeys(const std::vector<uint8_t>& pssh_box) {
-
18  // Do nothing for fixed key encryption/decryption.
-
19  return Status::OK;
-
20 }
-
21 
- -
23  const std::vector<std::vector<uint8_t>>& key_ids) {
-
24  // Do nothing for fixed key encryption/decryption.
-
25  return Status::OK;
-
26 }
-
27 
-
28 Status FixedKeySource::FetchKeys(uint32_t asset_id) {
-
29  // Do nothing for fixed key encryption/decryption.
-
30  return Status::OK;
-
31 }
-
32 
-
33 Status FixedKeySource::GetKey(TrackType track_type, EncryptionKey* key) {
-
34  DCHECK(key);
-
35  DCHECK(encryption_key_);
-
36  *key = *encryption_key_;
-
37  return Status::OK;
-
38 }
-
39 
-
40 Status FixedKeySource::GetKey(const std::vector<uint8_t>& key_id,
-
41  EncryptionKey* key) {
-
42  DCHECK(key);
-
43  DCHECK(encryption_key_);
-
44  if (key_id != encryption_key_->key_id) {
-
45  return Status(error::NOT_FOUND,
-
46  std::string("Key for key ID ") +
-
47  base::HexEncode(&key_id[0], key_id.size()) +
-
48  " was not found.");
-
49  }
-
50  *key = *encryption_key_;
-
51  return Status::OK;
-
52 }
-
53 
-
54 Status FixedKeySource::GetCryptoPeriodKey(uint32_t crypto_period_index,
-
55  TrackType track_type,
-
56  EncryptionKey* key) {
-
57  // Create a copy of the key.
-
58  *key = *encryption_key_;
-
59 
-
60  // A naive key rotation algorithm is implemented here by left rotating the
-
61  // key, key_id and pssh. Note that this implementation is only intended for
-
62  // testing purpose. The actual key rotation algorithm can be much more
-
63  // complicated.
-
64  LOG(WARNING)
-
65  << "This naive key rotation algorithm should not be used in production.";
-
66  std::rotate(key->key_id.begin(),
-
67  key->key_id.begin() + (crypto_period_index % key->key_id.size()),
-
68  key->key_id.end());
-
69  std::rotate(key->key.begin(),
-
70  key->key.begin() + (crypto_period_index % key->key.size()),
-
71  key->key.end());
-
72 
-
73  for (size_t i = 0; i < key->key_system_info.size(); i++) {
-
74  std::vector<uint8_t> pssh_data = key->key_system_info[i].pssh_data();
-
75  if (!pssh_data.empty()) {
-
76  std::rotate(pssh_data.begin(),
-
77  pssh_data.begin() + (crypto_period_index % pssh_data.size()),
-
78  pssh_data.end());
-
79  key->key_system_info[i].set_pssh_data(pssh_data);
-
80  }
-
81  }
-
82 
-
83  return Status::OK;
-
84 }
-
85 
-
86 std::unique_ptr<FixedKeySource> FixedKeySource::CreateFromHexStrings(
-
87  const std::string& key_id_hex,
-
88  const std::string& key_hex,
-
89  const std::string& pssh_boxes_hex,
-
90  const std::string& iv_hex) {
-
91  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
92 
-
93  if (!base::HexStringToBytes(key_id_hex, &encryption_key->key_id)) {
-
94  LOG(ERROR) << "Cannot parse key_id_hex " << key_id_hex;
-
95  return std::unique_ptr<FixedKeySource>();
-
96  } else if (encryption_key->key_id.size() != 16) {
-
97  LOG(ERROR) << "Invalid key ID size '" << encryption_key->key_id.size()
-
98  << "', must be 16 bytes.";
-
99  return std::unique_ptr<FixedKeySource>();
-
100  }
-
101 
-
102  if (!base::HexStringToBytes(key_hex, &encryption_key->key)) {
-
103  LOG(ERROR) << "Cannot parse key_hex " << key_hex;
-
104  return std::unique_ptr<FixedKeySource>();
-
105  }
-
106 
-
107  std::vector<uint8_t> pssh_boxes;
-
108  if (!pssh_boxes_hex.empty() &&
-
109  !base::HexStringToBytes(pssh_boxes_hex, &pssh_boxes)) {
-
110  LOG(ERROR) << "Cannot parse pssh_hex " << pssh_boxes_hex;
-
111  return std::unique_ptr<FixedKeySource>();
-
112  }
-
113 
-
114  if (!iv_hex.empty()) {
-
115  if (!base::HexStringToBytes(iv_hex, &encryption_key->iv)) {
-
116  LOG(ERROR) << "Cannot parse iv_hex " << iv_hex;
-
117  return std::unique_ptr<FixedKeySource>();
-
118  }
-
119  }
-
120 
- -
122  pssh_boxes.data(), pssh_boxes.size(),
-
123  &encryption_key->key_system_info)) {
-
124  LOG(ERROR) << "--pssh argument should be full PSSH boxes.";
-
125  return std::unique_ptr<FixedKeySource>();
-
126  }
-
127 
-
128  // If there aren't any PSSH boxes given, create one with the common system ID.
-
129  if (encryption_key->key_system_info.size() == 0) {
- -
131  info.add_key_id(encryption_key->key_id);
-
132  info.set_system_id(kCommonSystemId, arraysize(kCommonSystemId));
-
133  info.set_pssh_box_version(1);
-
134 
-
135  encryption_key->key_system_info.push_back(info);
-
136  }
-
137 
-
138  return std::unique_ptr<FixedKeySource>(
-
139  new FixedKeySource(std::move(encryption_key)));
-
140 }
-
141 
-
142 FixedKeySource::FixedKeySource() {}
-
143 FixedKeySource::FixedKeySource(std::unique_ptr<EncryptionKey> key)
-
144  : encryption_key_(std::move(key)) {}
-
145 
-
146 } // namespace media
-
147 } // namespace shaka
-
Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
-
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)
+
9 #include <algorithm>
+
10 #include "packager/base/logging.h"
+
11 #include "packager/base/strings/string_number_conversions.h"
+
12 
+
13 namespace shaka {
+
14 namespace media {
+
15 
+
16 FixedKeySource::~FixedKeySource() {}
+
17 
+
18 Status FixedKeySource::FetchKeys(const std::vector<uint8_t>& pssh_box) {
+
19  // Do nothing for fixed key encryption/decryption.
+
20  return Status::OK;
+
21 }
+
22 
+ +
24  const std::vector<std::vector<uint8_t>>& key_ids) {
+
25  // Do nothing for fixed key encryption/decryption.
+
26  return Status::OK;
+
27 }
+
28 
+
29 Status FixedKeySource::FetchKeys(uint32_t asset_id) {
+
30  // Do nothing for fixed key encryption/decryption.
+
31  return Status::OK;
+
32 }
+
33 
+
34 Status FixedKeySource::GetKey(TrackType track_type, EncryptionKey* key) {
+
35  DCHECK(key);
+
36  DCHECK(encryption_key_);
+
37  *key = *encryption_key_;
+
38  return Status::OK;
+
39 }
+
40 
+
41 Status FixedKeySource::GetKey(const std::vector<uint8_t>& key_id,
+
42  EncryptionKey* key) {
+
43  DCHECK(key);
+
44  DCHECK(encryption_key_);
+
45  if (key_id != encryption_key_->key_id) {
+
46  return Status(error::NOT_FOUND,
+
47  std::string("Key for key ID ") +
+
48  base::HexEncode(&key_id[0], key_id.size()) +
+
49  " was not found.");
+
50  }
+
51  *key = *encryption_key_;
+
52  return Status::OK;
+
53 }
+
54 
+
55 Status FixedKeySource::GetCryptoPeriodKey(uint32_t crypto_period_index,
+
56  TrackType track_type,
+
57  EncryptionKey* key) {
+
58  // Create a copy of the key.
+
59  *key = *encryption_key_;
+
60 
+
61  // A naive key rotation algorithm is implemented here by left rotating the
+
62  // key, key_id and pssh. Note that this implementation is only intended for
+
63  // testing purpose. The actual key rotation algorithm can be much more
+
64  // complicated.
+
65  LOG(WARNING)
+
66  << "This naive key rotation algorithm should not be used in production.";
+
67  std::rotate(key->key_id.begin(),
+
68  key->key_id.begin() + (crypto_period_index % key->key_id.size()),
+
69  key->key_id.end());
+
70  std::rotate(key->key.begin(),
+
71  key->key.begin() + (crypto_period_index % key->key.size()),
+
72  key->key.end());
+
73 
+
74  for (size_t i = 0; i < key->key_system_info.size(); i++) {
+
75  std::vector<uint8_t> pssh_data = key->key_system_info[i].pssh_data();
+
76  if (!pssh_data.empty()) {
+
77  std::rotate(pssh_data.begin(),
+
78  pssh_data.begin() + (crypto_period_index % pssh_data.size()),
+
79  pssh_data.end());
+
80  key->key_system_info[i].set_pssh_data(pssh_data);
+
81  }
+
82  }
+
83 
+
84  return Status::OK;
+
85 }
+
86 
+
87 std::unique_ptr<FixedKeySource> FixedKeySource::CreateFromHexStrings(
+
88  const std::string& key_id_hex,
+
89  const std::string& key_hex,
+
90  const std::string& pssh_boxes_hex,
+
91  const std::string& iv_hex) {
+
92  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
93 
+
94  if (!base::HexStringToBytes(key_id_hex, &encryption_key->key_id)) {
+
95  LOG(ERROR) << "Cannot parse key_id_hex " << key_id_hex;
+
96  return std::unique_ptr<FixedKeySource>();
+
97  } else if (encryption_key->key_id.size() != 16) {
+
98  LOG(ERROR) << "Invalid key ID size '" << encryption_key->key_id.size()
+
99  << "', must be 16 bytes.";
+
100  return std::unique_ptr<FixedKeySource>();
+
101  }
+
102 
+
103  if (!base::HexStringToBytes(key_hex, &encryption_key->key)) {
+
104  LOG(ERROR) << "Cannot parse key_hex " << key_hex;
+
105  return std::unique_ptr<FixedKeySource>();
+
106  }
+
107 
+
108  std::vector<uint8_t> pssh_boxes;
+
109  if (!pssh_boxes_hex.empty() &&
+
110  !base::HexStringToBytes(pssh_boxes_hex, &pssh_boxes)) {
+
111  LOG(ERROR) << "Cannot parse pssh_hex " << pssh_boxes_hex;
+
112  return std::unique_ptr<FixedKeySource>();
+
113  }
+
114 
+
115  if (!iv_hex.empty()) {
+
116  if (!base::HexStringToBytes(iv_hex, &encryption_key->iv)) {
+
117  LOG(ERROR) << "Cannot parse iv_hex " << iv_hex;
+
118  return std::unique_ptr<FixedKeySource>();
+
119  }
+
120  }
+
121 
+ +
123  pssh_boxes.data(), pssh_boxes.size(),
+
124  &encryption_key->key_system_info)) {
+
125  LOG(ERROR) << "--pssh argument should be full PSSH boxes.";
+
126  return std::unique_ptr<FixedKeySource>();
+
127  }
+
128 
+
129  // If there aren't any PSSH boxes given, create one with the common system ID.
+
130  if (encryption_key->key_system_info.size() == 0) {
+ +
132  info.add_key_id(encryption_key->key_id);
+
133  info.set_system_id(kCommonSystemId, arraysize(kCommonSystemId));
+
134  info.set_pssh_box_version(1);
+
135 
+
136  encryption_key->key_system_info.push_back(info);
+
137  }
+
138 
+
139  return std::unique_ptr<FixedKeySource>(
+
140  new FixedKeySource(std::move(encryption_key)));
+
141 }
+
142 
+
143 FixedKeySource::FixedKeySource() {}
+
144 FixedKeySource::FixedKeySource(std::unique_ptr<EncryptionKey> key)
+
145  : encryption_key_(std::move(key)) {}
+
146 
+
147 } // namespace media
+
148 } // namespace shaka
+
Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
+
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)
static bool ParseBoxes(const uint8_t *data, size_t data_size, std::vector< ProtectionSystemSpecificInfo > *pssh_boxes)
A key source that uses fixed keys for encryption.
-
Status GetKey(TrackType track_type, EncryptionKey *key) override
+
Status GetKey(TrackType track_type, EncryptionKey *key) override
-
Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
+
Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
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 00e6366dfa..ed478c5a72 100644 --- a/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html +++ b/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html @@ -178,7 +178,7 @@ FourCC protection_scheme diff --git a/docs/d3/d72/fixed__key__source_8h_source.html b/docs/d3/d72/fixed__key__source_8h_source.html index d7daf4614b..48e2f61506 100644 --- a/docs/d3/d72/fixed__key__source_8h_source.html +++ b/docs/d3/d72/fixed__key__source_8h_source.html @@ -149,18 +149,18 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
73 } // namespace shaka
74 
75 #endif // MEDIA_BASE_FIXED_KEY_SOURCE_H_
-
Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
-
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)
+
Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
+
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)
A key source that uses fixed keys for encryption.
-
Status GetKey(TrackType track_type, EncryptionKey *key) override
+
Status GetKey(TrackType track_type, EncryptionKey *key) override
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
+
Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
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 07bbde73b4..a15f96d0cf 100644 --- a/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html +++ b/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html @@ -182,7 +182,7 @@ FourCC protection_scheme diff --git a/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html b/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html index 5260aeba53..b819faeee5 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 72bcdffe18..edd0411ffa 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 7747ec9d46..9646c64bbf 100644 --- a/docs/d3/d76/muxer__flags_8h_source.html +++ b/docs/d3/d76/muxer__flags_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html b/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html index ad2e77ae33..824693a3fd 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 2d190ccdc3..8ab24ccc0b 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 12d1e1d92a..e3584bf628 100644 --- a/docs/d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html +++ b/docs/d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html @@ -223,7 +223,7 @@ An empty scoped_refptr if there was unexpected values in the provided parameters diff --git a/docs/d3/d80/muxer__util_8h_source.html b/docs/d3/d80/muxer__util_8h_source.html index 08b31e97da..973a1f4682 100644 --- a/docs/d3/d80/muxer__util_8h_source.html +++ b/docs/d3/d80/muxer__util_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html b/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html index 30645d917c..3c7b84c6e1 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 11af56dff4..8cc3740202 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 de5a7daa7d..439256a03d 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 23bca853ae..107d56bcdd 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 cfee6da13f..0798ec6ae8 100644 --- a/docs/d3/d91/classshaka_1_1media_1_1H264Parser.html +++ b/docs/d3/d91/classshaka_1_1media_1_1H264Parser.html @@ -135,7 +135,7 @@ Result ParseSEI (const diff --git a/docs/d3/da0/ec3__audio__util_8h_source.html b/docs/d3/da0/ec3__audio__util_8h_source.html index b243a6f803..eb93d2c68a 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 c7ce5bbd18..70db93dd20 100644 --- a/docs/d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html +++ b/docs/d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html @@ -293,7 +293,7 @@ double cluster_length_sec< diff --git a/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html b/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html index 215b411bda..c34f6f4784 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 dcdf3f5ed7..73238c9d28 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/db4/classshaka_1_1media_1_1WebMWebVTTParser-members.html b/docs/d3/db4/classshaka_1_1media_1_1WebMWebVTTParser-members.html index fe57c52d3c..005c3c053f 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 143f3b6dd0..7034bc369b 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 f73485d024..1a8508e48b 100644 --- a/docs/d3/db6/webm__parser_8cc_source.html +++ b/docs/d3/db6/webm__parser_8cc_source.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
11 // encrypted request for comments specification is here
12 // http://wiki.webmproject.org/encryption/webm-encryption-rfc
13 
-
14 #include <iomanip>
+
14 #include <limits>
15 
16 #include "packager/base/logging.h"
17 #include "packager/base/numerics/safe_conversions.h"
@@ -558,7 +558,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
469  }
470 
471  if (all_ones)
-
472  *num = kint64max;
+
472  *num = std::numeric_limits<int64_t>::max();
473 
474  return bytes_used;
475 }
@@ -581,7 +581,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
492  if (num_id_bytes <= 0)
493  return num_id_bytes;
494 
-
495  if (tmp == kint64max)
+
495  if (tmp == std::numeric_limits<int64_t>::max())
496  tmp = kWebMReservedId;
497 
498  *id = static_cast<int>(tmp);
@@ -593,7 +593,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
504  if (num_size_bytes <= 0)
505  return num_size_bytes;
506 
-
507  if (tmp == kint64max)
+
507  if (tmp == std::numeric_limits<int64_t>::max())
508  tmp = kWebMUnknownSize;
509 
510  *element_size = tmp;
@@ -1068,7 +1068,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbc/seek__head_8cc_source.html b/docs/d3/dbc/seek__head_8cc_source.html index 113f03f2d6..72d766be49 100644 --- a/docs/d3/dbc/seek__head_8cc_source.html +++ b/docs/d3/dbc/seek__head_8cc_source.html @@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/demuxer_8cc_source.html b/docs/d3/dbe/demuxer_8cc_source.html index 690a75dc32..a158819173 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -345,7 +345,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html b/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html index 113f0370b0..c001dc5fa6 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 336348280d..021dce215d 100644 --- a/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html +++ b/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/d3/dd0/classshaka_1_1MpdNotifier.html b/docs/d3/dd0/classshaka_1_1MpdNotifier.html index b1f0857dd8..679aade94a 100644 --- a/docs/d3/dd0/classshaka_1_1MpdNotifier.html +++ b/docs/d3/dd0/classshaka_1_1MpdNotifier.html @@ -472,7 +472,7 @@ Public Member Functions diff --git a/docs/d3/dd0/structshaka_1_1media_1_1mp4_1_1SegmentType.html b/docs/d3/dd0/structshaka_1_1media_1_1mp4_1_1SegmentType.html index 13da83d802..2a253f359e 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 9c02656314..e0e35ec624 100644 --- a/docs/d3/de4/seek__head_8h_source.html +++ b/docs/d3/de4/seek__head_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html b/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html index 5343de9d35..91ff038af4 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 8edc80a28b..e0c60526c3 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 152d21ec08..08ea6f9ba0 100644 --- a/docs/d3/df1/box__reader_8cc_source.html +++ b/docs/d3/df1/box__reader_8cc_source.html @@ -260,7 +260,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html b/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html index e3d1f8df31..b9b7a3e475 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 d71bc194b9..33948db77b 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -304,7 +304,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d08/classshaka_1_1media_1_1mp4_1_1MP4MediaParser-members.html b/docs/d4/d08/classshaka_1_1media_1_1mp4_1_1MP4MediaParser-members.html index a3c752b1a9..cae74b3f5f 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 a5968e46ed..adbb5daa1d 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 7c7e2db65f..5aa0945ea3 100644 --- a/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html +++ b/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html b/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html index db9e74706c..b2d7de47fc 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 ba96c05936..a7f0e67ccd 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 1c02f4de94..655efa66c4 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 0fcf93959a..9a21f3e647 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 4884ccf6a1..81f1872c62 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 e6ce43b311..f5e9c0889d 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -110,149 +110,151 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
21 
22 IoCache::IoCache(uint64_t cache_size)
23  : cache_size_(cache_size),
-
24  read_event_(false, false),
-
25  write_event_(false, false),
-
26  // Make the buffer one byte larger than the cache so that when the
-
27  // condition r_ptr == w_ptr is unambiguous (buffer empty).
-
28  circular_buffer_(cache_size + 1),
-
29  end_ptr_(&circular_buffer_[0] + cache_size + 1),
-
30  r_ptr_(circular_buffer_.data()),
-
31  w_ptr_(circular_buffer_.data()),
-
32  closed_(false) {}
-
33 
-
34 IoCache::~IoCache() {
-
35  Close();
-
36 }
-
37 
-
38 uint64_t IoCache::Read(void* buffer, uint64_t size) {
-
39  DCHECK(buffer);
-
40 
-
41  AutoLock lock(lock_);
-
42  while (!closed_ && (BytesCachedInternal() == 0)) {
-
43  AutoUnlock unlock(lock_);
-
44  write_event_.Wait();
-
45  }
-
46 
-
47  size = std::min(size, BytesCachedInternal());
-
48  uint64_t first_chunk_size(std::min(size, static_cast<uint64_t>(
-
49  end_ptr_ - r_ptr_)));
-
50  memcpy(buffer, r_ptr_, first_chunk_size);
-
51  r_ptr_ += first_chunk_size;
-
52  DCHECK_GE(end_ptr_, r_ptr_);
-
53  if (r_ptr_ == end_ptr_)
-
54  r_ptr_ = &circular_buffer_[0];
-
55  uint64_t second_chunk_size(size - first_chunk_size);
-
56  if (second_chunk_size) {
-
57  memcpy(static_cast<uint8_t*>(buffer) + first_chunk_size, r_ptr_,
-
58  second_chunk_size);
-
59  r_ptr_ += second_chunk_size;
-
60  DCHECK_GT(end_ptr_, r_ptr_);
-
61  }
-
62  read_event_.Signal();
-
63  return size;
-
64 }
-
65 
-
66 uint64_t IoCache::Write(const void* buffer, uint64_t size) {
-
67  DCHECK(buffer);
-
68 
-
69  const uint8_t* r_ptr(static_cast<const uint8_t*>(buffer));
-
70  uint64_t bytes_left(size);
-
71  while (bytes_left) {
-
72  AutoLock lock(lock_);
-
73  while (!closed_ && (BytesFreeInternal() == 0)) {
-
74  AutoUnlock unlock(lock_);
-
75  read_event_.Wait();
-
76  }
-
77  if (closed_)
-
78  return 0;
-
79 
-
80  uint64_t write_size(std::min(bytes_left, BytesFreeInternal()));
-
81  uint64_t first_chunk_size(std::min(write_size, static_cast<uint64_t>(
-
82  end_ptr_ - w_ptr_)));
-
83  memcpy(w_ptr_, r_ptr, first_chunk_size);
-
84  w_ptr_ += first_chunk_size;
-
85  DCHECK_GE(end_ptr_, w_ptr_);
-
86  if (w_ptr_ == end_ptr_)
-
87  w_ptr_ = &circular_buffer_[0];
-
88  r_ptr += first_chunk_size;
-
89  uint64_t second_chunk_size(write_size - first_chunk_size);
-
90  if (second_chunk_size) {
-
91  memcpy(w_ptr_, r_ptr, second_chunk_size);
-
92  w_ptr_ += second_chunk_size;
-
93  DCHECK_GT(end_ptr_, w_ptr_);
-
94  r_ptr += second_chunk_size;
-
95  }
-
96  bytes_left -= write_size;
-
97  write_event_.Signal();
-
98  }
-
99  return size;
-
100 }
-
101 
- -
103  AutoLock lock(lock_);
-
104  r_ptr_ = w_ptr_ = circular_buffer_.data();
-
105  // Let any writers know that there is room in the cache.
-
106  read_event_.Signal();
-
107 }
-
108 
- -
110  AutoLock lock(lock_);
-
111  closed_ = true;
-
112  read_event_.Signal();
-
113  write_event_.Signal();
-
114 }
-
115 
- -
117  AutoLock lock(lock_);
-
118  CHECK(closed_);
-
119  r_ptr_ = w_ptr_ = circular_buffer_.data();
-
120  closed_ = false;
-
121  read_event_.Reset();
-
122  write_event_.Reset();
-
123 }
-
124 
- -
126  AutoLock lock(lock_);
-
127  return BytesCachedInternal();
-
128 }
-
129 
-
130 uint64_t IoCache::BytesFree() {
-
131  AutoLock lock(lock_);
-
132  return BytesFreeInternal();
-
133 }
-
134 
-
135 uint64_t IoCache::BytesCachedInternal() {
-
136  return (r_ptr_ <= w_ptr_)
-
137  ? w_ptr_ - r_ptr_
-
138  : (end_ptr_ - r_ptr_) + (w_ptr_ - circular_buffer_.data());
-
139 }
-
140 
-
141 uint64_t IoCache::BytesFreeInternal() {
-
142  return cache_size_ - BytesCachedInternal();
-
143 }
-
144 
- -
146  AutoLock lock(lock_);
-
147  while (!closed_ && BytesCachedInternal()) {
-
148  AutoUnlock unlock(lock_);
-
149  read_event_.Wait();
-
150  }
-
151 }
-
152 
-
153 } // namespace media
-
154 } // namespace shaka
-
void Clear()
Empties the cache.
Definition: io_cache.cc:102
- -
void WaitUntilEmptyOrClosed()
Waits until the cache is empty or has been closed.
Definition: io_cache.cc:145
-
uint64_t BytesFree()
Definition: io_cache.cc:130
-
void Reopen()
Reopens the cache. Any data still in the cache will be lost.
Definition: io_cache.cc:116
-
uint64_t Read(void *buffer, uint64_t size)
Definition: io_cache.cc:38
-
uint64_t BytesCached()
Definition: io_cache.cc:125
-
uint64_t Write(const void *buffer, uint64_t size)
Definition: io_cache.cc:66
+
24  read_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+
25  base::WaitableEvent::InitialState::NOT_SIGNALED),
+
26  write_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+
27  base::WaitableEvent::InitialState::NOT_SIGNALED),
+
28  // Make the buffer one byte larger than the cache so that when the
+
29  // condition r_ptr == w_ptr is unambiguous (buffer empty).
+
30  circular_buffer_(cache_size + 1),
+
31  end_ptr_(&circular_buffer_[0] + cache_size + 1),
+
32  r_ptr_(circular_buffer_.data()),
+
33  w_ptr_(circular_buffer_.data()),
+
34  closed_(false) {}
+
35 
+
36 IoCache::~IoCache() {
+
37  Close();
+
38 }
+
39 
+
40 uint64_t IoCache::Read(void* buffer, uint64_t size) {
+
41  DCHECK(buffer);
+
42 
+
43  AutoLock lock(lock_);
+
44  while (!closed_ && (BytesCachedInternal() == 0)) {
+
45  AutoUnlock unlock(lock_);
+
46  write_event_.Wait();
+
47  }
+
48 
+
49  size = std::min(size, BytesCachedInternal());
+
50  uint64_t first_chunk_size(std::min(size, static_cast<uint64_t>(
+
51  end_ptr_ - r_ptr_)));
+
52  memcpy(buffer, r_ptr_, first_chunk_size);
+
53  r_ptr_ += first_chunk_size;
+
54  DCHECK_GE(end_ptr_, r_ptr_);
+
55  if (r_ptr_ == end_ptr_)
+
56  r_ptr_ = &circular_buffer_[0];
+
57  uint64_t second_chunk_size(size - first_chunk_size);
+
58  if (second_chunk_size) {
+
59  memcpy(static_cast<uint8_t*>(buffer) + first_chunk_size, r_ptr_,
+
60  second_chunk_size);
+
61  r_ptr_ += second_chunk_size;
+
62  DCHECK_GT(end_ptr_, r_ptr_);
+
63  }
+
64  read_event_.Signal();
+
65  return size;
+
66 }
+
67 
+
68 uint64_t IoCache::Write(const void* buffer, uint64_t size) {
+
69  DCHECK(buffer);
+
70 
+
71  const uint8_t* r_ptr(static_cast<const uint8_t*>(buffer));
+
72  uint64_t bytes_left(size);
+
73  while (bytes_left) {
+
74  AutoLock lock(lock_);
+
75  while (!closed_ && (BytesFreeInternal() == 0)) {
+
76  AutoUnlock unlock(lock_);
+
77  read_event_.Wait();
+
78  }
+
79  if (closed_)
+
80  return 0;
+
81 
+
82  uint64_t write_size(std::min(bytes_left, BytesFreeInternal()));
+
83  uint64_t first_chunk_size(std::min(write_size, static_cast<uint64_t>(
+
84  end_ptr_ - w_ptr_)));
+
85  memcpy(w_ptr_, r_ptr, first_chunk_size);
+
86  w_ptr_ += first_chunk_size;
+
87  DCHECK_GE(end_ptr_, w_ptr_);
+
88  if (w_ptr_ == end_ptr_)
+
89  w_ptr_ = &circular_buffer_[0];
+
90  r_ptr += first_chunk_size;
+
91  uint64_t second_chunk_size(write_size - first_chunk_size);
+
92  if (second_chunk_size) {
+
93  memcpy(w_ptr_, r_ptr, second_chunk_size);
+
94  w_ptr_ += second_chunk_size;
+
95  DCHECK_GT(end_ptr_, w_ptr_);
+
96  r_ptr += second_chunk_size;
+
97  }
+
98  bytes_left -= write_size;
+
99  write_event_.Signal();
+
100  }
+
101  return size;
+
102 }
+
103 
+ +
105  AutoLock lock(lock_);
+
106  r_ptr_ = w_ptr_ = circular_buffer_.data();
+
107  // Let any writers know that there is room in the cache.
+
108  read_event_.Signal();
+
109 }
+
110 
+ +
112  AutoLock lock(lock_);
+
113  closed_ = true;
+
114  read_event_.Signal();
+
115  write_event_.Signal();
+
116 }
+
117 
+ +
119  AutoLock lock(lock_);
+
120  CHECK(closed_);
+
121  r_ptr_ = w_ptr_ = circular_buffer_.data();
+
122  closed_ = false;
+
123  read_event_.Reset();
+
124  write_event_.Reset();
+
125 }
+
126 
+ +
128  AutoLock lock(lock_);
+
129  return BytesCachedInternal();
+
130 }
+
131 
+
132 uint64_t IoCache::BytesFree() {
+
133  AutoLock lock(lock_);
+
134  return BytesFreeInternal();
+
135 }
+
136 
+
137 uint64_t IoCache::BytesCachedInternal() {
+
138  return (r_ptr_ <= w_ptr_)
+
139  ? w_ptr_ - r_ptr_
+
140  : (end_ptr_ - r_ptr_) + (w_ptr_ - circular_buffer_.data());
+
141 }
+
142 
+
143 uint64_t IoCache::BytesFreeInternal() {
+
144  return cache_size_ - BytesCachedInternal();
+
145 }
+
146 
+ +
148  AutoLock lock(lock_);
+
149  while (!closed_ && BytesCachedInternal()) {
+
150  AutoUnlock unlock(lock_);
+
151  read_event_.Wait();
+
152  }
+
153 }
+
154 
+
155 } // namespace media
+
156 } // namespace shaka
+
void Clear()
Empties the cache.
Definition: io_cache.cc:104
+ +
void WaitUntilEmptyOrClosed()
Waits until the cache is empty or has been closed.
Definition: io_cache.cc:147
+
uint64_t BytesFree()
Definition: io_cache.cc:132
+
void Reopen()
Reopens the cache. Any data still in the cache will be lost.
Definition: io_cache.cc:118
+
uint64_t Read(void *buffer, uint64_t size)
Definition: io_cache.cc:40
+
uint64_t BytesCached()
Definition: io_cache.cc:127
+
uint64_t Write(const void *buffer, uint64_t size)
Definition: io_cache.cc:68
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 898c2f8c6e..9481c59cfc 100644 --- a/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html +++ b/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d4a/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html b/docs/d4/d4a/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html index 7f45de3498..bceabf2079 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 af8ff1f6c7..d4a1eed73e 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 fc73376fe9..0f26e250bd 100644 --- a/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html +++ b/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html b/docs/d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html index b0f01ead5a..cec7d8555b 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 ae192daf8d..641c4b310d 100644 --- a/docs/d4/d5c/classshaka_1_1media_1_1DecryptConfig-members.html +++ b/docs/d4/d5c/classshaka_1_1media_1_1DecryptConfig-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d5d/classshaka_1_1media_1_1UdpFile-members.html b/docs/d4/d5d/classshaka_1_1media_1_1UdpFile-members.html index e1675311e6..8389ff5ef0 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 7ffd64dbb4..acec04d382 100644 --- a/docs/d4/d70/classshaka_1_1DashIopMpdNotifier.html +++ b/docs/d4/d70/classshaka_1_1DashIopMpdNotifier.html @@ -473,7 +473,7 @@ class DashIopMpdNotifierTe diff --git a/docs/d4/d70/structshaka_1_1SegmentInfo-members.html b/docs/d4/d70/structshaka_1_1SegmentInfo-members.html index 8bc2d41d38..75b996d7ad 100644 --- a/docs/d4/d70/structshaka_1_1SegmentInfo-members.html +++ b/docs/d4/d70/structshaka_1_1SegmentInfo-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d87/nalu__reader_8h_source.html b/docs/d4/d87/nalu__reader_8h_source.html index 2aab4f0122..b1acc55786 100644 --- a/docs/d4/d87/nalu__reader_8h_source.html +++ b/docs/d4/d87/nalu__reader_8h_source.html @@ -297,7 +297,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html b/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html index 47a2a35db3..d4ba83e5cb 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 2ad2240797..9c2137a160 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/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index fed3f228ed..c485557ca1 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -298,7 +298,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
std::string OutputFileName() const
Gets the file name of the current output file.
scoped_refptr< 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:186
+
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:71
MuxerOptions CreateMuxerOptions() const
Creates a Muxer options object for testing.
@@ -310,7 +310,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html b/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html index 3c63185e16..25bfe0da6b 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 3af607d9ad..3b93ac554a 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 e968504036..2d4565427f 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 f2110a65fd..cff9b76fbe 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 2ba48731ad..0a42bd7432 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 3ff59b1bb9..0345d03492 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 d38291fc3d..47cd86d141 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -187,7 +187,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 86639f5b79..c36a3b4fdd 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 b452df7200..da289f9074 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 7f2619f853..8f9b848e60 100644 --- a/docs/d4/dde/webvtt__util_8h_source.html +++ b/docs/d4/dde/webvtt__util_8h_source.html @@ -100,29 +100,31 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
11 namespace media {
12 
13 // Utility function to create side data item for decoder buffer.
-
14 template<typename T>
-
15 void MakeSideData(T id_begin, T id_end,
-
16  T settings_begin, T settings_end,
-
17  std::vector<uint8>* side_data) {
-
18  // The DecoderBuffer only supports a single side data item. In the case of
-
19  // a WebVTT cue, we can have potentially two side data items. In order to
-
20  // avoid disrupting DecoderBuffer any more than we need to, we copy both
-
21  // side data items onto a single one, and terminate each with a NUL marker.
-
22  side_data->clear();
-
23  side_data->insert(side_data->end(), id_begin, id_end);
-
24  side_data->push_back(0);
-
25  side_data->insert(side_data->end(), settings_begin, settings_end);
+
14 template <typename T>
+
15 void MakeSideData(T id_begin,
+
16  T id_end,
+
17  T settings_begin,
+
18  T settings_end,
+
19  std::vector<uint8_t>* side_data) {
+
20  // The DecoderBuffer only supports a single side data item. In the case of
+
21  // a WebVTT cue, we can have potentially two side data items. In order to
+
22  // avoid disrupting DecoderBuffer any more than we need to, we copy both
+
23  // side data items onto a single one, and terminate each with a NUL marker.
+
24  side_data->clear();
+
25  side_data->insert(side_data->end(), id_begin, id_end);
26  side_data->push_back(0);
-
27 }
-
28 
-
29 } // namespace media
-
30 } // namespace shaka
-
31 
-
32 #endif // PACKAGER_MEDIA_CODECS_WEBVTT_UTIL_H_
+
27  side_data->insert(side_data->end(), settings_begin, settings_end);
+
28  side_data->push_back(0);
+
29 }
+
30 
+
31 } // namespace media
+
32 } // namespace shaka
+
33 
+
34 #endif // PACKAGER_MEDIA_CODECS_WEBVTT_UTIL_H_
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 1c25de4591..6db027fa78 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 fc02863d7e..ec144ba5d2 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 556b1082a5..831d429c31 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 e79598f6da..a09393458a 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 0c0fe15d1f..41ddfd647e 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html b/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html index 8a33634af8..8e974ffa3c 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 62cee7ff32..2b2a61f8fa 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 36afa5236d..0dadccee9e 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 fab18a96a2..16efc37465 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 51ed8afa1a..150b386d65 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 de85f5f00b..697b1044b9 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 984ab3e435..82f2645545 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 447ff707e7..a6c23883b8 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 abd64f4bc4..8db1a0bfe4 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 2e20b497d7..dc7b94f968 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 7a10dedab7..b220a772af 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 1aae6b072c..dddc24998e 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 d1ed32cc53..1285ca731d 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 c3f9d7d5f3..0eca5d60c7 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 e9bfe828eb..de7fbfe7a1 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 f27f8f2629..2237f80147 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 17eabc69f2..9ec68ab12b 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -158,7 +158,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html b/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html index 7283bfd438..3e68e72459 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 dd2a6fe211..71cdb55c3c 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 3106cae3cd..8914fde07a 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 0cdf61318a..022064a6cd 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 b286388b62..8843eca3f8 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 81861d9b5c..5c050507d7 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 642b370ab7..fce22f0120 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 ae8fad088f..28b42a85dd 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 e2e263847e..4a16b785f3 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 6cb4e0fc78..86b09474fb 100644 --- a/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html +++ b/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html @@ -229,7 +229,7 @@ class NalUnitToByteStreamC diff --git a/docs/d5/d6f/vlog__flags_8cc_source.html b/docs/d5/d6f/vlog__flags_8cc_source.html index 10c0bc2dd4..e5c28fe747 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 9e3b079a61..c30e7666f9 100644 --- a/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html +++ b/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html @@ -188,12 +188,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
99  uint8_t avc_level) {
100  const uint8_t bytes[] = {profile_indication, profile_compatibility,
101  avc_level};
-
102  return "avc1." +
-
103  base::StringToLowerASCII(base::HexEncode(bytes, arraysize(bytes)));
-
104 }
-
105 
-
106 } // namespace media
-
107 } // namespace shaka
+
102  return "avc1." + base::ToLowerASCII(base::HexEncode(bytes, arraysize(bytes)));
+
103 }
+
104 
+
105 } // namespace media
+
106 } // namespace shaka
void AddNalu(const Nalu &nalu)
Adds the given Nalu to the configuration.
@@ -203,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 48e36928e7..6b58a52153 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 66543e70e6..e0b808127c 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 f48a530af8..718fe1c6fd 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -233,498 +233,499 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
144  crypto_period_count_(kDefaultCryptoPeriodCount),
145  add_common_pssh_(add_common_pssh),
146  key_production_started_(false),
-
147  start_key_production_(false, false),
-
148  first_crypto_period_index_(0) {
-
149  key_production_thread_.Start();
-
150 }
-
151 
-
152 WidevineKeySource::~WidevineKeySource() {
-
153  if (key_pool_)
-
154  key_pool_->Stop();
-
155  if (key_production_thread_.HasBeenStarted()) {
-
156  // Signal the production thread to start key production if it is not
-
157  // signaled yet so the thread can be joined.
-
158  start_key_production_.Signal();
-
159  key_production_thread_.Join();
-
160  }
-
161  STLDeleteValues(&encryption_key_map_);
-
162 }
-
163 
-
164 Status WidevineKeySource::FetchKeys(const std::vector<uint8_t>& content_id,
-
165  const std::string& policy) {
-
166  base::AutoLock scoped_lock(lock_);
-
167  request_dict_.Clear();
-
168  std::string content_id_base64_string;
-
169  BytesToBase64String(content_id, &content_id_base64_string);
-
170  request_dict_.SetString("content_id", content_id_base64_string);
-
171  request_dict_.SetString("policy", policy);
-
172  return FetchKeysInternal(!kEnableKeyRotation, 0, false);
-
173 }
-
174 
-
175 Status WidevineKeySource::FetchKeys(const std::vector<uint8_t>& pssh_box) {
-
176  const std::vector<uint8_t> widevine_system_id(
-
177  kWidevineSystemId, kWidevineSystemId + arraysize(kWidevineSystemId));
-
178 
- -
180  if (!info.Parse(pssh_box.data(), pssh_box.size()))
-
181  return Status(error::PARSER_FAILURE, "Error parsing the PSSH box.");
-
182 
-
183  if (info.system_id() == widevine_system_id) {
-
184  base::AutoLock scoped_lock(lock_);
-
185  request_dict_.Clear();
-
186  std::string pssh_data_base64_string;
-
187 
-
188  BytesToBase64String(info.pssh_data(), &pssh_data_base64_string);
-
189  request_dict_.SetString("pssh_data", pssh_data_base64_string);
-
190  return FetchKeysInternal(!kEnableKeyRotation, 0, false);
-
191  } else if (!info.key_ids().empty()) {
-
192  // This is not a Widevine PSSH box. Try making the request for the key-IDs.
-
193  // Even if this is a different key-system, it should still work. Either
-
194  // the server will not recognize it and return an error, or it will
-
195  // recognize it and the key must be correct (or the content is bad).
-
196  return FetchKeys(info.key_ids());
-
197  } else {
-
198  return Status(error::NOT_FOUND, "No key IDs given in PSSH box.");
-
199  }
-
200 }
-
201 
- -
203  const std::vector<std::vector<uint8_t>>& key_ids) {
-
204  base::AutoLock scoped_lock(lock_);
-
205  request_dict_.Clear();
-
206  std::string pssh_data_base64_string;
-
207 
-
208  // Generate Widevine PSSH data from the key-IDs.
-
209  WidevinePsshData widevine_pssh_data;
-
210  for (size_t i = 0; i < key_ids.size(); i++) {
-
211  widevine_pssh_data.add_key_id(key_ids[i].data(), key_ids[i].size());
-
212  }
-
213 
-
214  const std::string serialized_string = widevine_pssh_data.SerializeAsString();
-
215  std::vector<uint8_t> pssh_data(serialized_string.begin(),
-
216  serialized_string.end());
-
217 
-
218  BytesToBase64String(pssh_data, &pssh_data_base64_string);
-
219  request_dict_.SetString("pssh_data", pssh_data_base64_string);
-
220  return FetchKeysInternal(!kEnableKeyRotation, 0, false);
-
221 }
-
222 
- -
224  base::AutoLock scoped_lock(lock_);
-
225  request_dict_.Clear();
-
226  // Javascript/JSON does not support int64_t or unsigned numbers. Use double
-
227  // instead as 32-bit integer can be lossless represented using double.
-
228  request_dict_.SetDouble("asset_id", asset_id);
-
229  return FetchKeysInternal(!kEnableKeyRotation, 0, true);
-
230 }
-
231 
-
232 Status WidevineKeySource::GetKey(TrackType track_type, EncryptionKey* key) {
-
233  DCHECK(key);
-
234  if (encryption_key_map_.find(track_type) == encryption_key_map_.end()) {
-
235  return Status(error::INTERNAL_ERROR,
-
236  "Cannot find key of type " + TrackTypeToString(track_type));
-
237  }
-
238  *key = *encryption_key_map_[track_type];
-
239  return Status::OK;
-
240 }
-
241 
-
242 Status WidevineKeySource::GetKey(const std::vector<uint8_t>& key_id,
-
243  EncryptionKey* key) {
-
244  DCHECK(key);
-
245  for (std::map<TrackType, EncryptionKey*>::iterator iter =
-
246  encryption_key_map_.begin();
-
247  iter != encryption_key_map_.end();
-
248  ++iter) {
-
249  if (iter->second->key_id == key_id) {
-
250  *key = *iter->second;
-
251  return Status::OK;
-
252  }
-
253  }
-
254  return Status(error::INTERNAL_ERROR,
-
255  "Cannot find key with specified key ID");
-
256 }
-
257 
-
258 Status WidevineKeySource::GetCryptoPeriodKey(uint32_t crypto_period_index,
-
259  TrackType track_type,
-
260  EncryptionKey* key) {
-
261  DCHECK(key_production_thread_.HasBeenStarted());
-
262  // TODO(kqyang): This is not elegant. Consider refactoring later.
-
263  {
-
264  base::AutoLock scoped_lock(lock_);
-
265  if (!key_production_started_) {
-
266  // Another client may have a slightly smaller starting crypto period
-
267  // index. Set the initial value to account for that.
-
268  first_crypto_period_index_ =
-
269  crypto_period_index ? crypto_period_index - 1 : 0;
-
270  DCHECK(!key_pool_);
-
271  key_pool_.reset(new EncryptionKeyQueue(crypto_period_count_,
-
272  first_crypto_period_index_));
-
273  start_key_production_.Signal();
-
274  key_production_started_ = true;
-
275  }
-
276  }
-
277  return GetKeyInternal(crypto_period_index, track_type, key);
-
278 }
-
279 
-
280 void WidevineKeySource::set_signer(std::unique_ptr<RequestSigner> signer) {
-
281  signer_ = std::move(signer);
-
282 }
-
283 
- -
285  std::unique_ptr<KeyFetcher> key_fetcher) {
-
286  key_fetcher_ = std::move(key_fetcher);
-
287 }
-
288 
-
289 Status WidevineKeySource::GetKeyInternal(uint32_t crypto_period_index,
-
290  TrackType track_type,
-
291  EncryptionKey* key) {
-
292  DCHECK(key_pool_);
-
293  DCHECK(key);
-
294  DCHECK_LE(track_type, NUM_VALID_TRACK_TYPES);
-
295  DCHECK_NE(track_type, TRACK_TYPE_UNKNOWN);
-
296 
-
297  scoped_refptr<RefCountedEncryptionKeyMap> ref_counted_encryption_key_map;
-
298  Status status =
-
299  key_pool_->Peek(crypto_period_index, &ref_counted_encryption_key_map,
-
300  kGetKeyTimeoutInSeconds * 1000);
-
301  if (!status.ok()) {
-
302  if (status.error_code() == error::STOPPED) {
-
303  CHECK(!common_encryption_request_status_.ok());
-
304  return common_encryption_request_status_;
-
305  }
-
306  return status;
-
307  }
-
308 
-
309  EncryptionKeyMap& encryption_key_map = ref_counted_encryption_key_map->map();
-
310  if (encryption_key_map.find(track_type) == encryption_key_map.end()) {
-
311  return Status(error::INTERNAL_ERROR,
-
312  "Cannot find key of type " + TrackTypeToString(track_type));
-
313  }
-
314  *key = *encryption_key_map[track_type];
-
315  return Status::OK;
-
316 }
-
317 
-
318 void WidevineKeySource::FetchKeysTask() {
-
319  // Wait until key production is signaled.
-
320  start_key_production_.Wait();
-
321  if (!key_pool_ || key_pool_->Stopped())
-
322  return;
-
323 
-
324  Status status = FetchKeysInternal(kEnableKeyRotation,
-
325  first_crypto_period_index_,
-
326  false);
-
327  while (status.ok()) {
-
328  first_crypto_period_index_ += crypto_period_count_;
-
329  status = FetchKeysInternal(kEnableKeyRotation,
-
330  first_crypto_period_index_,
-
331  false);
-
332  }
-
333  common_encryption_request_status_ = status;
-
334  key_pool_->Stop();
-
335 }
-
336 
-
337 Status WidevineKeySource::FetchKeysInternal(bool enable_key_rotation,
-
338  uint32_t first_crypto_period_index,
-
339  bool widevine_classic) {
-
340  std::string request;
-
341  FillRequest(enable_key_rotation,
-
342  first_crypto_period_index,
-
343  &request);
-
344 
-
345  std::string message;
-
346  Status status = GenerateKeyMessage(request, &message);
-
347  if (!status.ok())
-
348  return status;
-
349  VLOG(1) << "Message: " << message;
-
350 
-
351  std::string raw_response;
-
352  int64_t sleep_duration = kFirstRetryDelayMilliseconds;
-
353 
-
354  // Perform client side retries if seeing server transient error to workaround
-
355  // server limitation.
-
356  for (int i = 0; i < kNumTransientErrorRetries; ++i) {
-
357  status = key_fetcher_->FetchKeys(server_url_, message, &raw_response);
-
358  if (status.ok()) {
-
359  VLOG(1) << "Retry [" << i << "] Response:" << raw_response;
-
360 
-
361  std::string response;
-
362  if (!DecodeResponse(raw_response, &response)) {
-
363  return Status(error::SERVER_ERROR,
-
364  "Failed to decode response '" + raw_response + "'.");
-
365  }
-
366 
-
367  bool transient_error = false;
-
368  if (ExtractEncryptionKey(enable_key_rotation,
-
369  widevine_classic,
-
370  response,
-
371  &transient_error))
-
372  return Status::OK;
-
373 
-
374  if (!transient_error) {
-
375  return Status(
-
376  error::SERVER_ERROR,
-
377  "Failed to extract encryption key from '" + response + "'.");
-
378  }
-
379  } else if (status.error_code() != error::TIME_OUT) {
-
380  return status;
-
381  }
-
382 
-
383  // Exponential backoff.
-
384  if (i != kNumTransientErrorRetries - 1) {
-
385  base::PlatformThread::Sleep(
-
386  base::TimeDelta::FromMilliseconds(sleep_duration));
-
387  sleep_duration *= 2;
-
388  }
-
389  }
-
390  return Status(error::SERVER_ERROR,
-
391  "Failed to recover from server internal error.");
-
392 }
-
393 
-
394 void WidevineKeySource::FillRequest(bool enable_key_rotation,
-
395  uint32_t first_crypto_period_index,
-
396  std::string* request) {
-
397  DCHECK(request);
-
398  DCHECK(!request_dict_.empty());
-
399 
-
400  // Build tracks.
-
401  base::ListValue* tracks = new base::ListValue();
-
402 
-
403  base::DictionaryValue* track_sd = new base::DictionaryValue();
-
404  track_sd->SetString("type", "SD");
-
405  tracks->Append(track_sd);
-
406  base::DictionaryValue* track_hd = new base::DictionaryValue();
-
407  track_hd->SetString("type", "HD");
-
408  tracks->Append(track_hd);
-
409  base::DictionaryValue* track_audio = new base::DictionaryValue();
-
410  track_audio->SetString("type", "AUDIO");
-
411  tracks->Append(track_audio);
-
412 
-
413  request_dict_.Set("tracks", tracks);
-
414 
-
415  // Build DRM types.
-
416  base::ListValue* drm_types = new base::ListValue();
-
417  drm_types->AppendString("WIDEVINE");
-
418  request_dict_.Set("drm_types", drm_types);
-
419 
-
420  // Build key rotation fields.
-
421  if (enable_key_rotation) {
-
422  // Javascript/JSON does not support int64_t or unsigned numbers. Use double
-
423  // instead as 32-bit integer can be lossless represented using double.
-
424  request_dict_.SetDouble("first_crypto_period_index",
-
425  first_crypto_period_index);
-
426  request_dict_.SetInteger("crypto_period_count", crypto_period_count_);
-
427  }
-
428 
-
429  base::JSONWriter::WriteWithOptions(
-
430  request_dict_,
-
431  // Write doubles that have no fractional part as a normal integer, i.e.
-
432  // without using exponential notation or appending a '.0'.
-
433  base::JSONWriter::OPTIONS_OMIT_DOUBLE_TYPE_PRESERVATION, request);
-
434 }
-
435 
-
436 Status WidevineKeySource::GenerateKeyMessage(const std::string& request,
-
437  std::string* message) {
-
438  DCHECK(message);
-
439 
-
440  std::string request_base64_string;
-
441  base::Base64Encode(request, &request_base64_string);
-
442 
-
443  base::DictionaryValue request_dict;
-
444  request_dict.SetString("request", request_base64_string);
-
445 
-
446  // Sign the request.
-
447  if (signer_) {
-
448  std::string signature;
-
449  if (!signer_->GenerateSignature(request, &signature))
-
450  return Status(error::INTERNAL_ERROR, "Signature generation failed.");
-
451 
-
452  std::string signature_base64_string;
-
453  base::Base64Encode(signature, &signature_base64_string);
-
454 
-
455  request_dict.SetString("signature", signature_base64_string);
-
456  request_dict.SetString("signer", signer_->signer_name());
-
457  }
-
458 
-
459  base::JSONWriter::Write(request_dict, message);
-
460  return Status::OK;
-
461 }
-
462 
-
463 bool WidevineKeySource::DecodeResponse(
-
464  const std::string& raw_response,
-
465  std::string* response) {
-
466  DCHECK(response);
-
467 
-
468  // Extract base64 formatted response from JSON formatted raw response.
-
469  // TODO(kqyang): Remove ".release()" when base is updated to use unique_ptr.
-
470  std::unique_ptr<base::Value> root(
-
471  base::JSONReader::Read(raw_response).release());
-
472  if (!root) {
-
473  LOG(ERROR) << "'" << raw_response << "' is not in JSON format.";
-
474  return false;
-
475  }
-
476  const base::DictionaryValue* response_dict = NULL;
-
477  RCHECK(root->GetAsDictionary(&response_dict));
-
478 
-
479  std::string response_base64_string;
-
480  RCHECK(response_dict->GetString("response", &response_base64_string));
-
481  RCHECK(base::Base64Decode(response_base64_string, response));
-
482  return true;
-
483 }
-
484 
-
485 bool WidevineKeySource::ExtractEncryptionKey(
-
486  bool enable_key_rotation,
-
487  bool widevine_classic,
-
488  const std::string& response,
-
489  bool* transient_error) {
-
490  DCHECK(transient_error);
-
491  *transient_error = false;
-
492 
-
493  // TODO(kqyang): Remove ".release()" when base is updated to use unique_ptr.
-
494  std::unique_ptr<base::Value> root(base::JSONReader::Read(response).release());
-
495  if (!root) {
-
496  LOG(ERROR) << "'" << response << "' is not in JSON format.";
-
497  return false;
-
498  }
-
499 
-
500  const base::DictionaryValue* license_dict = NULL;
-
501  RCHECK(root->GetAsDictionary(&license_dict));
-
502 
-
503  std::string license_status;
-
504  RCHECK(license_dict->GetString("status", &license_status));
-
505  if (license_status != kLicenseStatusOK) {
-
506  LOG(ERROR) << "Received non-OK license response: " << response;
-
507  *transient_error = (license_status == kLicenseStatusTransientError);
-
508  return false;
-
509  }
-
510 
-
511  const base::ListValue* tracks;
-
512  RCHECK(license_dict->GetList("tracks", &tracks));
-
513  // Should have at least one track per crypto_period.
-
514  RCHECK(enable_key_rotation ? tracks->GetSize() >= 1 * crypto_period_count_
-
515  : tracks->GetSize() >= 1);
-
516 
-
517  int current_crypto_period_index = first_crypto_period_index_;
-
518 
-
519  EncryptionKeyMap encryption_key_map;
-
520  for (size_t i = 0; i < tracks->GetSize(); ++i) {
-
521  const base::DictionaryValue* track_dict;
-
522  RCHECK(tracks->GetDictionary(i, &track_dict));
-
523 
-
524  if (enable_key_rotation) {
-
525  int crypto_period_index;
-
526  RCHECK(
-
527  track_dict->GetInteger("crypto_period_index", &crypto_period_index));
-
528  if (crypto_period_index != current_crypto_period_index) {
-
529  if (crypto_period_index != current_crypto_period_index + 1) {
-
530  LOG(ERROR) << "Expecting crypto period index "
-
531  << current_crypto_period_index << " or "
-
532  << current_crypto_period_index + 1 << "; Seen "
-
533  << crypto_period_index << " at track " << i;
-
534  return false;
-
535  }
-
536  if (!PushToKeyPool(&encryption_key_map))
-
537  return false;
-
538  ++current_crypto_period_index;
-
539  }
-
540  }
-
541 
-
542  std::string track_type_str;
-
543  RCHECK(track_dict->GetString("type", &track_type_str));
-
544  TrackType track_type = GetTrackTypeFromString(track_type_str);
-
545  DCHECK_NE(TRACK_TYPE_UNKNOWN, track_type);
-
546  RCHECK(encryption_key_map.find(track_type) == encryption_key_map.end());
-
547 
-
548  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
549 
-
550  if (!GetKeyFromTrack(*track_dict, &encryption_key->key))
-
551  return false;
-
552 
-
553  // Get key ID and PSSH data for CENC content only.
-
554  if (!widevine_classic) {
-
555  if (!GetKeyIdFromTrack(*track_dict, &encryption_key->key_id))
-
556  return false;
-
557 
-
558  ProtectionSystemSpecificInfo info;
-
559  info.add_key_id(encryption_key->key_id);
-
560  info.set_system_id(kWidevineSystemId, arraysize(kWidevineSystemId));
-
561  info.set_pssh_box_version(0);
-
562 
-
563  std::vector<uint8_t> pssh_data;
-
564  if (!GetPsshDataFromTrack(*track_dict, &pssh_data))
-
565  return false;
-
566  info.set_pssh_data(pssh_data);
-
567 
-
568  encryption_key->key_system_info.push_back(info);
-
569  }
-
570  encryption_key_map[track_type] = encryption_key.release();
-
571  }
-
572 
-
573  // If the flag exists, create a common system ID PSSH box that contains the
-
574  // key IDs of all the keys.
-
575  if (add_common_pssh_ && !widevine_classic) {
-
576  std::set<std::vector<uint8_t>> key_ids;
-
577  for (const EncryptionKeyMap::value_type& pair : encryption_key_map) {
-
578  key_ids.insert(pair.second->key_id);
-
579  }
-
580 
-
581  // Create a common system PSSH box.
-
582  ProtectionSystemSpecificInfo info;
-
583  info.set_system_id(kCommonSystemId, arraysize(kCommonSystemId));
-
584  info.set_pssh_box_version(1);
-
585  for (const std::vector<uint8_t>& key_id : key_ids) {
-
586  info.add_key_id(key_id);
-
587  }
-
588 
-
589  for (const EncryptionKeyMap::value_type& pair : encryption_key_map) {
-
590  pair.second->key_system_info.push_back(info);
-
591  }
-
592  }
-
593 
-
594  DCHECK(!encryption_key_map.empty());
-
595  if (!enable_key_rotation) {
-
596  encryption_key_map_ = encryption_key_map;
-
597  return true;
-
598  }
-
599  return PushToKeyPool(&encryption_key_map);
-
600 }
-
601 
-
602 bool WidevineKeySource::PushToKeyPool(
-
603  EncryptionKeyMap* encryption_key_map) {
-
604  DCHECK(key_pool_);
-
605  DCHECK(encryption_key_map);
-
606  Status status =
-
607  key_pool_->Push(scoped_refptr<RefCountedEncryptionKeyMap>(
-
608  new RefCountedEncryptionKeyMap(encryption_key_map)),
-
609  kInfiniteTimeout);
-
610  encryption_key_map->clear();
-
611  if (!status.ok()) {
-
612  DCHECK_EQ(error::STOPPED, status.error_code());
-
613  return false;
-
614  }
-
615  return true;
-
616 }
-
617 
-
618 } // namespace media
-
619 } // namespace shaka
+
147  start_key_production_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
+
148  base::WaitableEvent::InitialState::NOT_SIGNALED),
+
149  first_crypto_period_index_(0) {
+
150  key_production_thread_.Start();
+
151 }
+
152 
+
153 WidevineKeySource::~WidevineKeySource() {
+
154  if (key_pool_)
+
155  key_pool_->Stop();
+
156  if (key_production_thread_.HasBeenStarted()) {
+
157  // Signal the production thread to start key production if it is not
+
158  // signaled yet so the thread can be joined.
+
159  start_key_production_.Signal();
+
160  key_production_thread_.Join();
+
161  }
+
162  STLDeleteValues(&encryption_key_map_);
+
163 }
+
164 
+
165 Status WidevineKeySource::FetchKeys(const std::vector<uint8_t>& content_id,
+
166  const std::string& policy) {
+
167  base::AutoLock scoped_lock(lock_);
+
168  request_dict_.Clear();
+
169  std::string content_id_base64_string;
+
170  BytesToBase64String(content_id, &content_id_base64_string);
+
171  request_dict_.SetString("content_id", content_id_base64_string);
+
172  request_dict_.SetString("policy", policy);
+
173  return FetchKeysInternal(!kEnableKeyRotation, 0, false);
+
174 }
+
175 
+
176 Status WidevineKeySource::FetchKeys(const std::vector<uint8_t>& pssh_box) {
+
177  const std::vector<uint8_t> widevine_system_id(
+
178  kWidevineSystemId, kWidevineSystemId + arraysize(kWidevineSystemId));
+
179 
+ +
181  if (!info.Parse(pssh_box.data(), pssh_box.size()))
+
182  return Status(error::PARSER_FAILURE, "Error parsing the PSSH box.");
+
183 
+
184  if (info.system_id() == widevine_system_id) {
+
185  base::AutoLock scoped_lock(lock_);
+
186  request_dict_.Clear();
+
187  std::string pssh_data_base64_string;
+
188 
+
189  BytesToBase64String(info.pssh_data(), &pssh_data_base64_string);
+
190  request_dict_.SetString("pssh_data", pssh_data_base64_string);
+
191  return FetchKeysInternal(!kEnableKeyRotation, 0, false);
+
192  } else if (!info.key_ids().empty()) {
+
193  // This is not a Widevine PSSH box. Try making the request for the key-IDs.
+
194  // Even if this is a different key-system, it should still work. Either
+
195  // the server will not recognize it and return an error, or it will
+
196  // recognize it and the key must be correct (or the content is bad).
+
197  return FetchKeys(info.key_ids());
+
198  } else {
+
199  return Status(error::NOT_FOUND, "No key IDs given in PSSH box.");
+
200  }
+
201 }
+
202 
+ +
204  const std::vector<std::vector<uint8_t>>& key_ids) {
+
205  base::AutoLock scoped_lock(lock_);
+
206  request_dict_.Clear();
+
207  std::string pssh_data_base64_string;
+
208 
+
209  // Generate Widevine PSSH data from the key-IDs.
+
210  WidevinePsshData widevine_pssh_data;
+
211  for (size_t i = 0; i < key_ids.size(); i++) {
+
212  widevine_pssh_data.add_key_id(key_ids[i].data(), key_ids[i].size());
+
213  }
+
214 
+
215  const std::string serialized_string = widevine_pssh_data.SerializeAsString();
+
216  std::vector<uint8_t> pssh_data(serialized_string.begin(),
+
217  serialized_string.end());
+
218 
+
219  BytesToBase64String(pssh_data, &pssh_data_base64_string);
+
220  request_dict_.SetString("pssh_data", pssh_data_base64_string);
+
221  return FetchKeysInternal(!kEnableKeyRotation, 0, false);
+
222 }
+
223 
+ +
225  base::AutoLock scoped_lock(lock_);
+
226  request_dict_.Clear();
+
227  // Javascript/JSON does not support int64_t or unsigned numbers. Use double
+
228  // instead as 32-bit integer can be lossless represented using double.
+
229  request_dict_.SetDouble("asset_id", asset_id);
+
230  return FetchKeysInternal(!kEnableKeyRotation, 0, true);
+
231 }
+
232 
+
233 Status WidevineKeySource::GetKey(TrackType track_type, EncryptionKey* key) {
+
234  DCHECK(key);
+
235  if (encryption_key_map_.find(track_type) == encryption_key_map_.end()) {
+
236  return Status(error::INTERNAL_ERROR,
+
237  "Cannot find key of type " + TrackTypeToString(track_type));
+
238  }
+
239  *key = *encryption_key_map_[track_type];
+
240  return Status::OK;
+
241 }
+
242 
+
243 Status WidevineKeySource::GetKey(const std::vector<uint8_t>& key_id,
+
244  EncryptionKey* key) {
+
245  DCHECK(key);
+
246  for (std::map<TrackType, EncryptionKey*>::iterator iter =
+
247  encryption_key_map_.begin();
+
248  iter != encryption_key_map_.end();
+
249  ++iter) {
+
250  if (iter->second->key_id == key_id) {
+
251  *key = *iter->second;
+
252  return Status::OK;
+
253  }
+
254  }
+
255  return Status(error::INTERNAL_ERROR,
+
256  "Cannot find key with specified key ID");
+
257 }
+
258 
+
259 Status WidevineKeySource::GetCryptoPeriodKey(uint32_t crypto_period_index,
+
260  TrackType track_type,
+
261  EncryptionKey* key) {
+
262  DCHECK(key_production_thread_.HasBeenStarted());
+
263  // TODO(kqyang): This is not elegant. Consider refactoring later.
+
264  {
+
265  base::AutoLock scoped_lock(lock_);
+
266  if (!key_production_started_) {
+
267  // Another client may have a slightly smaller starting crypto period
+
268  // index. Set the initial value to account for that.
+
269  first_crypto_period_index_ =
+
270  crypto_period_index ? crypto_period_index - 1 : 0;
+
271  DCHECK(!key_pool_);
+
272  key_pool_.reset(new EncryptionKeyQueue(crypto_period_count_,
+
273  first_crypto_period_index_));
+
274  start_key_production_.Signal();
+
275  key_production_started_ = true;
+
276  }
+
277  }
+
278  return GetKeyInternal(crypto_period_index, track_type, key);
+
279 }
+
280 
+
281 void WidevineKeySource::set_signer(std::unique_ptr<RequestSigner> signer) {
+
282  signer_ = std::move(signer);
+
283 }
+
284 
+ +
286  std::unique_ptr<KeyFetcher> key_fetcher) {
+
287  key_fetcher_ = std::move(key_fetcher);
+
288 }
+
289 
+
290 Status WidevineKeySource::GetKeyInternal(uint32_t crypto_period_index,
+
291  TrackType track_type,
+
292  EncryptionKey* key) {
+
293  DCHECK(key_pool_);
+
294  DCHECK(key);
+
295  DCHECK_LE(track_type, NUM_VALID_TRACK_TYPES);
+
296  DCHECK_NE(track_type, TRACK_TYPE_UNKNOWN);
+
297 
+
298  scoped_refptr<RefCountedEncryptionKeyMap> ref_counted_encryption_key_map;
+
299  Status status =
+
300  key_pool_->Peek(crypto_period_index, &ref_counted_encryption_key_map,
+
301  kGetKeyTimeoutInSeconds * 1000);
+
302  if (!status.ok()) {
+
303  if (status.error_code() == error::STOPPED) {
+
304  CHECK(!common_encryption_request_status_.ok());
+
305  return common_encryption_request_status_;
+
306  }
+
307  return status;
+
308  }
+
309 
+
310  EncryptionKeyMap& encryption_key_map = ref_counted_encryption_key_map->map();
+
311  if (encryption_key_map.find(track_type) == encryption_key_map.end()) {
+
312  return Status(error::INTERNAL_ERROR,
+
313  "Cannot find key of type " + TrackTypeToString(track_type));
+
314  }
+
315  *key = *encryption_key_map[track_type];
+
316  return Status::OK;
+
317 }
+
318 
+
319 void WidevineKeySource::FetchKeysTask() {
+
320  // Wait until key production is signaled.
+
321  start_key_production_.Wait();
+
322  if (!key_pool_ || key_pool_->Stopped())
+
323  return;
+
324 
+
325  Status status = FetchKeysInternal(kEnableKeyRotation,
+
326  first_crypto_period_index_,
+
327  false);
+
328  while (status.ok()) {
+
329  first_crypto_period_index_ += crypto_period_count_;
+
330  status = FetchKeysInternal(kEnableKeyRotation,
+
331  first_crypto_period_index_,
+
332  false);
+
333  }
+
334  common_encryption_request_status_ = status;
+
335  key_pool_->Stop();
+
336 }
+
337 
+
338 Status WidevineKeySource::FetchKeysInternal(bool enable_key_rotation,
+
339  uint32_t first_crypto_period_index,
+
340  bool widevine_classic) {
+
341  std::string request;
+
342  FillRequest(enable_key_rotation,
+
343  first_crypto_period_index,
+
344  &request);
+
345 
+
346  std::string message;
+
347  Status status = GenerateKeyMessage(request, &message);
+
348  if (!status.ok())
+
349  return status;
+
350  VLOG(1) << "Message: " << message;
+
351 
+
352  std::string raw_response;
+
353  int64_t sleep_duration = kFirstRetryDelayMilliseconds;
+
354 
+
355  // Perform client side retries if seeing server transient error to workaround
+
356  // server limitation.
+
357  for (int i = 0; i < kNumTransientErrorRetries; ++i) {
+
358  status = key_fetcher_->FetchKeys(server_url_, message, &raw_response);
+
359  if (status.ok()) {
+
360  VLOG(1) << "Retry [" << i << "] Response:" << raw_response;
+
361 
+
362  std::string response;
+
363  if (!DecodeResponse(raw_response, &response)) {
+
364  return Status(error::SERVER_ERROR,
+
365  "Failed to decode response '" + raw_response + "'.");
+
366  }
+
367 
+
368  bool transient_error = false;
+
369  if (ExtractEncryptionKey(enable_key_rotation,
+
370  widevine_classic,
+
371  response,
+
372  &transient_error))
+
373  return Status::OK;
+
374 
+
375  if (!transient_error) {
+
376  return Status(
+
377  error::SERVER_ERROR,
+
378  "Failed to extract encryption key from '" + response + "'.");
+
379  }
+
380  } else if (status.error_code() != error::TIME_OUT) {
+
381  return status;
+
382  }
+
383 
+
384  // Exponential backoff.
+
385  if (i != kNumTransientErrorRetries - 1) {
+
386  base::PlatformThread::Sleep(
+
387  base::TimeDelta::FromMilliseconds(sleep_duration));
+
388  sleep_duration *= 2;
+
389  }
+
390  }
+
391  return Status(error::SERVER_ERROR,
+
392  "Failed to recover from server internal error.");
+
393 }
+
394 
+
395 void WidevineKeySource::FillRequest(bool enable_key_rotation,
+
396  uint32_t first_crypto_period_index,
+
397  std::string* request) {
+
398  DCHECK(request);
+
399  DCHECK(!request_dict_.empty());
+
400 
+
401  // Build tracks.
+
402  base::ListValue* tracks = new base::ListValue();
+
403 
+
404  base::DictionaryValue* track_sd = new base::DictionaryValue();
+
405  track_sd->SetString("type", "SD");
+
406  tracks->Append(track_sd);
+
407  base::DictionaryValue* track_hd = new base::DictionaryValue();
+
408  track_hd->SetString("type", "HD");
+
409  tracks->Append(track_hd);
+
410  base::DictionaryValue* track_audio = new base::DictionaryValue();
+
411  track_audio->SetString("type", "AUDIO");
+
412  tracks->Append(track_audio);
+
413 
+
414  request_dict_.Set("tracks", tracks);
+
415 
+
416  // Build DRM types.
+
417  base::ListValue* drm_types = new base::ListValue();
+
418  drm_types->AppendString("WIDEVINE");
+
419  request_dict_.Set("drm_types", drm_types);
+
420 
+
421  // Build key rotation fields.
+
422  if (enable_key_rotation) {
+
423  // Javascript/JSON does not support int64_t or unsigned numbers. Use double
+
424  // instead as 32-bit integer can be lossless represented using double.
+
425  request_dict_.SetDouble("first_crypto_period_index",
+
426  first_crypto_period_index);
+
427  request_dict_.SetInteger("crypto_period_count", crypto_period_count_);
+
428  }
+
429 
+
430  base::JSONWriter::WriteWithOptions(
+
431  request_dict_,
+
432  // Write doubles that have no fractional part as a normal integer, i.e.
+
433  // without using exponential notation or appending a '.0'.
+
434  base::JSONWriter::OPTIONS_OMIT_DOUBLE_TYPE_PRESERVATION, request);
+
435 }
+
436 
+
437 Status WidevineKeySource::GenerateKeyMessage(const std::string& request,
+
438  std::string* message) {
+
439  DCHECK(message);
+
440 
+
441  std::string request_base64_string;
+
442  base::Base64Encode(request, &request_base64_string);
+
443 
+
444  base::DictionaryValue request_dict;
+
445  request_dict.SetString("request", request_base64_string);
+
446 
+
447  // Sign the request.
+
448  if (signer_) {
+
449  std::string signature;
+
450  if (!signer_->GenerateSignature(request, &signature))
+
451  return Status(error::INTERNAL_ERROR, "Signature generation failed.");
+
452 
+
453  std::string signature_base64_string;
+
454  base::Base64Encode(signature, &signature_base64_string);
+
455 
+
456  request_dict.SetString("signature", signature_base64_string);
+
457  request_dict.SetString("signer", signer_->signer_name());
+
458  }
+
459 
+
460  base::JSONWriter::Write(request_dict, message);
+
461  return Status::OK;
+
462 }
+
463 
+
464 bool WidevineKeySource::DecodeResponse(
+
465  const std::string& raw_response,
+
466  std::string* response) {
+
467  DCHECK(response);
+
468 
+
469  // Extract base64 formatted response from JSON formatted raw response.
+
470  // TODO(kqyang): Remove ".release()" when base is updated to use unique_ptr.
+
471  std::unique_ptr<base::Value> root(
+
472  base::JSONReader::Read(raw_response).release());
+
473  if (!root) {
+
474  LOG(ERROR) << "'" << raw_response << "' is not in JSON format.";
+
475  return false;
+
476  }
+
477  const base::DictionaryValue* response_dict = NULL;
+
478  RCHECK(root->GetAsDictionary(&response_dict));
+
479 
+
480  std::string response_base64_string;
+
481  RCHECK(response_dict->GetString("response", &response_base64_string));
+
482  RCHECK(base::Base64Decode(response_base64_string, response));
+
483  return true;
+
484 }
+
485 
+
486 bool WidevineKeySource::ExtractEncryptionKey(
+
487  bool enable_key_rotation,
+
488  bool widevine_classic,
+
489  const std::string& response,
+
490  bool* transient_error) {
+
491  DCHECK(transient_error);
+
492  *transient_error = false;
+
493 
+
494  // TODO(kqyang): Remove ".release()" when base is updated to use unique_ptr.
+
495  std::unique_ptr<base::Value> root(base::JSONReader::Read(response).release());
+
496  if (!root) {
+
497  LOG(ERROR) << "'" << response << "' is not in JSON format.";
+
498  return false;
+
499  }
+
500 
+
501  const base::DictionaryValue* license_dict = NULL;
+
502  RCHECK(root->GetAsDictionary(&license_dict));
+
503 
+
504  std::string license_status;
+
505  RCHECK(license_dict->GetString("status", &license_status));
+
506  if (license_status != kLicenseStatusOK) {
+
507  LOG(ERROR) << "Received non-OK license response: " << response;
+
508  *transient_error = (license_status == kLicenseStatusTransientError);
+
509  return false;
+
510  }
+
511 
+
512  const base::ListValue* tracks;
+
513  RCHECK(license_dict->GetList("tracks", &tracks));
+
514  // Should have at least one track per crypto_period.
+
515  RCHECK(enable_key_rotation ? tracks->GetSize() >= 1 * crypto_period_count_
+
516  : tracks->GetSize() >= 1);
+
517 
+
518  int current_crypto_period_index = first_crypto_period_index_;
+
519 
+
520  EncryptionKeyMap encryption_key_map;
+
521  for (size_t i = 0; i < tracks->GetSize(); ++i) {
+
522  const base::DictionaryValue* track_dict;
+
523  RCHECK(tracks->GetDictionary(i, &track_dict));
+
524 
+
525  if (enable_key_rotation) {
+
526  int crypto_period_index;
+
527  RCHECK(
+
528  track_dict->GetInteger("crypto_period_index", &crypto_period_index));
+
529  if (crypto_period_index != current_crypto_period_index) {
+
530  if (crypto_period_index != current_crypto_period_index + 1) {
+
531  LOG(ERROR) << "Expecting crypto period index "
+
532  << current_crypto_period_index << " or "
+
533  << current_crypto_period_index + 1 << "; Seen "
+
534  << crypto_period_index << " at track " << i;
+
535  return false;
+
536  }
+
537  if (!PushToKeyPool(&encryption_key_map))
+
538  return false;
+
539  ++current_crypto_period_index;
+
540  }
+
541  }
+
542 
+
543  std::string track_type_str;
+
544  RCHECK(track_dict->GetString("type", &track_type_str));
+
545  TrackType track_type = GetTrackTypeFromString(track_type_str);
+
546  DCHECK_NE(TRACK_TYPE_UNKNOWN, track_type);
+
547  RCHECK(encryption_key_map.find(track_type) == encryption_key_map.end());
+
548 
+
549  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
550 
+
551  if (!GetKeyFromTrack(*track_dict, &encryption_key->key))
+
552  return false;
+
553 
+
554  // Get key ID and PSSH data for CENC content only.
+
555  if (!widevine_classic) {
+
556  if (!GetKeyIdFromTrack(*track_dict, &encryption_key->key_id))
+
557  return false;
+
558 
+
559  ProtectionSystemSpecificInfo info;
+
560  info.add_key_id(encryption_key->key_id);
+
561  info.set_system_id(kWidevineSystemId, arraysize(kWidevineSystemId));
+
562  info.set_pssh_box_version(0);
+
563 
+
564  std::vector<uint8_t> pssh_data;
+
565  if (!GetPsshDataFromTrack(*track_dict, &pssh_data))
+
566  return false;
+
567  info.set_pssh_data(pssh_data);
+
568 
+
569  encryption_key->key_system_info.push_back(info);
+
570  }
+
571  encryption_key_map[track_type] = encryption_key.release();
+
572  }
+
573 
+
574  // If the flag exists, create a common system ID PSSH box that contains the
+
575  // key IDs of all the keys.
+
576  if (add_common_pssh_ && !widevine_classic) {
+
577  std::set<std::vector<uint8_t>> key_ids;
+
578  for (const EncryptionKeyMap::value_type& pair : encryption_key_map) {
+
579  key_ids.insert(pair.second->key_id);
+
580  }
+
581 
+
582  // Create a common system PSSH box.
+
583  ProtectionSystemSpecificInfo info;
+
584  info.set_system_id(kCommonSystemId, arraysize(kCommonSystemId));
+
585  info.set_pssh_box_version(1);
+
586  for (const std::vector<uint8_t>& key_id : key_ids) {
+
587  info.add_key_id(key_id);
+
588  }
+
589 
+
590  for (const EncryptionKeyMap::value_type& pair : encryption_key_map) {
+
591  pair.second->key_system_info.push_back(info);
+
592  }
+
593  }
+
594 
+
595  DCHECK(!encryption_key_map.empty());
+
596  if (!enable_key_rotation) {
+
597  encryption_key_map_ = encryption_key_map;
+
598  return true;
+
599  }
+
600  return PushToKeyPool(&encryption_key_map);
+
601 }
+
602 
+
603 bool WidevineKeySource::PushToKeyPool(
+
604  EncryptionKeyMap* encryption_key_map) {
+
605  DCHECK(key_pool_);
+
606  DCHECK(encryption_key_map);
+
607  Status status =
+
608  key_pool_->Push(scoped_refptr<RefCountedEncryptionKeyMap>(
+
609  new RefCountedEncryptionKeyMap(encryption_key_map)),
+
610  kInfiniteTimeout);
+
611  encryption_key_map->clear();
+
612  if (!status.ok()) {
+
613  DCHECK_EQ(error::STOPPED, status.error_code());
+
614  return false;
+
615  }
+
616  return true;
+
617 }
+
618 
+
619 } // namespace media
+
620 } // namespace shaka
-
Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
-
Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
-
Status GetKey(TrackType track_type, EncryptionKey *key) override
+
Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
+
Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
+
Status GetKey(TrackType track_type, EncryptionKey *key) override
static std::string TrackTypeToString(TrackType track_type)
Convert TrackType to string.
Definition: key_source.cc:33
static TrackType GetTrackTypeFromString(const std::string &track_type_string)
Convert string representation of track type to enum representation.
Definition: key_source.cc:19
-
void set_key_fetcher(std::unique_ptr< KeyFetcher > key_fetcher)
+
void set_key_fetcher(std::unique_ptr< KeyFetcher > key_fetcher)
WidevineKeySource(const std::string &server_url, bool add_common_pssh)
-
void set_signer(std::unique_ptr< RequestSigner > signer)
+
void set_signer(std::unique_ptr< RequestSigner > signer)
bool Parse(const uint8_t *data, size_t data_size)
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 2acccb78df..1a8684193f 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 7029f700b3..22ce495373 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -721,7 +721,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 99bfc0ed20..3a37db0ae6 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -366,7 +366,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 d14099fc89..34ed2a29be 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 c07f8cd3a9..3ece3e6cba 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
45 
46  if (!key->key_id.empty() &&
47  !encoding->SetEncryptionID(
-
48  reinterpret_cast<const uint8*>(key->key_id.data()),
+
48  reinterpret_cast<const uint8_t*>(key->key_id.data()),
49  key->key_id.size())) {
50  return Status(error::INTERNAL_ERROR, "Error setting encryption ID.");
51  }
@@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
114  memcpy(sample_data + kWebMSignalByteSize, encryptor_->iv().data(),
115  iv_size);
116  sample_data[kWebMSignalByteSize + kWebMIvSize] = num_partitions;
-
117  uint32 partition_offset = 0;
+
117  uint32_t partition_offset = 0;
118  BufferWriter offsets_buffer(kWebMPartitionOffsetSize * num_partitions);
119  for (const auto& vpx_frame : vpx_frames) {
120  uint32_t encrypted_size =
@@ -316,7 +316,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 2cf06981c8..43181a503d 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 e2bd74df45..dc2605fcfb 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 3359659b54..8cc492c2e0 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 cd21f4e7fc..1cba547149 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 d45384c473..31f209fe49 100644 --- a/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html +++ b/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html @@ -235,7 +235,7 @@ class base::RefCountedThre diff --git a/docs/d5/db9/classshaka_1_1media_1_1mp2t_1_1EsParserH264.html b/docs/d5/db9/classshaka_1_1media_1_1mp2t_1_1EsParserH264.html index e54d860d98..ebdad61580 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 a2a99c45a4..5f3e83b954 100644 --- a/docs/d5/dba/ts__packet_8cc_source.html +++ b/docs/d5/dba/ts__packet_8cc_source.html @@ -304,7 +304,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dc1/webm__webvtt__parser_8cc_source.html b/docs/d5/dc1/webm__webvtt__parser_8cc_source.html index 682ca64680..4e88d1e20b 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 957f245a31..a63f04c99c 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 34b1d7750f..2673750dc8 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 d6a97ba8c7..9c2558e2e1 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 b33c212009..49ecbcdd1b 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 19393b6dff..6d302eb6eb 100644 --- a/docs/d5/de0/bit__reader_8cc_source.html +++ b/docs/d5/de0/bit__reader_8cc_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html b/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html index dac34c6057..0b65f08f8b 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 da9ece5acf..e23814afe6 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 393a24300b..795a4b6f8f 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 f53783f95e..56a89f9019 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 ab65bb1312..a254db9384 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 fedfa58e8d..8af7a8150b 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 38fe9815fc..1673da8c77 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 7759fe778d..53eaf2202b 100644 --- a/docs/d5/dfc/file_8cc_source.html +++ b/docs/d5/dfc/file_8cc_source.html @@ -99,285 +99,284 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
10 #include <algorithm>
11 #include <memory>
12 #include "packager/base/logging.h"
-
13 #include "packager/base/strings/string_util.h"
-
14 #include "packager/media/file/local_file.h"
-
15 #include "packager/media/file/memory_file.h"
-
16 #include "packager/media/file/threaded_io_file.h"
-
17 #include "packager/media/file/udp_file.h"
-
18 
-
19 DEFINE_uint64(io_cache_size,
-
20  32ULL << 20,
-
21  "Size of the threaded I/O cache, in bytes. Specify 0 to disable "
-
22  "threaded I/O.");
-
23 DEFINE_uint64(io_block_size,
-
24  2ULL << 20,
-
25  "Size of the block size used for threaded I/O, in bytes.");
-
26 
-
27 // Needed for Windows weirdness which somewhere defines CopyFile as CopyFileW.
-
28 #ifdef CopyFile
-
29 #undef CopyFile
-
30 #endif // CopyFile
-
31 
-
32 namespace shaka {
-
33 namespace media {
-
34 
-
35 const char* kLocalFilePrefix = "file://";
-
36 const char* kUdpFilePrefix = "udp://";
-
37 const char* kMemoryFilePrefix = "memory://";
-
38 
-
39 namespace {
-
40 
-
41 typedef File* (*FileFactoryFunction)(const char* file_name, const char* mode);
-
42 typedef bool (*FileDeleteFunction)(const char* file_name);
-
43 
-
44 struct SupportedTypeInfo {
-
45  const char* type;
-
46  size_t type_length;
-
47  const FileFactoryFunction factory_function;
-
48  const FileDeleteFunction delete_function;
-
49 };
-
50 
-
51 File* CreateLocalFile(const char* file_name, const char* mode) {
-
52  return new LocalFile(file_name, mode);
-
53 }
-
54 
-
55 bool DeleteLocalFile(const char* file_name) {
-
56  return LocalFile::Delete(file_name);
-
57 }
-
58 
-
59 File* CreateUdpFile(const char* file_name, const char* mode) {
-
60  if (base::strcasecmp(mode, "r")) {
-
61  NOTIMPLEMENTED() << "UdpFile only supports read (receive) mode.";
-
62  return NULL;
-
63  }
-
64  return new UdpFile(file_name);
-
65 }
-
66 
-
67 File* CreateMemoryFile(const char* file_name, const char* mode) {
-
68  return new MemoryFile(file_name, mode);
-
69 }
-
70 
-
71 bool DeleteMemoryFile(const char* file_name) {
-
72  MemoryFile::Delete(file_name);
-
73  return true;
-
74 }
-
75 
-
76 static const SupportedTypeInfo kSupportedTypeInfo[] = {
-
77  {
-
78  kLocalFilePrefix,
-
79  strlen(kLocalFilePrefix),
-
80  &CreateLocalFile,
-
81  &DeleteLocalFile
-
82  },
-
83  {
-
84  kUdpFilePrefix,
-
85  strlen(kUdpFilePrefix),
-
86  &CreateUdpFile,
-
87  NULL
-
88  },
-
89  {
-
90  kMemoryFilePrefix,
-
91  strlen(kMemoryFilePrefix),
-
92  &CreateMemoryFile,
-
93  &DeleteMemoryFile
-
94  },
-
95 };
-
96 
-
97 } // namespace
-
98 
-
99 File* File::Create(const char* file_name, const char* mode) {
-
100  std::unique_ptr<File, FileCloser> internal_file(
-
101  CreateInternalFile(file_name, mode));
-
102 
-
103  if (!strncmp(file_name, kMemoryFilePrefix, strlen(kMemoryFilePrefix))) {
-
104  // Disable caching for memory files.
-
105  return internal_file.release();
-
106  }
-
107 
-
108  if (FLAGS_io_cache_size) {
-
109  // Enable threaded I/O for "r", "w", and "a" modes only.
-
110  if (!strcmp(mode, "r")) {
-
111  return new ThreadedIoFile(std::move(internal_file),
-
112  ThreadedIoFile::kInputMode, FLAGS_io_cache_size,
-
113  FLAGS_io_block_size);
-
114  } else if (!strcmp(mode, "w") || !strcmp(mode, "a")) {
-
115  return new ThreadedIoFile(std::move(internal_file),
-
116  ThreadedIoFile::kOutputMode,
-
117  FLAGS_io_cache_size, FLAGS_io_block_size);
-
118  }
-
119  }
-
120 
-
121  // Threaded I/O is disabled.
-
122  DLOG(WARNING) << "Threaded I/O is disabled. Performance may be decreased.";
-
123  return internal_file.release();
-
124 }
-
125 
-
126 File* File::CreateInternalFile(const char* file_name, const char* mode) {
-
127  std::unique_ptr<File, FileCloser> internal_file;
-
128  for (size_t i = 0; i < arraysize(kSupportedTypeInfo); ++i) {
-
129  const SupportedTypeInfo& type_info = kSupportedTypeInfo[i];
-
130  if (strncmp(type_info.type, file_name, type_info.type_length) == 0) {
-
131  internal_file.reset(type_info.factory_function(
-
132  file_name + type_info.type_length, mode));
-
133  }
-
134  }
-
135  // Otherwise we assume it is a local file
-
136  if (!internal_file)
-
137  internal_file.reset(CreateLocalFile(file_name, mode));
-
138 
-
139  return internal_file.release();
-
140 }
-
141 
-
142 File* File::Open(const char* file_name, const char* mode) {
-
143  File* file = File::Create(file_name, mode);
-
144  if (!file)
-
145  return NULL;
-
146  if (!file->Open()) {
-
147  delete file;
-
148  return NULL;
-
149  }
-
150  return file;
-
151 }
-
152 
-
153 File* File::OpenWithNoBuffering(const char* file_name, const char* mode) {
-
154  File* file = File::CreateInternalFile(file_name, mode);
-
155  if (!file)
-
156  return NULL;
-
157  if (!file->Open()) {
-
158  delete file;
-
159  return NULL;
-
160  }
-
161  return file;
-
162 }
-
163 
-
164 bool File::Delete(const char* file_name) {
-
165  for (size_t i = 0; i < arraysize(kSupportedTypeInfo); ++i) {
-
166  const SupportedTypeInfo& type_info = kSupportedTypeInfo[i];
-
167  if (strncmp(type_info.type, file_name, type_info.type_length) == 0) {
-
168  return type_info.delete_function ?
-
169  type_info.delete_function(file_name + type_info.type_length) :
-
170  false;
-
171  }
-
172  }
-
173  // Otherwise we assume it is a local file
-
174  return DeleteLocalFile(file_name);
-
175 }
-
176 
-
177 int64_t File::GetFileSize(const char* file_name) {
-
178  File* file = File::Open(file_name, "r");
-
179  if (!file)
-
180  return -1;
-
181  int64_t res = file->Size();
-
182  file->Close();
-
183  return res;
-
184 }
-
185 
-
186 bool File::ReadFileToString(const char* file_name, std::string* contents) {
-
187  DCHECK(contents);
-
188 
-
189  File* file = File::Open(file_name, "r");
-
190  if (!file)
-
191  return false;
-
192 
-
193  const size_t kBufferSize = 0x40000; // 256KB.
-
194  std::unique_ptr<char[]> buf(new char[kBufferSize]);
-
195 
-
196  int64_t len;
-
197  while ((len = file->Read(buf.get(), kBufferSize)) > 0)
-
198  contents->append(buf.get(), len);
-
199 
-
200  file->Close();
-
201  return len == 0;
-
202 }
-
203 
-
204 bool File::Copy(const char* from_file_name, const char* to_file_name) {
-
205  std::string content;
-
206  if (!ReadFileToString(from_file_name, &content)) {
-
207  LOG(ERROR) << "Failed to open file " << from_file_name;
-
208  return false;
-
209  }
-
210 
-
211  std::unique_ptr<File, FileCloser> output_file(File::Open(to_file_name, "w"));
-
212  if (!output_file) {
-
213  LOG(ERROR) << "Failed to write to " << to_file_name;
-
214  return false;
-
215  }
-
216 
-
217  uint64_t bytes_left = content.size();
-
218  uint64_t total_bytes_written = 0;
-
219  const char* content_cstr = content.c_str();
-
220  while (bytes_left > total_bytes_written) {
-
221  const int64_t bytes_written =
-
222  output_file->Write(content_cstr + total_bytes_written, bytes_left);
-
223  if (bytes_written < 0) {
-
224  LOG(ERROR) << "Failure while writing to " << to_file_name;
-
225  return false;
-
226  }
-
227 
-
228  total_bytes_written += bytes_written;
-
229  }
-
230  return true;
-
231 }
-
232 
-
233 int64_t File::CopyFile(File* source, File* destination) {
-
234  return CopyFile(source, destination, kWholeFile);
-
235 }
-
236 
-
237 int64_t File::CopyFile(File* source, File* destination, int64_t max_copy) {
-
238  DCHECK(source);
-
239  DCHECK(destination);
-
240  if (max_copy < 0)
-
241  max_copy = std::numeric_limits<int64_t>::max();
-
242 
-
243  const int64_t kBufferSize = 0x40000; // 256KB.
-
244  std::unique_ptr<uint8_t[]> buffer(new uint8_t[kBufferSize]);
-
245  int64_t bytes_copied = 0;
-
246  while (bytes_copied < max_copy) {
-
247  const int64_t size = std::min(kBufferSize, max_copy - bytes_copied);
-
248  const int64_t bytes_read = source->Read(buffer.get(), size);
-
249  if (bytes_read < 0)
-
250  return bytes_read;
-
251  if (bytes_read == 0)
-
252  break;
-
253 
-
254  int64_t total_bytes_written = 0;
-
255  while (total_bytes_written < bytes_read) {
-
256  const int64_t bytes_written = destination->Write(
-
257  buffer.get() + total_bytes_written, bytes_read - total_bytes_written);
-
258  if (bytes_written < 0)
-
259  return bytes_written;
-
260 
-
261  total_bytes_written += bytes_written;
-
262  }
-
263 
-
264  DCHECK_EQ(total_bytes_written, bytes_read);
-
265  bytes_copied += bytes_read;
-
266  }
-
267 
-
268  return bytes_copied;
-
269 }
-
270 
-
271 } // namespace media
-
272 } // namespace shaka
+
13 #include "packager/media/file/local_file.h"
+
14 #include "packager/media/file/memory_file.h"
+
15 #include "packager/media/file/threaded_io_file.h"
+
16 #include "packager/media/file/udp_file.h"
+
17 
+
18 DEFINE_uint64(io_cache_size,
+
19  32ULL << 20,
+
20  "Size of the threaded I/O cache, in bytes. Specify 0 to disable "
+
21  "threaded I/O.");
+
22 DEFINE_uint64(io_block_size,
+
23  2ULL << 20,
+
24  "Size of the block size used for threaded I/O, in bytes.");
+
25 
+
26 // Needed for Windows weirdness which somewhere defines CopyFile as CopyFileW.
+
27 #ifdef CopyFile
+
28 #undef CopyFile
+
29 #endif // CopyFile
+
30 
+
31 namespace shaka {
+
32 namespace media {
+
33 
+
34 const char* kLocalFilePrefix = "file://";
+
35 const char* kUdpFilePrefix = "udp://";
+
36 const char* kMemoryFilePrefix = "memory://";
+
37 
+
38 namespace {
+
39 
+
40 typedef File* (*FileFactoryFunction)(const char* file_name, const char* mode);
+
41 typedef bool (*FileDeleteFunction)(const char* file_name);
+
42 
+
43 struct SupportedTypeInfo {
+
44  const char* type;
+
45  size_t type_length;
+
46  const FileFactoryFunction factory_function;
+
47  const FileDeleteFunction delete_function;
+
48 };
+
49 
+
50 File* CreateLocalFile(const char* file_name, const char* mode) {
+
51  return new LocalFile(file_name, mode);
+
52 }
+
53 
+
54 bool DeleteLocalFile(const char* file_name) {
+
55  return LocalFile::Delete(file_name);
+
56 }
+
57 
+
58 File* CreateUdpFile(const char* file_name, const char* mode) {
+
59  if (strcmp(mode, "r")) {
+
60  NOTIMPLEMENTED() << "UdpFile only supports read (receive) mode.";
+
61  return NULL;
+
62  }
+
63  return new UdpFile(file_name);
+
64 }
+
65 
+
66 File* CreateMemoryFile(const char* file_name, const char* mode) {
+
67  return new MemoryFile(file_name, mode);
+
68 }
+
69 
+
70 bool DeleteMemoryFile(const char* file_name) {
+
71  MemoryFile::Delete(file_name);
+
72  return true;
+
73 }
+
74 
+
75 static const SupportedTypeInfo kSupportedTypeInfo[] = {
+
76  {
+
77  kLocalFilePrefix,
+
78  strlen(kLocalFilePrefix),
+
79  &CreateLocalFile,
+
80  &DeleteLocalFile
+
81  },
+
82  {
+
83  kUdpFilePrefix,
+
84  strlen(kUdpFilePrefix),
+
85  &CreateUdpFile,
+
86  NULL
+
87  },
+
88  {
+
89  kMemoryFilePrefix,
+
90  strlen(kMemoryFilePrefix),
+
91  &CreateMemoryFile,
+
92  &DeleteMemoryFile
+
93  },
+
94 };
+
95 
+
96 } // namespace
+
97 
+
98 File* File::Create(const char* file_name, const char* mode) {
+
99  std::unique_ptr<File, FileCloser> internal_file(
+
100  CreateInternalFile(file_name, mode));
+
101 
+
102  if (!strncmp(file_name, kMemoryFilePrefix, strlen(kMemoryFilePrefix))) {
+
103  // Disable caching for memory files.
+
104  return internal_file.release();
+
105  }
+
106 
+
107  if (FLAGS_io_cache_size) {
+
108  // Enable threaded I/O for "r", "w", and "a" modes only.
+
109  if (!strcmp(mode, "r")) {
+
110  return new ThreadedIoFile(std::move(internal_file),
+
111  ThreadedIoFile::kInputMode, FLAGS_io_cache_size,
+
112  FLAGS_io_block_size);
+
113  } else if (!strcmp(mode, "w") || !strcmp(mode, "a")) {
+
114  return new ThreadedIoFile(std::move(internal_file),
+
115  ThreadedIoFile::kOutputMode,
+
116  FLAGS_io_cache_size, FLAGS_io_block_size);
+
117  }
+
118  }
+
119 
+
120  // Threaded I/O is disabled.
+
121  DLOG(WARNING) << "Threaded I/O is disabled. Performance may be decreased.";
+
122  return internal_file.release();
+
123 }
+
124 
+
125 File* File::CreateInternalFile(const char* file_name, const char* mode) {
+
126  std::unique_ptr<File, FileCloser> internal_file;
+
127  for (size_t i = 0; i < arraysize(kSupportedTypeInfo); ++i) {
+
128  const SupportedTypeInfo& type_info = kSupportedTypeInfo[i];
+
129  if (strncmp(type_info.type, file_name, type_info.type_length) == 0) {
+
130  internal_file.reset(type_info.factory_function(
+
131  file_name + type_info.type_length, mode));
+
132  }
+
133  }
+
134  // Otherwise we assume it is a local file
+
135  if (!internal_file)
+
136  internal_file.reset(CreateLocalFile(file_name, mode));
+
137 
+
138  return internal_file.release();
+
139 }
+
140 
+
141 File* File::Open(const char* file_name, const char* mode) {
+
142  File* file = File::Create(file_name, mode);
+
143  if (!file)
+
144  return NULL;
+
145  if (!file->Open()) {
+
146  delete file;
+
147  return NULL;
+
148  }
+
149  return file;
+
150 }
+
151 
+
152 File* File::OpenWithNoBuffering(const char* file_name, const char* mode) {
+
153  File* file = File::CreateInternalFile(file_name, mode);
+
154  if (!file)
+
155  return NULL;
+
156  if (!file->Open()) {
+
157  delete file;
+
158  return NULL;
+
159  }
+
160  return file;
+
161 }
+
162 
+
163 bool File::Delete(const char* file_name) {
+
164  for (size_t i = 0; i < arraysize(kSupportedTypeInfo); ++i) {
+
165  const SupportedTypeInfo& type_info = kSupportedTypeInfo[i];
+
166  if (strncmp(type_info.type, file_name, type_info.type_length) == 0) {
+
167  return type_info.delete_function ?
+
168  type_info.delete_function(file_name + type_info.type_length) :
+
169  false;
+
170  }
+
171  }
+
172  // Otherwise we assume it is a local file
+
173  return DeleteLocalFile(file_name);
+
174 }
+
175 
+
176 int64_t File::GetFileSize(const char* file_name) {
+
177  File* file = File::Open(file_name, "r");
+
178  if (!file)
+
179  return -1;
+
180  int64_t res = file->Size();
+
181  file->Close();
+
182  return res;
+
183 }
+
184 
+
185 bool File::ReadFileToString(const char* file_name, std::string* contents) {
+
186  DCHECK(contents);
+
187 
+
188  File* file = File::Open(file_name, "r");
+
189  if (!file)
+
190  return false;
+
191 
+
192  const size_t kBufferSize = 0x40000; // 256KB.
+
193  std::unique_ptr<char[]> buf(new char[kBufferSize]);
+
194 
+
195  int64_t len;
+
196  while ((len = file->Read(buf.get(), kBufferSize)) > 0)
+
197  contents->append(buf.get(), len);
+
198 
+
199  file->Close();
+
200  return len == 0;
+
201 }
+
202 
+
203 bool File::Copy(const char* from_file_name, const char* to_file_name) {
+
204  std::string content;
+
205  if (!ReadFileToString(from_file_name, &content)) {
+
206  LOG(ERROR) << "Failed to open file " << from_file_name;
+
207  return false;
+
208  }
+
209 
+
210  std::unique_ptr<File, FileCloser> output_file(File::Open(to_file_name, "w"));
+
211  if (!output_file) {
+
212  LOG(ERROR) << "Failed to write to " << to_file_name;
+
213  return false;
+
214  }
+
215 
+
216  uint64_t bytes_left = content.size();
+
217  uint64_t total_bytes_written = 0;
+
218  const char* content_cstr = content.c_str();
+
219  while (bytes_left > total_bytes_written) {
+
220  const int64_t bytes_written =
+
221  output_file->Write(content_cstr + total_bytes_written, bytes_left);
+
222  if (bytes_written < 0) {
+
223  LOG(ERROR) << "Failure while writing to " << to_file_name;
+
224  return false;
+
225  }
+
226 
+
227  total_bytes_written += bytes_written;
+
228  }
+
229  return true;
+
230 }
+
231 
+
232 int64_t File::CopyFile(File* source, File* destination) {
+
233  return CopyFile(source, destination, kWholeFile);
+
234 }
+
235 
+
236 int64_t File::CopyFile(File* source, File* destination, int64_t max_copy) {
+
237  DCHECK(source);
+
238  DCHECK(destination);
+
239  if (max_copy < 0)
+
240  max_copy = std::numeric_limits<int64_t>::max();
+
241 
+
242  const int64_t kBufferSize = 0x40000; // 256KB.
+
243  std::unique_ptr<uint8_t[]> buffer(new uint8_t[kBufferSize]);
+
244  int64_t bytes_copied = 0;
+
245  while (bytes_copied < max_copy) {
+
246  const int64_t size = std::min(kBufferSize, max_copy - bytes_copied);
+
247  const int64_t bytes_read = source->Read(buffer.get(), size);
+
248  if (bytes_read < 0)
+
249  return bytes_read;
+
250  if (bytes_read == 0)
+
251  break;
+
252 
+
253  int64_t total_bytes_written = 0;
+
254  while (total_bytes_written < bytes_read) {
+
255  const int64_t bytes_written = destination->Write(
+
256  buffer.get() + total_bytes_written, bytes_read - total_bytes_written);
+
257  if (bytes_written < 0)
+
258  return bytes_written;
+
259 
+
260  total_bytes_written += bytes_written;
+
261  }
+
262 
+
263  DCHECK_EQ(total_bytes_written, bytes_read);
+
264  bytes_copied += bytes_read;
+
265  }
+
266 
+
267  return bytes_copied;
+
268 }
+
269 
+
270 } // namespace media
+
271 } // namespace shaka
virtual bool Open()=0
Internal open. Should not be used directly.
-
static File * OpenWithNoBuffering(const char *file_name, const char *mode)
Definition: file.cc:153
-
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:204
+
static File * OpenWithNoBuffering(const char *file_name, const char *mode)
Definition: file.cc:152
+
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:203
virtual int64_t Size()=0
virtual bool Close()=0
virtual int64_t Write(const void *buffer, uint64_t length)=0
Define an abstract file interface.
Definition: file.h:24
-
static File * Open(const char *file_name, const char *mode)
Definition: file.cc:142
+
static File * Open(const char *file_name, const char *mode)
Definition: file.cc:141
static void Delete(const std::string &file_name)
Definition: memory_file.cc:134
virtual int64_t Read(void *buffer, uint64_t length)=0
-
static int64_t CopyFile(File *source, File *destination)
Definition: file.cc:233
-
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:177
-
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:186
+
static int64_t CopyFile(File *source, File *destination)
Definition: file.cc:232
+
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:176
+
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:185
static bool Delete(const char *file_name)
Definition: local_file.cc:104
-
static bool Delete(const char *file_name)
Definition: file.cc:164
+
static bool Delete(const char *file_name)
Definition: file.cc:163
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 4088b6cda4..9df36d1f66 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 f76561aca3..9024aa3af4 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 21f2da39b4..dc48f292b7 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d17/es__parser__h264_8cc_source.html b/docs/d6/d17/es__parser__h264_8cc_source.html index 87e86f653c..d0b7ae8a2d 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -258,7 +258,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 881a0b8d29..685713f4f8 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 ced849ae4a..d265041c81 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 cb56d5b1fa..3ed0c9bc52 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 59e613d185..6819b9be16 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 9bfd156f05..66b63fb6fc 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 74a5fb6d4a..3f0d568631 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 f12d7d2eb1..a2787aa355 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 5a34149e5d..d457e6d69c 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -475,13 +475,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Status AddSample(scoped_refptr< MediaSample > sample) override
Status InitializeFragment(int64_t first_sample_dts) override
-
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:47
+
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:46
virtual void OnEncryptionStart()=0
void FinalizeFragment() override
Finalize and optimize the fragment.
-
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:92
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:91
-
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:111
+
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:110
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
@@ -495,11 +495,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, std::unique_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *listener)
-
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:102
+
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:101
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 34f86a32bf..ffcf1b341a 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d55/aes__cryptor_8cc_source.html b/docs/d6/d55/aes__cryptor_8cc_source.html index 39576d8c88..cd57e4884e 100644 --- a/docs/d6/d55/aes__cryptor_8cc_source.html +++ b/docs/d6/d55/aes__cryptor_8cc_source.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html b/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html index 6b6c59223a..93f1e56e66 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 a9333b6bee..c6f93ce8f9 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 99f7cf0754..47527bb531 100644 --- a/docs/d6/d60/classshaka_1_1media_1_1VPCodecConfigurationRecord-members.html +++ b/docs/d6/d60/classshaka_1_1media_1_1VPCodecConfigurationRecord-members.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d6c/h26x__bit__reader_8cc_source.html b/docs/d6/d6c/h26x__bit__reader_8cc_source.html index a4f94ee952..469579035c 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 0f7e43c8e8..fba818438c 100644 --- a/docs/d6/d6e/ts__section__pes_8cc_source.html +++ b/docs/d6/d6e/ts__section__pes_8cc_source.html @@ -405,7 +405,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d71/scoped__xml__ptr_8h_source.html b/docs/d6/d71/scoped__xml__ptr_8h_source.html index 5818a226aa..352ff0cf27 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 e732efa783..c068194991 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html b/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html index ab9cd5da40..8ea18e97c5 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 3f704ae35b..877268718d 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 c4ad78f8bb..9a9331edb0 100644 --- a/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html +++ b/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d86/bandwidth__estimator_8cc_source.html b/docs/d6/d86/bandwidth__estimator_8cc_source.html index 7ba4a07c9c..d633a5caa1 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 6022a83ba8..516e678b00 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 e0d30c62c6..cc7c0f481d 100644 --- a/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html +++ b/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9b/h264__parser_8h_source.html b/docs/d6/d9b/h264__parser_8h_source.html index cd49917023..f74f5911d3 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -439,7 +439,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9f/hls__flags_8cc_source.html b/docs/d6/d9f/hls__flags_8cc_source.html index 9b3808a90e..a8fa0f41a7 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 e4f5ecb790..c2a07c8b8c 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 b666e679c7..f4b7be962e 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -534,7 +534,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 d302856c26..4519af1178 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 75da80f897..3827a0d3a5 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 13a97b8498..26ab0cf53e 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 aec7cee0d2..66b725ebf2 100644 --- a/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html +++ b/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html b/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html index ed9a20c59d..31247d55fd 100644 --- a/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html +++ b/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html index 2125d3a3f6..665f0ab249 100644 --- a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html +++ b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html @@ -429,7 +429,7 @@ void set_language (con diff --git a/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html index c1a4cfcd9c..0bc76b2b24 100644 --- a/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html +++ b/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html b/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html index 201d3722d1..fefe21e2d1 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 5b810d3e42..88e3aae770 100644 --- a/docs/d6/dc8/mkv__writer_8cc_source.html +++ b/docs/d6/dc8/mkv__writer_8cc_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
int64_t WriteFromFile(File *source)
Definition: mkv_writer.cc:56
void ElementStartNotify(mkvmuxer::uint64 element_id, mkvmuxer::int64 position) override
Definition: mkv_writer.cc:90
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
-
static int64_t CopyFile(File *source, File *destination)
Definition: file.cc:233
+
static int64_t CopyFile(File *source, File *destination)
Definition: file.cc:232
bool Seekable() const override
Definition: mkv_writer.cc:86
Status Open(const std::string &name)
Definition: mkv_writer.cc:16
@@ -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 971a2e0805..ca74466862 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 b45beedf4f..10cdeb7bc0 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 54a44ede39..271dc543c9 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 ca7666a599..2483007fee 100644 --- a/docs/d6/dcf/classshaka_1_1media_1_1mp2t_1_1EsParserAdts.html +++ b/docs/d6/dcf/classshaka_1_1media_1_1mp2t_1_1EsParserAdts.html @@ -148,7 +148,7 @@ const scoped_refptr
diff --git a/docs/d6/dd0/structshaka_1_1media_1_1H264SEIMessage.html b/docs/d6/dd0/structshaka_1_1media_1_1H264SEIMessage.html index 4fe269bd86..f336b989fb 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 5d86a43a92..d84496642c 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 8ee26509ae..85587c3a03 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 5b2b98aa5e..a31f1b426b 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 d2e0ce9c79..8fd8c970c8 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 e898afb44a..733b303174 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 daa3684815..e385a8b995 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -302,7 +302,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
void SetTsWriterFileOpenedForTesting(bool value)
Only for testing.
void InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)
Only for testing.
-
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:177
+
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:176
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
@@ -313,7 +313,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/ded/ts__packet_8h_source.html b/docs/d6/ded/ts__packet_8h_source.html index da8b119d95..256e8816ae 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 544ca35e67..08a84eaf39 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 9f642281a6..cd6686d29e 100644 --- a/docs/d6/dff/classshaka_1_1media_1_1Nalu.html +++ b/docs/d6/dff/classshaka_1_1media_1_1Nalu.html @@ -240,7 +240,7 @@ bool can_start_access_unit diff --git a/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html b/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html index e9af968d14..3783e98de1 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 f257f378d5..c2a293ad89 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 7663708d0d..169c5a89dc 100644 --- a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html +++ b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d12/media__parser_8h_source.html b/docs/d7/d12/media__parser_8h_source.html index 0ecae8719f..ee28d304cb 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 96a37678e9..6a188d9331 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 d48cc60122..ec1d43997e 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 846b516567..56eccfd216 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 940db3772e..5cfbe6219c 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 0ae99a2c4c..eee063e2d7 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 b9715a412e..3edffe2d30 100644 --- a/docs/d7/d29/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html +++ b/docs/d7/d29/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d36/classshaka_1_1media_1_1ContentEncoding-members.html b/docs/d7/d36/classshaka_1_1media_1_1ContentEncoding-members.html index 58b9415e92..9e1e4be3d7 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 c39dcdfec6..9bcddb3b60 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 fe775b6f3c..9d54ffd2bb 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 54f0368003..0229a3fc15 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 67bb72e38b..7ae6c5e1e6 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 8aab37acca..013991aae4 100644 --- a/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html +++ b/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d59/classshaka_1_1media_1_1DecryptorSource.html b/docs/d7/d59/classshaka_1_1media_1_1DecryptorSource.html index 6f4cbcb38c..f91b58388d 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 49971a3728..4979cd08c4 100644 --- a/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html +++ b/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html @@ -411,7 +411,7 @@ class base::RefCountedThre diff --git a/docs/d7/d75/structshaka_1_1media_1_1mp4_1_1MediaHeader-members.html b/docs/d7/d75/structshaka_1_1media_1_1mp4_1_1MediaHeader-members.html index deb9102604..1490d54ac1 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 342f6b36d4..18c0d0b572 100644 --- a/docs/d7/d78/structshaka_1_1media_1_1H264SEIMessage-members.html +++ b/docs/d7/d78/structshaka_1_1media_1_1H264SEIMessage-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html b/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html index d611e3d8b3..2920139f1f 100644 --- a/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html +++ b/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html @@ -463,7 +463,7 @@ Additional Inherited Members diff --git a/docs/d7/d7c/vlog__flags_8h_source.html b/docs/d7/d7c/vlog__flags_8h_source.html index a024b17ed8..cb2114e7b3 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 5a70c35078..ec18e79ea9 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -162,7 +162,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 7cd6a03d88..3fb7d4ab54 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 6234d275b1..2cdb78e917 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 b931f41982..b550fc34fa 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 55483b2598..c4e3f5201d 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 4d40a8a084..82e8659dd4 100644 --- a/docs/d7/db0/mpd__writer_8h_source.html +++ b/docs/d7/db0/mpd__writer_8h_source.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html index aaf38be21e..fefa6d2bcc 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 cf10df86ec..b06ce7ad31 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 7d5ce15dd1..8cfb61f06c 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 22137b95fe..743e1608bb 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 20ac031f26..6231045099 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 93b13c1ddd..27a9cb6b98 100644 --- a/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html +++ b/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html @@ -285,7 +285,7 @@ track_id, const scoped_refptr
diff --git a/docs/d7/dd6/key__source_8cc_source.html b/docs/d7/dd6/key__source_8cc_source.html index a3a8765e58..a8837d1ef7 100644 --- a/docs/d7/dd6/key__source_8cc_source.html +++ b/docs/d7/dd6/key__source_8cc_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dda/classshaka_1_1media_1_1ByteQueue.html b/docs/d7/dda/classshaka_1_1media_1_1ByteQueue.html index d96211c94c..d54e065e8d 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 446848f691..4d9569c06d 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 9766d5eff6..ee6bf6bc6d 100644 --- a/docs/d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html +++ b/docs/d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html @@ -311,7 +311,7 @@ KeyFetcher implementation overrides. diff --git a/docs/d7/de0/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry.html b/docs/d7/de0/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry.html index 2104d85ed9..72c1cfb70c 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 faaecdeccd..b6b959fbef 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 e9046ed8a6..89b2c44bfb 100644 --- a/docs/d7/dee/mpd__generator_8cc_source.html +++ b/docs/d7/dee/mpd__generator_8cc_source.html @@ -148,86 +148,87 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
59 ExitStatus RunMpdGenerator() {
60  DCHECK_EQ(CheckRequiredFlags(), kSuccess);
61  std::vector<std::string> base_urls;
-
62  std::vector<std::string> input_files;
-
63  typedef std::vector<std::string>::const_iterator Iterator;
-
64 
-
65  base::SplitString(FLAGS_input, ',', &input_files);
+
62  typedef std::vector<std::string>::const_iterator Iterator;
+
63 
+
64  std::vector<std::string> input_files = base::SplitString(
+
65  FLAGS_input, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
66 
67  if (!FLAGS_base_urls.empty()) {
-
68  base::SplitString(FLAGS_base_urls, ',', &base_urls);
-
69  }
-
70 
-
71  MpdWriter mpd_writer;
-
72  for (Iterator it = base_urls.begin(); it != base_urls.end(); ++it)
-
73  mpd_writer.AddBaseUrl(*it);
-
74 
-
75  for (Iterator it = input_files.begin(); it != input_files.end(); ++it) {
-
76  if (!mpd_writer.AddFile(it->c_str(), FLAGS_output)) {
-
77  LOG(WARNING) << "MpdWriter failed to read " << *it << ", skipping.";
-
78  }
-
79  }
-
80 
-
81  if (!mpd_writer.WriteMpdToFile(FLAGS_output.c_str())) {
-
82  LOG(ERROR) << "Failed to write MPD to " << FLAGS_output;
-
83  return kFailedToWriteMpdToFileError;
-
84  }
-
85 
-
86  return kSuccess;
-
87 }
-
88 
-
89 int MpdMain(int argc, char** argv) {
-
90  base::AtExitManager exit;
-
91  // Needed to enable VLOG/DVLOG through --vmodule or --v.
-
92  base::CommandLine::Init(argc, argv);
-
93  CHECK(logging::InitLogging(logging::LoggingSettings()));
-
94 
-
95  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
-
96  google::ParseCommandLineFlags(&argc, &argv, true);
-
97 
-
98  ExitStatus status = CheckRequiredFlags();
-
99  if (status != kSuccess) {
-
100  const std::string version_string = base::StringPrintf(
-
101  "mpd_generator version %s", GetPackagerVersion().c_str());
-
102  google::ShowUsageWithFlags(version_string.c_str());
-
103  return status;
-
104  }
-
105 
-
106  return RunMpdGenerator();
-
107 }
-
108 
-
109 } // namespace
-
110 } // namespace shaka
-
111 
-
112 #if defined(OS_WIN)
-
113 // Windows wmain, which converts wide character arguments to UTF-8.
-
114 int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
-
115  std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
-
116  new char*[argc], [argc](char** utf8_args) {
-
117  // TODO(tinskip): This leaks, but if this code is enabled, it crashes.
-
118  // Figure out why. I suspect gflags does something funny with the
-
119  // argument array.
-
120  // for (int idx = 0; idx < argc; ++idx)
-
121  // delete[] utf8_args[idx];
-
122  delete[] utf8_args;
-
123  });
-
124  std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
-
125  for (int idx = 0; idx < argc; ++idx) {
-
126  std::string utf8_arg(converter.to_bytes(argv[idx]));
-
127  utf8_arg += '\0';
-
128  utf8_argv[idx] = new char[utf8_arg.size()];
-
129  memcpy(utf8_argv[idx], &utf8_arg[0], utf8_arg.size());
-
130  }
-
131  return shaka::MpdMain(argc, utf8_argv.get());
-
132 }
-
133 #else
-
134 int main(int argc, char** argv) {
-
135  return shaka::MpdMain(argc, argv);
-
136 }
-
137 #endif // !defined(OS_WIN)
+
68  base_urls = base::SplitString(FLAGS_base_urls, ",", base::KEEP_WHITESPACE,
+
69  base::SPLIT_WANT_ALL);
+
70  }
+
71 
+
72  MpdWriter mpd_writer;
+
73  for (Iterator it = base_urls.begin(); it != base_urls.end(); ++it)
+
74  mpd_writer.AddBaseUrl(*it);
+
75 
+
76  for (Iterator it = input_files.begin(); it != input_files.end(); ++it) {
+
77  if (!mpd_writer.AddFile(it->c_str(), FLAGS_output)) {
+
78  LOG(WARNING) << "MpdWriter failed to read " << *it << ", skipping.";
+
79  }
+
80  }
+
81 
+
82  if (!mpd_writer.WriteMpdToFile(FLAGS_output.c_str())) {
+
83  LOG(ERROR) << "Failed to write MPD to " << FLAGS_output;
+
84  return kFailedToWriteMpdToFileError;
+
85  }
+
86 
+
87  return kSuccess;
+
88 }
+
89 
+
90 int MpdMain(int argc, char** argv) {
+
91  base::AtExitManager exit;
+
92  // Needed to enable VLOG/DVLOG through --vmodule or --v.
+
93  base::CommandLine::Init(argc, argv);
+
94  CHECK(logging::InitLogging(logging::LoggingSettings()));
+
95 
+
96  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
+
97  google::ParseCommandLineFlags(&argc, &argv, true);
+
98 
+
99  ExitStatus status = CheckRequiredFlags();
+
100  if (status != kSuccess) {
+
101  const std::string version_string = base::StringPrintf(
+
102  "mpd_generator version %s", GetPackagerVersion().c_str());
+
103  google::ShowUsageWithFlags(version_string.c_str());
+
104  return status;
+
105  }
+
106 
+
107  return RunMpdGenerator();
+
108 }
+
109 
+
110 } // namespace
+
111 } // namespace shaka
+
112 
+
113 #if defined(OS_WIN)
+
114 // Windows wmain, which converts wide character arguments to UTF-8.
+
115 int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
+
116  std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
+
117  new char*[argc], [argc](char** utf8_args) {
+
118  // TODO(tinskip): This leaks, but if this code is enabled, it crashes.
+
119  // Figure out why. I suspect gflags does something funny with the
+
120  // argument array.
+
121  // for (int idx = 0; idx < argc; ++idx)
+
122  // delete[] utf8_args[idx];
+
123  delete[] utf8_args;
+
124  });
+
125  std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
+
126  for (int idx = 0; idx < argc; ++idx) {
+
127  std::string utf8_arg(converter.to_bytes(argv[idx]));
+
128  utf8_arg += '\0';
+
129  utf8_argv[idx] = new char[utf8_arg.size()];
+
130  memcpy(utf8_argv[idx], &utf8_arg[0], utf8_arg.size());
+
131  }
+
132  return shaka::MpdMain(argc, utf8_argv.get());
+
133 }
+
134 #else
+
135 int main(int argc, char** argv) {
+
136  return shaka::MpdMain(argc, argv);
+
137 }
+
138 #endif // !defined(OS_WIN)
diff --git a/docs/d7/def/mp4__media__parser_8cc_source.html b/docs/d7/def/mp4__media__parser_8cc_source.html index 052691966c..98a2ece881 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -839,7 +839,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
750 } // namespace shaka
void PeekAt(int64_t offset, const uint8_t **buf, int *size)
-
static File * OpenWithNoBuffering(const char *file_name, const char *mode)
Definition: file.cc:153
+
static File * OpenWithNoBuffering(const char *file_name, const char *mode)
Definition: file.cc:152
bool Flush() override WARN_UNUSED_RESULT
bool Trim(int64_t max_offset)
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
@@ -855,7 +855,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 2b941e35f0..302d0be2cc 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 fc74f6b543..cd90ed6679 100644 --- a/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html +++ b/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html @@ -171,7 +171,7 @@ static const size_t kUnitS diff --git a/docs/d8/d08/classshaka_1_1media_1_1WebMClusterParser-members.html b/docs/d8/d08/classshaka_1_1media_1_1WebMClusterParser-members.html index d13af62bd3..96866bfa72 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 727c944821..ee2a7fef17 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 942026d89d..154fd53a70 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 6ff2a52ba2..8b762409a0 100644 --- a/docs/d8/d0d/media__sample_8cc_source.html +++ b/docs/d8/d0d/media__sample_8cc_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1DecodingTime.html b/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1DecodingTime.html index 73a0d52475..82706388a7 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 25d6dec769..101d612f6f 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 a2bea659ac..25ab104789 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 9fca256cb3..2bd2e31057 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 1f3df96786..34a909d6b5 100644 --- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html +++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d19/bandwidth__estimator_8h_source.html b/docs/d8/d19/bandwidth__estimator_8h_source.html index c6f5bc1827..2b2375654f 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 7cfa2459fd..f689c106d0 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 3201cc7588..75fd3af3dd 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 12bf7c631a..67e680b54b 100644 --- a/docs/d8/d28/es__parser__h265_8h_source.html +++ b/docs/d8/d28/es__parser__h265_8h_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d33/webm__content__encodings__client_8h_source.html b/docs/d8/d33/webm__content__encodings__client_8h_source.html index 3e8e6fa1e1..ee6c803292 100644 --- a/docs/d8/d33/webm__content__encodings__client_8h_source.html +++ b/docs/d8/d33/webm__content__encodings__client_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html b/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html index d35654e284..646e39b8e7 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 c60771d0f1..bd2502442c 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 3da9482801..ff72661258 100644 --- a/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html +++ b/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html @@ -206,7 +206,7 @@ Additional Inherited Members diff --git a/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html b/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html index 7d595e4b50..211740eb44 100644 --- a/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html +++ b/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html @@ -225,7 +225,7 @@ const scoped_refptr< diff --git a/docs/d8/d6a/classshaka_1_1media_1_1ClusterBuilder-members.html b/docs/d8/d6a/classshaka_1_1media_1_1ClusterBuilder-members.html index 55e8d32aef..1a975d7ac2 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 6aa8a0661d..be5f9c5d8b 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 d4662cb8d3..526639b8f8 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 f8bfe00943..a8aabc7f6f 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 98911ded5f..6cea3e89e3 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 4178467d56..1c9df1abf2 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 82429af018..8759491831 100644 --- a/docs/d8/d8e/classshaka_1_1AdaptationSet.html +++ b/docs/d8/d8e/classshaka_1_1AdaptationSet.html @@ -582,7 +582,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/d8/d91/classshaka_1_1media_1_1AesCtrEncryptor-members.html b/docs/d8/d91/classshaka_1_1media_1_1AesCtrEncryptor-members.html index fbeac2b3ae..d7bd51964e 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 1234e27ad1..50c9d0b9ac 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 4215969cb1..33b0de2b57 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 59b57d560b..0928358621 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 11f6d3abe6..d9264b47fe 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 db5642b6c9..4e02744099 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 2001b453aa..110e619163 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 5a4680856c..1c87d776a2 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -125,183 +125,182 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
36  fragment_initialized_(false),
37  fragment_finalized_(false),
38  fragment_duration_(0),
-
39  presentation_start_time_(kInvalidTime),
-
40  earliest_presentation_time_(kInvalidTime),
-
41  first_sap_time_(kInvalidTime) {
-
42  DCHECK(traf);
-
43 }
-
44 
-
45 Fragmenter::~Fragmenter() {}
-
46 
-
47 Status Fragmenter::AddSample(scoped_refptr<MediaSample> sample) {
-
48  DCHECK(sample);
-
49  if (sample->duration() == 0) {
-
50  LOG(WARNING) << "Unexpected sample with zero duration @ dts "
-
51  << sample->dts();
-
52  }
-
53 
-
54  if (!fragment_initialized_) {
-
55  Status status = InitializeFragment(sample->dts());
-
56  if (!status.ok())
-
57  return status;
-
58  }
-
59 
-
60  if (sample->side_data_size() > 0)
-
61  LOG(WARNING) << "MP4 samples do not support side data. Side data ignored.";
-
62 
-
63  // Fill in sample parameters. It will be optimized later.
-
64  traf_->runs[0].sample_sizes.push_back(sample->data_size());
-
65  traf_->runs[0].sample_durations.push_back(sample->duration());
-
66  traf_->runs[0].sample_flags.push_back(
-
67  sample->is_key_frame() ? 0 : TrackFragmentHeader::kNonKeySampleMask);
-
68 
-
69  data_->AppendArray(sample->data(), sample->data_size());
-
70  fragment_duration_ += sample->duration();
-
71 
-
72  const int64_t pts = sample->pts();
-
73  const int64_t dts = sample->dts();
-
74 
-
75  const int64_t timestamp = use_decoding_timestamp_in_timeline_ ? dts : pts;
-
76  // Set |earliest_presentation_time_| to |timestamp| if |timestamp| is smaller
-
77  // or if it is not yet initialized (kInvalidTime > timestamp is always true).
-
78  if (earliest_presentation_time_ > timestamp)
-
79  earliest_presentation_time_ = timestamp;
-
80 
-
81  traf_->runs[0].sample_composition_time_offsets.push_back(pts - dts);
-
82  if (pts != dts)
-
83  traf_->runs[0].flags |= TrackFragmentRun::kSampleCompTimeOffsetsPresentMask;
-
84 
-
85  if (sample->is_key_frame()) {
-
86  if (first_sap_time_ == kInvalidTime)
-
87  first_sap_time_ = pts;
-
88  }
-
89  return Status::OK;
-
90 }
-
91 
-
92 Status Fragmenter::InitializeFragment(int64_t first_sample_dts) {
-
93  fragment_initialized_ = true;
-
94  fragment_finalized_ = false;
-
95  traf_->decode_time.decode_time = first_sample_dts;
-
96  traf_->runs.clear();
-
97  traf_->runs.resize(1);
-
98  traf_->runs[0].flags = TrackFragmentRun::kDataOffsetPresentMask;
-
99  traf_->sample_group_descriptions.clear();
-
100  traf_->sample_to_groups.clear();
-
101  traf_->header.sample_description_index = 1; // 1-based.
-
102  traf_->header.flags = TrackFragmentHeader::kDefaultBaseIsMoofMask |
-
103  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
-
104  fragment_duration_ = 0;
-
105  earliest_presentation_time_ = kInvalidTime;
-
106  first_sap_time_ = kInvalidTime;
-
107  data_.reset(new BufferWriter());
-
108  return Status::OK;
-
109 }
-
110 
- -
112  // Optimize trun box.
-
113  traf_->runs[0].sample_count = traf_->runs[0].sample_sizes.size();
-
114  if (OptimizeSampleEntries(&traf_->runs[0].sample_durations,
-
115  &traf_->header.default_sample_duration)) {
-
116  traf_->header.flags |=
-
117  TrackFragmentHeader::kDefaultSampleDurationPresentMask;
-
118  } else {
-
119  traf_->runs[0].flags |= TrackFragmentRun::kSampleDurationPresentMask;
-
120  }
-
121  if (OptimizeSampleEntries(&traf_->runs[0].sample_sizes,
-
122  &traf_->header.default_sample_size)) {
-
123  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleSizePresentMask;
-
124  } else {
-
125  traf_->runs[0].flags |= TrackFragmentRun::kSampleSizePresentMask;
-
126  }
-
127  if (OptimizeSampleEntries(&traf_->runs[0].sample_flags,
-
128  &traf_->header.default_sample_flags)) {
-
129  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleFlagsPresentMask;
-
130  } else {
-
131  traf_->runs[0].flags |= TrackFragmentRun::kSampleFlagsPresentMask;
-
132  }
-
133 
-
134  // Add SampleToGroup boxes. A SampleToGroup box with grouping type of 'roll'
-
135  // needs to be added if there is seek preroll, referencing sample group
-
136  // description in track level; Also need to add SampleToGroup boxes
-
137  // correponding to every SampleGroupDescription boxes, referencing sample
-
138  // group description in fragment level.
-
139  DCHECK_EQ(traf_->sample_to_groups.size(), 0u);
-
140  if (seek_preroll_ > 0) {
-
141  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
-
142  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
-
143  sample_to_group.grouping_type = FOURCC_roll;
-
144 
-
145  sample_to_group.entries.resize(1);
-
146  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
-
147  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
-
148  sample_to_group_entry.group_description_index =
-
149  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
-
150  }
-
151  for (const auto& sample_group_description :
-
152  traf_->sample_group_descriptions) {
-
153  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
-
154  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
-
155  sample_to_group.grouping_type = sample_group_description.grouping_type;
-
156 
-
157  sample_to_group.entries.resize(1);
-
158  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
-
159  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
-
160  sample_to_group_entry.group_description_index =
-
161  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
-
162  }
-
163 
-
164  fragment_finalized_ = true;
-
165  fragment_initialized_ = false;
-
166 }
-
167 
- -
169  // NOTE: Daisy chain is not supported currently.
-
170  reference->reference_type = false;
-
171  reference->subsegment_duration = fragment_duration_;
-
172  reference->starts_with_sap = StartsWithSAP();
-
173  if (kInvalidTime == first_sap_time_) {
-
174  reference->sap_type = SegmentReference::TypeUnknown;
-
175  reference->sap_delta_time = 0;
-
176  } else {
-
177  reference->sap_type = SegmentReference::Type1;
-
178  reference->sap_delta_time = first_sap_time_ - earliest_presentation_time_;
-
179  }
-
180  reference->earliest_presentation_time = earliest_presentation_time_;
-
181 }
-
182 
-
183 bool Fragmenter::StartsWithSAP() {
-
184  DCHECK(!traf_->runs.empty());
-
185  uint32_t start_sample_flag;
-
186  if (traf_->runs[0].flags & TrackFragmentRun::kSampleFlagsPresentMask) {
-
187  DCHECK(!traf_->runs[0].sample_flags.empty());
-
188  start_sample_flag = traf_->runs[0].sample_flags[0];
-
189  } else {
-
190  DCHECK(traf_->header.flags &
-
191  TrackFragmentHeader::kDefaultSampleFlagsPresentMask);
-
192  start_sample_flag = traf_->header.default_sample_flags;
-
193  }
-
194  return (start_sample_flag & TrackFragmentHeader::kNonKeySampleMask) == 0;
-
195 }
-
196 
-
197 } // namespace mp4
-
198 } // namespace media
-
199 } // namespace shaka
+
39  earliest_presentation_time_(kInvalidTime),
+
40  first_sap_time_(kInvalidTime) {
+
41  DCHECK(traf);
+
42 }
+
43 
+
44 Fragmenter::~Fragmenter() {}
+
45 
+
46 Status Fragmenter::AddSample(scoped_refptr<MediaSample> sample) {
+
47  DCHECK(sample);
+
48  if (sample->duration() == 0) {
+
49  LOG(WARNING) << "Unexpected sample with zero duration @ dts "
+
50  << sample->dts();
+
51  }
+
52 
+
53  if (!fragment_initialized_) {
+
54  Status status = InitializeFragment(sample->dts());
+
55  if (!status.ok())
+
56  return status;
+
57  }
+
58 
+
59  if (sample->side_data_size() > 0)
+
60  LOG(WARNING) << "MP4 samples do not support side data. Side data ignored.";
+
61 
+
62  // Fill in sample parameters. It will be optimized later.
+
63  traf_->runs[0].sample_sizes.push_back(sample->data_size());
+
64  traf_->runs[0].sample_durations.push_back(sample->duration());
+
65  traf_->runs[0].sample_flags.push_back(
+
66  sample->is_key_frame() ? 0 : TrackFragmentHeader::kNonKeySampleMask);
+
67 
+
68  data_->AppendArray(sample->data(), sample->data_size());
+
69  fragment_duration_ += sample->duration();
+
70 
+
71  const int64_t pts = sample->pts();
+
72  const int64_t dts = sample->dts();
+
73 
+
74  const int64_t timestamp = use_decoding_timestamp_in_timeline_ ? dts : pts;
+
75  // Set |earliest_presentation_time_| to |timestamp| if |timestamp| is smaller
+
76  // or if it is not yet initialized (kInvalidTime > timestamp is always true).
+
77  if (earliest_presentation_time_ > timestamp)
+
78  earliest_presentation_time_ = timestamp;
+
79 
+
80  traf_->runs[0].sample_composition_time_offsets.push_back(pts - dts);
+
81  if (pts != dts)
+
82  traf_->runs[0].flags |= TrackFragmentRun::kSampleCompTimeOffsetsPresentMask;
+
83 
+
84  if (sample->is_key_frame()) {
+
85  if (first_sap_time_ == kInvalidTime)
+
86  first_sap_time_ = pts;
+
87  }
+
88  return Status::OK;
+
89 }
+
90 
+
91 Status Fragmenter::InitializeFragment(int64_t first_sample_dts) {
+
92  fragment_initialized_ = true;
+
93  fragment_finalized_ = false;
+
94  traf_->decode_time.decode_time = first_sample_dts;
+
95  traf_->runs.clear();
+
96  traf_->runs.resize(1);
+
97  traf_->runs[0].flags = TrackFragmentRun::kDataOffsetPresentMask;
+
98  traf_->sample_group_descriptions.clear();
+
99  traf_->sample_to_groups.clear();
+
100  traf_->header.sample_description_index = 1; // 1-based.
+
101  traf_->header.flags = TrackFragmentHeader::kDefaultBaseIsMoofMask |
+
102  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
+
103  fragment_duration_ = 0;
+
104  earliest_presentation_time_ = kInvalidTime;
+
105  first_sap_time_ = kInvalidTime;
+
106  data_.reset(new BufferWriter());
+
107  return Status::OK;
+
108 }
+
109 
+ +
111  // Optimize trun box.
+
112  traf_->runs[0].sample_count = traf_->runs[0].sample_sizes.size();
+
113  if (OptimizeSampleEntries(&traf_->runs[0].sample_durations,
+
114  &traf_->header.default_sample_duration)) {
+
115  traf_->header.flags |=
+
116  TrackFragmentHeader::kDefaultSampleDurationPresentMask;
+
117  } else {
+
118  traf_->runs[0].flags |= TrackFragmentRun::kSampleDurationPresentMask;
+
119  }
+
120  if (OptimizeSampleEntries(&traf_->runs[0].sample_sizes,
+
121  &traf_->header.default_sample_size)) {
+
122  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleSizePresentMask;
+
123  } else {
+
124  traf_->runs[0].flags |= TrackFragmentRun::kSampleSizePresentMask;
+
125  }
+
126  if (OptimizeSampleEntries(&traf_->runs[0].sample_flags,
+
127  &traf_->header.default_sample_flags)) {
+
128  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleFlagsPresentMask;
+
129  } else {
+
130  traf_->runs[0].flags |= TrackFragmentRun::kSampleFlagsPresentMask;
+
131  }
+
132 
+
133  // Add SampleToGroup boxes. A SampleToGroup box with grouping type of 'roll'
+
134  // needs to be added if there is seek preroll, referencing sample group
+
135  // description in track level; Also need to add SampleToGroup boxes
+
136  // correponding to every SampleGroupDescription boxes, referencing sample
+
137  // group description in fragment level.
+
138  DCHECK_EQ(traf_->sample_to_groups.size(), 0u);
+
139  if (seek_preroll_ > 0) {
+
140  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
+
141  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
+
142  sample_to_group.grouping_type = FOURCC_roll;
+
143 
+
144  sample_to_group.entries.resize(1);
+
145  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
146  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
+
147  sample_to_group_entry.group_description_index =
+
148  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
+
149  }
+
150  for (const auto& sample_group_description :
+
151  traf_->sample_group_descriptions) {
+
152  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
+
153  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
+
154  sample_to_group.grouping_type = sample_group_description.grouping_type;
+
155 
+
156  sample_to_group.entries.resize(1);
+
157  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
158  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
+
159  sample_to_group_entry.group_description_index =
+
160  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
+
161  }
+
162 
+
163  fragment_finalized_ = true;
+
164  fragment_initialized_ = false;
+
165 }
+
166 
+ +
168  // NOTE: Daisy chain is not supported currently.
+
169  reference->reference_type = false;
+
170  reference->subsegment_duration = fragment_duration_;
+
171  reference->starts_with_sap = StartsWithSAP();
+
172  if (kInvalidTime == first_sap_time_) {
+
173  reference->sap_type = SegmentReference::TypeUnknown;
+
174  reference->sap_delta_time = 0;
+
175  } else {
+
176  reference->sap_type = SegmentReference::Type1;
+
177  reference->sap_delta_time = first_sap_time_ - earliest_presentation_time_;
+
178  }
+
179  reference->earliest_presentation_time = earliest_presentation_time_;
+
180 }
+
181 
+
182 bool Fragmenter::StartsWithSAP() {
+
183  DCHECK(!traf_->runs.empty());
+
184  uint32_t start_sample_flag;
+
185  if (traf_->runs[0].flags & TrackFragmentRun::kSampleFlagsPresentMask) {
+
186  DCHECK(!traf_->runs[0].sample_flags.empty());
+
187  start_sample_flag = traf_->runs[0].sample_flags[0];
+
188  } else {
+
189  DCHECK(traf_->header.flags &
+
190  TrackFragmentHeader::kDefaultSampleFlagsPresentMask);
+
191  start_sample_flag = traf_->header.default_sample_flags;
+
192  }
+
193  return (start_sample_flag & TrackFragmentHeader::kNonKeySampleMask) == 0;
+
194 }
+
195 
+
196 } // namespace mp4
+
197 } // namespace media
+
198 } // namespace shaka
Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)
Definition: fragmenter.cc:32
-
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:47
-
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:92
+
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:46
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:91
-
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:111
-
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:168
+
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:110
+
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:167
-
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:102
+
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:101
diff --git a/docs/d8/d9c/webm__tracks__parser_8cc_source.html b/docs/d8/d9c/webm__tracks__parser_8cc_source.html index d683720206..983e95460b 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 f13d043d3b..1030cc0e83 100644 --- a/docs/d8/d9f/udp__file_8h_source.html +++ b/docs/d8/d9f/udp__file_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/da3/classshaka_1_1media_1_1DecryptorSource-members.html b/docs/d8/da3/classshaka_1_1media_1_1DecryptorSource-members.html index 2ccf2ad5cf..5893cf0305 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 ac8c65debd..fa4872ffcc 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 3a3ebe20dc..655f81dacf 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 85189216db..7552635d9d 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daf/namespaceshaka.html b/docs/d8/daf/namespaceshaka.html index 5fed2f8f37..e3401faf4c 100644 --- a/docs/d8/daf/namespaceshaka.html +++ b/docs/d8/daf/namespaceshaka.html @@ -566,7 +566,7 @@ const char kPsshElementNam diff --git a/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html b/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html index d28f9621c4..c95cdc3703 100644 --- a/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html +++ b/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html @@ -259,7 +259,7 @@ void set_progress_target diff --git a/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html b/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html index 043cc506fe..059d223a99 100644 --- a/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html +++ b/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html b/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html index 2b15b5dab1..6f4ba09e80 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 b15b73ba24..c5acbca851 100644 --- a/docs/d8/dca/ts__writer_8h_source.html +++ b/docs/d8/dca/ts__writer_8h_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html b/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html index baf1371176..e68319dac2 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 720ad15e24..9e413fdb98 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 d524fd49b6..2f99b24ade 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 c764eb7f48..fb35c08d20 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 d47dcf2990..f597034658 100644 --- a/docs/d8/de1/classshaka_1_1SimpleMpdNotifier.html +++ b/docs/d8/de1/classshaka_1_1SimpleMpdNotifier.html @@ -471,7 +471,7 @@ class SimpleMpdNotifierTes diff --git a/docs/d8/de6/webm__crypto__helpers_8h_source.html b/docs/d8/de6/webm__crypto__helpers_8h_source.html index 4dd0f08df8..8fae40c5b6 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 8334b50118..fe59e1b615 100644 --- a/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html +++ b/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dee/classshaka_1_1media_1_1AudioTimestampHelper-members.html b/docs/d8/dee/classshaka_1_1media_1_1AudioTimestampHelper-members.html index 650abef427..a643be5d89 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 2cb6b1f8b0..c52890b0b9 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 f1fdb7ecbb..ad164c71f7 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html b/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html index be2f6ba827..0390c6597a 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 074855d1d1..aa04f0817d 100644 --- a/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html +++ b/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html b/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html index 51f83e3d7e..e29331ef31 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 c946b04f61..32fdc6a6ea 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 d219ff134c..8a3a519d3a 100644 --- a/docs/d9/d08/mock__mpd__builder_8h_source.html +++ b/docs/d9/d08/mock__mpd__builder_8h_source.html @@ -180,7 +180,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 2038392c59..c0e75d92b3 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 286871e394..eee5060160 100644 --- a/docs/d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html +++ b/docs/d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html @@ -218,7 +218,7 @@ Static Public Member Functions diff --git a/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html b/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html index 4cde838ea8..77f7261aa4 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 bad21e54e1..7a0c70d185 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 d07d819cae..7c4b06032d 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 86d39a8174..b05a90d106 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 7f1119e94e..c037812355 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 @@ -430,7 +430,7 @@ void set_progress_target diff --git a/docs/d9/d36/classshaka_1_1media_1_1TracksBuilder-members.html b/docs/d9/d36/classshaka_1_1media_1_1TracksBuilder-members.html index 1d62a5b883..94bc7c4045 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 15cb1168cf..47963d0b72 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 562e1f003f..2f4480fc5f 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 a23e71b6ef..d5cedbf92d 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 7a1ae88597..aa613b9bfa 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 01ab3a33f3..ebf7613153 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 b359ecc075..7430ca940e 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 a9ea31b151..1ba7c260b4 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 8fe48229aa..ce1e99d198 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 e42425e3f7..e89e03a572 100644 --- a/docs/d9/d76/ts__muxer_8cc_source.html +++ b/docs/d9/d76/ts__muxer_8cc_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html b/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html index 7f5bf3be11..ebf07a2410 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 48afc0a623..df1c496e0b 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 02c0d0d593..59f05054b4 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 49c0738d00..8c44405ea5 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 7d7018f730..2cbb40f449 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 9a353c886b..e09493e54c 100644 --- a/docs/d9/d90/text__track_8h_source.html +++ b/docs/d9/d90/text__track_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d93/media__stream_8h_source.html b/docs/d9/d93/media__stream_8h_source.html index ec8b5a2d59..bde3c25d3d 100644 --- a/docs/d9/d93/media__stream_8h_source.html +++ b/docs/d9/d93/media__stream_8h_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/da4/stream__descriptor_8h_source.html b/docs/d9/da4/stream__descriptor_8h_source.html index 5409638b03..f254415fb6 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 831091e13c..e30aaf5c95 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 b06b412761..3218e8f4b7 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 fa7f734eea..87ca69c400 100644 --- a/docs/d9/da7/classshaka_1_1media_1_1mp4_1_1Segmenter-members.html +++ b/docs/d9/da7/classshaka_1_1media_1_1mp4_1_1Segmenter-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/db2/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html b/docs/d9/db2/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html index f7febe7d39..4fb27f615d 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 15751cd3d8..f3ce5eb6d6 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 cc3ebf2bfc..15f70b3179 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -220,7 +220,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 df0fdc984f..c6ab0c5af7 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 792cc18730..d116ea4f34 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 4203d2c7b1..cc7f23b2f5 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 505b445170..35ab4b05b8 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 e7d56ef5db..951d0d8b55 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 b9bf2e02e0..24632a61a2 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -333,8 +333,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
244 
245 std::string CreateUUIDString(const std::vector<uint8_t>& data) {
246  DCHECK_EQ(16u, data.size());
-
247  std::string uuid = base::HexEncode(data.data(), data.size());
-
248  base::StringToLowerASCII(&uuid);
+
247  std::string uuid =
+
248  base::ToLowerASCII(base::HexEncode(data.data(), data.size()));
249  uuid.insert(20, "-");
250  uuid.insert(16, "-");
251  uuid.insert(12, "-");
@@ -348,7 +348,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html b/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html index 07c4956d55..0bdab96447 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 4ef50fb506..ca5c166586 100644 --- a/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html +++ b/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/ded/aac__audio__specific__config_8cc_source.html b/docs/d9/ded/aac__audio__specific__config_8cc_source.html index 0bf511dd5e..b8b7bfffa8 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 8d48b966af..138b341df6 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 f71d36c1c3..3c2b8f2df6 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 eb5d2bbceb..927820251e 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 ddf9785c39..fb4fa901ef 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 ce39655bee..aa3685f07a 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 d5cbaf0594..b17a5e62f1 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 e236f4cd54..827f0deb37 100644 --- a/docs/da/d1c/classshaka_1_1media_1_1mp2t_1_1TsSection.html +++ b/docs/da/d1c/classshaka_1_1media_1_1mp2t_1_1TsSection.html @@ -141,7 +141,7 @@ virtual void Reset ()= diff --git a/docs/da/d22/key__rotation__fragmenter_8h_source.html b/docs/da/d22/key__rotation__fragmenter_8h_source.html index 217dbda8d4..bab79a8e9f 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 e5b85503b0..ead3ed4449 100644 --- a/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html +++ b/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html @@ -159,7 +159,7 @@ const scoped_refptr
diff --git a/docs/da/d23/ts__muxer_8h_source.html b/docs/da/d23/ts__muxer_8h_source.html index 37d8d1db53..1ba9c1a0c4 100644 --- a/docs/da/d23/ts__muxer_8h_source.html +++ b/docs/da/d23/ts__muxer_8h_source.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d24/h265__parser_8h_source.html b/docs/da/d24/h265__parser_8h_source.html index 9f065d7db4..95eec139c5 100644 --- a/docs/da/d24/h265__parser_8h_source.html +++ b/docs/da/d24/h265__parser_8h_source.html @@ -450,7 +450,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2a/text__stream__info_8h_source.html b/docs/da/d2a/text__stream__info_8h_source.html index 7e73e64adf..a7e08e7b1a 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 b765c89308..09119a1035 100644 --- a/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html +++ b/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html b/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html index 9827bd870c..a21eccf2d1 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 b65f4927c1..989f391780 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 459e1a864e..7aebc22409 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 836755b4ea..234bf78ec0 100644 --- a/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html @@ -313,7 +313,7 @@ Static Public Member Functions diff --git a/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html b/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html index 329a726849..50b2b71d23 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 1cdbc204e2..678e593220 100644 --- a/docs/da/d53/es__parser__h265_8cc_source.html +++ b/docs/da/d53/es__parser__h265_8cc_source.html @@ -256,7 +256,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 86f2345e25..fda8145080 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 89af823ae4..8a75fae668 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -207,22 +207,22 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
132 } // namespace shaka
133 
134 #endif // MEDIA_BASE_WIDEVINE_KEY_SOURCE_H_
-
Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
-
Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
-
Status GetKey(TrackType track_type, EncryptionKey *key) override
+
Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
+
Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
+
Status GetKey(TrackType track_type, EncryptionKey *key) override
-
void set_key_fetcher(std::unique_ptr< KeyFetcher > key_fetcher)
+
void set_key_fetcher(std::unique_ptr< KeyFetcher > key_fetcher)
WidevineKeySource(const std::string &server_url, bool add_common_pssh)
-
void set_signer(std::unique_ptr< RequestSigner > signer)
+
void set_signer(std::unique_ptr< RequestSigner > signer)
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
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 13aba9f8ca..fb0e7a9194 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 e0c3e61750..13027cc0a2 100644 --- a/docs/da/d60/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html +++ b/docs/da/d60/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d64/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html b/docs/da/d64/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html index fbc8a9de28..f06d426c83 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 5cf8e5caa1..28b3d0e56f 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 61d1d08c56..d8e8f36a06 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 017539f478..7ce7253720 100644 --- a/docs/da/d85/classshaka_1_1media_1_1mp2t_1_1TsSegmenter-members.html +++ b/docs/da/d85/classshaka_1_1media_1_1mp2t_1_1TsSegmenter-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d88/mp4__muxer_8cc_source.html b/docs/da/d88/mp4__muxer_8cc_source.html index ef2c72cc54..65bbfb0f06 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -496,14 +496,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:82
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:177
+
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:176
virtual void OnMediaStart(const MuxerOptions &muxer_options, const StreamInfo &stream_info, uint32_t time_scale, ContainerType container_type)=0
diff --git a/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html b/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html index 09d023b1f6..f088325c22 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 eaee0b7a03..155d0d37a6 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1863,7 +1863,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html b/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html index 01732be19a..f460c0d12f 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 1d588c6e26..2e820ad785 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 e7a102e51b..859aad6d56 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 35323e479b..8733f67955 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 ed82183649..b3b655671e 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 c7946c5584..bc45c1626f 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 777b58f04a..e05c9bc425 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 aeaf3cda9c..47305196b7 100644 --- a/docs/da/dc3/status_8cc_source.html +++ b/docs/da/dc3/status_8cc_source.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html b/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html index dce158cfe0..870e791f44 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 675efaea93..1cba4593de 100644 --- a/docs/da/dcb/es__descriptor_8h_source.html +++ b/docs/da/dcb/es__descriptor_8h_source.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html b/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html index 8cf75d9d24..c1f5bf4aec 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 4510651f80..a204c1385d 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 8ae126995f..02e087c0ca 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -159,54 +159,53 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
90  bool fragment_initialized_;
91  bool fragment_finalized_;
92  uint64_t fragment_duration_;
-
93  int64_t presentation_start_time_;
-
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_
+
93  int64_t earliest_presentation_time_;
+
94  int64_t first_sap_time_;
+
95  std::unique_ptr<BufferWriter> data_;
+
96 
+
97  DISALLOW_COPY_AND_ASSIGN(Fragmenter);
+
98 };
+
99 
+
100 template <typename T>
+
101 bool Fragmenter::OptimizeSampleEntries(std::vector<T>* entries,
+
102  T* default_value) {
+
103  DCHECK(entries);
+
104  DCHECK(default_value);
+
105  DCHECK(!entries->empty());
+
106 
+
107  typename std::vector<T>::const_iterator it = entries->begin();
+
108  T value = *it;
+
109  for (; it < entries->end(); ++it)
+
110  if (value != *it)
+
111  return false;
+
112 
+
113  // Clear |entries| if it contains only one value.
+
114  entries->clear();
+
115  *default_value = value;
+
116  return true;
+
117 }
+
118 
+
119 } // namespace mp4
+
120 } // namespace media
+
121 } // namespace shaka
+
122 
+
123 #endif // MEDIA_FORMATS_MP4_FRAGMENTER_H_
void set_use_decoding_timestamp_in_timeline(bool use_decoding_timestamp_in_timeline)
Definition: fragmenter.h:69
Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)
Definition: fragmenter.cc:32
-
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:47
-
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:92
+
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:46
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:91
-
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:111
+
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:110
-
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:168
+
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:167
-
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:102
+
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:101
diff --git a/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html b/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html index ad6f05764f..3fae7529c6 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 8ff55eacd8..8be82b02de 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 c72428367c..580d435906 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 0a18ab82e8..5eabc00414 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 b8ac8e3dc6..b1ec5e0c97 100644 --- a/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html +++ b/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html @@ -232,7 +232,7 @@ static std::string shaka::media::KeySource.

-

Definition at line 175 of file widevine_key_source.cc.

+

Definition at line 176 of file widevine_key_source.cc.

@@ -268,7 +268,7 @@ static std::string shaka::media::KeySource.

-

Definition at line 202 of file widevine_key_source.cc.

+

Definition at line 203 of file widevine_key_source.cc.

@@ -304,7 +304,7 @@ static std::string shaka::media::KeySource.

-

Definition at line 223 of file widevine_key_source.cc.

+

Definition at line 224 of file widevine_key_source.cc.

@@ -341,7 +341,7 @@ static std::string 
Returns
OK on success, an error status otherwise.
-

Definition at line 164 of file widevine_key_source.cc.

+

Definition at line 165 of file widevine_key_source.cc.

@@ -395,7 +395,7 @@ static std::string shaka::media::KeySource.

-

Definition at line 258 of file widevine_key_source.cc.

+

Definition at line 259 of file widevine_key_source.cc.

@@ -442,7 +442,7 @@ static std::string shaka::media::KeySource.

-

Definition at line 232 of file widevine_key_source.cc.

+

Definition at line 233 of file widevine_key_source.cc.

@@ -489,7 +489,7 @@ static std::string shaka::media::KeySource.

-

Definition at line 242 of file widevine_key_source.cc.

+

Definition at line 243 of file widevine_key_source.cc.

@@ -514,7 +514,7 @@ static std::string 284 of file widevine_key_source.cc.

+

Definition at line 285 of file widevine_key_source.cc.

@@ -539,7 +539,7 @@ static std::string 280 of file widevine_key_source.cc.

+

Definition at line 281 of file widevine_key_source.cc.

@@ -550,7 +550,7 @@ static std::string  diff --git a/docs/da/ddf/structshaka_1_1media_1_1mp4_1_1SampleDescription-members.html b/docs/da/ddf/structshaka_1_1media_1_1mp4_1_1SampleDescription-members.html index d39bfe42c2..62fb38ba22 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 0d632ea23b..dca9cb2db7 100644 --- a/docs/da/de2/mock__mpd__builder_8cc_source.html +++ b/docs/da/de2/mock__mpd__builder_8cc_source.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/de4/classshaka_1_1media_1_1WebMClusterParser.html b/docs/da/de4/classshaka_1_1media_1_1WebMClusterParser.html index fa1b93635e..64ce2936ad 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 eac3cf51b4..ea3c140a55 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 eb9cf856ca..76ebde1fd2 100644 --- a/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html +++ b/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html b/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html index 9b44dc7e3c..436925f33b 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 9dcd9edfb0..a17f9c4c13 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 d189daa677..0b99b3a8ba 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 5a47d4b23d..f3a5ef34db 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 db80cf12d3..8d29de53b6 100644 --- a/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html +++ b/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html b/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html index e8164be790..38a4278fdd 100644 --- a/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html +++ b/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html @@ -236,7 +236,7 @@ std::vector< int > e diff --git a/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html b/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html index 8d4a38b576..b40002bf82 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 2a62e4ba83..5a810a552b 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 c899343185..025cd7c052 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 aa474e99d1..a15a06a9d6 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 bd5a8cecbe..1b6773f61f 100644 --- a/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html +++ b/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html @@ -179,7 +179,7 @@ FourCC protection_scheme diff --git a/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html b/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html index fb5fe786c2..540458b9db 100644 --- a/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html +++ b/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d31/track__run__iterator_8cc_source.html b/docs/db/d31/track__run__iterator_8cc_source.html index b4818f2366..4541c1a19e 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -767,7 +767,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html b/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html index c56d655f41..6566a3de2d 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 5f5c59cf8c..e4a0efd279 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 c10655fb8b..dd526e7d33 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 16f3b256e4..9b6c17cde5 100644 --- a/docs/db/d4b/classshaka_1_1MockAdaptationSet.html +++ b/docs/db/d4b/classshaka_1_1MockAdaptationSet.html @@ -183,7 +183,7 @@ Additional Inherited Members diff --git a/docs/db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html b/docs/db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html index 3e9251c0fd..fdcf01a6e1 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 7c92ebe129..a90c886633 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html index 73121e5310..6564d802e1 100644 --- a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html +++ b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html b/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html index ceeb4d781e..a217616800 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 56f9002774..c11282b09e 100644 --- a/docs/db/d60/mpd__options_8h_source.html +++ b/docs/db/d60/mpd__options_8h_source.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d64/webvtt__media__parser_8h_source.html b/docs/db/d64/webvtt__media__parser_8h_source.html index 4a13d3c50b..ad54fb6fe1 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html b/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html index ce2cb19f03..6f2aea0348 100644 --- a/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html +++ b/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d71/http__key__fetcher_8h_source.html b/docs/db/d71/http__key__fetcher_8h_source.html index 3681613bd3..e2a7a76fc8 100644 --- a/docs/db/d71/http__key__fetcher_8h_source.html +++ b/docs/db/d71/http__key__fetcher_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html b/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html index f324b9d1d1..d674af4bac 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 1f8c97b974..46f28c52ac 100644 --- a/docs/db/d75/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html +++ b/docs/db/d75/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d78/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter-members.html b/docs/db/d78/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter-members.html index 378efb25cf..032b2f54ac 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 1abd0b3763..7d6aa9e0c0 100644 --- a/docs/db/d7e/muxer__options_8cc_source.html +++ b/docs/db/d7e/muxer__options_8cc_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html b/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html index 21878dff35..e6e5d29b83 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 02801c5836..11ab788a13 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 9e2a95c924..3e21b187c5 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html b/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html index 7265e0d9d7..ad98cc7645 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 05c27b9673..33afd6049c 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 @@ -226,7 +226,7 @@ Protected Member Functions

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

-

Definition at line 47 of file fragmenter.cc.

+

Definition at line 46 of file fragmenter.cc.

@@ -262,7 +262,7 @@ Protected Member Functions

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

-

Definition at line 92 of file fragmenter.cc.

+

Definition at line 91 of file fragmenter.cc.

@@ -301,7 +301,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 102 of file fragmenter.h.

+

Definition at line 101 of file fragmenter.h.

@@ -339,7 +339,7 @@ template<typename T > diff --git a/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html index e2347881e5..4da4797cec 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 e70f108173..9bea743ef2 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -309,61 +309,60 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
223  // Internal content parsing state.
224  State parse_state_;
225 
-
226  bool is_psm_needed_;
-
227  uint32_t skip_bytes_;
-
228  bool metadata_is_complete_;
-
229  uint8_t current_program_id_;
-
230  uint32_t pes_stream_id_;
-
231  uint32_t prev_pes_stream_id_;
-
232  uint16_t pes_packet_bytes_;
-
233  uint8_t pes_flags_1_;
-
234  uint8_t pes_flags_2_;
-
235  uint8_t prev_pes_flags_1_;
-
236  uint8_t pes_header_data_bytes_;
-
237  uint64_t timestamp_;
-
238  uint64_t pts_;
-
239  uint64_t dts_;
-
240  uint8_t index_program_id_;
-
241  scoped_refptr<MediaSample> media_sample_;
-
242  uint32_t crypto_unit_start_pos_;
-
243  PrevSampleData prev_media_sample_data_;
-
244  H264ByteToUnitStreamConverter byte_to_unit_stream_converter_;
-
245 
-
246  std::vector<uint8_t, std::allocator<uint8_t> > ecm_;
-
247  std::vector<uint8_t> psm_data_;
-
248  std::vector<uint8_t> index_data_;
-
249  std::map<std::string, uint32_t> program_demux_stream_map_;
-
250  int stream_id_count_;
-
251  std::vector<scoped_refptr<StreamInfo> > stream_infos_;
-
252  std::deque<DemuxStreamIdMediaSample> media_sample_queue_;
-
253  std::vector<uint8_t> sample_data_;
-
254  KeySource* decryption_key_source_;
-
255  std::unique_ptr<AesCbcDecryptor> content_decryptor_;
-
256 
-
257  DISALLOW_COPY_AND_ASSIGN(WvmMediaParser);
-
258 };
-
259 
-
260 } // namespace wvm
-
261 } // namespace media
-
262 } // namespace shaka
-
263 
-
264 #endif // MEDIA_FORMATS_WVM_WVM_MEDIA_PARSER_H_
+
226  uint32_t skip_bytes_;
+
227  bool metadata_is_complete_;
+
228  uint8_t current_program_id_;
+
229  uint32_t pes_stream_id_;
+
230  uint32_t prev_pes_stream_id_;
+
231  uint16_t pes_packet_bytes_;
+
232  uint8_t pes_flags_1_;
+
233  uint8_t pes_flags_2_;
+
234  uint8_t prev_pes_flags_1_;
+
235  uint8_t pes_header_data_bytes_;
+
236  uint64_t timestamp_;
+
237  uint64_t pts_;
+
238  uint64_t dts_;
+
239  uint8_t index_program_id_;
+
240  scoped_refptr<MediaSample> media_sample_;
+
241  uint32_t crypto_unit_start_pos_;
+
242  PrevSampleData prev_media_sample_data_;
+
243  H264ByteToUnitStreamConverter byte_to_unit_stream_converter_;
+
244 
+
245  std::vector<uint8_t, std::allocator<uint8_t> > ecm_;
+
246  std::vector<uint8_t> psm_data_;
+
247  std::vector<uint8_t> index_data_;
+
248  std::map<std::string, uint32_t> program_demux_stream_map_;
+
249  int stream_id_count_;
+
250  std::vector<scoped_refptr<StreamInfo> > stream_infos_;
+
251  std::deque<DemuxStreamIdMediaSample> media_sample_queue_;
+
252  std::vector<uint8_t> sample_data_;
+
253  KeySource* decryption_key_source_;
+
254  std::unique_ptr<AesCbcDecryptor> content_decryptor_;
+
255 
+
256  DISALLOW_COPY_AND_ASSIGN(WvmMediaParser);
+
257 };
+
258 
+
259 } // namespace wvm
+
260 } // namespace media
+
261 } // namespace shaka
+
262 
+
263 #endif // MEDIA_FORMATS_WVM_WVM_MEDIA_PARSER_H_
-
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
+
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
-
bool Flush() override WARN_UNUSED_RESULT
+
bool Flush() override WARN_UNUSED_RESULT
base::Callback< void(const std::vector< scoped_refptr< StreamInfo > > &stream_info)> InitCB
Definition: media_parser.h:34
-
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
+
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
base::Callback< bool(uint32_t track_id, const scoped_refptr< MediaSample > &media_sample)> NewSampleCB
Definition: media_parser.h:43
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 2c9a74b3d7..011fe06d83 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 9d3763f230..d1e4732581 100644 --- a/docs/db/da6/memory__file_8h_source.html +++ b/docs/db/da6/memory__file_8h_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html index 309bfab269..ff4373b6c2 100644 --- a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html +++ b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html @@ -282,7 +282,7 @@ void set_language (con diff --git a/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html b/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html index e3559596c9..dfa2b3be56 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 3f4bd17a47..f71a085129 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 2bf2557842..42f9ccf73a 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 f3a2c53c10..00ce1adc62 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 ce8ce3062f..a78dfe8e62 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 95228c9ab8..0742a26253 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 912f3b6ffa..d1e8fc8c70 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 a91fcdea77..a49cba5ee8 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 e085f90bbc..a040ee10fb 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 c927b9c322..35c1f42a39 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 d984ec0137..3b67fb4d69 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 5e590bd6e9..c6e81b9877 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 5809d53f6e..cf8889342a 100644 --- a/docs/db/dde/h265__parser_8cc_source.html +++ b/docs/db/dde/h265__parser_8cc_source.html @@ -1221,7 +1221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dec/audio__timestamp__helper_8cc_source.html b/docs/db/dec/audio__timestamp__helper_8cc_source.html index 476d23fb42..5e65c2bbf9 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 7dc14f05d5..539d38db78 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 f558d6b659..4e7b2ea93b 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 4ab54cac48..b709c816ab 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 5bd98153d5..2093639874 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -212,7 +212,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html index f6f7789eeb..e95c7f4253 100644 --- a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html +++ b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html @@ -171,7 +171,7 @@ static const size_t kUnitS diff --git a/docs/db/dfb/mpd__utils_8cc_source.html b/docs/db/dfb/mpd__utils_8cc_source.html index 06d14f945a..a9b71c27be 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -271,7 +271,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
182  }
183 
184  const std::string hex_encoded =
-
185  base::StringToLowerASCII(base::HexEncode(data.data(), data.size()));
+
185  base::ToLowerASCII(base::HexEncode(data.data(), data.size()));
186  DCHECK_EQ(hex_encoded.size(), kExpectedUUIDSize * 2);
187  base::StringPiece all(hex_encoded);
188  // Note UUID has 5 parts separated with dashes.
@@ -444,7 +444,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html index 8939255151..98e83c98c3 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -274,7 +274,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dff/structshaka_1_1media_1_1mp4_1_1ChunkInfo-members.html b/docs/db/dff/structshaka_1_1media_1_1mp4_1_1ChunkInfo-members.html index b4aba7b6fc..f21b33b6bc 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 ceb5da0d2d..1ffb96bcb6 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 7795e4164c..42b6b1be4e 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 85f615406e..5272b79aaf 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 09080e6cd4..efccaa4c11 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 4badd46d53..27c9b7dd2a 100644 --- a/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html +++ b/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html @@ -148,7 +148,7 @@ void set_tracks_pos (u diff --git a/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html b/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html index 9d93d9e3c4..100dae4a2b 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 @@ -153,7 +153,7 @@ track_id, const scoped_refptr

Implements shaka::media::MediaParser.

-

Definition at line 519 of file wvm_media_parser.cc.

+

Definition at line 518 of file wvm_media_parser.cc.

@@ -205,7 +205,7 @@ track_id, const scoped_refptr

Implements shaka::media::MediaParser.

-

Definition at line 117 of file wvm_media_parser.cc.

+

Definition at line 116 of file wvm_media_parser.cc.

@@ -245,7 +245,7 @@ track_id, const scoped_refptr

Implements shaka::media::MediaParser.

-

Definition at line 128 of file wvm_media_parser.cc.

+

Definition at line 127 of file wvm_media_parser.cc.

@@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/dc/d18/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html b/docs/dc/d18/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html index 1c040c4038..64f5a94653 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 ca30507ebc..a42555376e 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 e9bc78bf91..0c9f544ff5 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -394,7 +394,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html b/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html index 365146e6ef..27b06b48b3 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 684663dc11..a8999a990e 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 0ed386de0a..0f1337d6cb 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -168,7 +168,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 998daf2972..b6af37d7c0 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 d067e53cd6..69fbb5f13c 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 2751bdd898..0782d54430 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 6af543a739..627e03dc9a 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 f98df47356..28a93db974 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 4ad3c0dd49..7908f97706 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 5817ba2130..c15172907a 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -553,7 +553,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html b/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html index 8d2035b5f0..8c7c8f42dc 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 7259678f69..3bfc560d34 100644 --- a/docs/dc/d58/webm__media__parser_8h_source.html +++ b/docs/dc/d58/webm__media__parser_8h_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html b/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html index 1123355f77..a9b657fd75 100644 --- a/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html +++ b/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html @@ -160,7 +160,7 @@ Public Member Functions diff --git a/docs/dc/d69/structshaka_1_1media_1_1mp4_1_1CueSettingsBox-members.html b/docs/dc/d69/structshaka_1_1media_1_1mp4_1_1CueSettingsBox-members.html index e0f40927e3..92ca2b3bac 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 d57400ea0a..028430f50f 100644 --- a/docs/dc/d6f/classshaka_1_1media_1_1webm_1_1Segmenter-members.html +++ b/docs/dc/d6f/classshaka_1_1media_1_1webm_1_1Segmenter-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d71/classshaka_1_1media_1_1mp2t_1_1TsSection-members.html b/docs/dc/d71/classshaka_1_1media_1_1mp2t_1_1TsSection-members.html index b6d651a79e..9a8bf24fdf 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 94a80d891b..e5eb9fbea8 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 69f99ec7c9..359f3b1d9f 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 1910cb4990..d05862e5c5 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -268,8 +268,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
179 static const int kTableSarHeight[] = {
180  0, 1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1
181 };
-
182 COMPILE_ASSERT(arraysize(kTableSarWidth) == arraysize(kTableSarHeight),
-
183  sar_tables_must_have_same_size);
+
182 static_assert(arraysize(kTableSarWidth) == arraysize(kTableSarHeight),
+
183  "sar_tables_must_have_same_size");
184 
185 H264Parser::H264Parser() {}
186 
@@ -1264,7 +1264,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d86/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html b/docs/dc/d86/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html index 5619b9f54b..929d2ab5bc 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 228d056e11..0253ef958a 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 1c1da78578..38f4a98cf4 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 9575461779..ef4b3ec849 100644 --- a/docs/dc/da1/classshaka_1_1MpdBuilder.html +++ b/docs/dc/da1/classshaka_1_1MpdBuilder.html @@ -385,7 +385,7 @@ class DynamicMpdBuilderTes diff --git a/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html b/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html index 2cdde2f98d..de77152e64 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 ad809b9e0c..173c5966e3 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 26560b316c..6f01254691 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 dd65e0fc3c..7f254e37e5 100644 --- a/docs/dc/dc1/classshaka_1_1xml_1_1RepresentationXmlNode-members.html +++ b/docs/dc/dc1/classshaka_1_1xml_1_1RepresentationXmlNode-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dca/classshaka_1_1media_1_1WebMListParser.html b/docs/dc/dca/classshaka_1_1media_1_1WebMListParser.html index 81780111f0..d02860706d 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 b7a4a1d908..ae77b8628f 100644 --- a/docs/dc/dd9/rsa__key_8cc_source.html +++ b/docs/dc/dd9/rsa__key_8cc_source.html @@ -350,7 +350,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html b/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html index 5fb242c24c..2381d5f1b7 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/ddf/udp__file__posix_8cc_source.html b/docs/dc/ddf/udp__file__posix_8cc_source.html index aadc304118..fa23cb9fc1 100644 --- a/docs/dc/ddf/udp__file__posix_8cc_source.html +++ b/docs/dc/ddf/udp__file__posix_8cc_source.html @@ -322,7 +322,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/de1/structshaka_1_1SegmentInfo.html b/docs/dc/de1/structshaka_1_1SegmentInfo.html index 458afb4ac8..c86bd650e1 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 bff43e8b58..3243260b0d 100644 --- a/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html +++ b/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html b/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html index 7f02c7ea89..ff63c39218 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 d0b50e5c41..b26114156a 100644 --- a/docs/dc/dec/ts__section__pmt_8cc_source.html +++ b/docs/dc/dec/ts__section__pmt_8cc_source.html @@ -207,7 +207,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html b/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html index 06393c6707..1defdaeae0 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 cdc8015b0d..35c90e17a7 100644 --- a/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html +++ b/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html b/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html index e342ece1fa..deb25e2116 100644 --- a/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html +++ b/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html @@ -405,7 +405,7 @@ void set_encryption_key diff --git a/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html b/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html index 749f560cf5..91ca53f4cb 100644 --- a/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html +++ b/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/df7/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun-members.html b/docs/dc/df7/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun-members.html index 44ba70a9cf..c1c66d8ea2 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 ed57c0b9b7..bd97278ddb 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 bb98fbd0c3..d464c64f05 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 fa16abc870..8b1f385f5f 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1508,7 +1508,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 7eb5cf5f13..4f408e0b27 100644 --- a/docs/dd/d12/mpd__writer_8cc_source.html +++ b/docs/dd/d12/mpd__writer_8cc_source.html @@ -217,11 +217,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
128 
129 } // namespace shaka
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:646
-
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:186
+
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:185
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 35fe38b96a..d4f9db73b4 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 f420c9b13a..e2ccfafb4b 100644 --- a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html +++ b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html @@ -295,7 +295,7 @@ Public Member Functions diff --git a/docs/dd/d18/es__parser__adts_8h_source.html b/docs/dd/d18/es__parser__adts_8h_source.html index 654b2bb713..d07417a250 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 45eca7f6d0..dbbcea626b 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -180,7 +180,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 9953cc5045..8709f6243d 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -180,1085 +180,1084 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
91 WvmMediaParser::WvmMediaParser()
92  : is_initialized_(false),
93  parse_state_(StartCode1),
-
94  is_psm_needed_(true),
-
95  skip_bytes_(0),
-
96  metadata_is_complete_(false),
-
97  current_program_id_(0),
-
98  pes_stream_id_(0),
-
99  prev_pes_stream_id_(0),
-
100  pes_packet_bytes_(0),
-
101  pes_flags_1_(0),
-
102  pes_flags_2_(0),
-
103  prev_pes_flags_1_(0),
-
104  pes_header_data_bytes_(0),
-
105  timestamp_(0),
-
106  pts_(0),
-
107  dts_(0),
-
108  index_program_id_(0),
-
109  media_sample_(NULL),
-
110  crypto_unit_start_pos_(0),
-
111  stream_id_count_(0),
-
112  decryption_key_source_(NULL) {
-
113 }
-
114 
-
115 WvmMediaParser::~WvmMediaParser() {}
-
116 
-
117 void WvmMediaParser::Init(const InitCB& init_cb,
-
118  const NewSampleCB& new_sample_cb,
-
119  KeySource* decryption_key_source) {
-
120  DCHECK(!is_initialized_);
-
121  DCHECK(!init_cb.is_null());
-
122  DCHECK(!new_sample_cb.is_null());
-
123  decryption_key_source_ = decryption_key_source;
-
124  init_cb_ = init_cb;
-
125  new_sample_cb_ = new_sample_cb;
-
126 }
-
127 
-
128 bool WvmMediaParser::Parse(const uint8_t* buf, int size) {
-
129  uint32_t num_bytes, prev_size;
-
130  num_bytes = prev_size = 0;
-
131  const uint8_t* read_ptr = buf;
-
132  const uint8_t* end = read_ptr + size;
-
133 
-
134  while (read_ptr < end) {
-
135  switch (parse_state_) {
-
136  case StartCode1:
-
137  if (*read_ptr == kStartCode1) {
-
138  parse_state_ = StartCode2;
-
139  }
-
140  break;
-
141  case StartCode2:
-
142  if (*read_ptr == kStartCode2) {
-
143  parse_state_ = StartCode3;
-
144  } else {
-
145  parse_state_ = StartCode1;
-
146  }
-
147  break;
-
148  case StartCode3:
-
149  if (*read_ptr == kStartCode3) {
-
150  parse_state_ = StartCode4;
-
151  } else {
-
152  parse_state_ = StartCode1;
-
153  }
-
154  break;
-
155  case StartCode4:
-
156  switch (*read_ptr) {
-
157  case kStartCode4Pack:
-
158  parse_state_ = PackHeader1;
-
159  break;
-
160  case kStartCode4System:
-
161  parse_state_ = SystemHeader1;
-
162  break;
-
163  case kStartCode4ProgramEnd:
-
164  parse_state_ = ProgramEnd;
-
165  continue;
-
166  default:
-
167  parse_state_ = PesStreamId;
-
168  continue;
-
169  }
-
170  break;
-
171  case PackHeader1:
-
172  parse_state_ = PackHeader2;
-
173  break;
-
174  case PackHeader2:
-
175  parse_state_ = PackHeader3;
-
176  break;
-
177  case PackHeader3:
-
178  parse_state_ = PackHeader4;
-
179  break;
-
180  case PackHeader4:
-
181  parse_state_ = PackHeader5;
-
182  break;
-
183  case PackHeader5:
-
184  parse_state_ = PackHeader6;
-
185  break;
-
186  case PackHeader6:
-
187  parse_state_ = PackHeader7;
-
188  break;
-
189  case PackHeader7:
-
190  parse_state_ = PackHeader8;
-
191  break;
-
192  case PackHeader8:
-
193  parse_state_ = PackHeader9;
-
194  break;
-
195  case PackHeader9:
-
196  parse_state_ = PackHeader10;
-
197  break;
-
198  case PackHeader10:
-
199  skip_bytes_ = *read_ptr & 0x07;
-
200  parse_state_ = PackHeaderStuffingSkip;
-
201  break;
-
202  case SystemHeader1:
-
203  skip_bytes_ = *read_ptr;
-
204  skip_bytes_ <<= 8;
-
205  parse_state_ = SystemHeader2;
-
206  break;
-
207  case SystemHeader2:
-
208  skip_bytes_ |= *read_ptr;
-
209  parse_state_ = SystemHeaderSkip;
-
210  break;
-
211  case PackHeaderStuffingSkip:
-
212  if ((end - read_ptr) >= (int32_t)skip_bytes_) {
-
213  read_ptr += skip_bytes_;
-
214  skip_bytes_ = 0;
-
215  parse_state_ = StartCode1;
-
216  } else {
-
217  skip_bytes_ -= (end - read_ptr);
-
218  read_ptr = end;
-
219  }
-
220  continue;
-
221  case SystemHeaderSkip:
-
222  if ((end - read_ptr) >= (int32_t)skip_bytes_) {
-
223  read_ptr += skip_bytes_;
-
224  skip_bytes_ = 0;
-
225  parse_state_ = StartCode1;
-
226  } else {
-
227  uint32_t remaining_size = end - read_ptr;
-
228  skip_bytes_ -= remaining_size;
-
229  read_ptr = end;
-
230  }
-
231  continue;
-
232  case PesStreamId:
-
233  pes_stream_id_ = *read_ptr;
-
234  if (!metadata_is_complete_ &&
-
235  (pes_stream_id_ != kPsmStreamId) &&
-
236  (pes_stream_id_ != kIndexStreamId) &&
-
237  (pes_stream_id_ != kEcmStreamId) &&
-
238  (pes_stream_id_ != kV2MetadataStreamId) &&
-
239  (pes_stream_id_ != kPaddingStreamId)) {
-
240  metadata_is_complete_ = true;
-
241  }
-
242  parse_state_ = PesPacketLength1;
-
243  break;
-
244  case PesPacketLength1:
-
245  pes_packet_bytes_ = *read_ptr;
-
246  pes_packet_bytes_ <<= 8;
-
247  parse_state_ = PesPacketLength2;
-
248  break;
-
249  case PesPacketLength2:
-
250  pes_packet_bytes_ |= *read_ptr;
-
251  if (HAS_HEADER_EXTENSION(pes_stream_id_)) {
-
252  parse_state_ = PesExtension1;
-
253  } else {
-
254  pes_flags_1_ = pes_flags_2_ = 0;
-
255  pes_header_data_bytes_ = 0;
-
256  parse_state_ = PesPayload;
-
257  }
-
258  break;
-
259  case PesExtension1:
-
260  prev_pes_flags_1_ = pes_flags_1_;
-
261  pes_flags_1_ = *read_ptr;
-
262  --pes_packet_bytes_;
-
263  parse_state_ = PesExtension2;
-
264  break;
-
265  case PesExtension2:
-
266  pes_flags_2_ = *read_ptr;
-
267  --pes_packet_bytes_;
-
268  parse_state_ = PesExtension3;
-
269  break;
-
270  case PesExtension3:
-
271  pes_header_data_bytes_ = *read_ptr;
-
272  --pes_packet_bytes_;
-
273  if (pes_flags_2_ & kPesOptPts) {
-
274  parse_state_ = Pts1;
-
275  } else {
-
276  parse_state_ = PesHeaderData;
-
277  }
-
278  break;
-
279  case Pts1:
-
280  timestamp_ = (*read_ptr & 0x0E);
-
281  --pes_header_data_bytes_;
-
282  --pes_packet_bytes_;
-
283  parse_state_ = Pts2;
-
284  break;
-
285  case Pts2:
-
286  timestamp_ <<= 7;
-
287  timestamp_ |= *read_ptr;
-
288  --pes_header_data_bytes_;
-
289  --pes_packet_bytes_;
-
290  parse_state_ = Pts3;
-
291  break;
-
292  case Pts3:
-
293  timestamp_ <<= 7;
-
294  timestamp_ |= *read_ptr >> 1;
-
295  --pes_header_data_bytes_;
-
296  --pes_packet_bytes_;
-
297  parse_state_ = Pts4;
-
298  break;
-
299  case Pts4:
-
300  timestamp_ <<= 8;
-
301  timestamp_ |= *read_ptr;
-
302  --pes_header_data_bytes_;
-
303  --pes_packet_bytes_;
-
304  parse_state_ = Pts5;
-
305  break;
-
306  case Pts5:
-
307  timestamp_ <<= 7;
-
308  timestamp_ |= *read_ptr >> 1;
-
309  pts_ = timestamp_;
-
310  --pes_header_data_bytes_;
-
311  --pes_packet_bytes_;
-
312  if (pes_flags_2_ & kPesOptDts) {
-
313  parse_state_ = Dts1;
-
314  } else {
-
315  dts_ = pts_;
-
316  parse_state_ = PesHeaderData;
-
317  }
-
318  break;
-
319  case Dts1:
-
320  timestamp_ = (*read_ptr & 0x0E);
-
321  --pes_header_data_bytes_;
-
322  --pes_packet_bytes_;
-
323  parse_state_ = Dts2;
-
324  break;
-
325  case Dts2:
-
326  timestamp_ <<= 7;
-
327  timestamp_ |= *read_ptr;
-
328  --pes_header_data_bytes_;
-
329  --pes_packet_bytes_;
-
330  parse_state_ = Dts3;
-
331  break;
-
332  case Dts3:
-
333  timestamp_ <<= 7;
-
334  timestamp_ |= *read_ptr >> 1;
-
335  --pes_header_data_bytes_;
-
336  --pes_packet_bytes_;
-
337  parse_state_ = Dts4;
-
338  break;
-
339  case Dts4:
-
340  timestamp_ <<= 8;
-
341  timestamp_ |= *read_ptr;
-
342  --pes_header_data_bytes_;
-
343  --pes_packet_bytes_;
-
344  parse_state_ = Dts5;
-
345  break;
-
346  case Dts5:
-
347  timestamp_ <<= 7;
-
348  timestamp_ |= *read_ptr >> 1;
-
349  dts_ = timestamp_;
-
350  --pes_header_data_bytes_;
-
351  --pes_packet_bytes_;
-
352  parse_state_ = PesHeaderData;
-
353  break;
-
354  case PesHeaderData:
-
355  num_bytes = end - read_ptr;
-
356  if (num_bytes >= pes_header_data_bytes_) {
-
357  num_bytes = pes_header_data_bytes_;
-
358  parse_state_ = PesPayload;
-
359  }
-
360  pes_header_data_bytes_ -= num_bytes;
-
361  pes_packet_bytes_ -= num_bytes;
-
362  read_ptr += num_bytes;
-
363  continue;
-
364  case PesPayload:
-
365  switch (pes_stream_id_) {
-
366  case kPsmStreamId:
-
367  psm_data_.clear();
-
368  parse_state_ = PsmPayload;
-
369  continue;
-
370  case kPaddingStreamId:
-
371  parse_state_ = Padding;
-
372  continue;
-
373  case kEcmStreamId:
-
374  ecm_.clear();
-
375  parse_state_ = EcmPayload;
-
376  continue;
-
377  case kIndexStreamId:
-
378  parse_state_ = IndexPayload;
-
379  continue;
-
380  default:
-
381  if (!DemuxNextPes(false)) {
-
382  return false;
-
383  }
-
384  parse_state_ = EsPayload;
-
385  }
-
386  continue;
-
387  case PsmPayload:
-
388  num_bytes = end - read_ptr;
-
389  if (num_bytes >= pes_packet_bytes_) {
-
390  num_bytes = pes_packet_bytes_;
-
391  parse_state_ = StartCode1;
-
392  }
-
393  if (num_bytes > 0) {
-
394  pes_packet_bytes_ -= num_bytes;
-
395  prev_size = psm_data_.size();
-
396  psm_data_.resize(prev_size + num_bytes);
-
397  memcpy(&psm_data_[prev_size], read_ptr, num_bytes);
-
398  }
-
399  read_ptr += num_bytes;
-
400  continue;
-
401  case EcmPayload:
-
402  num_bytes = end - read_ptr;
-
403  if (num_bytes >= pes_packet_bytes_) {
-
404  num_bytes = pes_packet_bytes_;
-
405  parse_state_ = StartCode1;
-
406  }
-
407  if (num_bytes > 0) {
-
408  pes_packet_bytes_ -= num_bytes;
-
409  prev_size = ecm_.size();
-
410  ecm_.resize(prev_size + num_bytes);
-
411  memcpy(&ecm_[prev_size], read_ptr, num_bytes);
-
412  }
-
413  if ((pes_packet_bytes_ == 0) && !ecm_.empty()) {
-
414  if (!ProcessEcm()) {
-
415  return(false);
-
416  }
-
417  }
-
418  read_ptr += num_bytes;
-
419  continue;
-
420  case IndexPayload:
-
421  num_bytes = end - read_ptr;
-
422  if (num_bytes >= pes_packet_bytes_) {
-
423  num_bytes = pes_packet_bytes_;
-
424  parse_state_ = StartCode1;
-
425  }
-
426  if (num_bytes > 0) {
-
427  pes_packet_bytes_ -= num_bytes;
-
428  prev_size = index_data_.size();
-
429  index_data_.resize(prev_size + num_bytes);
-
430  memcpy(&index_data_[prev_size], read_ptr, num_bytes);
-
431  }
-
432  if (pes_packet_bytes_ == 0 && !index_data_.empty()) {
-
433  if (!metadata_is_complete_) {
-
434  if (!ParseIndexEntry()) {
-
435  return false;
-
436  }
-
437  }
-
438  }
-
439  read_ptr += num_bytes;
-
440  continue;
-
441  case EsPayload:
-
442  num_bytes = end - read_ptr;
-
443  if (num_bytes >= pes_packet_bytes_) {
-
444  num_bytes = pes_packet_bytes_;
-
445  parse_state_ = StartCode1;
-
446  }
-
447  pes_packet_bytes_ -= num_bytes;
-
448  if (pes_stream_id_ != kV2MetadataStreamId) {
-
449  sample_data_.resize(sample_data_.size() + num_bytes);
-
450  memcpy(&sample_data_[sample_data_.size() - num_bytes], read_ptr,
-
451  num_bytes);
-
452  }
-
453  prev_pes_stream_id_ = pes_stream_id_;
-
454  read_ptr += num_bytes;
-
455  continue;
-
456  case Padding:
-
457  num_bytes = end - read_ptr;
-
458  if (num_bytes >= pes_packet_bytes_) {
-
459  num_bytes = pes_packet_bytes_;
-
460  parse_state_ = StartCode1;
-
461  }
-
462  pes_packet_bytes_ -= num_bytes;
-
463  read_ptr += num_bytes;
-
464  continue;
-
465  case ProgramEnd:
-
466  parse_state_ = StartCode1;
-
467  metadata_is_complete_ = true;
-
468  if (!DemuxNextPes(true)) {
-
469  return false;
-
470  }
-
471  if (!Flush()) {
-
472  return false;
-
473  }
-
474  // Reset.
-
475  dts_ = pts_ = 0;
-
476  parse_state_ = StartCode1;
-
477  prev_media_sample_data_.Reset();
-
478  current_program_id_++;
-
479  ecm_.clear();
-
480  index_data_.clear();
-
481  psm_data_.clear();
-
482  break;
-
483  default:
-
484  break;
-
485  }
-
486  ++read_ptr;
-
487  }
-
488  return true;
-
489 }
-
490 
-
491 bool WvmMediaParser::EmitLastSample(uint32_t stream_id,
-
492  scoped_refptr<MediaSample>& new_sample) {
-
493  std::string key = base::UintToString(current_program_id_)
-
494  .append(":")
-
495  .append(base::UintToString(stream_id));
-
496  std::map<std::string, uint32_t>::iterator it =
-
497  program_demux_stream_map_.find(key);
-
498  if (it == program_demux_stream_map_.end())
-
499  return false;
-
500  return EmitSample(stream_id, (*it).second, new_sample, true);
-
501 }
-
502 
-
503 bool WvmMediaParser::EmitPendingSamples() {
-
504  // Emit queued samples which were built when not initialized.
-
505  while (!media_sample_queue_.empty()) {
-
506  DemuxStreamIdMediaSample& demux_stream_media_sample =
-
507  media_sample_queue_.front();
-
508  if (!EmitSample(demux_stream_media_sample.parsed_audio_or_video_stream_id,
-
509  demux_stream_media_sample.demux_stream_id,
-
510  demux_stream_media_sample.media_sample,
-
511  false)) {
-
512  return false;
-
513  }
-
514  media_sample_queue_.pop_front();
-
515  }
-
516  return true;
-
517 }
-
518 
-
519 bool WvmMediaParser::Flush() {
-
520  // Flush the last audio and video sample for current program.
-
521  // Reset the streamID when successfully emitted.
-
522  if (prev_media_sample_data_.audio_sample != NULL) {
-
523  if (!EmitLastSample(prev_pes_stream_id_,
-
524  prev_media_sample_data_.audio_sample)) {
-
525  LOG(ERROR) << "Did not emit last sample for audio stream with ID = "
-
526  << prev_pes_stream_id_;
-
527  return false;
-
528  }
-
529  }
-
530  if (prev_media_sample_data_.video_sample != NULL) {
-
531  if (!EmitLastSample(prev_pes_stream_id_,
-
532  prev_media_sample_data_.video_sample)) {
-
533  LOG(ERROR) << "Did not emit last sample for video stream with ID = "
-
534  << prev_pes_stream_id_;
-
535  return false;
-
536  }
-
537  }
-
538  return true;
-
539 }
-
540 
-
541 bool WvmMediaParser::ParseIndexEntry() {
-
542  // Do not parse index entry at the beginning of any track *after* the first
-
543  // track.
-
544  if (current_program_id_ > 0) {
-
545  return true;
-
546  }
-
547  uint32_t index_size = 0;
-
548  if (index_data_.size() < kIndexVersion4HeaderSize) {
-
549  return false;
-
550  }
-
551 
-
552  const uint8_t* read_ptr = index_data_.data();
-
553  if (ntohlFromBuffer(read_ptr) != kIndexMagic) {
-
554  index_data_.clear();
-
555  return false;
-
556  }
-
557  read_ptr += 4;
-
558 
-
559  uint32_t version = ntohlFromBuffer(read_ptr);
-
560  read_ptr += 4;
-
561  if (version == kVersion4) {
-
562  index_size = kIndexVersion4HeaderSize + ntohlFromBuffer(read_ptr);
-
563  if (index_data_.size() < index_size) {
-
564  // We do not yet have the full index. Keep accumulating index data.
-
565  return true;
-
566  }
-
567  read_ptr += sizeof(uint32_t);
-
568 
-
569  // Index metadata
-
570  uint32_t index_metadata_max_size = index_size - kIndexVersion4HeaderSize;
-
571  if (index_metadata_max_size < sizeof(uint8_t)) {
-
572  index_data_.clear();
-
573  return false;
-
574  }
-
575 
-
576  uint64_t track_duration = 0;
-
577  int16_t trick_play_rate = 0;
-
578  uint32_t sampling_frequency = kDefaultSamplingFrequency;
-
579  uint32_t time_scale = kMpeg2ClockRate;
-
580  uint16_t video_width = 0;
-
581  uint16_t video_height = 0;
-
582  uint32_t pixel_width = 0;
-
583  uint32_t pixel_height = 0;
-
584  uint8_t nalu_length_size = kNaluLengthSize;
-
585  uint8_t num_channels = 0;
-
586  int audio_pes_stream_id = 0;
-
587  int video_pes_stream_id = 0;
-
588  bool has_video = false;
-
589  bool has_audio = false;
-
590  std::vector<uint8_t> audio_codec_config;
-
591  std::vector<uint8_t> video_codec_config;
-
592  uint8_t num_index_entries = *read_ptr;
-
593  ++read_ptr;
-
594  --index_metadata_max_size;
-
595 
-
596  for (uint8_t idx = 0; idx < num_index_entries; ++idx) {
-
597  if (index_metadata_max_size < (2 * sizeof(uint8_t)) + sizeof(uint32_t)) {
-
598  return false;
-
599  }
-
600  uint8_t tag = *read_ptr;
-
601  ++read_ptr;
-
602  uint8_t type = *read_ptr;
-
603  ++read_ptr;
-
604  uint32_t length = ntohlFromBuffer(read_ptr);
-
605  read_ptr += sizeof(uint32_t);
-
606  index_metadata_max_size -= (2 * sizeof(uint8_t)) + sizeof(uint32_t);
-
607  if (index_metadata_max_size < length) {
-
608  return false;
-
609  }
-
610  int64_t value = 0;
-
611  Tag tagtype = Unset;
-
612  std::vector<uint8_t> binary_data;
-
613  switch (Type(type)) {
-
614  case Type_uint8:
-
615  if (length == sizeof(uint8_t)) {
-
616  tagtype = GetTag(tag, length, read_ptr, &value);
-
617  } else {
-
618  return false;
-
619  }
-
620  break;
-
621  case Type_int8:
-
622  if (length == sizeof(int8_t)) {
-
623  tagtype = GetTag(tag, length, read_ptr, &value);
-
624  } else {
-
625  return false;
-
626  }
-
627  break;
-
628  case Type_uint16:
-
629  if (length == sizeof(uint16_t)) {
-
630  tagtype = GetTag(tag, length, read_ptr, &value);
-
631  } else {
-
632  return false;
-
633  }
-
634  break;
-
635  case Type_int16:
-
636  if (length == sizeof(int16_t)) {
-
637  tagtype = GetTag(tag, length, read_ptr, &value);
-
638  } else {
-
639  return false;
-
640  }
-
641  break;
-
642  case Type_uint32:
-
643  if (length == sizeof(uint32_t)) {
-
644  tagtype = GetTag(tag, length, read_ptr, &value);
-
645  } else {
-
646  return false;
-
647  }
-
648  break;
-
649  case Type_int32:
-
650  if (length == sizeof(int32_t)) {
-
651  tagtype = GetTag(tag, length, read_ptr, &value);
-
652  } else {
-
653  return false;
-
654  }
-
655  break;
-
656  case Type_uint64:
-
657  if (length == sizeof(uint64_t)) {
-
658  tagtype = GetTag(tag, length, read_ptr, &value);
-
659  } else {
-
660  return false;
-
661  }
-
662  break;
-
663  case Type_int64:
-
664  if (length == sizeof(int64_t)) {
-
665  tagtype = GetTag(tag, length, read_ptr, &value);
-
666  } else {
-
667  return false;
-
668  }
-
669  break;
-
670  case Type_string:
-
671  case Type_BinaryData:
-
672  binary_data.assign(read_ptr, read_ptr + length);
-
673  tagtype = Tag(tag);
-
674  break;
-
675  default:
-
676  break;
-
677  }
-
678 
-
679  switch (tagtype) {
-
680  case TrackDuration:
-
681  track_duration = value;
-
682  break;
-
683  case TrackTrickPlayRate:
-
684  trick_play_rate = value;
-
685  break;
-
686  case VideoStreamId:
-
687  video_pes_stream_id = value;
-
688  break;
-
689  case AudioStreamId:
-
690  audio_pes_stream_id = value;
-
691  break;
-
692  case VideoWidth:
-
693  video_width = (uint16_t)value;
-
694  break;
-
695  case VideoHeight:
-
696  video_height = (uint16_t)value;
-
697  break;
-
698  case AudioNumChannels:
-
699  num_channels = (uint8_t)value;
-
700  break;
-
701  case VideoType:
-
702  has_video = true;
-
703  break;
-
704  case AudioType:
-
705  has_audio = true;
-
706  break;
-
707  case VideoPixelWidth:
-
708  pixel_width = static_cast<uint32_t>(value);
-
709  break;
-
710  case VideoPixelHeight:
-
711  pixel_height = static_cast<uint32_t>(value);
-
712  break;
-
713  case Audio_EsDescriptor: {
-
714  ESDescriptor descriptor;
-
715  if (!descriptor.Parse(binary_data)) {
-
716  LOG(ERROR) <<
-
717  "Could not extract AudioSpecificConfig from ES_Descriptor";
-
718  return false;
-
719  }
-
720  audio_codec_config = descriptor.decoder_specific_info();
-
721  break;
-
722  }
-
723  case Audio_EC3SpecificData:
-
724  case Audio_DtsSpecificData:
-
725  case Audio_AC3SpecificData:
-
726  LOG(ERROR) << "Audio type not supported.";
-
727  return false;
-
728  case Video_AVCDecoderConfigurationRecord:
-
729  video_codec_config = binary_data;
-
730  break;
-
731  default:
-
732  break;
-
733  }
-
734 
-
735  read_ptr += length;
-
736  index_metadata_max_size -= length;
-
737  }
-
738  // End Index metadata
-
739  index_size = read_ptr - index_data_.data();
-
740 
-
741  if (has_video) {
-
742  Codec video_codec = kCodecH264;
-
743  stream_infos_.push_back(new VideoStreamInfo(
-
744  stream_id_count_, time_scale, track_duration, video_codec,
-
745  std::string(), video_codec_config.data(), video_codec_config.size(),
-
746  video_width, video_height, pixel_width, pixel_height, trick_play_rate,
-
747  nalu_length_size, std::string(), true));
-
748  program_demux_stream_map_[base::UintToString(index_program_id_) + ":" +
-
749  base::UintToString(
-
750  video_pes_stream_id
-
751  ? video_pes_stream_id
-
752  : kDefaultVideoStreamId)] =
-
753  stream_id_count_++;
-
754  }
-
755  if (has_audio) {
-
756  const Codec audio_codec = kCodecAAC;
-
757  // TODO(beil): Pass in max and average bitrate in wvm container.
-
758  stream_infos_.push_back(new AudioStreamInfo(
-
759  stream_id_count_, time_scale, track_duration, audio_codec,
-
760  std::string(), audio_codec_config.data(), audio_codec_config.size(),
-
761  kAacSampleSizeBits, num_channels, sampling_frequency,
-
762  0 /* seek preroll */, 0 /* codec delay */, 0 /* max bitrate */,
-
763  0 /* avg bitrate */, std::string(), true));
-
764  program_demux_stream_map_[base::UintToString(index_program_id_) + ":" +
-
765  base::UintToString(
-
766  audio_pes_stream_id
-
767  ? audio_pes_stream_id
-
768  : kDefaultAudioStreamId)] =
-
769  stream_id_count_++;
-
770  }
-
771  }
-
772 
-
773  index_program_id_++;
-
774  index_data_.clear();
-
775  return true;
-
776 }
-
777 
-
778 bool WvmMediaParser::DemuxNextPes(bool is_program_end) {
-
779  bool output_encrypted_sample = false;
-
780  if (!sample_data_.empty() && (prev_pes_flags_1_ & kScramblingBitsMask)) {
-
781  // Decrypt crypto unit.
-
782  if (!content_decryptor_) {
-
783  output_encrypted_sample = true;
-
784  } else {
-
785  content_decryptor_->Crypt(&sample_data_[crypto_unit_start_pos_],
-
786  sample_data_.size() - crypto_unit_start_pos_,
-
787  &sample_data_[crypto_unit_start_pos_]);
-
788  }
-
789  }
-
790  // Demux media sample if we are at program end or if we are not at a
-
791  // continuation PES.
-
792  if ((pes_flags_2_ & kPesOptPts) || is_program_end) {
-
793  if (!sample_data_.empty()) {
-
794  if (!Output(output_encrypted_sample)) {
-
795  return false;
-
796  }
-
797  }
-
798  StartMediaSampleDemux();
-
799  }
-
800 
-
801  crypto_unit_start_pos_ = sample_data_.size();
-
802  return true;
-
803 }
-
804 
-
805 void WvmMediaParser::StartMediaSampleDemux() {
-
806  bool is_key_frame = ((pes_flags_1_ & kPesOptAlign) != 0);
-
807  media_sample_ = MediaSample::CreateEmptyMediaSample();
-
808  media_sample_->set_dts(dts_);
-
809  media_sample_->set_pts(pts_);
-
810  media_sample_->set_is_key_frame(is_key_frame);
-
811 
-
812  sample_data_.clear();
-
813 }
-
814 
-
815 bool WvmMediaParser::Output(bool output_encrypted_sample) {
-
816  if (output_encrypted_sample) {
-
817  media_sample_->set_data(sample_data_.data(), sample_data_.size());
-
818  media_sample_->set_is_encrypted(true);
-
819  } else {
-
820  if ((prev_pes_stream_id_ & kPesStreamIdVideoMask) == kPesStreamIdVideo) {
-
821  // Convert video stream to unit stream and get config.
-
822  std::vector<uint8_t> nal_unit_stream;
-
823  if (!byte_to_unit_stream_converter_.ConvertByteStreamToNalUnitStream(
-
824  sample_data_.data(), sample_data_.size(), &nal_unit_stream)) {
-
825  LOG(ERROR) << "Could not convert h.264 byte stream sample";
-
826  return false;
-
827  }
-
828  media_sample_->set_data(nal_unit_stream.data(), nal_unit_stream.size());
-
829  if (!is_initialized_) {
-
830  // Set extra data for video stream from AVC Decoder Config Record.
-
831  // Also, set codec string from the AVC Decoder Config Record.
-
832  std::vector<uint8_t> decoder_config_record;
-
833  byte_to_unit_stream_converter_.GetDecoderConfigurationRecord(
-
834  &decoder_config_record);
-
835  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
-
836  if (stream_infos_[i]->stream_type() == kStreamVideo &&
-
837  stream_infos_[i]->codec_string().empty()) {
-
838  const std::vector<uint8_t>* stream_config;
-
839  if (stream_infos_[i]->codec_config().empty()) {
-
840  // Decoder config record not available for stream. Use the one
-
841  // computed from the first video stream.
-
842  stream_infos_[i]->set_codec_config(decoder_config_record);
-
843  stream_config = &decoder_config_record;
-
844  } else {
-
845  // Use stream-specific config record.
-
846  stream_config = &stream_infos_[i]->codec_config();
-
847  }
-
848  DCHECK(stream_config);
-
849 
-
850  VideoStreamInfo* video_stream_info =
-
851  reinterpret_cast<VideoStreamInfo*>(stream_infos_[i].get());
-
852  AVCDecoderConfigurationRecord avc_config;
-
853  if (!avc_config.Parse(*stream_config)) {
-
854  LOG(WARNING) << "Failed to parse AVCDecoderConfigurationRecord. "
-
855  "Using computed configuration record instead.";
-
856  video_stream_info->set_codec_config(decoder_config_record);
-
857  if (!avc_config.Parse(decoder_config_record)) {
-
858  LOG(ERROR) << "Failed to parse AVCDecoderConfigurationRecord.";
-
859  return false;
-
860  }
-
861  }
-
862  video_stream_info->set_codec_string(avc_config.GetCodecString());
-
863 
-
864  if (avc_config.pixel_width() != video_stream_info->pixel_width() ||
-
865  avc_config.pixel_height() !=
-
866  video_stream_info->pixel_height()) {
-
867  LOG_IF(WARNING, video_stream_info->pixel_width() != 0 ||
-
868  video_stream_info->pixel_height() != 0)
-
869  << "Pixel aspect ratio in WVM metadata ("
-
870  << video_stream_info->pixel_width() << ","
-
871  << video_stream_info->pixel_height()
-
872  << ") does not match with SAR in "
-
873  "AVCDecoderConfigurationRecord ("
-
874  << avc_config.pixel_width() << ","
-
875  << avc_config.pixel_height()
-
876  << "). Use AVCDecoderConfigurationRecord.";
-
877  video_stream_info->set_pixel_width(avc_config.pixel_width());
-
878  video_stream_info->set_pixel_height(avc_config.pixel_height());
-
879  }
-
880  if (avc_config.coded_width() != video_stream_info->width() ||
-
881  avc_config.coded_height() != video_stream_info->height()) {
-
882  LOG(WARNING) << "Resolution in WVM metadata ("
-
883  << video_stream_info->width() << ","
-
884  << video_stream_info->height()
-
885  << ") does not match with resolution in "
-
886  "AVCDecoderConfigurationRecord ("
-
887  << avc_config.coded_width() << ","
-
888  << avc_config.coded_height()
-
889  << "). Use AVCDecoderConfigurationRecord.";
-
890  video_stream_info->set_width(avc_config.coded_width());
-
891  video_stream_info->set_height(avc_config.coded_height());
-
892  }
-
893  }
-
894  }
-
895  }
-
896  } else if ((prev_pes_stream_id_ & kPesStreamIdAudioMask) ==
-
897  kPesStreamIdAudio) {
-
898  // Set data on the audio stream.
-
899  int frame_size = mp2t::AdtsHeader::GetAdtsFrameSize(sample_data_.data(),
-
900  kAdtsHeaderMinSize);
-
901  mp2t::AdtsHeader adts_header;
-
902  const uint8_t* frame_ptr = sample_data_.data();
-
903  if (!adts_header.Parse(frame_ptr, frame_size)) {
-
904  LOG(ERROR) << "Could not parse ADTS header";
-
905  return false;
-
906  }
-
907  size_t header_size = adts_header.GetAdtsHeaderSize(frame_ptr,
-
908  frame_size);
-
909  media_sample_->set_data(frame_ptr + header_size,
-
910  frame_size - header_size);
-
911  if (!is_initialized_) {
-
912  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
-
913  if (stream_infos_[i]->stream_type() == kStreamAudio &&
-
914  stream_infos_[i]->codec_string().empty()) {
-
915  AudioStreamInfo* audio_stream_info =
-
916  reinterpret_cast<AudioStreamInfo*>(stream_infos_[i].get());
-
917  if (audio_stream_info->codec_config().empty()) {
-
918  // Set AudioStreamInfo fields using information from the ADTS
-
919  // header.
-
920  audio_stream_info->set_sampling_frequency(
-
921  adts_header.GetSamplingFrequency());
-
922  std::vector<uint8_t> audio_specific_config;
-
923  if (!adts_header.GetAudioSpecificConfig(&audio_specific_config)) {
-
924  LOG(ERROR) << "Could not compute AACaudiospecificconfig";
-
925  return false;
-
926  }
-
927  audio_stream_info->set_codec_config(audio_specific_config);
-
928  audio_stream_info->set_codec_string(
- -
930  kCodecAAC, adts_header.GetObjectType()));
-
931  } else {
-
932  // Set AudioStreamInfo fields using information from the
-
933  // AACAudioSpecificConfig record.
-
934  AACAudioSpecificConfig aac_config;
-
935  if (!aac_config.Parse(stream_infos_[i]->codec_config())) {
-
936  LOG(ERROR) << "Could not parse AACAudioSpecificconfig";
-
937  return false;
-
938  }
-
939  audio_stream_info->set_sampling_frequency(aac_config.frequency());
-
940  audio_stream_info->set_codec_string(
- -
942  kCodecAAC, aac_config.audio_object_type()));
-
943  }
-
944  }
-
945  }
-
946  }
-
947  }
-
948  }
-
949 
-
950  if (!is_initialized_) {
-
951  bool all_streams_have_config = true;
-
952  // Check if all collected stream infos have codec_config set.
-
953  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
-
954  if (stream_infos_[i]->codec_string().empty()) {
-
955  all_streams_have_config = false;
-
956  break;
-
957  }
-
958  }
-
959  if (all_streams_have_config) {
-
960  init_cb_.Run(stream_infos_);
-
961  is_initialized_ = true;
-
962  }
-
963  }
-
964 
-
965  DCHECK_GT(media_sample_->data_size(), 0UL);
-
966  std::string key = base::UintToString(current_program_id_).append(":")
-
967  .append(base::UintToString(prev_pes_stream_id_));
-
968  std::map<std::string, uint32_t>::iterator it =
-
969  program_demux_stream_map_.find(key);
-
970  if (it == program_demux_stream_map_.end()) {
-
971  // TODO(ramjic): Log error message here and in other error cases through
-
972  // this method.
-
973  return false;
-
974  }
-
975  DemuxStreamIdMediaSample demux_stream_media_sample;
-
976  demux_stream_media_sample.parsed_audio_or_video_stream_id =
-
977  prev_pes_stream_id_;
-
978  demux_stream_media_sample.demux_stream_id = (*it).second;
-
979  demux_stream_media_sample.media_sample = media_sample_;
-
980  // Check if sample can be emitted.
-
981  if (!is_initialized_) {
-
982  media_sample_queue_.push_back(demux_stream_media_sample);
-
983  } else {
-
984  // flush the sample queue and emit all queued samples.
-
985  while (!media_sample_queue_.empty()) {
-
986  if (!EmitPendingSamples())
-
987  return false;
-
988  }
-
989  // Emit current sample.
-
990  if (!EmitSample(prev_pes_stream_id_, (*it).second, media_sample_, false))
-
991  return false;
-
992  }
-
993  return true;
-
994 }
-
995 
-
996 bool WvmMediaParser::EmitSample(uint32_t parsed_audio_or_video_stream_id,
-
997  uint32_t stream_id,
-
998  scoped_refptr<MediaSample>& new_sample,
-
999  bool isLastSample) {
-
1000  DCHECK(new_sample);
-
1001  if (isLastSample) {
-
1002  if ((parsed_audio_or_video_stream_id & kPesStreamIdVideoMask) ==
-
1003  kPesStreamIdVideo) {
-
1004  new_sample->set_duration(prev_media_sample_data_.video_sample_duration);
-
1005  } else if ((parsed_audio_or_video_stream_id & kPesStreamIdAudioMask) ==
-
1006  kPesStreamIdAudio) {
-
1007  new_sample->set_duration(prev_media_sample_data_.audio_sample_duration);
-
1008  }
-
1009  if (!new_sample_cb_.Run(stream_id, new_sample)) {
-
1010  LOG(ERROR) << "Failed to process the last sample.";
-
1011  return false;
-
1012  }
-
1013  return true;
-
1014  }
-
1015 
-
1016  // Cannot emit current sample. Compute duration first and then,
-
1017  // emit previous sample.
-
1018  if ((parsed_audio_or_video_stream_id & kPesStreamIdVideoMask) ==
-
1019  kPesStreamIdVideo) {
-
1020  if (prev_media_sample_data_.video_sample == NULL) {
-
1021  prev_media_sample_data_.video_sample = new_sample;
-
1022  prev_media_sample_data_.video_stream_id = stream_id;
-
1023  return true;
-
1024  }
-
1025  prev_media_sample_data_.video_sample->set_duration(
-
1026  new_sample->dts() - prev_media_sample_data_.video_sample->dts());
-
1027  prev_media_sample_data_.video_sample_duration =
-
1028  prev_media_sample_data_.video_sample->duration();
-
1029  if (!new_sample_cb_.Run(prev_media_sample_data_.video_stream_id,
-
1030  prev_media_sample_data_.video_sample)) {
-
1031  LOG(ERROR) << "Failed to process the video sample.";
-
1032  return false;
-
1033  }
-
1034  prev_media_sample_data_.video_sample = new_sample;
-
1035  prev_media_sample_data_.video_stream_id = stream_id;
-
1036  } else if ((parsed_audio_or_video_stream_id & kPesStreamIdAudioMask) ==
-
1037  kPesStreamIdAudio) {
-
1038  if (prev_media_sample_data_.audio_sample == NULL) {
-
1039  prev_media_sample_data_.audio_sample = new_sample;
-
1040  prev_media_sample_data_.audio_stream_id = stream_id;
-
1041  return true;
-
1042  }
-
1043  prev_media_sample_data_.audio_sample->set_duration(
-
1044  new_sample->dts() - prev_media_sample_data_.audio_sample->dts());
-
1045  prev_media_sample_data_.audio_sample_duration =
-
1046  prev_media_sample_data_.audio_sample->duration();
-
1047  if (!new_sample_cb_.Run(prev_media_sample_data_.audio_stream_id,
-
1048  prev_media_sample_data_.audio_sample)) {
-
1049  LOG(ERROR) << "Failed to process the audio sample.";
-
1050  return false;
-
1051  }
-
1052  prev_media_sample_data_.audio_sample = new_sample;
-
1053  prev_media_sample_data_.audio_stream_id = stream_id;
-
1054  }
-
1055  return true;
-
1056 }
-
1057 
-
1058 bool WvmMediaParser::GetAssetKey(const uint32_t asset_id,
-
1059  EncryptionKey* encryption_key) {
-
1060  DCHECK(decryption_key_source_);
-
1061  Status status = decryption_key_source_->FetchKeys(asset_id);
-
1062  if (!status.ok()) {
-
1063  LOG(ERROR) << "Fetch Key(s) failed for AssetID = " << asset_id
-
1064  << ", error = " << status;
-
1065  return false;
-
1066  }
-
1067 
-
1068  status = decryption_key_source_->GetKey(KeySource::TRACK_TYPE_HD,
-
1069  encryption_key);
-
1070  if (!status.ok()) {
-
1071  LOG(ERROR) << "Fetch Key(s) failed for AssetID = " << asset_id
-
1072  << ", error = " << status;
-
1073  return false;
-
1074  }
-
1075 
-
1076  return true;
-
1077 }
-
1078 
-
1079 bool WvmMediaParser::ProcessEcm() {
-
1080  // An error will be returned later if the samples need to be decrypted.
-
1081  if (!decryption_key_source_)
-
1082  return true;
-
1083 
-
1084  if (current_program_id_ > 0) {
-
1085  return true;
-
1086  }
-
1087  if (ecm_.size() != kEcmSizeBytes) {
-
1088  LOG(ERROR) << "Unexpected ECM size = " << ecm_.size()
-
1089  << ", expected size = " << kEcmSizeBytes;
-
1090  return false;
-
1091  }
-
1092  const uint8_t* ecm_data = ecm_.data();
-
1093  DCHECK(ecm_data);
-
1094  ecm_data += sizeof(uint32_t); // old version field - skip.
-
1095  ecm_data += sizeof(uint32_t); // clear lead - skip.
-
1096  ecm_data += sizeof(uint32_t); // system id(includes ECM version) - skip.
-
1097  uint32_t asset_id = ntohlFromBuffer(ecm_data);
-
1098  if (asset_id == 0) {
-
1099  LOG(ERROR) << "AssetID in ECM is not valid.";
-
1100  return false;
-
1101  }
-
1102  ecm_data += sizeof(uint32_t); // asset_id.
-
1103  EncryptionKey encryption_key;
-
1104  if (!GetAssetKey(asset_id, &encryption_key)) {
-
1105  return false;
-
1106  }
-
1107  if (encryption_key.key.size() < kAssetKeySizeBytes) {
-
1108  LOG(ERROR) << "Asset Key size of " << encryption_key.key.size()
-
1109  << " for AssetID = " << asset_id
-
1110  << " is less than minimum asset key size.";
-
1111  return false;
-
1112  }
-
1113  // Legacy WVM content may have asset keys > 16 bytes.
-
1114  // Use only the first 16 bytes of the asset key to get
-
1115  // the content key.
-
1116  std::vector<uint8_t> asset_key(
-
1117  encryption_key.key.begin(),
-
1118  encryption_key.key.begin() + kAssetKeySizeBytes);
-
1119  // WVM format always uses all zero IV.
-
1120  std::vector<uint8_t> zero_iv(kInitializationVectorSizeBytes, 0);
-
1121  AesCbcDecryptor asset_decryptor(kCtsPadding, AesCryptor::kUseConstantIv);
-
1122  if (!asset_decryptor.InitializeWithIv(asset_key, zero_iv)) {
-
1123  LOG(ERROR) << "Failed to initialize asset_decryptor.";
-
1124  return false;
-
1125  }
-
1126 
-
1127  const size_t content_key_buffer_size =
-
1128  kEcmFlagsSizeBytes + kEcmContentKeySizeBytes +
-
1129  kEcmPaddingSizeBytes; // flags + contentKey + padding.
-
1130  std::vector<uint8_t> content_key_buffer(content_key_buffer_size);
-
1131  CHECK(asset_decryptor.Crypt(ecm_data, content_key_buffer_size,
-
1132  content_key_buffer.data()));
-
1133 
-
1134  std::vector<uint8_t> decrypted_content_key_vec(
-
1135  content_key_buffer.begin() + 4,
-
1136  content_key_buffer.begin() + 20);
-
1137  std::unique_ptr<AesCbcDecryptor> content_decryptor(
-
1138  new AesCbcDecryptor(kCtsPadding, AesCryptor::kUseConstantIv));
-
1139  if (!content_decryptor->InitializeWithIv(decrypted_content_key_vec,
-
1140  zero_iv)) {
-
1141  LOG(ERROR) << "Failed to initialize content decryptor.";
-
1142  return false;
-
1143  }
-
1144 
-
1145  content_decryptor_ = std::move(content_decryptor);
-
1146  return true;
-
1147 }
-
1148 
-
1149 DemuxStreamIdMediaSample::DemuxStreamIdMediaSample() :
-
1150  demux_stream_id(0),
-
1151  parsed_audio_or_video_stream_id(0) {}
-
1152 
-
1153 DemuxStreamIdMediaSample::~DemuxStreamIdMediaSample() {}
-
1154 
-
1155 PrevSampleData::PrevSampleData() {
-
1156  Reset();
-
1157 }
-
1158 
-
1159 PrevSampleData::~PrevSampleData() {}
-
1160 
-
1161 void PrevSampleData::Reset() {
-
1162  audio_sample = NULL;
-
1163  video_sample = NULL;
-
1164  audio_stream_id = 0;
-
1165  video_stream_id = 0;
-
1166  audio_sample_duration = 0;
-
1167  video_sample_duration = 0;
-
1168 }
-
1169 
-
1170 } // namespace wvm
-
1171 } // namespace media
-
1172 } // namespace shaka
+
94  skip_bytes_(0),
+
95  metadata_is_complete_(false),
+
96  current_program_id_(0),
+
97  pes_stream_id_(0),
+
98  prev_pes_stream_id_(0),
+
99  pes_packet_bytes_(0),
+
100  pes_flags_1_(0),
+
101  pes_flags_2_(0),
+
102  prev_pes_flags_1_(0),
+
103  pes_header_data_bytes_(0),
+
104  timestamp_(0),
+
105  pts_(0),
+
106  dts_(0),
+
107  index_program_id_(0),
+
108  media_sample_(NULL),
+
109  crypto_unit_start_pos_(0),
+
110  stream_id_count_(0),
+
111  decryption_key_source_(NULL) {
+
112 }
+
113 
+
114 WvmMediaParser::~WvmMediaParser() {}
+
115 
+
116 void WvmMediaParser::Init(const InitCB& init_cb,
+
117  const NewSampleCB& new_sample_cb,
+
118  KeySource* decryption_key_source) {
+
119  DCHECK(!is_initialized_);
+
120  DCHECK(!init_cb.is_null());
+
121  DCHECK(!new_sample_cb.is_null());
+
122  decryption_key_source_ = decryption_key_source;
+
123  init_cb_ = init_cb;
+
124  new_sample_cb_ = new_sample_cb;
+
125 }
+
126 
+
127 bool WvmMediaParser::Parse(const uint8_t* buf, int size) {
+
128  uint32_t num_bytes, prev_size;
+
129  num_bytes = prev_size = 0;
+
130  const uint8_t* read_ptr = buf;
+
131  const uint8_t* end = read_ptr + size;
+
132 
+
133  while (read_ptr < end) {
+
134  switch (parse_state_) {
+
135  case StartCode1:
+
136  if (*read_ptr == kStartCode1) {
+
137  parse_state_ = StartCode2;
+
138  }
+
139  break;
+
140  case StartCode2:
+
141  if (*read_ptr == kStartCode2) {
+
142  parse_state_ = StartCode3;
+
143  } else {
+
144  parse_state_ = StartCode1;
+
145  }
+
146  break;
+
147  case StartCode3:
+
148  if (*read_ptr == kStartCode3) {
+
149  parse_state_ = StartCode4;
+
150  } else {
+
151  parse_state_ = StartCode1;
+
152  }
+
153  break;
+
154  case StartCode4:
+
155  switch (*read_ptr) {
+
156  case kStartCode4Pack:
+
157  parse_state_ = PackHeader1;
+
158  break;
+
159  case kStartCode4System:
+
160  parse_state_ = SystemHeader1;
+
161  break;
+
162  case kStartCode4ProgramEnd:
+
163  parse_state_ = ProgramEnd;
+
164  continue;
+
165  default:
+
166  parse_state_ = PesStreamId;
+
167  continue;
+
168  }
+
169  break;
+
170  case PackHeader1:
+
171  parse_state_ = PackHeader2;
+
172  break;
+
173  case PackHeader2:
+
174  parse_state_ = PackHeader3;
+
175  break;
+
176  case PackHeader3:
+
177  parse_state_ = PackHeader4;
+
178  break;
+
179  case PackHeader4:
+
180  parse_state_ = PackHeader5;
+
181  break;
+
182  case PackHeader5:
+
183  parse_state_ = PackHeader6;
+
184  break;
+
185  case PackHeader6:
+
186  parse_state_ = PackHeader7;
+
187  break;
+
188  case PackHeader7:
+
189  parse_state_ = PackHeader8;
+
190  break;
+
191  case PackHeader8:
+
192  parse_state_ = PackHeader9;
+
193  break;
+
194  case PackHeader9:
+
195  parse_state_ = PackHeader10;
+
196  break;
+
197  case PackHeader10:
+
198  skip_bytes_ = *read_ptr & 0x07;
+
199  parse_state_ = PackHeaderStuffingSkip;
+
200  break;
+
201  case SystemHeader1:
+
202  skip_bytes_ = *read_ptr;
+
203  skip_bytes_ <<= 8;
+
204  parse_state_ = SystemHeader2;
+
205  break;
+
206  case SystemHeader2:
+
207  skip_bytes_ |= *read_ptr;
+
208  parse_state_ = SystemHeaderSkip;
+
209  break;
+
210  case PackHeaderStuffingSkip:
+
211  if ((end - read_ptr) >= (int32_t)skip_bytes_) {
+
212  read_ptr += skip_bytes_;
+
213  skip_bytes_ = 0;
+
214  parse_state_ = StartCode1;
+
215  } else {
+
216  skip_bytes_ -= (end - read_ptr);
+
217  read_ptr = end;
+
218  }
+
219  continue;
+
220  case SystemHeaderSkip:
+
221  if ((end - read_ptr) >= (int32_t)skip_bytes_) {
+
222  read_ptr += skip_bytes_;
+
223  skip_bytes_ = 0;
+
224  parse_state_ = StartCode1;
+
225  } else {
+
226  uint32_t remaining_size = end - read_ptr;
+
227  skip_bytes_ -= remaining_size;
+
228  read_ptr = end;
+
229  }
+
230  continue;
+
231  case PesStreamId:
+
232  pes_stream_id_ = *read_ptr;
+
233  if (!metadata_is_complete_ &&
+
234  (pes_stream_id_ != kPsmStreamId) &&
+
235  (pes_stream_id_ != kIndexStreamId) &&
+
236  (pes_stream_id_ != kEcmStreamId) &&
+
237  (pes_stream_id_ != kV2MetadataStreamId) &&
+
238  (pes_stream_id_ != kPaddingStreamId)) {
+
239  metadata_is_complete_ = true;
+
240  }
+
241  parse_state_ = PesPacketLength1;
+
242  break;
+
243  case PesPacketLength1:
+
244  pes_packet_bytes_ = *read_ptr;
+
245  pes_packet_bytes_ <<= 8;
+
246  parse_state_ = PesPacketLength2;
+
247  break;
+
248  case PesPacketLength2:
+
249  pes_packet_bytes_ |= *read_ptr;
+
250  if (HAS_HEADER_EXTENSION(pes_stream_id_)) {
+
251  parse_state_ = PesExtension1;
+
252  } else {
+
253  pes_flags_1_ = pes_flags_2_ = 0;
+
254  pes_header_data_bytes_ = 0;
+
255  parse_state_ = PesPayload;
+
256  }
+
257  break;
+
258  case PesExtension1:
+
259  prev_pes_flags_1_ = pes_flags_1_;
+
260  pes_flags_1_ = *read_ptr;
+
261  --pes_packet_bytes_;
+
262  parse_state_ = PesExtension2;
+
263  break;
+
264  case PesExtension2:
+
265  pes_flags_2_ = *read_ptr;
+
266  --pes_packet_bytes_;
+
267  parse_state_ = PesExtension3;
+
268  break;
+
269  case PesExtension3:
+
270  pes_header_data_bytes_ = *read_ptr;
+
271  --pes_packet_bytes_;
+
272  if (pes_flags_2_ & kPesOptPts) {
+
273  parse_state_ = Pts1;
+
274  } else {
+
275  parse_state_ = PesHeaderData;
+
276  }
+
277  break;
+
278  case Pts1:
+
279  timestamp_ = (*read_ptr & 0x0E);
+
280  --pes_header_data_bytes_;
+
281  --pes_packet_bytes_;
+
282  parse_state_ = Pts2;
+
283  break;
+
284  case Pts2:
+
285  timestamp_ <<= 7;
+
286  timestamp_ |= *read_ptr;
+
287  --pes_header_data_bytes_;
+
288  --pes_packet_bytes_;
+
289  parse_state_ = Pts3;
+
290  break;
+
291  case Pts3:
+
292  timestamp_ <<= 7;
+
293  timestamp_ |= *read_ptr >> 1;
+
294  --pes_header_data_bytes_;
+
295  --pes_packet_bytes_;
+
296  parse_state_ = Pts4;
+
297  break;
+
298  case Pts4:
+
299  timestamp_ <<= 8;
+
300  timestamp_ |= *read_ptr;
+
301  --pes_header_data_bytes_;
+
302  --pes_packet_bytes_;
+
303  parse_state_ = Pts5;
+
304  break;
+
305  case Pts5:
+
306  timestamp_ <<= 7;
+
307  timestamp_ |= *read_ptr >> 1;
+
308  pts_ = timestamp_;
+
309  --pes_header_data_bytes_;
+
310  --pes_packet_bytes_;
+
311  if (pes_flags_2_ & kPesOptDts) {
+
312  parse_state_ = Dts1;
+
313  } else {
+
314  dts_ = pts_;
+
315  parse_state_ = PesHeaderData;
+
316  }
+
317  break;
+
318  case Dts1:
+
319  timestamp_ = (*read_ptr & 0x0E);
+
320  --pes_header_data_bytes_;
+
321  --pes_packet_bytes_;
+
322  parse_state_ = Dts2;
+
323  break;
+
324  case Dts2:
+
325  timestamp_ <<= 7;
+
326  timestamp_ |= *read_ptr;
+
327  --pes_header_data_bytes_;
+
328  --pes_packet_bytes_;
+
329  parse_state_ = Dts3;
+
330  break;
+
331  case Dts3:
+
332  timestamp_ <<= 7;
+
333  timestamp_ |= *read_ptr >> 1;
+
334  --pes_header_data_bytes_;
+
335  --pes_packet_bytes_;
+
336  parse_state_ = Dts4;
+
337  break;
+
338  case Dts4:
+
339  timestamp_ <<= 8;
+
340  timestamp_ |= *read_ptr;
+
341  --pes_header_data_bytes_;
+
342  --pes_packet_bytes_;
+
343  parse_state_ = Dts5;
+
344  break;
+
345  case Dts5:
+
346  timestamp_ <<= 7;
+
347  timestamp_ |= *read_ptr >> 1;
+
348  dts_ = timestamp_;
+
349  --pes_header_data_bytes_;
+
350  --pes_packet_bytes_;
+
351  parse_state_ = PesHeaderData;
+
352  break;
+
353  case PesHeaderData:
+
354  num_bytes = end - read_ptr;
+
355  if (num_bytes >= pes_header_data_bytes_) {
+
356  num_bytes = pes_header_data_bytes_;
+
357  parse_state_ = PesPayload;
+
358  }
+
359  pes_header_data_bytes_ -= num_bytes;
+
360  pes_packet_bytes_ -= num_bytes;
+
361  read_ptr += num_bytes;
+
362  continue;
+
363  case PesPayload:
+
364  switch (pes_stream_id_) {
+
365  case kPsmStreamId:
+
366  psm_data_.clear();
+
367  parse_state_ = PsmPayload;
+
368  continue;
+
369  case kPaddingStreamId:
+
370  parse_state_ = Padding;
+
371  continue;
+
372  case kEcmStreamId:
+
373  ecm_.clear();
+
374  parse_state_ = EcmPayload;
+
375  continue;
+
376  case kIndexStreamId:
+
377  parse_state_ = IndexPayload;
+
378  continue;
+
379  default:
+
380  if (!DemuxNextPes(false)) {
+
381  return false;
+
382  }
+
383  parse_state_ = EsPayload;
+
384  }
+
385  continue;
+
386  case PsmPayload:
+
387  num_bytes = end - read_ptr;
+
388  if (num_bytes >= pes_packet_bytes_) {
+
389  num_bytes = pes_packet_bytes_;
+
390  parse_state_ = StartCode1;
+
391  }
+
392  if (num_bytes > 0) {
+
393  pes_packet_bytes_ -= num_bytes;
+
394  prev_size = psm_data_.size();
+
395  psm_data_.resize(prev_size + num_bytes);
+
396  memcpy(&psm_data_[prev_size], read_ptr, num_bytes);
+
397  }
+
398  read_ptr += num_bytes;
+
399  continue;
+
400  case EcmPayload:
+
401  num_bytes = end - read_ptr;
+
402  if (num_bytes >= pes_packet_bytes_) {
+
403  num_bytes = pes_packet_bytes_;
+
404  parse_state_ = StartCode1;
+
405  }
+
406  if (num_bytes > 0) {
+
407  pes_packet_bytes_ -= num_bytes;
+
408  prev_size = ecm_.size();
+
409  ecm_.resize(prev_size + num_bytes);
+
410  memcpy(&ecm_[prev_size], read_ptr, num_bytes);
+
411  }
+
412  if ((pes_packet_bytes_ == 0) && !ecm_.empty()) {
+
413  if (!ProcessEcm()) {
+
414  return(false);
+
415  }
+
416  }
+
417  read_ptr += num_bytes;
+
418  continue;
+
419  case IndexPayload:
+
420  num_bytes = end - read_ptr;
+
421  if (num_bytes >= pes_packet_bytes_) {
+
422  num_bytes = pes_packet_bytes_;
+
423  parse_state_ = StartCode1;
+
424  }
+
425  if (num_bytes > 0) {
+
426  pes_packet_bytes_ -= num_bytes;
+
427  prev_size = index_data_.size();
+
428  index_data_.resize(prev_size + num_bytes);
+
429  memcpy(&index_data_[prev_size], read_ptr, num_bytes);
+
430  }
+
431  if (pes_packet_bytes_ == 0 && !index_data_.empty()) {
+
432  if (!metadata_is_complete_) {
+
433  if (!ParseIndexEntry()) {
+
434  return false;
+
435  }
+
436  }
+
437  }
+
438  read_ptr += num_bytes;
+
439  continue;
+
440  case EsPayload:
+
441  num_bytes = end - read_ptr;
+
442  if (num_bytes >= pes_packet_bytes_) {
+
443  num_bytes = pes_packet_bytes_;
+
444  parse_state_ = StartCode1;
+
445  }
+
446  pes_packet_bytes_ -= num_bytes;
+
447  if (pes_stream_id_ != kV2MetadataStreamId) {
+
448  sample_data_.resize(sample_data_.size() + num_bytes);
+
449  memcpy(&sample_data_[sample_data_.size() - num_bytes], read_ptr,
+
450  num_bytes);
+
451  }
+
452  prev_pes_stream_id_ = pes_stream_id_;
+
453  read_ptr += num_bytes;
+
454  continue;
+
455  case Padding:
+
456  num_bytes = end - read_ptr;
+
457  if (num_bytes >= pes_packet_bytes_) {
+
458  num_bytes = pes_packet_bytes_;
+
459  parse_state_ = StartCode1;
+
460  }
+
461  pes_packet_bytes_ -= num_bytes;
+
462  read_ptr += num_bytes;
+
463  continue;
+
464  case ProgramEnd:
+
465  parse_state_ = StartCode1;
+
466  metadata_is_complete_ = true;
+
467  if (!DemuxNextPes(true)) {
+
468  return false;
+
469  }
+
470  if (!Flush()) {
+
471  return false;
+
472  }
+
473  // Reset.
+
474  dts_ = pts_ = 0;
+
475  parse_state_ = StartCode1;
+
476  prev_media_sample_data_.Reset();
+
477  current_program_id_++;
+
478  ecm_.clear();
+
479  index_data_.clear();
+
480  psm_data_.clear();
+
481  break;
+
482  default:
+
483  break;
+
484  }
+
485  ++read_ptr;
+
486  }
+
487  return true;
+
488 }
+
489 
+
490 bool WvmMediaParser::EmitLastSample(uint32_t stream_id,
+
491  scoped_refptr<MediaSample>& new_sample) {
+
492  std::string key = base::UintToString(current_program_id_)
+
493  .append(":")
+
494  .append(base::UintToString(stream_id));
+
495  std::map<std::string, uint32_t>::iterator it =
+
496  program_demux_stream_map_.find(key);
+
497  if (it == program_demux_stream_map_.end())
+
498  return false;
+
499  return EmitSample(stream_id, (*it).second, new_sample, true);
+
500 }
+
501 
+
502 bool WvmMediaParser::EmitPendingSamples() {
+
503  // Emit queued samples which were built when not initialized.
+
504  while (!media_sample_queue_.empty()) {
+
505  DemuxStreamIdMediaSample& demux_stream_media_sample =
+
506  media_sample_queue_.front();
+
507  if (!EmitSample(demux_stream_media_sample.parsed_audio_or_video_stream_id,
+
508  demux_stream_media_sample.demux_stream_id,
+
509  demux_stream_media_sample.media_sample,
+
510  false)) {
+
511  return false;
+
512  }
+
513  media_sample_queue_.pop_front();
+
514  }
+
515  return true;
+
516 }
+
517 
+
518 bool WvmMediaParser::Flush() {
+
519  // Flush the last audio and video sample for current program.
+
520  // Reset the streamID when successfully emitted.
+
521  if (prev_media_sample_data_.audio_sample != NULL) {
+
522  if (!EmitLastSample(prev_pes_stream_id_,
+
523  prev_media_sample_data_.audio_sample)) {
+
524  LOG(ERROR) << "Did not emit last sample for audio stream with ID = "
+
525  << prev_pes_stream_id_;
+
526  return false;
+
527  }
+
528  }
+
529  if (prev_media_sample_data_.video_sample != NULL) {
+
530  if (!EmitLastSample(prev_pes_stream_id_,
+
531  prev_media_sample_data_.video_sample)) {
+
532  LOG(ERROR) << "Did not emit last sample for video stream with ID = "
+
533  << prev_pes_stream_id_;
+
534  return false;
+
535  }
+
536  }
+
537  return true;
+
538 }
+
539 
+
540 bool WvmMediaParser::ParseIndexEntry() {
+
541  // Do not parse index entry at the beginning of any track *after* the first
+
542  // track.
+
543  if (current_program_id_ > 0) {
+
544  return true;
+
545  }
+
546  uint32_t index_size = 0;
+
547  if (index_data_.size() < kIndexVersion4HeaderSize) {
+
548  return false;
+
549  }
+
550 
+
551  const uint8_t* read_ptr = index_data_.data();
+
552  if (ntohlFromBuffer(read_ptr) != kIndexMagic) {
+
553  index_data_.clear();
+
554  return false;
+
555  }
+
556  read_ptr += 4;
+
557 
+
558  uint32_t version = ntohlFromBuffer(read_ptr);
+
559  read_ptr += 4;
+
560  if (version == kVersion4) {
+
561  index_size = kIndexVersion4HeaderSize + ntohlFromBuffer(read_ptr);
+
562  if (index_data_.size() < index_size) {
+
563  // We do not yet have the full index. Keep accumulating index data.
+
564  return true;
+
565  }
+
566  read_ptr += sizeof(uint32_t);
+
567 
+
568  // Index metadata
+
569  uint32_t index_metadata_max_size = index_size - kIndexVersion4HeaderSize;
+
570  if (index_metadata_max_size < sizeof(uint8_t)) {
+
571  index_data_.clear();
+
572  return false;
+
573  }
+
574 
+
575  uint64_t track_duration = 0;
+
576  int16_t trick_play_rate = 0;
+
577  uint32_t sampling_frequency = kDefaultSamplingFrequency;
+
578  uint32_t time_scale = kMpeg2ClockRate;
+
579  uint16_t video_width = 0;
+
580  uint16_t video_height = 0;
+
581  uint32_t pixel_width = 0;
+
582  uint32_t pixel_height = 0;
+
583  uint8_t nalu_length_size = kNaluLengthSize;
+
584  uint8_t num_channels = 0;
+
585  int audio_pes_stream_id = 0;
+
586  int video_pes_stream_id = 0;
+
587  bool has_video = false;
+
588  bool has_audio = false;
+
589  std::vector<uint8_t> audio_codec_config;
+
590  std::vector<uint8_t> video_codec_config;
+
591  uint8_t num_index_entries = *read_ptr;
+
592  ++read_ptr;
+
593  --index_metadata_max_size;
+
594 
+
595  for (uint8_t idx = 0; idx < num_index_entries; ++idx) {
+
596  if (index_metadata_max_size < (2 * sizeof(uint8_t)) + sizeof(uint32_t)) {
+
597  return false;
+
598  }
+
599  uint8_t tag = *read_ptr;
+
600  ++read_ptr;
+
601  uint8_t type = *read_ptr;
+
602  ++read_ptr;
+
603  uint32_t length = ntohlFromBuffer(read_ptr);
+
604  read_ptr += sizeof(uint32_t);
+
605  index_metadata_max_size -= (2 * sizeof(uint8_t)) + sizeof(uint32_t);
+
606  if (index_metadata_max_size < length) {
+
607  return false;
+
608  }
+
609  int64_t value = 0;
+
610  Tag tagtype = Unset;
+
611  std::vector<uint8_t> binary_data;
+
612  switch (Type(type)) {
+
613  case Type_uint8:
+
614  if (length == sizeof(uint8_t)) {
+
615  tagtype = GetTag(tag, length, read_ptr, &value);
+
616  } else {
+
617  return false;
+
618  }
+
619  break;
+
620  case Type_int8:
+
621  if (length == sizeof(int8_t)) {
+
622  tagtype = GetTag(tag, length, read_ptr, &value);
+
623  } else {
+
624  return false;
+
625  }
+
626  break;
+
627  case Type_uint16:
+
628  if (length == sizeof(uint16_t)) {
+
629  tagtype = GetTag(tag, length, read_ptr, &value);
+
630  } else {
+
631  return false;
+
632  }
+
633  break;
+
634  case Type_int16:
+
635  if (length == sizeof(int16_t)) {
+
636  tagtype = GetTag(tag, length, read_ptr, &value);
+
637  } else {
+
638  return false;
+
639  }
+
640  break;
+
641  case Type_uint32:
+
642  if (length == sizeof(uint32_t)) {
+
643  tagtype = GetTag(tag, length, read_ptr, &value);
+
644  } else {
+
645  return false;
+
646  }
+
647  break;
+
648  case Type_int32:
+
649  if (length == sizeof(int32_t)) {
+
650  tagtype = GetTag(tag, length, read_ptr, &value);
+
651  } else {
+
652  return false;
+
653  }
+
654  break;
+
655  case Type_uint64:
+
656  if (length == sizeof(uint64_t)) {
+
657  tagtype = GetTag(tag, length, read_ptr, &value);
+
658  } else {
+
659  return false;
+
660  }
+
661  break;
+
662  case Type_int64:
+
663  if (length == sizeof(int64_t)) {
+
664  tagtype = GetTag(tag, length, read_ptr, &value);
+
665  } else {
+
666  return false;
+
667  }
+
668  break;
+
669  case Type_string:
+
670  case Type_BinaryData:
+
671  binary_data.assign(read_ptr, read_ptr + length);
+
672  tagtype = Tag(tag);
+
673  break;
+
674  default:
+
675  break;
+
676  }
+
677 
+
678  switch (tagtype) {
+
679  case TrackDuration:
+
680  track_duration = value;
+
681  break;
+
682  case TrackTrickPlayRate:
+
683  trick_play_rate = value;
+
684  break;
+
685  case VideoStreamId:
+
686  video_pes_stream_id = value;
+
687  break;
+
688  case AudioStreamId:
+
689  audio_pes_stream_id = value;
+
690  break;
+
691  case VideoWidth:
+
692  video_width = (uint16_t)value;
+
693  break;
+
694  case VideoHeight:
+
695  video_height = (uint16_t)value;
+
696  break;
+
697  case AudioNumChannels:
+
698  num_channels = (uint8_t)value;
+
699  break;
+
700  case VideoType:
+
701  has_video = true;
+
702  break;
+
703  case AudioType:
+
704  has_audio = true;
+
705  break;
+
706  case VideoPixelWidth:
+
707  pixel_width = static_cast<uint32_t>(value);
+
708  break;
+
709  case VideoPixelHeight:
+
710  pixel_height = static_cast<uint32_t>(value);
+
711  break;
+
712  case Audio_EsDescriptor: {
+
713  ESDescriptor descriptor;
+
714  if (!descriptor.Parse(binary_data)) {
+
715  LOG(ERROR) <<
+
716  "Could not extract AudioSpecificConfig from ES_Descriptor";
+
717  return false;
+
718  }
+
719  audio_codec_config = descriptor.decoder_specific_info();
+
720  break;
+
721  }
+
722  case Audio_EC3SpecificData:
+
723  case Audio_DtsSpecificData:
+
724  case Audio_AC3SpecificData:
+
725  LOG(ERROR) << "Audio type not supported.";
+
726  return false;
+
727  case Video_AVCDecoderConfigurationRecord:
+
728  video_codec_config = binary_data;
+
729  break;
+
730  default:
+
731  break;
+
732  }
+
733 
+
734  read_ptr += length;
+
735  index_metadata_max_size -= length;
+
736  }
+
737  // End Index metadata
+
738  index_size = read_ptr - index_data_.data();
+
739 
+
740  if (has_video) {
+
741  Codec video_codec = kCodecH264;
+
742  stream_infos_.push_back(new VideoStreamInfo(
+
743  stream_id_count_, time_scale, track_duration, video_codec,
+
744  std::string(), video_codec_config.data(), video_codec_config.size(),
+
745  video_width, video_height, pixel_width, pixel_height, trick_play_rate,
+
746  nalu_length_size, std::string(), true));
+
747  program_demux_stream_map_[base::UintToString(index_program_id_) + ":" +
+
748  base::UintToString(
+
749  video_pes_stream_id
+
750  ? video_pes_stream_id
+
751  : kDefaultVideoStreamId)] =
+
752  stream_id_count_++;
+
753  }
+
754  if (has_audio) {
+
755  const Codec audio_codec = kCodecAAC;
+
756  // TODO(beil): Pass in max and average bitrate in wvm container.
+
757  stream_infos_.push_back(new AudioStreamInfo(
+
758  stream_id_count_, time_scale, track_duration, audio_codec,
+
759  std::string(), audio_codec_config.data(), audio_codec_config.size(),
+
760  kAacSampleSizeBits, num_channels, sampling_frequency,
+
761  0 /* seek preroll */, 0 /* codec delay */, 0 /* max bitrate */,
+
762  0 /* avg bitrate */, std::string(), true));
+
763  program_demux_stream_map_[base::UintToString(index_program_id_) + ":" +
+
764  base::UintToString(
+
765  audio_pes_stream_id
+
766  ? audio_pes_stream_id
+
767  : kDefaultAudioStreamId)] =
+
768  stream_id_count_++;
+
769  }
+
770  }
+
771 
+
772  index_program_id_++;
+
773  index_data_.clear();
+
774  return true;
+
775 }
+
776 
+
777 bool WvmMediaParser::DemuxNextPes(bool is_program_end) {
+
778  bool output_encrypted_sample = false;
+
779  if (!sample_data_.empty() && (prev_pes_flags_1_ & kScramblingBitsMask)) {
+
780  // Decrypt crypto unit.
+
781  if (!content_decryptor_) {
+
782  output_encrypted_sample = true;
+
783  } else {
+
784  content_decryptor_->Crypt(&sample_data_[crypto_unit_start_pos_],
+
785  sample_data_.size() - crypto_unit_start_pos_,
+
786  &sample_data_[crypto_unit_start_pos_]);
+
787  }
+
788  }
+
789  // Demux media sample if we are at program end or if we are not at a
+
790  // continuation PES.
+
791  if ((pes_flags_2_ & kPesOptPts) || is_program_end) {
+
792  if (!sample_data_.empty()) {
+
793  if (!Output(output_encrypted_sample)) {
+
794  return false;
+
795  }
+
796  }
+
797  StartMediaSampleDemux();
+
798  }
+
799 
+
800  crypto_unit_start_pos_ = sample_data_.size();
+
801  return true;
+
802 }
+
803 
+
804 void WvmMediaParser::StartMediaSampleDemux() {
+
805  bool is_key_frame = ((pes_flags_1_ & kPesOptAlign) != 0);
+
806  media_sample_ = MediaSample::CreateEmptyMediaSample();
+
807  media_sample_->set_dts(dts_);
+
808  media_sample_->set_pts(pts_);
+
809  media_sample_->set_is_key_frame(is_key_frame);
+
810 
+
811  sample_data_.clear();
+
812 }
+
813 
+
814 bool WvmMediaParser::Output(bool output_encrypted_sample) {
+
815  if (output_encrypted_sample) {
+
816  media_sample_->set_data(sample_data_.data(), sample_data_.size());
+
817  media_sample_->set_is_encrypted(true);
+
818  } else {
+
819  if ((prev_pes_stream_id_ & kPesStreamIdVideoMask) == kPesStreamIdVideo) {
+
820  // Convert video stream to unit stream and get config.
+
821  std::vector<uint8_t> nal_unit_stream;
+
822  if (!byte_to_unit_stream_converter_.ConvertByteStreamToNalUnitStream(
+
823  sample_data_.data(), sample_data_.size(), &nal_unit_stream)) {
+
824  LOG(ERROR) << "Could not convert h.264 byte stream sample";
+
825  return false;
+
826  }
+
827  media_sample_->set_data(nal_unit_stream.data(), nal_unit_stream.size());
+
828  if (!is_initialized_) {
+
829  // Set extra data for video stream from AVC Decoder Config Record.
+
830  // Also, set codec string from the AVC Decoder Config Record.
+
831  std::vector<uint8_t> decoder_config_record;
+
832  byte_to_unit_stream_converter_.GetDecoderConfigurationRecord(
+
833  &decoder_config_record);
+
834  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
+
835  if (stream_infos_[i]->stream_type() == kStreamVideo &&
+
836  stream_infos_[i]->codec_string().empty()) {
+
837  const std::vector<uint8_t>* stream_config;
+
838  if (stream_infos_[i]->codec_config().empty()) {
+
839  // Decoder config record not available for stream. Use the one
+
840  // computed from the first video stream.
+
841  stream_infos_[i]->set_codec_config(decoder_config_record);
+
842  stream_config = &decoder_config_record;
+
843  } else {
+
844  // Use stream-specific config record.
+
845  stream_config = &stream_infos_[i]->codec_config();
+
846  }
+
847  DCHECK(stream_config);
+
848 
+
849  VideoStreamInfo* video_stream_info =
+
850  reinterpret_cast<VideoStreamInfo*>(stream_infos_[i].get());
+
851  AVCDecoderConfigurationRecord avc_config;
+
852  if (!avc_config.Parse(*stream_config)) {
+
853  LOG(WARNING) << "Failed to parse AVCDecoderConfigurationRecord. "
+
854  "Using computed configuration record instead.";
+
855  video_stream_info->set_codec_config(decoder_config_record);
+
856  if (!avc_config.Parse(decoder_config_record)) {
+
857  LOG(ERROR) << "Failed to parse AVCDecoderConfigurationRecord.";
+
858  return false;
+
859  }
+
860  }
+
861  video_stream_info->set_codec_string(avc_config.GetCodecString());
+
862 
+
863  if (avc_config.pixel_width() != video_stream_info->pixel_width() ||
+
864  avc_config.pixel_height() !=
+
865  video_stream_info->pixel_height()) {
+
866  LOG_IF(WARNING, video_stream_info->pixel_width() != 0 ||
+
867  video_stream_info->pixel_height() != 0)
+
868  << "Pixel aspect ratio in WVM metadata ("
+
869  << video_stream_info->pixel_width() << ","
+
870  << video_stream_info->pixel_height()
+
871  << ") does not match with SAR in "
+
872  "AVCDecoderConfigurationRecord ("
+
873  << avc_config.pixel_width() << ","
+
874  << avc_config.pixel_height()
+
875  << "). Use AVCDecoderConfigurationRecord.";
+
876  video_stream_info->set_pixel_width(avc_config.pixel_width());
+
877  video_stream_info->set_pixel_height(avc_config.pixel_height());
+
878  }
+
879  if (avc_config.coded_width() != video_stream_info->width() ||
+
880  avc_config.coded_height() != video_stream_info->height()) {
+
881  LOG(WARNING) << "Resolution in WVM metadata ("
+
882  << video_stream_info->width() << ","
+
883  << video_stream_info->height()
+
884  << ") does not match with resolution in "
+
885  "AVCDecoderConfigurationRecord ("
+
886  << avc_config.coded_width() << ","
+
887  << avc_config.coded_height()
+
888  << "). Use AVCDecoderConfigurationRecord.";
+
889  video_stream_info->set_width(avc_config.coded_width());
+
890  video_stream_info->set_height(avc_config.coded_height());
+
891  }
+
892  }
+
893  }
+
894  }
+
895  } else if ((prev_pes_stream_id_ & kPesStreamIdAudioMask) ==
+
896  kPesStreamIdAudio) {
+
897  // Set data on the audio stream.
+
898  int frame_size = mp2t::AdtsHeader::GetAdtsFrameSize(sample_data_.data(),
+
899  kAdtsHeaderMinSize);
+
900  mp2t::AdtsHeader adts_header;
+
901  const uint8_t* frame_ptr = sample_data_.data();
+
902  if (!adts_header.Parse(frame_ptr, frame_size)) {
+
903  LOG(ERROR) << "Could not parse ADTS header";
+
904  return false;
+
905  }
+
906  size_t header_size = adts_header.GetAdtsHeaderSize(frame_ptr,
+
907  frame_size);
+
908  media_sample_->set_data(frame_ptr + header_size,
+
909  frame_size - header_size);
+
910  if (!is_initialized_) {
+
911  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
+
912  if (stream_infos_[i]->stream_type() == kStreamAudio &&
+
913  stream_infos_[i]->codec_string().empty()) {
+
914  AudioStreamInfo* audio_stream_info =
+
915  reinterpret_cast<AudioStreamInfo*>(stream_infos_[i].get());
+
916  if (audio_stream_info->codec_config().empty()) {
+
917  // Set AudioStreamInfo fields using information from the ADTS
+
918  // header.
+
919  audio_stream_info->set_sampling_frequency(
+
920  adts_header.GetSamplingFrequency());
+
921  std::vector<uint8_t> audio_specific_config;
+
922  if (!adts_header.GetAudioSpecificConfig(&audio_specific_config)) {
+
923  LOG(ERROR) << "Could not compute AACaudiospecificconfig";
+
924  return false;
+
925  }
+
926  audio_stream_info->set_codec_config(audio_specific_config);
+
927  audio_stream_info->set_codec_string(
+ +
929  kCodecAAC, adts_header.GetObjectType()));
+
930  } else {
+
931  // Set AudioStreamInfo fields using information from the
+
932  // AACAudioSpecificConfig record.
+
933  AACAudioSpecificConfig aac_config;
+
934  if (!aac_config.Parse(stream_infos_[i]->codec_config())) {
+
935  LOG(ERROR) << "Could not parse AACAudioSpecificconfig";
+
936  return false;
+
937  }
+
938  audio_stream_info->set_sampling_frequency(aac_config.frequency());
+
939  audio_stream_info->set_codec_string(
+ +
941  kCodecAAC, aac_config.audio_object_type()));
+
942  }
+
943  }
+
944  }
+
945  }
+
946  }
+
947  }
+
948 
+
949  if (!is_initialized_) {
+
950  bool all_streams_have_config = true;
+
951  // Check if all collected stream infos have codec_config set.
+
952  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
+
953  if (stream_infos_[i]->codec_string().empty()) {
+
954  all_streams_have_config = false;
+
955  break;
+
956  }
+
957  }
+
958  if (all_streams_have_config) {
+
959  init_cb_.Run(stream_infos_);
+
960  is_initialized_ = true;
+
961  }
+
962  }
+
963 
+
964  DCHECK_GT(media_sample_->data_size(), 0UL);
+
965  std::string key = base::UintToString(current_program_id_).append(":")
+
966  .append(base::UintToString(prev_pes_stream_id_));
+
967  std::map<std::string, uint32_t>::iterator it =
+
968  program_demux_stream_map_.find(key);
+
969  if (it == program_demux_stream_map_.end()) {
+
970  // TODO(ramjic): Log error message here and in other error cases through
+
971  // this method.
+
972  return false;
+
973  }
+
974  DemuxStreamIdMediaSample demux_stream_media_sample;
+
975  demux_stream_media_sample.parsed_audio_or_video_stream_id =
+
976  prev_pes_stream_id_;
+
977  demux_stream_media_sample.demux_stream_id = (*it).second;
+
978  demux_stream_media_sample.media_sample = media_sample_;
+
979  // Check if sample can be emitted.
+
980  if (!is_initialized_) {
+
981  media_sample_queue_.push_back(demux_stream_media_sample);
+
982  } else {
+
983  // flush the sample queue and emit all queued samples.
+
984  while (!media_sample_queue_.empty()) {
+
985  if (!EmitPendingSamples())
+
986  return false;
+
987  }
+
988  // Emit current sample.
+
989  if (!EmitSample(prev_pes_stream_id_, (*it).second, media_sample_, false))
+
990  return false;
+
991  }
+
992  return true;
+
993 }
+
994 
+
995 bool WvmMediaParser::EmitSample(uint32_t parsed_audio_or_video_stream_id,
+
996  uint32_t stream_id,
+
997  scoped_refptr<MediaSample>& new_sample,
+
998  bool isLastSample) {
+
999  DCHECK(new_sample);
+
1000  if (isLastSample) {
+
1001  if ((parsed_audio_or_video_stream_id & kPesStreamIdVideoMask) ==
+
1002  kPesStreamIdVideo) {
+
1003  new_sample->set_duration(prev_media_sample_data_.video_sample_duration);
+
1004  } else if ((parsed_audio_or_video_stream_id & kPesStreamIdAudioMask) ==
+
1005  kPesStreamIdAudio) {
+
1006  new_sample->set_duration(prev_media_sample_data_.audio_sample_duration);
+
1007  }
+
1008  if (!new_sample_cb_.Run(stream_id, new_sample)) {
+
1009  LOG(ERROR) << "Failed to process the last sample.";
+
1010  return false;
+
1011  }
+
1012  return true;
+
1013  }
+
1014 
+
1015  // Cannot emit current sample. Compute duration first and then,
+
1016  // emit previous sample.
+
1017  if ((parsed_audio_or_video_stream_id & kPesStreamIdVideoMask) ==
+
1018  kPesStreamIdVideo) {
+
1019  if (prev_media_sample_data_.video_sample == NULL) {
+
1020  prev_media_sample_data_.video_sample = new_sample;
+
1021  prev_media_sample_data_.video_stream_id = stream_id;
+
1022  return true;
+
1023  }
+
1024  prev_media_sample_data_.video_sample->set_duration(
+
1025  new_sample->dts() - prev_media_sample_data_.video_sample->dts());
+
1026  prev_media_sample_data_.video_sample_duration =
+
1027  prev_media_sample_data_.video_sample->duration();
+
1028  if (!new_sample_cb_.Run(prev_media_sample_data_.video_stream_id,
+
1029  prev_media_sample_data_.video_sample)) {
+
1030  LOG(ERROR) << "Failed to process the video sample.";
+
1031  return false;
+
1032  }
+
1033  prev_media_sample_data_.video_sample = new_sample;
+
1034  prev_media_sample_data_.video_stream_id = stream_id;
+
1035  } else if ((parsed_audio_or_video_stream_id & kPesStreamIdAudioMask) ==
+
1036  kPesStreamIdAudio) {
+
1037  if (prev_media_sample_data_.audio_sample == NULL) {
+
1038  prev_media_sample_data_.audio_sample = new_sample;
+
1039  prev_media_sample_data_.audio_stream_id = stream_id;
+
1040  return true;
+
1041  }
+
1042  prev_media_sample_data_.audio_sample->set_duration(
+
1043  new_sample->dts() - prev_media_sample_data_.audio_sample->dts());
+
1044  prev_media_sample_data_.audio_sample_duration =
+
1045  prev_media_sample_data_.audio_sample->duration();
+
1046  if (!new_sample_cb_.Run(prev_media_sample_data_.audio_stream_id,
+
1047  prev_media_sample_data_.audio_sample)) {
+
1048  LOG(ERROR) << "Failed to process the audio sample.";
+
1049  return false;
+
1050  }
+
1051  prev_media_sample_data_.audio_sample = new_sample;
+
1052  prev_media_sample_data_.audio_stream_id = stream_id;
+
1053  }
+
1054  return true;
+
1055 }
+
1056 
+
1057 bool WvmMediaParser::GetAssetKey(const uint32_t asset_id,
+
1058  EncryptionKey* encryption_key) {
+
1059  DCHECK(decryption_key_source_);
+
1060  Status status = decryption_key_source_->FetchKeys(asset_id);
+
1061  if (!status.ok()) {
+
1062  LOG(ERROR) << "Fetch Key(s) failed for AssetID = " << asset_id
+
1063  << ", error = " << status;
+
1064  return false;
+
1065  }
+
1066 
+
1067  status = decryption_key_source_->GetKey(KeySource::TRACK_TYPE_HD,
+
1068  encryption_key);
+
1069  if (!status.ok()) {
+
1070  LOG(ERROR) << "Fetch Key(s) failed for AssetID = " << asset_id
+
1071  << ", error = " << status;
+
1072  return false;
+
1073  }
+
1074 
+
1075  return true;
+
1076 }
+
1077 
+
1078 bool WvmMediaParser::ProcessEcm() {
+
1079  // An error will be returned later if the samples need to be decrypted.
+
1080  if (!decryption_key_source_)
+
1081  return true;
+
1082 
+
1083  if (current_program_id_ > 0) {
+
1084  return true;
+
1085  }
+
1086  if (ecm_.size() != kEcmSizeBytes) {
+
1087  LOG(ERROR) << "Unexpected ECM size = " << ecm_.size()
+
1088  << ", expected size = " << kEcmSizeBytes;
+
1089  return false;
+
1090  }
+
1091  const uint8_t* ecm_data = ecm_.data();
+
1092  DCHECK(ecm_data);
+
1093  ecm_data += sizeof(uint32_t); // old version field - skip.
+
1094  ecm_data += sizeof(uint32_t); // clear lead - skip.
+
1095  ecm_data += sizeof(uint32_t); // system id(includes ECM version) - skip.
+
1096  uint32_t asset_id = ntohlFromBuffer(ecm_data);
+
1097  if (asset_id == 0) {
+
1098  LOG(ERROR) << "AssetID in ECM is not valid.";
+
1099  return false;
+
1100  }
+
1101  ecm_data += sizeof(uint32_t); // asset_id.
+
1102  EncryptionKey encryption_key;
+
1103  if (!GetAssetKey(asset_id, &encryption_key)) {
+
1104  return false;
+
1105  }
+
1106  if (encryption_key.key.size() < kAssetKeySizeBytes) {
+
1107  LOG(ERROR) << "Asset Key size of " << encryption_key.key.size()
+
1108  << " for AssetID = " << asset_id
+
1109  << " is less than minimum asset key size.";
+
1110  return false;
+
1111  }
+
1112  // Legacy WVM content may have asset keys > 16 bytes.
+
1113  // Use only the first 16 bytes of the asset key to get
+
1114  // the content key.
+
1115  std::vector<uint8_t> asset_key(
+
1116  encryption_key.key.begin(),
+
1117  encryption_key.key.begin() + kAssetKeySizeBytes);
+
1118  // WVM format always uses all zero IV.
+
1119  std::vector<uint8_t> zero_iv(kInitializationVectorSizeBytes, 0);
+
1120  AesCbcDecryptor asset_decryptor(kCtsPadding, AesCryptor::kUseConstantIv);
+
1121  if (!asset_decryptor.InitializeWithIv(asset_key, zero_iv)) {
+
1122  LOG(ERROR) << "Failed to initialize asset_decryptor.";
+
1123  return false;
+
1124  }
+
1125 
+
1126  const size_t content_key_buffer_size =
+
1127  kEcmFlagsSizeBytes + kEcmContentKeySizeBytes +
+
1128  kEcmPaddingSizeBytes; // flags + contentKey + padding.
+
1129  std::vector<uint8_t> content_key_buffer(content_key_buffer_size);
+
1130  CHECK(asset_decryptor.Crypt(ecm_data, content_key_buffer_size,
+
1131  content_key_buffer.data()));
+
1132 
+
1133  std::vector<uint8_t> decrypted_content_key_vec(
+
1134  content_key_buffer.begin() + 4,
+
1135  content_key_buffer.begin() + 20);
+
1136  std::unique_ptr<AesCbcDecryptor> content_decryptor(
+
1137  new AesCbcDecryptor(kCtsPadding, AesCryptor::kUseConstantIv));
+
1138  if (!content_decryptor->InitializeWithIv(decrypted_content_key_vec,
+
1139  zero_iv)) {
+
1140  LOG(ERROR) << "Failed to initialize content decryptor.";
+
1141  return false;
+
1142  }
+
1143 
+
1144  content_decryptor_ = std::move(content_decryptor);
+
1145  return true;
+
1146 }
+
1147 
+
1148 DemuxStreamIdMediaSample::DemuxStreamIdMediaSample() :
+
1149  demux_stream_id(0),
+
1150  parsed_audio_or_video_stream_id(0) {}
+
1151 
+
1152 DemuxStreamIdMediaSample::~DemuxStreamIdMediaSample() {}
+
1153 
+
1154 PrevSampleData::PrevSampleData() {
+
1155  Reset();
+
1156 }
+
1157 
+
1158 PrevSampleData::~PrevSampleData() {}
+
1159 
+
1160 void PrevSampleData::Reset() {
+
1161  audio_sample = NULL;
+
1162  video_sample = NULL;
+
1163  audio_stream_id = 0;
+
1164  video_stream_id = 0;
+
1165  audio_sample_duration = 0;
+
1166  video_sample_duration = 0;
+
1167 }
+
1168 
+
1169 } // namespace wvm
+
1170 } // namespace media
+
1171 } // namespace shaka
static size_t GetAdtsFrameSize(const uint8_t *data, size_t num_bytes)
Definition: adts_header.cc:23
static std::string GetCodecString(Codec codec, uint8_t audio_object_type)
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
@@ -1266,7 +1265,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d3b/mp4_2segmenter_8h_source.html b/docs/dd/d3b/mp4_2segmenter_8h_source.html index 0b168d7e5a..b633adb705 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -187,21 +187,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
137  std::vector<Fragmenter*> fragmenters_;
138  std::vector<uint64_t> segment_durations_;
139  std::map<const MediaStream*, uint32_t> stream_map_;
-
140  bool end_of_segment_;
-
141  MuxerListener* muxer_listener_;
-
142  ProgressListener* progress_listener_;
-
143  uint64_t progress_target_;
-
144  uint64_t accumulated_progress_;
-
145  uint32_t sample_duration_;
-
146 
-
147  DISALLOW_COPY_AND_ASSIGN(Segmenter);
-
148 };
-
149 
-
150 } // namespace mp4
-
151 } // namespace media
-
152 } // namespace shaka
-
153 
-
154 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
+
140  MuxerListener* muxer_listener_;
+
141  ProgressListener* progress_listener_;
+
142  uint64_t progress_target_;
+
143  uint64_t accumulated_progress_;
+
144  uint32_t sample_duration_;
+
145 
+
146  DISALLOW_COPY_AND_ASSIGN(Segmenter);
+
147 };
+
148 
+
149 } // namespace mp4
+
150 } // namespace media
+
151 } // namespace shaka
+
152 
+
153 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: segmenter.cc:166
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:389
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:405
@@ -221,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html b/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html index 323b07baa7..81d0f47036 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 fe2c6ccffe..3ac5572198 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d46/webm__parser_8h_source.html b/docs/dd/d46/webm__parser_8h_source.html index 9bd635c9f9..348bbea526 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 4c12b6d967..e095790110 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 f636848ce8..4ec7fcda16 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 1b34edd92b..c51e1fe8fe 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d59/classshaka_1_1media_1_1mp2t_1_1EsParserH265-members.html b/docs/dd/d59/classshaka_1_1media_1_1mp2t_1_1EsParserH265-members.html index b0b29799ce..f142ee2e0d 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 7c70f434ec..61d91a8dae 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 98cfa41bf4..68b270db5a 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 6a85862923..147e3d5953 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 6b93bafb15..13106ed88b 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 1aad267849..07b5631df6 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 263cc5fec1..8c5461c3b6 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 6ed7b238f6..711ae2a70d 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 c0788b3617..4325658a7d 100644 --- a/docs/dd/d7c/classshaka_1_1media_1_1IoCache.html +++ b/docs/dd/d7c/classshaka_1_1media_1_1IoCache.html @@ -149,7 +149,7 @@ void 
Returns
the number of bytes in the cache.
-

Definition at line 125 of file io_cache.cc.

+

Definition at line 127 of file io_cache.cc.

@@ -168,7 +168,7 @@ void 
Returns
the number of free bytes in the cache.
-

Definition at line 130 of file io_cache.cc.

+

Definition at line 132 of file io_cache.cc.

@@ -186,7 +186,7 @@ void 

Close the cache. This will call any blocking calls to unblock, and the cache won't be usable until Reopened.

-

Definition at line 109 of file io_cache.cc.

+

Definition at line 111 of file io_cache.cc.

@@ -249,7 +249,7 @@ void 
Returns
the number of bytes read into buffer, or 0 if the call unblocked because the cache has been closed and is empty.
-

Definition at line 38 of file io_cache.cc.

+

Definition at line 40 of file io_cache.cc.

@@ -286,7 +286,7 @@ void 
Returns
the amount of data written to the buffer (which will equal data), or 0 if the call unblocked because the cache has been closed.
-

Definition at line 66 of file io_cache.cc.

+

Definition at line 68 of file io_cache.cc.

@@ -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 380b2eb2ae..aeefbd7567 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -259,7 +259,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 b93246659a..c469efc97b 100644 --- a/docs/dd/d87/memory__file_8cc_source.html +++ b/docs/dd/d87/memory__file_8cc_source.html @@ -241,7 +241,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d88/pes__packet__generator_8h_source.html b/docs/dd/d88/pes__packet__generator_8h_source.html index ae5f60a09d..e8f0c670b9 100644 --- a/docs/dd/d88/pes__packet__generator_8h_source.html +++ b/docs/dd/d88/pes__packet__generator_8h_source.html @@ -174,7 +174,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8c/file__test__util_8h_source.html b/docs/dd/d8c/file__test__util_8h_source.html index 133a330dfa..3f0093c48e 100644 --- a/docs/dd/d8c/file__test__util_8h_source.html +++ b/docs/dd/d8c/file__test__util_8h_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html b/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html index edaba9c3e3..fb7d48b645 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 759eb0db8a..1ac7bc810d 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 0aeb794270..4613bb6383 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 f130b01735..ab3532c787 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 01dc289b98..76c46e2706 100644 --- a/docs/dd/d9d/classshaka_1_1MpdNotifier-members.html +++ b/docs/dd/d9d/classshaka_1_1MpdNotifier-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/da4/structshaka_1_1xml_1_1XmlDeleter.html b/docs/dd/da4/structshaka_1_1xml_1_1XmlDeleter.html index 9f978ea93c..678b907cc6 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 08b91c0c67..9bdf2be5fb 100644 --- a/docs/dd/da5/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html +++ b/docs/dd/da5/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html @@ -217,7 +217,7 @@ double cluster_length_sec< diff --git a/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html b/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html index a9ea4a53f9..b0b2521132 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 e2bf312d25..8b7307e720 100644 --- a/docs/dd/dab/webm__muxer_8h_source.html +++ b/docs/dd/dab/webm__muxer_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dae/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html b/docs/dd/dae/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html index 78dbe0cb0b..4fd7281b06 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 7f6096c9d1..16a5164a47 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 7114b9fc95..d98c0bd1c4 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 78b698e044..360c2a6fb2 100644 --- a/docs/dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html +++ b/docs/dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html @@ -156,7 +156,7 @@ Protected Member Functions diff --git a/docs/dd/dbc/buffer__reader_8cc_source.html b/docs/dd/dbc/buffer__reader_8cc_source.html index b33420691f..4b3f3cadc2 100644 --- a/docs/dd/dbc/buffer__reader_8cc_source.html +++ b/docs/dd/dbc/buffer__reader_8cc_source.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dbd/structshaka_1_1media_1_1EncryptionKey.html b/docs/dd/dbd/structshaka_1_1media_1_1EncryptionKey.html index 8f414713d0..d6dc870c96 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 2ad8d6ff82..b5a1793da5 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 83a6df1e3a..4efccfb12a 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 0e820afdcc..f184bb99fc 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 69a37413a7..056b94c649 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 ed6b6f5374..e071e2abd9 100644 --- a/docs/dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html +++ b/docs/dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html @@ -427,7 +427,7 @@ virtual Sta diff --git a/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html b/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html index 43b6f8914f..cca22645de 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 03efd5edf4..1615201341 100644 --- a/docs/dd/dce/structshaka_1_1media_1_1Cue.html +++ b/docs/dd/dce/structshaka_1_1media_1_1Cue.html @@ -125,7 +125,7 @@ std::vector< std::string >  diff --git a/docs/dd/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index c771db92de..1948976e2d 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 9e7615ae37..57ffc93a8a 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 c671cb4ae8..b246c01b59 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 1662b8b320..69660dacb2 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 68ff6a0d34..71401b8eb6 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 50561a7d5b..747b014b15 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 3fbf765108..f56a9cbdcb 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 5ce70f0ddb..11fcde13b6 100644 --- a/docs/dd/de7/xml__node_8h_source.html +++ b/docs/dd/de7/xml__node_8h_source.html @@ -231,7 +231,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 1801546355..22f5203d9a 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -2944,7 +2944,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 18cf308fcb..762f7e47b9 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html index bbe1865318..e1d53810a7 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 93100c3f83..115b05904e 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 23a2369344..2826970c0c 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 69713b4976..3e7afb5534 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 962c9837ac..a65add757c 100644 --- a/docs/de/d13/ts__writer_8cc_source.html +++ b/docs/de/d13/ts__writer_8cc_source.html @@ -361,7 +361,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d15/media__stream_8cc_source.html b/docs/de/d15/media__stream_8cc_source.html index ba37123241..e43c8fcfd2 100644 --- a/docs/de/d15/media__stream_8cc_source.html +++ b/docs/de/d15/media__stream_8cc_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d16/classshaka_1_1media_1_1TextTrackConfig-members.html b/docs/de/d16/classshaka_1_1media_1_1TextTrackConfig-members.html index 945b86aee5..5be78f1042 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 8bc5cc17c9..ad0fd20e33 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 bb01bbb345..0da022163c 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 86a6f9ea67..c3a822dc61 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -332,11 +332,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:255
-
static bool Delete(const char *file_name)
Definition: file.cc:164
+
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 2f1ae2811d..ecb5486d48 100644 --- a/docs/de/d22/aes__pattern__cryptor_8cc_source.html +++ b/docs/de/d22/aes__pattern__cryptor_8cc_source.html @@ -198,7 +198,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d27/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html b/docs/de/d27/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html index 72ca9236b8..f9ce461c1e 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 ae41960754..164d3bed35 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 94d59912a3..11e3047bd6 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 e68bc1b0ec..f1afffd2f9 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 0549342992..25a2030bc5 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 6e5b607ef7..5c2d8525aa 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 e799b5060e..f02d4f7786 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 254bb42889..873aa268f6 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 1464772c90..c57eaedd38 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 e24353977f..2add083deb 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 32d96bd256..c0ab8377b7 100644 --- a/docs/de/d49/classshaka_1_1media_1_1DecryptConfig.html +++ b/docs/de/d49/classshaka_1_1media_1_1DecryptConfig.html @@ -249,7 +249,7 @@ static const size_t  diff --git a/docs/de/d4a/muxer__listener__internal_8h_source.html b/docs/de/d4a/muxer__listener__internal_8h_source.html index e9dbe70da7..2ca00dfb37 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 9d278b693f..89c3242f50 100644 --- a/docs/de/d52/classshaka_1_1Representation.html +++ b/docs/de/d52/classshaka_1_1Representation.html @@ -456,7 +456,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/de/d55/structshaka_1_1media_1_1mp4_1_1Language-members.html b/docs/de/d55/structshaka_1_1media_1_1mp4_1_1Language-members.html index 6f4b96e006..a8c39c72cb 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 7151c18ac7..06a8f91ae6 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 956a9fbd9e..df75825bf5 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html b/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html index e88b0131da..6d706231c1 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 f846877f68..40c2ce351d 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 2abfb66c9e..56e5fb4026 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 237d486e46..151261f7fc 100644 --- a/docs/de/d6e/language__utils_8h_source.html +++ b/docs/de/d6e/language__utils_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d70/http__key__fetcher_8cc_source.html b/docs/de/d70/http__key__fetcher_8cc_source.html index 7a8697d8be..d34eb73778 100644 --- a/docs/de/d70/http__key__fetcher_8cc_source.html +++ b/docs/de/d70/http__key__fetcher_8cc_source.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d77/webm__content__encodings__client_8cc_source.html b/docs/de/d77/webm__content__encodings__client_8cc_source.html index cf06ff2c01..f01182a188 100644 --- a/docs/de/d77/webm__content__encodings__client_8cc_source.html +++ b/docs/de/d77/webm__content__encodings__client_8cc_source.html @@ -361,7 +361,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7b/mp4__media__parser_8h_source.html b/docs/de/d7b/mp4__media__parser_8h_source.html index 123d26b242..e3c38f0378 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -204,7 +204,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html b/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html index 7f36ba0fd7..5ab5511302 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 de86dc462b..ea4e006c87 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 2da67007ed..94d960f833 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 de9a30cf2a..e47e344a6e 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 d1bd360cf8..f162954a83 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 377bc523bb..a49981af80 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 cb38e04138..7b6a1c0836 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 fdbce60630..61514e5540 100644 --- a/docs/de/dab/es__parser__h26x_8cc_source.html +++ b/docs/de/dab/es__parser__h26x_8cc_source.html @@ -414,7 +414,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 1e14099f4b..5250dc1d6f 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 c3a2d5a15d..6db449f883 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 1eac49805c..1c09c438bd 100644 --- a/docs/de/db4/classshaka_1_1media_1_1H26xBitReader.html +++ b/docs/de/db4/classshaka_1_1media_1_1H26xBitReader.html @@ -134,7 +134,7 @@ size_t NumEmulationPrevent diff --git a/docs/de/dc1/demuxer_8h_source.html b/docs/de/dc1/demuxer_8h_source.html index 0e11f4a391..a73b4025b2 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html b/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html index 9b6321489f..77a2d70c3e 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 e659e2276c..d532307a76 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 5983a8acbb..d3d2a7a945 100644 --- a/docs/de/dcb/ts__segmenter_8h_source.html +++ b/docs/de/dcb/ts__segmenter_8h_source.html @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dcc/mock__mpd__notifier_8cc_source.html b/docs/de/dcc/mock__mpd__notifier_8cc_source.html index 50f445aeca..839ca2b283 100644 --- a/docs/de/dcc/mock__mpd__notifier_8cc_source.html +++ b/docs/de/dcc/mock__mpd__notifier_8cc_source.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dcf/file__closer_8h_source.html b/docs/de/dcf/file__closer_8h_source.html index 38e04b50ae..7a4ae59dd5 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 ff5a4ffa9a..36c3d20ed6 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 3e8c7f2080..5a56440ab9 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html index 6d57c31ced..a2558b3f2c 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html +++ b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html b/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html index 8a898b5ada..22047b3445 100644 --- a/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html +++ b/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html @@ -256,7 +256,7 @@ void  diff --git a/docs/de/ddf/structshaka_1_1media_1_1mp4_1_1MediaData-members.html b/docs/de/ddf/structshaka_1_1media_1_1mp4_1_1MediaData-members.html index 4691374bae..872e3e7fb0 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 1e1f8b8ef7..b7aead10bf 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 dd20baccec..40436f5517 100644 --- a/docs/de/de0/classshaka_1_1media_1_1mp4_1_1MP4Muxer-members.html +++ b/docs/de/de0/classshaka_1_1media_1_1mp4_1_1MP4Muxer-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/de4/structshaka_1_1media_1_1H264Pps.html b/docs/de/de4/structshaka_1_1media_1_1H264Pps.html index ce190266c9..5acb6e37f8 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 58467a59cb..c321da0597 100644 --- a/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html +++ b/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html @@ -216,7 +216,7 @@ static const size_t kUnitS diff --git a/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html b/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html index aac6abfa24..937d5309fb 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 6b67ea6482..13cd22ea00 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 975d9ed606..d4de7cbb96 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 f7715376b6..2b9665d7d8 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 40329fc909..b4038a39b4 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 8ff2f40763..8efbab9772 100644 --- a/docs/de/dfd/stream__info_8cc_source.html +++ b/docs/de/dfd/stream__info_8cc_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d05/vp__codec__configuration__record_8cc_source.html b/docs/df/d05/vp__codec__configuration__record_8cc_source.html index f9205b5f22..9bf99faa8b 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 92b601ae74..f0a1216717 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 b044a40b11..6436928cff 100644 --- a/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html +++ b/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d1c/composition__offset__iterator_8h_source.html b/docs/df/d1c/composition__offset__iterator_8h_source.html index 92db8307c5..b7e3d64415 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 a0b24ebf18..3d26af7c6c 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 bea451fb55..7e0cfe7e0e 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 41c33a7459..eb5dce9b32 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 2dac9b6b4c..a84ea51151 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 276e2b3a41..d142af9924 100644 --- a/docs/df/d31/muxer__util_8cc_source.html +++ b/docs/df/d31/muxer__util_8cc_source.html @@ -129,8 +129,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
40  if (segment_template.empty())
41  return false;
42 
-
43  std::vector<std::string> splits;
-
44  base::SplitString(segment_template, '$', &splits);
+
43  std::vector<std::string> splits = base::SplitString(
+
44  segment_template, "$", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
45 
46  // ISO/IEC 23009-1:2012 5.3.9.4.4 Template-based Segment URL construction.
47  // Allowed identifiers: $$, $RepresentationID$, $Number$, $Bandwidth$, $Time$.
@@ -194,8 +194,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
105  uint32_t bandwidth) {
106  DCHECK(ValidateSegmentTemplate(segment_template));
107 
-
108  std::vector<std::string> splits;
-
109  base::SplitString(segment_template, '$', &splits);
+
108  std::vector<std::string> splits = base::SplitString(
+
109  segment_template, "$", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
110  // "$" always appears in pairs, so there should be odd number of splits.
111  DCHECK_EQ(1u, splits.size() % 2);
112 
@@ -264,7 +264,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d32/audio__stream__info_8h_source.html b/docs/df/d32/audio__stream__info_8h_source.html index 5aafe8702c..458b525b3f 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 705be898a4..c38a8d56a5 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 9ad7d4e4e5..1413766820 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 7fab360092..28d2c3b9d7 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 2521254bab..4df1c601dd 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 4a7c722706..7c2b6f8aae 100644 --- a/docs/df/d46/classshaka_1_1media_1_1Muxer.html +++ b/docs/df/d46/classshaka_1_1media_1_1Muxer.html @@ -342,7 +342,7 @@ class MediaStream diff --git a/docs/df/d46/classshaka_1_1media_1_1ThreadedIoFile-members.html b/docs/df/d46/classshaka_1_1media_1_1ThreadedIoFile-members.html index ef1c11a8bd..cab9b0e1ee 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 4e9b2cb912..e32d69caa4 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 781948153e..2e54f82479 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 c89aa1dcea..a5d778a30b 100644 --- a/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html +++ b/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d60/classshaka_1_1MockMpdBuilder.html b/docs/df/d60/classshaka_1_1MockMpdBuilder.html index 97a97dbd47..015eb7c31c 100644 --- a/docs/df/d60/classshaka_1_1MockMpdBuilder.html +++ b/docs/df/d60/classshaka_1_1MockMpdBuilder.html @@ -153,7 +153,7 @@ Additional Inherited Members diff --git a/docs/df/d63/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html b/docs/df/d63/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html index e0da19a879..87eada28fc 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 eaf8cee062..15b370f9fd 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 369c176742..fbcbabbd6b 100644 --- a/docs/df/d6a/classshaka_1_1MockMpdBuilder-members.html +++ b/docs/df/d6a/classshaka_1_1MockMpdBuilder-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d6a/structshaka_1_1media_1_1mp4_1_1OpusSpecific-members.html b/docs/df/d6a/structshaka_1_1media_1_1mp4_1_1OpusSpecific-members.html index a232e23459..6a124197a0 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 e49de7b31d..525be3ba0d 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 6c6b679ee0..39e94464f1 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 75aad2d6c3..3babd9d3a2 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 1f58a71590..3f2d7b9def 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 00d1288b8d..733f4b67ca 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 0ab503209b..cc42c3df4b 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 474f16a9a7..26a2cce317 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 d9389a79d3..f0b93e8d39 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 be92990429..e609b380b6 100644 --- a/docs/df/d8c/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html +++ b/docs/df/d8c/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d8d/es__parser__h26x_8h_source.html b/docs/df/d8d/es__parser__h26x_8h_source.html index 938cc0c702..39adc2d93c 100644 --- a/docs/df/d8d/es__parser__h26x_8h_source.html +++ b/docs/df/d8d/es__parser__h26x_8h_source.html @@ -222,7 +222,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html b/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html index 1ff6554f32..e009fdb64b 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 a0d17e0205..3924656bb9 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -488,7 +488,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html b/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html index 88cd79a6a2..1b20f0bec7 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 2ce3ad5ae0..ff3ca3e1ce 100644 --- a/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html +++ b/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html @@ -311,7 +311,7 @@ Additional Inherited Members diff --git a/docs/df/da0/structshaka_1_1media_1_1mp4_1_1ChunkOffset-members.html b/docs/df/da0/structshaka_1_1media_1_1mp4_1_1ChunkOffset-members.html index c6975d768b..995159a5d6 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 9e2ac90642..03e915ac8b 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 59fdb1b827..a167e2005e 100644 --- a/docs/df/dad/decrypt__config_8h_source.html +++ b/docs/df/dad/decrypt__config_8h_source.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/db8/structshaka_1_1media_1_1StreamDescriptor-members.html b/docs/df/db8/structshaka_1_1media_1_1StreamDescriptor-members.html index eaaec8147f..5c8f989080 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 ede0377eeb..5321f3ba43 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 c47a52be07..4218c6bb41 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -174,7 +174,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html b/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html index ce27060455..ce895c7b35 100644 --- a/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html +++ b/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/ddc/webm_2segmenter_8h_source.html b/docs/df/ddc/webm_2segmenter_8h_source.html index e94c8b5fdf..8069c341d9 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -250,7 +250,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dde/ts__section__psi_8cc_source.html b/docs/df/dde/ts__section__psi_8cc_source.html index 3f1ae91060..d82f89da6d 100644 --- a/docs/df/dde/ts__section__psi_8cc_source.html +++ b/docs/df/dde/ts__section__psi_8cc_source.html @@ -228,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html b/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html index 8c7b662615..844a629997 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 461616b930..f2a89d906f 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 3365475ab9..16fba3e7fa 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 97a102945d..8f8376071f 100644 --- a/docs/df/df1/structshaka_1_1ContentProtectionElement-members.html +++ b/docs/df/df1/structshaka_1_1ContentProtectionElement-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html b/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html index 844d60f38a..13d12a099f 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 5ca2e9b628..ed50c22392 100644 --- a/docs/dir_2618cd273dea54f184e42d7a562af818.html +++ b/docs/dir_2618cd273dea54f184e42d7a562af818.html @@ -140,7 +140,7 @@ Files diff --git a/docs/dir_279fd47bebb21302c25cfb685e84c359.html b/docs/dir_279fd47bebb21302c25cfb685e84c359.html index 063546652d..3790d7f38c 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -119,7 +119,7 @@ Files diff --git a/docs/dir_2eceb70145328c029a5f43350007537a.html b/docs/dir_2eceb70145328c029a5f43350007537a.html index c7d666c655..674414787f 100644 --- a/docs/dir_2eceb70145328c029a5f43350007537a.html +++ b/docs/dir_2eceb70145328c029a5f43350007537a.html @@ -93,7 +93,7 @@ Files diff --git a/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html b/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html index 2219a31ae2..7fb09f1fa2 100644 --- a/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html +++ b/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html @@ -99,7 +99,7 @@ Directories diff --git a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html index 40a889338c..5888a9c5b4 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 b3bc4aa626..7c6d276216 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 967adc5ab3..e7e2a9079f 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 13c4fae523..33ebb63672 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 5b99db858c..e0b0c25e61 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 fec13d18ef..cfcd319b79 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 1e665c96a8..c7f1a15dcf 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 ad91be8812..cac7ebfe07 100644 --- a/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html +++ b/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html @@ -117,7 +117,7 @@ Files diff --git a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html index aee738eb21..a0d2f17248 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -245,7 +245,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index 6abe6c77ae..751060e359 100644 --- a/docs/dir_d422163b96683743ed3963d4aac17747.html +++ b/docs/dir_d422163b96683743ed3963d4aac17747.html @@ -135,7 +135,7 @@ Files diff --git a/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html b/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html index 4f6c7cd1e1..e8260f7a39 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 ef6c3006f1..09c2621881 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 f9a394d689..4c1e39e107 100644 --- a/docs/files.html +++ b/docs/files.html @@ -430,7 +430,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index f3cfef38e4..aabbbdbc44 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index d53efdc055..49bbacc800 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 aeae2579ac..414483ca43 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -241,7 +241,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index cd29c00702..8704a32893 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index 9ec925fd95..d55ad8efa0 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 75af0ed06d..ed7d1349aa 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 003d7d8b7b..a131439a23 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 05618b2980..9ef0e452fe 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index bfdd5b07c2..d192ca0754 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index cf611528cc..172554045c 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 04031c67fa..353379202e 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -241,7 +241,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 2db5648051..cea9a92542 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index f2843b0ac5..1d16d5b793 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 ae04904b3c..2d9825c07b 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 66d8b8eaaf..68cd55f1e7 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index 7a81f5f0d4..5f70c1f6da 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 c251749693..964f0e2052 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 9388c89db0..f3547b6c56 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 0aa5b8c480..a63cb9a0fb 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 367b3a2aec..5c5c51fdec 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 a08c558153..1fca2da86e 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 a17452bc33..34311ffaae 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index 527109c74c..1e9154a0c6 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -228,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index 186af7d9a3..50446e924a 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index 4e227689fe..4fa8a87382 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -285,7 +285,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index c8750f9219..ab301f8a29 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index f1eeb8753d..13fd22d9fb 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 3dbae73450..48c4a0abfa 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_w.html b/docs/functions_func_w.html index 362a57fe72..2a661e904a 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 fac43918f7..9b63e8f727 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 3c94b3950c..2d32ee60ee 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 66d6766ad6..549223b658 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 5669743a16..74e587de52 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 35acfcc1c8..2941a6ea57 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -213,7 +213,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index cf31ec7182..5d5ff641b2 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 071f6da683..42d462aa8d 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 5b3607e7f6..1e65fd2a7d 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index 2b992bb620..e3e5eee801 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 5df0170625..4281404e3d 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index 9778b39703..1311215975 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index a462c86a70..39d978ada3 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index c31d37a929..e8ebb2f593 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -300,7 +300,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index 9e6f9087de..3dc08bdd04 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index 9207d3b187..915734afdc 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 391a19a410..fd364b9939 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 7920c3b356..5ad1a26558 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_vars.html b/docs/functions_vars.html index dccd416be3..726b360fb5 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index e57a514d3f..f0951702e4 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 19d80fdc31..33a9f02700 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 00f38c803e..7b16011aeb 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 1761ade00b..6d93240dfe 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -368,7 +368,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/index.html b/docs/index.html index 4fae1a1443..c27d03e9a1 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 e3663702b4..6a3f4c448e 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index a92e25fe20..b427cac17f 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespaces.html b/docs/namespaces.html index 908d21d4fb..a97e5b2aef 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');