diff --git a/docs/annotated.html b/docs/annotated.html index 295ad8a31a..0d5d127d21 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 6eae5eb344..5e0728f9d7 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -137,8 +137,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ChunkInfo (shaka::media::mp4)   MovieFragmentHeader (shaka::media::mp4)   SchemeInfo (shaka::media::mp4)   VPxFrameInfo (shaka::media)    ChunkInfoIterator (shaka::media::mp4)   H264ByteToUnitStreamConverter (shaka::media)   MovieHeader (shaka::media::mp4)   SchemeType (shaka::media::mp4)   VPxParser (shaka::media)    ChunkLargeOffset (shaka::media::mp4)   H264DecRefPicMarking (shaka::media)   Mp2tMediaParser (shaka::media::mp2t)   SeekHead (shaka::media)   VTTAdditionalTextBox (shaka::media::mp4)    -ChunkOffset (shaka::media::mp4)   H264ModificationOfPicNum (shaka::media)   MP4MediaParser (shaka::media::mp4)   Segmenter (shaka::media::webm)   VTTCueBox (shaka::media::mp4)    -ClosureThread (shaka::media)   H264Parser (shaka::media)   MP4Muxer (shaka::media::mp4)   Segmenter (shaka::media::mp4)   VTTEmptyCueBox (shaka::media::mp4)    +ChunkOffset (shaka::media::mp4)   H264ModificationOfPicNum (shaka::media)   MP4MediaParser (shaka::media::mp4)   Segmenter (shaka::media::mp4)   VTTCueBox (shaka::media::mp4)    +ClosureThread (shaka::media)   H264Parser (shaka::media)   MP4Muxer (shaka::media::mp4)   Segmenter (shaka::media::webm)   VTTEmptyCueBox (shaka::media::mp4)    Cluster (shaka::media)   H264Pps (shaka::media)   MpdBuilder (shaka)   SegmentIndex (shaka::media::mp4)   
  W  
ClusterBuilder (shaka::media)   H264ProgramMapTableWriter (shaka::media::mp2t)   MpdNotifier (shaka)   SegmentInfo (shaka)    @@ -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 40323fa8cb..be3ab4f17c 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 3784619d21..f109f439ac 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 17b51236b7..9d64d3b464 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 98295a0f2e..e226ed94f6 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 4af85bcf75..c659b9d916 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 669a7ffc74..d27c813f47 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -155,7 +155,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 e4bc66dfe8..3dc34ef548 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 e69aed1c18..ea2633f3d0 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 2e252fa066..4fb69756ac 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 a7226bbf42..4752b98c06 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 c6b397adc5..75605d7a45 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 cbfc140103..dd0f0a5129 100644 --- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html +++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html @@ -309,7 +309,7 @@ std::string  diff --git a/docs/d0/d30/mock__mpd__notifier_8h_source.html b/docs/d0/d30/mock__mpd__notifier_8h_source.html index b1bf5e5056..ee25221438 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 ca7e0b134f..44ee8c5b49 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 de1c676216..3ad30dce1c 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 85c3c7f1ff..5ca14798fe 100644 --- a/docs/d0/d35/es__descriptor_8cc_source.html +++ b/docs/d0/d35/es__descriptor_8cc_source.html @@ -282,7 +282,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 d9cc17b4b3..499a09af56 100644 --- a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html +++ b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html @@ -182,7 +182,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 4218c4f832..2e67925992 100644 --- a/docs/d0/d3a/webm__constants_8h_source.html +++ b/docs/d0/d3a/webm__constants_8h_source.html @@ -313,7 +313,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 1eaa758633..de52168ffb 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 @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 161 of file box_definitions.cc.

+

Definition at line 166 of file box_definitions.cc.

@@ -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 8877f0f72c..6f05215198 100644 --- a/docs/d0/d42/aes__cryptor_8h_source.html +++ b/docs/d0/d42/aes__cryptor_8h_source.html @@ -148,59 +148,61 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
79 
81  const std::vector<uint8_t>& iv() const { return iv_; }
82 
-
87  static bool GenerateRandomIv(FourCC protection_scheme,
-
88  std::vector<uint8_t>* iv);
-
89 
-
90  protected:
-
91  const AES_KEY* aes_key() const { return aes_key_.get(); }
-
92  AES_KEY* mutable_aes_key() { return aes_key_.get(); }
-
93 
-
94  private:
-
95  // Internal implementation of crypt function.
-
96  // |text| points to the input text.
-
97  // |text_size| is the size of input text.
-
98  // |crypt_text| points to the output encrypted or decrypted text, depends on
-
99  // whether it is an encryption or decryption. |text| and |crypt_text| can
-
100  // point to the same address for in place encryption/decryption.
-
101  // |crypt_text_size| contains the size of |crypt_text| and it will be updated
-
102  // to contain the actual encrypted/decrypted size for |crypt_text| on success.
-
103  // Return false if the input |crypt_text_size| is not large enough to hold the
-
104  // output |crypt_text| or if there is any error in encryption/decryption.
-
105  virtual bool CryptInternal(const uint8_t* text,
-
106  size_t text_size,
-
107  uint8_t* crypt_text,
-
108  size_t* crypt_text_size) = 0;
-
109 
-
110  // Internal implementation of SetIv, which setup internal iv.
-
111  virtual void SetIvInternal() = 0;
+
84  bool use_constant_iv() const { return constant_iv_flag_ == kUseConstantIv; }
+
85 
+
90  static bool GenerateRandomIv(FourCC protection_scheme,
+
91  std::vector<uint8_t>* iv);
+
92 
+
93  protected:
+
94  const AES_KEY* aes_key() const { return aes_key_.get(); }
+
95  AES_KEY* mutable_aes_key() { return aes_key_.get(); }
+
96 
+
97  private:
+
98  // Internal implementation of crypt function.
+
99  // |text| points to the input text.
+
100  // |text_size| is the size of input text.
+
101  // |crypt_text| points to the output encrypted or decrypted text, depends on
+
102  // whether it is an encryption or decryption. |text| and |crypt_text| can
+
103  // point to the same address for in place encryption/decryption.
+
104  // |crypt_text_size| contains the size of |crypt_text| and it will be updated
+
105  // to contain the actual encrypted/decrypted size for |crypt_text| on success.
+
106  // Return false if the input |crypt_text_size| is not large enough to hold the
+
107  // output |crypt_text| or if there is any error in encryption/decryption.
+
108  virtual bool CryptInternal(const uint8_t* text,
+
109  size_t text_size,
+
110  uint8_t* crypt_text,
+
111  size_t* crypt_text_size) = 0;
112 
-
113  // |size| specifies the input text size.
-
114  // Return the number of padding bytes needed.
-
115  // Note: No paddings should be needed except for pkcs5-cbc encryptor.
-
116  virtual size_t NumPaddingBytes(size_t size) const;
-
117 
-
118  // Openssl AES_KEY.
-
119  scoped_ptr<AES_KEY> aes_key_;
+
113  // Internal implementation of SetIv, which setup internal iv.
+
114  virtual void SetIvInternal() = 0;
+
115 
+
116  // |size| specifies the input text size.
+
117  // Return the number of padding bytes needed.
+
118  // Note: No paddings should be needed except for pkcs5-cbc encryptor.
+
119  virtual size_t NumPaddingBytes(size_t size) const;
120 
-
121  // Indicates whether a constant iv is used. Internal iv will be reset to
-
122  // |iv_| before calling Crypt if that is the case.
-
123  const ConstantIvFlag constant_iv_flag_;
-
124  // Initialization vector from by SetIv or InitializeWithIv, with size 8 or 16
-
125  // bytes.
-
126  std::vector<uint8_t> iv_;
-
127  // Tracks number of crypt bytes. It is used to calculate how many blocks
-
128  // should iv advance in UpdateIv(). It will be reset to 0 after iv is updated.
-
129  size_t num_crypt_bytes_;
-
130 
-
131  DISALLOW_COPY_AND_ASSIGN(AesCryptor);
-
132 };
+
121  // Openssl AES_KEY.
+
122  scoped_ptr<AES_KEY> aes_key_;
+
123 
+
124  // Indicates whether a constant iv is used. Internal iv will be reset to
+
125  // |iv_| before calling Crypt if that is the case.
+
126  const ConstantIvFlag constant_iv_flag_;
+
127  // Initialization vector from by SetIv or InitializeWithIv, with size 8 or 16
+
128  // bytes.
+
129  std::vector<uint8_t> iv_;
+
130  // Tracks number of crypt bytes. It is used to calculate how many blocks
+
131  // should iv advance in UpdateIv(). It will be reset to 0 after iv is updated.
+
132  size_t num_crypt_bytes_;
133 
-
134 } // namespace media
-
135 } // namespace shaka
+
134  DISALLOW_COPY_AND_ASSIGN(AesCryptor);
+
135 };
136 
-
137 #endif // PACKAGER_MEDIA_BASE_AES_CRYPTOR_H_
-
138 
+
137 } // namespace media
+
138 } // namespace shaka
139 
+
140 #endif // PACKAGER_MEDIA_BASE_AES_CRYPTOR_H_
+
141 
+
142 
shaka::media::AesCryptor
Definition: aes_cryptor.h:25
shaka::media::AesCryptor::UpdateIv
void UpdateIv()
Definition: aes_cryptor.cc:80
shaka::media::AesCryptor::AesCryptor
AesCryptor(ConstantIvFlag constant_iv_flag)
Definition: aes_cryptor.cc:32
@@ -209,10 +211,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
shaka::media::AesCryptor::Crypt
bool Crypt(const uint8_t *text, size_t text_size, uint8_t *crypt_text)
Definition: aes_cryptor.h:55
shaka::media::AesCryptor::GenerateRandomIv
static bool GenerateRandomIv(FourCC protection_scheme, std::vector< uint8_t > *iv)
Definition: aes_cryptor.cc:109
shaka::media::AesCryptor::SetIv
bool SetIv(const std::vector< uint8_t > &iv)
Definition: aes_cryptor.cc:69
+
shaka::media::AesCryptor::use_constant_iv
bool use_constant_iv() const
Definition: aes_cryptor.h:84
diff --git a/docs/d0/d42/widevine__encryption__flags_8cc_source.html b/docs/d0/d42/widevine__encryption__flags_8cc_source.html index 1cec198557..4fd31b1efa 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -147,122 +147,118 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
58 DEFINE_string(protection_scheme,
59  "cenc",
60  "Choose protection scheme, 'cenc' or 'cbc1' or pattern-based "
-
61  "protection schemes 'cens' or 'cbcs'. Note that if a "
-
62  "pattern-based protection scheme only applies to video stream; "
-
63  "audio stream will be encrypted using the corresponding "
-
64  "non-pattern-based protection schemes, i.e. 'cenc' for 'cens', "
-
65  "'cbc1' for 'cbcs'.");
-
66 
-
67 namespace shaka {
-
68 
-
69 bool ValidateWidevineCryptoFlags() {
-
70  bool success = true;
-
71 
-
72  const bool widevine_crypto =
-
73  FLAGS_enable_widevine_encryption || FLAGS_enable_widevine_decryption;
-
74  const char widevine_crypto_label[] =
-
75  "--enable_widevine_encryption/decryption";
-
76  // key_server_url and signer (optional) are associated with
-
77  // enable_widevine_encryption and enable_widevine_descryption.
-
78  if (!ValidateFlag("key_server_url",
-
79  FLAGS_key_server_url,
-
80  widevine_crypto,
-
81  false,
-
82  widevine_crypto_label)) {
-
83  success = false;
-
84  }
-
85  if (!ValidateFlag("signer",
-
86  FLAGS_signer,
-
87  widevine_crypto,
-
88  true,
-
89  widevine_crypto_label)) {
-
90  success = false;
-
91  }
-
92  if (widevine_crypto && FLAGS_signer.empty() &&
-
93  base::StartsWith(base::StringPiece(FLAGS_key_server_url), "http",
-
94  base::CompareCase::INSENSITIVE_ASCII)) {
-
95  LOG(WARNING) << "--signer is likely required with "
-
96  "--enable_widevine_encryption/decryption.";
-
97  }
-
98 
-
99  const char widevine_encryption_label[] = "--enable_widevine_encryption";
-
100  // content_id and policy (optional) are associated with
-
101  // enable_widevine_encryption.
-
102  if (!ValidateFlag("content_id",
-
103  FLAGS_content_id,
-
104  FLAGS_enable_widevine_encryption,
-
105  false,
-
106  widevine_encryption_label)) {
-
107  success = false;
-
108  }
-
109  if (!ValidateFlag("policy",
-
110  FLAGS_policy,
-
111  FLAGS_enable_widevine_encryption,
-
112  true,
-
113  widevine_encryption_label)) {
-
114  success = false;
-
115  }
-
116  if (FLAGS_include_common_pssh && !FLAGS_enable_widevine_encryption) {
-
117  PrintError("--include_common_pssh is only valid with "
-
118  "--enable_widevine_encryption");
-
119  success = false;
-
120  }
-
121 
-
122  if (FLAGS_max_sd_pixels <= 0) {
-
123  PrintError("--max_sd_pixels must be positive.");
-
124  success = false;
-
125  }
-
126 
-
127  const bool aes = !FLAGS_signer.empty() && FLAGS_rsa_signing_key_path.empty();
-
128  const char aes_label[] =
-
129  "--signer is specified and exclusive with --rsa_signing_key_path";
-
130  // aes_signer_key and aes_signing_iv are associated with aes signing.
+
61  "protection schemes 'cens' or 'cbcs'.");
+
62 
+
63 namespace shaka {
+
64 
+
65 bool ValidateWidevineCryptoFlags() {
+
66  bool success = true;
+
67 
+
68  const bool widevine_crypto =
+
69  FLAGS_enable_widevine_encryption || FLAGS_enable_widevine_decryption;
+
70  const char widevine_crypto_label[] =
+
71  "--enable_widevine_encryption/decryption";
+
72  // key_server_url and signer (optional) are associated with
+
73  // enable_widevine_encryption and enable_widevine_descryption.
+
74  if (!ValidateFlag("key_server_url",
+
75  FLAGS_key_server_url,
+
76  widevine_crypto,
+
77  false,
+
78  widevine_crypto_label)) {
+
79  success = false;
+
80  }
+
81  if (!ValidateFlag("signer",
+
82  FLAGS_signer,
+
83  widevine_crypto,
+
84  true,
+
85  widevine_crypto_label)) {
+
86  success = false;
+
87  }
+
88  if (widevine_crypto && FLAGS_signer.empty() &&
+
89  base::StartsWith(base::StringPiece(FLAGS_key_server_url), "http",
+
90  base::CompareCase::INSENSITIVE_ASCII)) {
+
91  LOG(WARNING) << "--signer is likely required with "
+
92  "--enable_widevine_encryption/decryption.";
+
93  }
+
94 
+
95  const char widevine_encryption_label[] = "--enable_widevine_encryption";
+
96  // content_id and policy (optional) are associated with
+
97  // enable_widevine_encryption.
+
98  if (!ValidateFlag("content_id",
+
99  FLAGS_content_id,
+
100  FLAGS_enable_widevine_encryption,
+
101  false,
+
102  widevine_encryption_label)) {
+
103  success = false;
+
104  }
+
105  if (!ValidateFlag("policy",
+
106  FLAGS_policy,
+
107  FLAGS_enable_widevine_encryption,
+
108  true,
+
109  widevine_encryption_label)) {
+
110  success = false;
+
111  }
+
112  if (FLAGS_include_common_pssh && !FLAGS_enable_widevine_encryption) {
+
113  PrintError("--include_common_pssh is only valid with "
+
114  "--enable_widevine_encryption");
+
115  success = false;
+
116  }
+
117 
+
118  if (FLAGS_max_sd_pixels <= 0) {
+
119  PrintError("--max_sd_pixels must be positive.");
+
120  success = false;
+
121  }
+
122 
+
123  const bool aes = !FLAGS_signer.empty() && FLAGS_rsa_signing_key_path.empty();
+
124  const char aes_label[] =
+
125  "--signer is specified and exclusive with --rsa_signing_key_path";
+
126  // aes_signer_key and aes_signing_iv are associated with aes signing.
+
127  if (!ValidateFlag(
+
128  "aes_signing_key", FLAGS_aes_signing_key, aes, true, aes_label)) {
+
129  success = false;
+
130  }
131  if (!ValidateFlag(
-
132  "aes_signing_key", FLAGS_aes_signing_key, aes, true, aes_label)) {
+
132  "aes_signing_iv", FLAGS_aes_signing_iv, aes, true, aes_label)) {
133  success = false;
134  }
-
135  if (!ValidateFlag(
-
136  "aes_signing_iv", FLAGS_aes_signing_iv, aes, true, aes_label)) {
-
137  success = false;
-
138  }
-
139 
-
140  const bool rsa = !FLAGS_signer.empty() && FLAGS_aes_signing_key.empty() &&
-
141  FLAGS_aes_signing_iv.empty();
-
142  const char rsa_label[] =
-
143  "--signer is specified and exclusive with --aes_signing_key/iv";
-
144  // rsa_signing_key_path is associated with rsa_signing.
-
145  if (!ValidateFlag("rsa_signing_key_path",
-
146  FLAGS_rsa_signing_key_path,
-
147  rsa,
-
148  true,
-
149  rsa_label)) {
-
150  success = false;
-
151  }
-
152 
-
153  if (!FLAGS_signer.empty() &&
-
154  (FLAGS_aes_signing_key.empty() || FLAGS_aes_signing_iv.empty()) &&
-
155  FLAGS_rsa_signing_key_path.empty()) {
-
156  PrintError(
-
157  "--aes_signing_key/iv or --rsa_signing_key_path is required with "
-
158  "--signer.");
-
159  success = false;
-
160  }
-
161 
-
162  if (FLAGS_crypto_period_duration < 0) {
-
163  PrintError("--crypto_period_duration should not be negative.");
-
164  success = false;
-
165  }
-
166  return success;
-
167 }
-
168 
-
169 } // namespace shaka
+
135 
+
136  const bool rsa = !FLAGS_signer.empty() && FLAGS_aes_signing_key.empty() &&
+
137  FLAGS_aes_signing_iv.empty();
+
138  const char rsa_label[] =
+
139  "--signer is specified and exclusive with --aes_signing_key/iv";
+
140  // rsa_signing_key_path is associated with rsa_signing.
+
141  if (!ValidateFlag("rsa_signing_key_path",
+
142  FLAGS_rsa_signing_key_path,
+
143  rsa,
+
144  true,
+
145  rsa_label)) {
+
146  success = false;
+
147  }
+
148 
+
149  if (!FLAGS_signer.empty() &&
+
150  (FLAGS_aes_signing_key.empty() || FLAGS_aes_signing_iv.empty()) &&
+
151  FLAGS_rsa_signing_key_path.empty()) {
+
152  PrintError(
+
153  "--aes_signing_key/iv or --rsa_signing_key_path is required with "
+
154  "--signer.");
+
155  success = false;
+
156  }
+
157 
+
158  if (FLAGS_crypto_period_duration < 0) {
+
159  PrintError("--crypto_period_duration should not be negative.");
+
160  success = false;
+
161  }
+
162  return success;
+
163 }
+
164 
+
165 } // namespace shaka
shaka::PrintError
void PrintError(const std::string &error_message)
Definition: validate_flag.cc:36
-
shaka::ValidateWidevineCryptoFlags
bool ValidateWidevineCryptoFlags()
Definition: widevine_encryption_flags.cc:69
+
shaka::ValidateWidevineCryptoFlags
bool ValidateWidevineCryptoFlags()
Definition: widevine_encryption_flags.cc:65
shaka::ValidateFlag
bool ValidateFlag(const char *flag_name, const std::string &flag_value, bool condition, bool optional, const char *label)
Definition: validate_flag.cc:17
diff --git a/docs/d0/d46/fourccs_8h_source.html b/docs/d0/d46/fourccs_8h_source.html index 5850492ede..af922e64b9 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 461d50016b..5ab86d5928 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 @@ -234,7 +234,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 696ca62482..6cc1c661cf 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 75e9e63342..1e965dcad8 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 9b10167b3a..0289b7766a 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 0134748280..74562b68be 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 4d706452ac..2d800b9221 100644 --- a/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html +++ b/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html @@ -110,7 +110,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 700969f418..38c2019618 100644 --- a/docs/d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html +++ b/docs/d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html @@ -438,7 +438,7 @@ Additional Inherited Members diff --git a/docs/d0/d6a/classshaka_1_1media_1_1StreamDescriptorCompareFn-members.html b/docs/d0/d6a/classshaka_1_1media_1_1StreamDescriptorCompareFn-members.html index ba3ad803ba..334ae96df3 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 475e33e985..bd04d2c02b 100644 --- a/docs/d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html +++ b/docs/d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html @@ -186,7 +186,7 @@ Additional Inherited Members

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

-

Definition at line 1479 of file box_definitions.cc.

+

Definition at line 1486 of file box_definitions.cc.

@@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html b/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html index f331603f0a..1bd13d66ab 100644 --- a/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html +++ b/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html @@ -177,7 +177,7 @@ Additional Inherited Members

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

-

Definition at line 1070 of file box_definitions.cc.

+

Definition at line 1078 of file box_definitions.cc.

@@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d0/d7d/decryptor__source_8h_source.html b/docs/d0/d7d/decryptor__source_8h_source.html index be817fc7d6..49e71e0d14 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 9130f4342a..8e99eb8c9f 100644 --- a/docs/d0/d80/classshaka_1_1media_1_1AesCbcEncryptor-members.html +++ b/docs/d0/d80/classshaka_1_1media_1_1AesCbcEncryptor-members.html @@ -111,13 +111,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); mutable_aes_key() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorinlineprotected SetIv(const std::vector< uint8_t > &iv)shaka::media::AesCryptor UpdateIv()shaka::media::AesCryptor - ~AesCbcEncryptor() override (defined in shaka::media::AesCbcEncryptor)shaka::media::AesCbcEncryptor - ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual - ~AesEncryptor() override (defined in shaka::media::AesEncryptor)shaka::media::AesEncryptor + use_constant_iv() const shaka::media::AesCryptorinline + ~AesCbcEncryptor() override (defined in shaka::media::AesCbcEncryptor)shaka::media::AesCbcEncryptor + ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual + ~AesEncryptor() override (defined in shaka::media::AesEncryptor)shaka::media::AesEncryptor 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 20703e55df..56742b569a 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 e44427ff50..2f6152a905 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 6ac38dd666..67cbe7cfd9 100644 --- a/docs/d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html +++ b/docs/d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html @@ -175,7 +175,7 @@ Additional Inherited Members

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

-

Definition at line 2182 of file box_definitions.cc.

+

Definition at line 2207 of file box_definitions.cc.

@@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html b/docs/d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html index 82cf42a649..e87bf71713 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 e539678531..7f16197632 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 beafe9d577..1c7282fc41 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 7ec2d83577..566f45f440 100644 --- a/docs/d0/da6/stream__descriptor_8cc_source.html +++ b/docs/d0/da6/stream__descriptor_8cc_source.html @@ -243,7 +243,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 beff31de51..fa1c4fad8f 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 6fb0c9fdcd..016bbe43dd 100644 --- a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html +++ b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html @@ -479,7 +479,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 2722c74cc7..947242dcb9 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 9b437d750c..d60235fa69 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 b9821274af..47efd188a5 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 d3d20b9e80..acdd23da9d 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 858448172e..09324795f2 100644 --- a/docs/d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html +++ b/docs/d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 2628 of file box_definitions.cc.

+

Definition at line 2653 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html b/docs/d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html index 159aa7d002..22900e2c40 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 faadcac100..d1463c5295 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -156,7 +156,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 36e430ee63..9e4b6f8724 100644 --- a/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html +++ b/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html @@ -123,6 +123,8 @@ uint32_t block_offset   const std::vector< uint8_t > & iv () const   +bool use_constant_iv () const +  bool Crypt (const std::vector< uint8_t > &text, std::vector< uint8_t > *crypt_text)   @@ -163,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 5f790f29a5..046a6fe47a 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -215,7 +215,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 f5f3951e65..b3a272c92a 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -332,7 +332,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dfc/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry-members.html b/docs/d0/dfc/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry-members.html index 27fa133368..c4bf15de72 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 3c61b6d7b4..e096a335f7 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 2428a66d85..b780ce9d71 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 92c0acbe70..5aaadecc42 100644 --- a/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html +++ b/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html @@ -257,7 +257,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 0d4a21f98f..ade930a376 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 409c954414..f52c766a26 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 a6b89178cc..ba92734b56 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 @@ -275,7 +275,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1d/muxer__flags_8cc_source.html b/docs/d1/d1d/muxer__flags_8cc_source.html index 63c179ba62..4b3cec0dfa 100644 --- a/docs/d1/d1d/muxer__flags_8cc_source.html +++ b/docs/d1/d1d/muxer__flags_8cc_source.html @@ -143,7 +143,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 fff88d7709..072ae19aee 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 6f9ee14bf2..b1b0764020 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 dfff7b6f31..3424b8a9af 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 62a429b7a4..365acac442 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 239ff76b18..47fd7dc5d3 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 d46532f95c..89141b81cd 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 066d00deea..6dad47d093 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 999cfb0911..80cc560376 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -491,7 +491,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 73ca369630..f91889de57 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 f812f1d635..35a0ce56e2 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 062a866a71..5b5423923c 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 7f22532cab..490611cc90 100644 --- a/docs/d1/d37/es__parser__h264_8h_source.html +++ b/docs/d1/d37/es__parser__h264_8h_source.html @@ -153,7 +153,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 930d0eee60..f30055ebc4 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 1cf4337b62..f5262a8b89 100644 --- a/docs/d1/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html +++ b/docs/d1/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html @@ -165,7 +165,7 @@ Additional Inherited Members

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

-

Definition at line 2154 of file box_definitions.cc.

+

Definition at line 2179 of file box_definitions.cc.

@@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d1/d40/classshaka_1_1MpdWriter-members.html b/docs/d1/d40/classshaka_1_1MpdWriter-members.html index 97bec5f1af..83071f0d34 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 3bb8eabe24..a095dcef13 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 f02fee8770..f2c436dc2a 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 3961da4d84..6e251324a1 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 eddabc811e..329ef03cea 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 1754290272..76b7049c2e 100644 --- a/docs/d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html +++ b/docs/d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html @@ -211,7 +211,7 @@ Additional Inherited Members

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

-

Definition at line 2251 of file box_definitions.cc.

+

Definition at line 2276 of file box_definitions.cc.

@@ -222,7 +222,7 @@ Additional Inherited Members diff --git a/docs/d1/d70/vp8__parser_8cc_source.html b/docs/d1/d70/vp8__parser_8cc_source.html index 8088288f1b..4f7aa8d45e 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 ae37467825..fd3446cd2f 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 02f6ca21e3..a34bcc75a2 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -539,7 +539,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 128a094df4..3a84361bb7 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 fffc05357e..f4fdbf4d6e 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -266,7 +266,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 47eeacab9c..b35c7b6c64 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 3f3ca02d89..74eaaf04e5 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 a3cea170af..711e887a6f 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 7fb8415884..27b7da47a6 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 @@ -123,7 +123,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 44c18b50ad..691e6e69c0 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 d68420bf89..f760100148 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 29bb6edc0b..c54d2f6d31 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 385a03122a..699a00f714 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 5452b72f41..cbd4761103 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 6ce8d9556f..7672a196e3 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 c8402501b3..b68248b517 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 37a75c52d4..763f713509 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 81425fd2a4..1be260c011 100644 --- a/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html +++ b/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html @@ -255,7 +255,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 694fe8ba56..60a75f2fd4 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 87ff2be8d6..895a2bd298 100644 --- a/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html +++ b/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html @@ -180,7 +180,7 @@ Additional Inherited Members

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

-

Definition at line 1907 of file box_definitions.cc.

+

Definition at line 1932 of file box_definitions.cc.

@@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/d1/db2/decoder__configuration__record_8h_source.html b/docs/d1/db2/decoder__configuration__record_8h_source.html index 229662a872..6953cdb0e5 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 fd53f13b73..8a93baf1e5 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 3aeceb7f59..b5f0376a93 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -186,12 +186,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
EncryptingFragmenter generates MP4 fragments with sample encrypted.
- +
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
diff --git a/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html b/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html index f1da870cce..dcb97262cd 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 6f4e328486..8570e7168a 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 2499efa06a..3e6502f2fa 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 ee8cbe6ef2..2d53346754 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 4c9b8a9436..2bae7959ae 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 6006ef9a68..4531b683a8 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 9fdf836971..8565554e9b 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 5c60302ed2..16bda9e360 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 1e847573af..19bc99e79f 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 a86462729d..007bdd5caa 100644 --- a/docs/d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html +++ b/docs/d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html @@ -187,7 +187,7 @@ Additional Inherited Members

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

-

Definition at line 1107 of file box_definitions.cc.

+

Definition at line 1114 of file box_definitions.cc.

@@ -198,7 +198,7 @@ Additional Inherited Members diff --git a/docs/d1/df0/aes__encryptor_8h_source.html b/docs/d1/df0/aes__encryptor_8h_source.html index 385456bb35..95d9bf2736 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -195,7 +195,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 d0f9d6b2e9..bde3248972 100644 --- a/docs/d1/df3/structshaka_1_1MpdOptions.html +++ b/docs/d1/df3/structshaka_1_1MpdOptions.html @@ -130,7 +130,7 @@ std::string packager_versi diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html index cfa3dbcca6..8c7a08bbdf 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 8c152e76b3..e0b2abf60d 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 92f4470afb..4eea8eeacf 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 0b331c7d79..6782045347 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 78529098e3..d423c07928 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 606fe55d0d..9451bc9fe1 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 969b39b62c..7ca2ad7ce1 100644 --- a/docs/d2/d11/classshaka_1_1media_1_1MuxerListener-members.html +++ b/docs/d2/d11/classshaka_1_1media_1_1MuxerListener-members.html @@ -108,7 +108,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 6f78fdefe2..6a46e7f603 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 7055a85591..a06757ba4a 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -315,7 +315,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d24/packager__util_8h_source.html b/docs/d2/d24/packager__util_8h_source.html index b1b317fe0f..7352a01635 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -141,7 +141,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 918188047b..d3c046aeec 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 @@ -326,7 +326,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 2d7af68113..4c134322cd 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 1c8ff6bb4c..fb7df54e48 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 407a036f35..5fc4366dcc 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 58d1ea1959..b363c09afb 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 0c7276c802..7bdcc4634c 100644 --- a/docs/d2/d45/program__map__table__writer_8cc_source.html +++ b/docs/d2/d45/program__map__table__writer_8cc_source.html @@ -511,7 +511,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 71eaae8b47..46c2139b2c 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 f5effdabc8..9a79fb7f61 100644 --- a/docs/d2/d4d/file_8h_source.html +++ b/docs/d2/d4d/file_8h_source.html @@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4f/structshaka_1_1Element-members.html b/docs/d2/d4f/structshaka_1_1Element-members.html index 27d911db66..4d517bb5b7 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 7778ea3199..909eb18153 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 d6754491c4..cf6afb8773 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 36fd0ab01a..f7c09ae03b 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 40d683eff9..bdf7204281 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 ece1302b3f..22b88d142b 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 4471dec568..c31b008f91 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 29a9e47082..2d1af6e4b6 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 ae7ab6d6ec..4e30cc187a 100644 --- a/docs/d2/d6a/classshaka_1_1media_1_1AesCryptor-members.html +++ b/docs/d2/d6a/classshaka_1_1media_1_1AesCryptor-members.html @@ -108,11 +108,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); mutable_aes_key() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorinlineprotected SetIv(const std::vector< uint8_t > &iv)shaka::media::AesCryptor UpdateIv()shaka::media::AesCryptor - ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual + use_constant_iv() const shaka::media::AesCryptorinline + ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual diff --git a/docs/d2/d6f/classBandwidthEstimator.html b/docs/d2/d6f/classBandwidthEstimator.html index 508234a4a4..eec5ba8932 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 a891750355..81d905aec1 100644 --- a/docs/d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html +++ b/docs/d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 465 of file box_definitions.cc.

+

Definition at line 470 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html b/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html index a14d4aa9f3..354c347f39 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 384f5f221f..1c1503bbe2 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 3cea5d22c2..6b05f89d4e 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 f27bf86897..f376d3393e 100644 --- a/docs/d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html +++ b/docs/d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 2647 of file box_definitions.cc.

+

Definition at line 2672 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html index 9f46e91eb8..922952f3e4 100644 --- a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html +++ b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 adf763ca18..67a45cf04c 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 9c509e4cd5..8ba879cfbb 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 420b87afa6..4e0c9617fe 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 e345d9a8cf..84dbf8ea40 100644 --- a/docs/d2/d95/structshaka_1_1media_1_1StreamDescriptor.html +++ b/docs/d2/d95/structshaka_1_1media_1_1StreamDescriptor.html @@ -131,7 +131,7 @@ MediaContainerName output_ diff --git a/docs/d2/da6/threaded__io__file_8h_source.html b/docs/d2/da6/threaded__io__file_8h_source.html index ab89885d3d..e46b283e7b 100644 --- a/docs/d2/da6/threaded__io__file_8h_source.html +++ b/docs/d2/da6/threaded__io__file_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da8/mp4_2segmenter_8cc_source.html b/docs/d2/da8/mp4_2segmenter_8cc_source.html index 75f4d4a374..65d3c03aac 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -117,445 +117,453 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
28 namespace mp4 {
29 
30 namespace {
-
31 // For pattern-based encryption.
-
32 const uint8_t kCryptByteBlock = 1u;
-
33 const uint8_t kSkipByteBlock = 9u;
-
34 
-
35 const size_t kCencKeyIdSize = 16u;
-
36 
-
37 // The version of cenc implemented here. CENC 4.
-
38 const int kCencSchemeVersion = 0x00010000;
-
39 
-
40 // The default KID for key rotation is all 0s.
-
41 const uint8_t kKeyRotationDefaultKeyId[] = {
-
42  0, 0, 0, 0, 0, 0, 0, 0,
-
43  0, 0, 0, 0, 0, 0, 0, 0
-
44 };
-
45 
-
46 COMPILE_ASSERT(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
-
47  cenc_key_id_must_be_size_16);
-
48 
-
49 uint64_t Rescale(uint64_t time_in_old_scale,
-
50  uint32_t old_scale,
-
51  uint32_t new_scale) {
-
52  return static_cast<double>(time_in_old_scale) / old_scale * new_scale;
-
53 }
-
54 
-
55 uint8_t GetCryptByteBlock(FourCC protection_scheme) {
-
56  return (protection_scheme == FOURCC_cbcs || protection_scheme == FOURCC_cens)
-
57  ? kCryptByteBlock
-
58  : 0;
-
59 }
-
60 
-
61 uint8_t GetSkipByteBlock(FourCC protection_scheme) {
-
62  return (protection_scheme == FOURCC_cbcs || protection_scheme == FOURCC_cens)
-
63  ? kSkipByteBlock
-
64  : 0;
-
65 }
-
66 
-
67 void GenerateSinf(const EncryptionKey& encryption_key,
-
68  FourCC old_type,
-
69  FourCC protection_scheme,
-
70  ProtectionSchemeInfo* sinf) {
-
71  sinf->format.format = old_type;
-
72 
-
73  DCHECK_NE(protection_scheme, FOURCC_NULL);
-
74  sinf->type.type = protection_scheme;
-
75  sinf->type.version = kCencSchemeVersion;
-
76 
-
77  auto& track_encryption = sinf->info.track_encryption;
-
78  track_encryption.default_is_protected = 1;
-
79  DCHECK(!encryption_key.iv.empty());
-
80  if (protection_scheme == FOURCC_cbcs) {
-
81  // ISO/IEC 23001-7:2016 10.4.1
-
82  // For 'cbcs' scheme, Constant IVs SHALL be used.
-
83  track_encryption.default_per_sample_iv_size = 0;
-
84  track_encryption.default_constant_iv = encryption_key.iv;
-
85  } else {
-
86  track_encryption.default_per_sample_iv_size = encryption_key.iv.size();
-
87  }
-
88  track_encryption.default_crypt_byte_block =
-
89  GetCryptByteBlock(protection_scheme);
-
90  track_encryption.default_skip_byte_block =
-
91  GetSkipByteBlock(protection_scheme);
-
92  track_encryption.default_kid = encryption_key.key_id;
-
93 }
+
31 const size_t kCencKeyIdSize = 16u;
+
32 
+
33 // The version of cenc implemented here. CENC 4.
+
34 const int kCencSchemeVersion = 0x00010000;
+
35 
+
36 // The default KID for key rotation is all 0s.
+
37 const uint8_t kKeyRotationDefaultKeyId[] = {
+
38  0, 0, 0, 0, 0, 0, 0, 0,
+
39  0, 0, 0, 0, 0, 0, 0, 0
+
40 };
+
41 
+
42 // Defines protection pattern for pattern-based encryption.
+
43 struct ProtectionPattern {
+
44  uint8_t crypt_byte_block;
+
45  uint8_t skip_byte_block;
+
46 };
+
47 
+
48 COMPILE_ASSERT(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
+
49  cenc_key_id_must_be_size_16);
+
50 
+
51 uint64_t Rescale(uint64_t time_in_old_scale,
+
52  uint32_t old_scale,
+
53  uint32_t new_scale) {
+
54  return static_cast<double>(time_in_old_scale) / old_scale * new_scale;
+
55 }
+
56 
+
57 ProtectionPattern GetProtectionPattern(FourCC protection_scheme,
+
58  TrackType track_type) {
+
59  ProtectionPattern pattern;
+
60  if (protection_scheme != FOURCC_cbcs && protection_scheme != FOURCC_cens) {
+
61  // Not using pattern encryption.
+
62  pattern.crypt_byte_block = 0u;
+
63  pattern.skip_byte_block = 0u;
+
64  } else if (track_type != kVideo) {
+
65  // Tracks other than video are protected using whole-block full-sample
+
66  // encryption, which is essentially a pattern of 1:0. Note that this may not
+
67  // be the same as the non-pattern based encryption counterparts, e.g. in
+
68  // 'cens' for full sample encryption, the whole sample is encrypted up to
+
69  // the last 16-byte boundary, see 23001-7:2016(E) 9.7; while in 'cenc' for
+
70  // full sample encryption, the last partial 16-byte block is also encrypted,
+
71  // see 23001-7:2016(E) 9.4.2. Another difference is the use of constant iv.
+
72  pattern.crypt_byte_block = 1u;
+
73  pattern.skip_byte_block = 0u;
+
74  } else {
+
75  // Use 1:9 pattern for video.
+
76  const uint8_t kCryptByteBlock = 1u;
+
77  const uint8_t kSkipByteBlock = 9u;
+
78  pattern.crypt_byte_block = kCryptByteBlock;
+
79  pattern.skip_byte_block = kSkipByteBlock;
+
80  }
+
81  return pattern;
+
82 }
+
83 
+
84 void GenerateSinf(const EncryptionKey& encryption_key,
+
85  FourCC old_type,
+
86  FourCC protection_scheme,
+
87  ProtectionPattern pattern,
+
88  ProtectionSchemeInfo* sinf) {
+
89  sinf->format.format = old_type;
+
90 
+
91  DCHECK_NE(protection_scheme, FOURCC_NULL);
+
92  sinf->type.type = protection_scheme;
+
93  sinf->type.version = kCencSchemeVersion;
94 
-
95 void GenerateEncryptedSampleEntry(const EncryptionKey& encryption_key,
-
96  double clear_lead_in_seconds,
-
97  FourCC protection_scheme,
-
98  SampleDescription* description) {
-
99  DCHECK(description);
-
100  if (description->type == kVideo) {
-
101  DCHECK_EQ(1u, description->video_entries.size());
-
102 
-
103  // Add a second entry for clear content if needed.
-
104  if (clear_lead_in_seconds > 0)
-
105  description->video_entries.push_back(description->video_entries[0]);
-
106 
-
107  // Convert the first entry to an encrypted entry.
-
108  VideoSampleEntry& entry = description->video_entries[0];
-
109  GenerateSinf(encryption_key, entry.format, protection_scheme, &entry.sinf);
-
110  entry.format = FOURCC_encv;
-
111  } else {
-
112  DCHECK_EQ(kAudio, description->type);
-
113  DCHECK_EQ(1u, description->audio_entries.size());
-
114 
-
115  // Add a second entry for clear content if needed.
-
116  if (clear_lead_in_seconds > 0)
-
117  description->audio_entries.push_back(description->audio_entries[0]);
-
118 
-
119  // Convert the first entry to an encrypted entry.
-
120  AudioSampleEntry& entry = description->audio_entries[0];
-
121  GenerateSinf(encryption_key, entry.format, protection_scheme, &entry.sinf);
-
122  entry.format = FOURCC_enca;
-
123  }
-
124 }
-
125 
-
126 } // namespace
-
127 
-
128 Segmenter::Segmenter(const MuxerOptions& options,
-
129  scoped_ptr<FileType> ftyp,
-
130  scoped_ptr<Movie> moov)
-
131  : options_(options),
-
132  ftyp_(ftyp.Pass()),
-
133  moov_(moov.Pass()),
-
134  moof_(new MovieFragment()),
-
135  fragment_buffer_(new BufferWriter()),
-
136  sidx_(new SegmentIndex()),
-
137  muxer_listener_(NULL),
-
138  progress_listener_(NULL),
-
139  progress_target_(0),
-
140  accumulated_progress_(0),
-
141  sample_duration_(0u) {}
-
142 
-
143 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
+
95  auto& track_encryption = sinf->info.track_encryption;
+
96  track_encryption.default_is_protected = 1;
+
97  DCHECK(!encryption_key.iv.empty());
+
98  if (protection_scheme == FOURCC_cbcs) {
+
99  // ISO/IEC 23001-7:2016 10.4.1
+
100  // For 'cbcs' scheme, Constant IVs SHALL be used.
+
101  track_encryption.default_per_sample_iv_size = 0;
+
102  track_encryption.default_constant_iv = encryption_key.iv;
+
103  } else {
+
104  track_encryption.default_per_sample_iv_size = encryption_key.iv.size();
+
105  }
+
106  track_encryption.default_crypt_byte_block = pattern.crypt_byte_block;
+
107  track_encryption.default_skip_byte_block = pattern.skip_byte_block;
+
108  track_encryption.default_kid = encryption_key.key_id;
+
109 }
+
110 
+
111 void GenerateEncryptedSampleEntry(const EncryptionKey& encryption_key,
+
112  double clear_lead_in_seconds,
+
113  FourCC protection_scheme,
+
114  ProtectionPattern pattern,
+
115  SampleDescription* description) {
+
116  DCHECK(description);
+
117  if (description->type == kVideo) {
+
118  DCHECK_EQ(1u, description->video_entries.size());
+
119 
+
120  // Add a second entry for clear content if needed.
+
121  if (clear_lead_in_seconds > 0)
+
122  description->video_entries.push_back(description->video_entries[0]);
+
123 
+
124  // Convert the first entry to an encrypted entry.
+
125  VideoSampleEntry& entry = description->video_entries[0];
+
126  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
+
127  &entry.sinf);
+
128  entry.format = FOURCC_encv;
+
129  } else {
+
130  DCHECK_EQ(kAudio, description->type);
+
131  DCHECK_EQ(1u, description->audio_entries.size());
+
132 
+
133  // Add a second entry for clear content if needed.
+
134  if (clear_lead_in_seconds > 0)
+
135  description->audio_entries.push_back(description->audio_entries[0]);
+
136 
+
137  // Convert the first entry to an encrypted entry.
+
138  AudioSampleEntry& entry = description->audio_entries[0];
+
139  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
+
140  &entry.sinf);
+
141  entry.format = FOURCC_enca;
+
142  }
+
143 }
144 
-
145 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
-
146  MuxerListener* muxer_listener,
-
147  ProgressListener* progress_listener,
-
148  KeySource* encryption_key_source,
-
149  uint32_t max_sd_pixels,
-
150  double clear_lead_in_seconds,
-
151  double crypto_period_duration_in_seconds,
-
152  FourCC protection_scheme) {
-
153  DCHECK_LT(0u, streams.size());
-
154  muxer_listener_ = muxer_listener;
-
155  progress_listener_ = progress_listener;
-
156  moof_->header.sequence_number = 0;
-
157 
-
158  moof_->tracks.resize(streams.size());
-
159  segment_durations_.resize(streams.size());
-
160  fragmenters_.resize(streams.size());
-
161  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
-
162  const bool kInitialEncryptionInfo = true;
+
145 } // namespace
+
146 
+
147 Segmenter::Segmenter(const MuxerOptions& options,
+
148  scoped_ptr<FileType> ftyp,
+
149  scoped_ptr<Movie> moov)
+
150  : options_(options),
+
151  ftyp_(ftyp.Pass()),
+
152  moov_(moov.Pass()),
+
153  moof_(new MovieFragment()),
+
154  fragment_buffer_(new BufferWriter()),
+
155  sidx_(new SegmentIndex()),
+
156  muxer_listener_(NULL),
+
157  progress_listener_(NULL),
+
158  progress_target_(0),
+
159  accumulated_progress_(0),
+
160  sample_duration_(0u) {}
+
161 
+
162 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
163 
-
164  for (uint32_t i = 0; i < streams.size(); ++i) {
-
165  stream_map_[streams[i]] = i;
-
166  moof_->tracks[i].header.track_id = i + 1;
-
167  if (streams[i]->info()->stream_type() == kStreamVideo) {
-
168  // Use the first video stream as the reference stream (which is 1-based).
-
169  if (sidx_->reference_id == 0)
-
170  sidx_->reference_id = i + 1;
-
171  }
-
172  if (!encryption_key_source) {
-
173  fragmenters_[i] = new Fragmenter(streams[i]->info(), &moof_->tracks[i]);
-
174  continue;
-
175  }
+
164 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
+
165  MuxerListener* muxer_listener,
+
166  ProgressListener* progress_listener,
+
167  KeySource* encryption_key_source,
+
168  uint32_t max_sd_pixels,
+
169  double clear_lead_in_seconds,
+
170  double crypto_period_duration_in_seconds,
+
171  FourCC protection_scheme) {
+
172  DCHECK_LT(0u, streams.size());
+
173  muxer_listener_ = muxer_listener;
+
174  progress_listener_ = progress_listener;
+
175  moof_->header.sequence_number = 0;
176 
-
177  FourCC local_protection_scheme = protection_scheme;
-
178  if (streams[i]->info()->stream_type() != kStreamVideo) {
-
179  // Pattern encryption should only be used with video. Replaces with the
-
180  // corresponding non-pattern encryption scheme.
-
181  if (protection_scheme == FOURCC_cbcs)
-
182  local_protection_scheme = FOURCC_cbc1;
-
183  else if (protection_scheme == FOURCC_cens)
-
184  local_protection_scheme = FOURCC_cenc;
-
185  }
-
186 
-
187  KeySource::TrackType track_type =
-
188  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
-
189  SampleDescription& description =
-
190  moov_->tracks[i].media.information.sample_table.description;
-
191 
-
192  if (key_rotation_enabled) {
-
193  // Fill encrypted sample entry with default key.
-
194  EncryptionKey encryption_key;
-
195  encryption_key.key_id.assign(
-
196  kKeyRotationDefaultKeyId,
-
197  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
-
198  if (!AesCryptor::GenerateRandomIv(local_protection_scheme,
-
199  &encryption_key.iv)) {
-
200  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
201  }
-
202  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
-
203  local_protection_scheme, &description);
-
204  if (muxer_listener_) {
-
205  muxer_listener_->OnEncryptionInfoReady(
-
206  kInitialEncryptionInfo, local_protection_scheme,
-
207  encryption_key.key_id, encryption_key.iv,
-
208  encryption_key.key_system_info);
-
209  }
-
210 
-
211  fragmenters_[i] = new KeyRotationFragmenter(
-
212  moof_.get(), streams[i]->info(), &moof_->tracks[i],
-
213  encryption_key_source, track_type,
-
214  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
-
215  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
216  local_protection_scheme, GetCryptByteBlock(local_protection_scheme),
-
217  GetSkipByteBlock(local_protection_scheme), muxer_listener_);
-
218  continue;
-
219  }
+
177  moof_->tracks.resize(streams.size());
+
178  segment_durations_.resize(streams.size());
+
179  fragmenters_.resize(streams.size());
+
180  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
+
181  const bool kInitialEncryptionInfo = true;
+
182 
+
183  for (uint32_t i = 0; i < streams.size(); ++i) {
+
184  stream_map_[streams[i]] = i;
+
185  moof_->tracks[i].header.track_id = i + 1;
+
186  if (streams[i]->info()->stream_type() == kStreamVideo) {
+
187  // Use the first video stream as the reference stream (which is 1-based).
+
188  if (sidx_->reference_id == 0)
+
189  sidx_->reference_id = i + 1;
+
190  }
+
191  if (!encryption_key_source) {
+
192  fragmenters_[i] = new Fragmenter(streams[i]->info(), &moof_->tracks[i]);
+
193  continue;
+
194  }
+
195 
+
196  KeySource::TrackType track_type =
+
197  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
+
198  SampleDescription& description =
+
199  moov_->tracks[i].media.information.sample_table.description;
+
200  ProtectionPattern pattern =
+
201  GetProtectionPattern(protection_scheme, description.type);
+
202 
+
203  if (key_rotation_enabled) {
+
204  // Fill encrypted sample entry with default key.
+
205  EncryptionKey encryption_key;
+
206  encryption_key.key_id.assign(
+
207  kKeyRotationDefaultKeyId,
+
208  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
+
209  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
210  &encryption_key.iv)) {
+
211  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
212  }
+
213  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
+
214  protection_scheme, pattern, &description);
+
215  if (muxer_listener_) {
+
216  muxer_listener_->OnEncryptionInfoReady(
+
217  kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
+
218  encryption_key.iv, encryption_key.key_system_info);
+
219  }
220 
-
221  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
222  Status status =
-
223  encryption_key_source->GetKey(track_type, encryption_key.get());
-
224  if (!status.ok())
-
225  return status;
-
226  if (encryption_key->iv.empty()) {
-
227  if (!AesCryptor::GenerateRandomIv(local_protection_scheme,
-
228  &encryption_key->iv)) {
-
229  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
230  }
-
231  }
-
232 
-
233  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
-
234  local_protection_scheme, &description);
-
235 
-
236  if (moov_->pssh.empty()) {
-
237  moov_->pssh.resize(encryption_key->key_system_info.size());
-
238  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
-
239  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
+
221  fragmenters_[i] = new KeyRotationFragmenter(
+
222  moof_.get(), streams[i]->info(), &moof_->tracks[i],
+
223  encryption_key_source, track_type,
+
224  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
+
225  clear_lead_in_seconds * streams[i]->info()->time_scale(),
+
226  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
+
227  muxer_listener_);
+
228  continue;
+
229  }
+
230 
+
231  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
232  Status status =
+
233  encryption_key_source->GetKey(track_type, encryption_key.get());
+
234  if (!status.ok())
+
235  return status;
+
236  if (encryption_key->iv.empty()) {
+
237  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
238  &encryption_key->iv)) {
+
239  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
240  }
-
241 
-
242  if (muxer_listener_) {
-
243  muxer_listener_->OnEncryptionInfoReady(
-
244  kInitialEncryptionInfo, local_protection_scheme,
-
245  encryption_key->key_id, encryption_key->iv,
-
246  encryption_key->key_system_info);
-
247  }
-
248  }
-
249 
-
250  fragmenters_[i] = new EncryptingFragmenter(
-
251  streams[i]->info(), &moof_->tracks[i], encryption_key.Pass(),
-
252  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
253  local_protection_scheme, GetCryptByteBlock(local_protection_scheme),
-
254  GetSkipByteBlock(local_protection_scheme));
-
255  }
-
256 
-
257  // Choose the first stream if there is no VIDEO.
-
258  if (sidx_->reference_id == 0)
-
259  sidx_->reference_id = 1;
-
260  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
-
261 
-
262  // Use media duration as progress target.
-
263  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
+
241  }
+
242 
+
243  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
+
244  protection_scheme, pattern, &description);
+
245 
+
246  if (moov_->pssh.empty()) {
+
247  moov_->pssh.resize(encryption_key->key_system_info.size());
+
248  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
+
249  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
+
250  }
+
251 
+
252  if (muxer_listener_) {
+
253  muxer_listener_->OnEncryptionInfoReady(
+
254  kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
+
255  encryption_key->iv, encryption_key->key_system_info);
+
256  }
+
257  }
+
258 
+
259  fragmenters_[i] = new EncryptingFragmenter(
+
260  streams[i]->info(), &moof_->tracks[i], encryption_key.Pass(),
+
261  clear_lead_in_seconds * streams[i]->info()->time_scale(),
+
262  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block);
+
263  }
264 
-
265  // Use the reference stream's time scale as movie time scale.
-
266  moov_->header.timescale = sidx_->timescale;
-
267  moof_->header.sequence_number = 1;
-
268 
-
269  // Fill in version information.
-
270  moov_->metadata.handler.handler_type = FOURCC_ID32;
-
271  moov_->metadata.id3v2.language.code = "eng";
-
272  moov_->metadata.id3v2.private_frame.owner =
-
273  "https://github.com/google/shaka-packager";
-
274  moov_->metadata.id3v2.private_frame.value = options_.packager_version_string;
-
275  return DoInitialize();
-
276 }
-
277 
- -
279  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
-
280  it != fragmenters_.end();
-
281  ++it) {
-
282  Status status = FinalizeFragment(true, *it);
-
283  if (!status.ok())
-
284  return status;
-
285  }
-
286 
-
287  // Set tracks and moov durations.
-
288  // Note that the updated moov box will be written to output file for VOD case
-
289  // only.
-
290  for (std::vector<Track>::iterator track = moov_->tracks.begin();
-
291  track != moov_->tracks.end();
-
292  ++track) {
-
293  track->header.duration = Rescale(track->media.header.duration,
-
294  track->media.header.timescale,
-
295  moov_->header.timescale);
-
296  if (track->header.duration > moov_->header.duration)
-
297  moov_->header.duration = track->header.duration;
-
298  }
-
299  moov_->extends.header.fragment_duration = moov_->header.duration;
-
300 
-
301  return DoFinalize();
-
302 }
-
303 
- -
305  scoped_refptr<MediaSample> sample) {
-
306  // Find the fragmenter for this stream.
-
307  DCHECK(stream);
-
308  DCHECK(stream_map_.find(stream) != stream_map_.end());
-
309  uint32_t stream_id = stream_map_[stream];
-
310  Fragmenter* fragmenter = fragmenters_[stream_id];
+
265  // Choose the first stream if there is no VIDEO.
+
266  if (sidx_->reference_id == 0)
+
267  sidx_->reference_id = 1;
+
268  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
+
269 
+
270  // Use media duration as progress target.
+
271  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
+
272 
+
273  // Use the reference stream's time scale as movie time scale.
+
274  moov_->header.timescale = sidx_->timescale;
+
275  moof_->header.sequence_number = 1;
+
276 
+
277  // Fill in version information.
+
278  moov_->metadata.handler.handler_type = FOURCC_ID32;
+
279  moov_->metadata.id3v2.language.code = "eng";
+
280  moov_->metadata.id3v2.private_frame.owner =
+
281  "https://github.com/google/shaka-packager";
+
282  moov_->metadata.id3v2.private_frame.value = options_.packager_version_string;
+
283  return DoInitialize();
+
284 }
+
285 
+ +
287  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+
288  it != fragmenters_.end();
+
289  ++it) {
+
290  Status status = FinalizeFragment(true, *it);
+
291  if (!status.ok())
+
292  return status;
+
293  }
+
294 
+
295  // Set tracks and moov durations.
+
296  // Note that the updated moov box will be written to output file for VOD case
+
297  // only.
+
298  for (std::vector<Track>::iterator track = moov_->tracks.begin();
+
299  track != moov_->tracks.end();
+
300  ++track) {
+
301  track->header.duration = Rescale(track->media.header.duration,
+
302  track->media.header.timescale,
+
303  moov_->header.timescale);
+
304  if (track->header.duration > moov_->header.duration)
+
305  moov_->header.duration = track->header.duration;
+
306  }
+
307  moov_->extends.header.fragment_duration = moov_->header.duration;
+
308 
+
309  return DoFinalize();
+
310 }
311 
-
312  // Set default sample duration if it has not been set yet.
-
313  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
-
314  moov_->extends.tracks[stream_id].default_sample_duration =
-
315  sample->duration();
-
316  }
-
317 
-
318  if (fragmenter->fragment_finalized()) {
-
319  return Status(error::FRAGMENT_FINALIZED,
-
320  "Current fragment is finalized already.");
-
321  }
-
322 
-
323  bool finalize_fragment = false;
-
324  if (fragmenter->fragment_duration() >=
-
325  options_.fragment_duration * stream->info()->time_scale()) {
-
326  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
327  finalize_fragment = true;
-
328  }
+ +
313  scoped_refptr<MediaSample> sample) {
+
314  // Find the fragmenter for this stream.
+
315  DCHECK(stream);
+
316  DCHECK(stream_map_.find(stream) != stream_map_.end());
+
317  uint32_t stream_id = stream_map_[stream];
+
318  Fragmenter* fragmenter = fragmenters_[stream_id];
+
319 
+
320  // Set default sample duration if it has not been set yet.
+
321  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
+
322  moov_->extends.tracks[stream_id].default_sample_duration =
+
323  sample->duration();
+
324  }
+
325 
+
326  if (fragmenter->fragment_finalized()) {
+
327  return Status(error::FRAGMENT_FINALIZED,
+
328  "Current fragment is finalized already.");
329  }
-
330  bool finalize_segment = false;
-
331  if (segment_durations_[stream_id] >=
-
332  options_.segment_duration * stream->info()->time_scale()) {
-
333  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
334  finalize_segment = true;
+
330 
+
331  bool finalize_fragment = false;
+
332  if (fragmenter->fragment_duration() >=
+
333  options_.fragment_duration * stream->info()->time_scale()) {
+
334  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
335  finalize_fragment = true;
336  }
337  }
-
338 
-
339  Status status;
-
340  if (finalize_fragment) {
-
341  status = FinalizeFragment(finalize_segment, fragmenter);
-
342  if (!status.ok())
-
343  return status;
-
344  }
-
345 
-
346  status = fragmenter->AddSample(sample);
-
347  if (!status.ok())
-
348  return status;
-
349 
-
350  if (sample_duration_ == 0)
-
351  sample_duration_ = sample->duration();
-
352  moov_->tracks[stream_id].media.header.duration += sample->duration();
-
353  segment_durations_[stream_id] += sample->duration();
-
354  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
-
355  return Status::OK;
-
356 }
+
338  bool finalize_segment = false;
+
339  if (segment_durations_[stream_id] >=
+
340  options_.segment_duration * stream->info()->time_scale()) {
+
341  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
+
342  finalize_segment = true;
+
343  finalize_fragment = true;
+
344  }
+
345  }
+
346 
+
347  Status status;
+
348  if (finalize_fragment) {
+
349  status = FinalizeFragment(finalize_segment, fragmenter);
+
350  if (!status.ok())
+
351  return status;
+
352  }
+
353 
+
354  status = fragmenter->AddSample(sample);
+
355  if (!status.ok())
+
356  return status;
357 
-
358 uint32_t Segmenter::GetReferenceTimeScale() const {
-
359  return moov_->header.timescale;
-
360 }
-
361 
-
362 double Segmenter::GetDuration() const {
-
363  if (moov_->header.timescale == 0) {
-
364  // Handling the case where this is not properly initialized.
-
365  return 0.0;
-
366  }
-
367 
-
368  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
-
369 }
-
370 
-
371 void Segmenter::UpdateProgress(uint64_t progress) {
-
372  accumulated_progress_ += progress;
-
373 
-
374  if (!progress_listener_) return;
-
375  if (progress_target_ == 0) return;
-
376  // It might happen that accumulated progress exceeds progress_target due to
-
377  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
-
378  // progress.
-
379  if (accumulated_progress_ >= progress_target_) {
-
380  progress_listener_->OnProgress(1.0);
-
381  } else {
-
382  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
-
383  progress_target_);
-
384  }
-
385 }
-
386 
-
387 void Segmenter::SetComplete() {
-
388  if (!progress_listener_) return;
-
389  progress_listener_->OnProgress(1.0);
-
390 }
-
391 
-
392 Status Segmenter::FinalizeSegment() {
-
393  Status status = DoFinalizeSegment();
+
358  if (sample_duration_ == 0)
+
359  sample_duration_ = sample->duration();
+
360  moov_->tracks[stream_id].media.header.duration += sample->duration();
+
361  segment_durations_[stream_id] += sample->duration();
+
362  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
+
363  return Status::OK;
+
364 }
+
365 
+
366 uint32_t Segmenter::GetReferenceTimeScale() const {
+
367  return moov_->header.timescale;
+
368 }
+
369 
+
370 double Segmenter::GetDuration() const {
+
371  if (moov_->header.timescale == 0) {
+
372  // Handling the case where this is not properly initialized.
+
373  return 0.0;
+
374  }
+
375 
+
376  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
+
377 }
+
378 
+
379 void Segmenter::UpdateProgress(uint64_t progress) {
+
380  accumulated_progress_ += progress;
+
381 
+
382  if (!progress_listener_) return;
+
383  if (progress_target_ == 0) return;
+
384  // It might happen that accumulated progress exceeds progress_target due to
+
385  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
386  // progress.
+
387  if (accumulated_progress_ >= progress_target_) {
+
388  progress_listener_->OnProgress(1.0);
+
389  } else {
+
390  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
391  progress_target_);
+
392  }
+
393 }
394 
-
395  // Reset segment information to initial state.
-
396  sidx_->references.clear();
-
397  std::vector<uint64_t>::iterator it = segment_durations_.begin();
-
398  for (; it != segment_durations_.end(); ++it)
-
399  *it = 0;
-
400 
-
401  return status;
-
402 }
-
403 
-
404 uint32_t Segmenter::GetReferenceStreamId() {
-
405  DCHECK(sidx_);
-
406  return sidx_->reference_id - 1;
-
407 }
+
395 void Segmenter::SetComplete() {
+
396  if (!progress_listener_) return;
+
397  progress_listener_->OnProgress(1.0);
+
398 }
+
399 
+
400 Status Segmenter::FinalizeSegment() {
+
401  Status status = DoFinalizeSegment();
+
402 
+
403  // Reset segment information to initial state.
+
404  sidx_->references.clear();
+
405  std::vector<uint64_t>::iterator it = segment_durations_.begin();
+
406  for (; it != segment_durations_.end(); ++it)
+
407  *it = 0;
408 
-
409 Status Segmenter::FinalizeFragment(bool finalize_segment,
-
410  Fragmenter* fragmenter) {
-
411  fragmenter->FinalizeFragment();
-
412 
-
413  // Check if all tracks are ready for fragmentation.
-
414  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
-
415  it != fragmenters_.end();
-
416  ++it) {
-
417  if (!(*it)->fragment_finalized())
-
418  return Status::OK;
-
419  }
+
409  return status;
+
410 }
+
411 
+
412 uint32_t Segmenter::GetReferenceStreamId() {
+
413  DCHECK(sidx_);
+
414  return sidx_->reference_id - 1;
+
415 }
+
416 
+
417 Status Segmenter::FinalizeFragment(bool finalize_segment,
+
418  Fragmenter* fragmenter) {
+
419  fragmenter->FinalizeFragment();
420 
-
421  MediaData mdat;
-
422  // Data offset relative to 'moof': moof size + mdat header size.
-
423  // The code will also update box sizes for moof_ and its child boxes.
-
424  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
-
425  // 'traf' should follow 'mfhd' moof header box.
-
426  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
-
427  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
-
428  TrackFragment& traf = moof_->tracks[i];
-
429  if (traf.auxiliary_offset.offsets.size() > 0) {
-
430  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
-
431  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
-
432 
-
433  next_traf_position += traf.box_size();
-
434  // SampleEncryption 'senc' box should be the last box in 'traf'.
-
435  // |auxiliary_offset| should point to the data of SampleEncryption.
-
436  traf.auxiliary_offset.offsets[0] =
-
437  next_traf_position - traf.sample_encryption.box_size() +
-
438  traf.sample_encryption.HeaderSize() +
-
439  sizeof(uint32_t); // for sample count field in 'senc'
-
440  }
-
441  traf.runs[0].data_offset = data_offset + mdat.data_size;
-
442  mdat.data_size += fragmenters_[i]->data()->Size();
-
443  }
-
444 
-
445  // Generate segment reference.
-
446  sidx_->references.resize(sidx_->references.size() + 1);
-
447  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
-
448  &sidx_->references[sidx_->references.size() - 1]);
-
449  sidx_->references[sidx_->references.size() - 1].referenced_size =
-
450  data_offset + mdat.data_size;
-
451 
-
452  // Write the fragment to buffer.
-
453  moof_->Write(fragment_buffer_.get());
-
454  mdat.WriteHeader(fragment_buffer_.get());
-
455  for (Fragmenter* fragmenter : fragmenters_)
-
456  fragment_buffer_->AppendBuffer(*fragmenter->data());
-
457 
-
458  // Increase sequence_number for next fragment.
-
459  ++moof_->header.sequence_number;
-
460 
-
461  if (finalize_segment)
-
462  return FinalizeSegment();
-
463 
-
464  return Status::OK;
-
465 }
-
466 
-
467 } // namespace mp4
-
468 } // namespace media
-
469 } // namespace shaka
+
421  // Check if all tracks are ready for fragmentation.
+
422  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+
423  it != fragmenters_.end();
+
424  ++it) {
+
425  if (!(*it)->fragment_finalized())
+
426  return Status::OK;
+
427  }
+
428 
+
429  MediaData mdat;
+
430  // Data offset relative to 'moof': moof size + mdat header size.
+
431  // The code will also update box sizes for moof_ and its child boxes.
+
432  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
+
433  // 'traf' should follow 'mfhd' moof header box.
+
434  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
+
435  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
+
436  TrackFragment& traf = moof_->tracks[i];
+
437  if (traf.auxiliary_offset.offsets.size() > 0) {
+
438  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
+
439  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
+
440 
+
441  next_traf_position += traf.box_size();
+
442  // SampleEncryption 'senc' box should be the last box in 'traf'.
+
443  // |auxiliary_offset| should point to the data of SampleEncryption.
+
444  traf.auxiliary_offset.offsets[0] =
+
445  next_traf_position - traf.sample_encryption.box_size() +
+
446  traf.sample_encryption.HeaderSize() +
+
447  sizeof(uint32_t); // for sample count field in 'senc'
+
448  }
+
449  traf.runs[0].data_offset = data_offset + mdat.data_size;
+
450  mdat.data_size += fragmenters_[i]->data()->Size();
+
451  }
+
452 
+
453  // Generate segment reference.
+
454  sidx_->references.resize(sidx_->references.size() + 1);
+
455  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
+
456  &sidx_->references[sidx_->references.size() - 1]);
+
457  sidx_->references[sidx_->references.size() - 1].referenced_size =
+
458  data_offset + mdat.data_size;
+
459 
+
460  // Write the fragment to buffer.
+
461  moof_->Write(fragment_buffer_.get());
+
462  mdat.WriteHeader(fragment_buffer_.get());
+
463  for (Fragmenter* fragmenter : fragmenters_)
+
464  fragment_buffer_->AppendBuffer(*fragmenter->data());
+
465 
+
466  // Increase sequence_number for next fragment.
+
467  ++moof_->header.sequence_number;
+
468 
+
469  if (finalize_segment)
+
470  return FinalizeSegment();
+
471 
+
472  return Status::OK;
+
473 }
+
474 
+
475 } // namespace mp4
+
476 } // namespace media
+
477 } // namespace shaka
std::string packager_version_string
Specify the version string to be embedded in the output files.
Definition: muxer_options.h:82
@@ -583,7 +591,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 297ed2a862..2862d62e68 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 69483ef357..7acbfcb799 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 3a40cba2ad..98a1ad0eba 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -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 840a0b0b80..be58ef509b 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 d89e1ecd74..55fee29f76 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 36931154b2..f93582aa66 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 ae3231f5e4..64f0d873c7 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 583e003086..dd5d2235be 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 638c982d2b..c8e8907306 100644 --- a/docs/d2/dc7/structshaka_1_1MpdOptions-members.html +++ b/docs/d2/dc7/structshaka_1_1MpdOptions-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dcd/program__map__table__writer_8h_source.html b/docs/d2/dcd/program__map__table__writer_8h_source.html index a6344ec792..e7a0026b40 100644 --- a/docs/d2/dcd/program__map__table__writer_8h_source.html +++ b/docs/d2/dcd/program__map__table__writer_8h_source.html @@ -191,7 +191,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 d2818242dc..c29f8b007f 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 44dd8e012c..cf5c495acf 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 09ab2caf0c..1ebe9a4c7f 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 2c5337302e..4af211e7e7 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 ad595c5a24..335c6a8db3 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 9ff7b51777..cab35c70cc 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -578,14 +578,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
489  return shaka::media::PackagerMain(argc, argv);
490 }
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:202
-
bool ValidateWidevineCryptoFlags()
+
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:184
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 036cbb5155..dc3490d049 100644 --- a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html @@ -116,7 +116,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 186ca8ef26..5ed8e959ed 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 e037a08544..c00d66677c 100644 --- a/docs/d2/de9/mock__muxer__listener_8h_source.html +++ b/docs/d2/de9/mock__muxer__listener_8h_source.html @@ -160,7 +160,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 e0b3549ed6..43db9bdef6 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 12e5f2e0b2..254f95b32b 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 6bb946c571..aeb4f33f6c 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 de50b20678..80a3ed7fe0 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 ad77d4c71a..ce403909ed 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 2fc775bece..3cf4619305 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 e69b2de60e..43cbd30be0 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 39d98819c4..c7c3029212 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 034a7be61c..95ad329954 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 43c0eec441..5a6de8cb7d 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 eefa8884ba..efd61de5e5 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 3e9f798c2f..c58bc8b186 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 4238dbcaee..52462f32c2 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 fa0bd8f7c2..f6cb05f153 100644 --- a/docs/d3/d19/io__cache_8h_source.html +++ b/docs/d3/d19/io__cache_8h_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d35/video__slice__header__parser_8cc_source.html b/docs/d3/d35/video__slice__header__parser_8cc_source.html index 83ae73367b..9a6796fa07 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 8413fa0c44..ad9fd4cecb 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 04cfba3f28..df385f9450 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 080c26d91b..2f66f74f24 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 b633d6406f..a9daf7c3de 100644 --- a/docs/d3/d61/classshaka_1_1media_1_1File.html +++ b/docs/d3/d61/classshaka_1_1media_1_1File.html @@ -811,7 +811,7 @@ class ThreadedIoFile diff --git a/docs/d3/d62/continuity__counter_8h_source.html b/docs/d3/d62/continuity__counter_8h_source.html index 28908a0b34..21a0c522ab 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 bf9863fd0a..1b1663755c 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 2974b9c750..dc3ec52411 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 d5765668cc..bb5c14faa6 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 1a9dd961e4..c14c635006 100644 --- a/docs/d3/d6b/fixed__key__source_8cc_source.html +++ b/docs/d3/d6b/fixed__key__source_8cc_source.html @@ -243,7 +243,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html b/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html index 5baac26a51..6a458fb64b 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 665ca84edf..71172caa5f 100644 --- a/docs/d3/d72/fixed__key__source_8h_source.html +++ b/docs/d3/d72/fixed__key__source_8h_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html b/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html index ae19ec56b7..64bd272249 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 93cd95d2c5..38248ccd8c 100644 --- a/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html +++ b/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html @@ -120,6 +120,8 @@ Public Member Functions   const std::vector< uint8_t > & iv () const   +bool use_constant_iv () const +  bool Crypt (const std::vector< uint8_t > &text, std::vector< uint8_t > *crypt_text)   @@ -234,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 043ce26863..e4177edf25 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 f4008c1b73..dfabb86087 100644 --- a/docs/d3/d76/muxer__flags_8h_source.html +++ b/docs/d3/d76/muxer__flags_8h_source.html @@ -114,7 +114,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 9ed21693de..e90e263721 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 6736efa770..97cb9f6e96 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 083322cbab..49c3ad9227 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 bf5fc62772..5e1386bcf5 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 234aa2842a..c5fec5c21f 100644 --- a/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html +++ b/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 742 of file box_definitions.cc.

+

Definition at line 750 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/d8b/structshaka_1_1media_1_1FileCloser.html b/docs/d3/d8b/structshaka_1_1media_1_1FileCloser.html index 4b2cad7471..fda401ada0 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 2e0155e4b1..0324024a78 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 86a867e375..02dcb64023 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 c62a61e8b4..e25fb61a65 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 ced1d14800..376984bf9d 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 a30ea7d3e6..7145ce43df 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 4c732b4b9a..94e0933eec 100644 --- a/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html +++ b/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 386 of file box_definitions.cc.

+

Definition at line 391 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html b/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html index 6447262b1b..8b7271b38b 100644 --- a/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html +++ b/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html @@ -178,7 +178,7 @@ Additional Inherited Members

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

-

Definition at line 1364 of file box_definitions.cc.

+

Definition at line 1371 of file box_definitions.cc.

@@ -189,7 +189,7 @@ Additional Inherited Members diff --git a/docs/d3/db4/classshaka_1_1media_1_1WebMWebVTTParser-members.html b/docs/d3/db4/classshaka_1_1media_1_1WebMWebVTTParser-members.html index 462c9bf0ea..7385544a0e 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 8d86b14e64..ffa3906570 100644 --- a/docs/d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html +++ b/docs/d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 2090 of file box_definitions.cc.

+

Definition at line 2115 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/db6/webm__parser_8cc_source.html b/docs/d3/db6/webm__parser_8cc_source.html index 646ca3b5de..e633427d0d 100644 --- a/docs/d3/db6/webm__parser_8cc_source.html +++ b/docs/d3/db6/webm__parser_8cc_source.html @@ -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 62a3eb73d6..207452efba 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 87ed2e05bf..fd74011882 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 dc0ae0b32c..446846cc5c 100644 --- a/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html +++ b/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 1173 of file box_definitions.cc.

+

Definition at line 1180 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html b/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html index a0113ab9ab..0a93fb7b13 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 72d18b62bf..fedb889f26 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 6ad78a48a3..2379304f15 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 @@ -166,7 +166,7 @@ std::vector< FourCC > <

Reimplemented from shaka::media::mp4::FileType.

-

Definition at line 157 of file box_definitions.cc.

+

Definition at line 162 of file box_definitions.cc.

@@ -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 16329b825a..01b92f77ba 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 fc9ec0ebbc..49ecaeea2f 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 76bcf46940..bb2b1e0a78 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 fafd1cb808..1860c2af18 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 7e47ccfe44..29118818ba 100644 --- a/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html +++ b/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html @@ -137,6 +137,8 @@ Public Member Functions   const std::vector< uint8_t > & iv () const   +bool use_constant_iv () const +  bool Crypt (const std::vector< uint8_t > &text, std::vector< uint8_t > *crypt_text)   @@ -238,7 +240,7 @@ AES_KEY * mutable_aes_key< skip_byte_blockindicates number of unencrypted blocks (16-byte) in pattern based encryption. encryption_modeis used to determine the behavior for the last block. constant_iv_flagindicates whether a constant iv is used, kUseConstantIv means that the same iv is used for all Crypt calls until iv is changed via SetIv; otherwise, iv can be incremented (for counter mode) or chained (for cipher block chaining mode) internally inside Crypt call, i.e. iv will be updated across Crypt calls. - cryptorpoints to an AesCryptor instance which performs the actual encryption/decryption. + cryptorpoints to an AesCryptor instance which performs the actual encryption/decryption. Note that cryptor shall not use constant iv. @@ -284,7 +286,7 @@ AES_KEY * mutable_aes_key<

Implements shaka::media::AesCryptor.

-

Definition at line 31 of file aes_pattern_cryptor.cc.

+

Definition at line 37 of file aes_pattern_cryptor.cc.

@@ -295,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 be56f89b35..15c9768fa5 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -287,8 +287,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
198 } // namespace shaka
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
virtual bool Open()=0
Internal open. Should not be used directly.
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:371
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:387
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:379
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:395
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
virtual bool Close()=0
@@ -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 aaeb74504e..9b0b05fc22 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 330e567c2a..c66f0c3bf0 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 cc354bfb6f..afe6bc8b52 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 b0e9456eb7..98422f1289 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 e72dc980a0..4cca07bbc4 100644 --- a/docs/d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html +++ b/docs/d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html @@ -124,6 +124,8 @@ Public Member Functions   const std::vector< uint8_t > & iv () const   +bool use_constant_iv () const +  bool Crypt (const std::vector< uint8_t > &text, std::vector< uint8_t > *crypt_text)   @@ -233,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 eff5937504..13ed902b48 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 f9ab98d978..443ec4defc 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 99c25ad95e..93ed67a78d 100644 --- a/docs/d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html +++ b/docs/d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 1823 of file box_definitions.cc.

+

Definition at line 1848 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/d37/io__cache_8cc_source.html b/docs/d4/d37/io__cache_8cc_source.html index 614c4b03a7..1e244286fd 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -252,7 +252,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html b/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html index 2f0dc3f166..0421173f86 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 51498bb2a8..e41430668f 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 fa91eee7a0..1244b57048 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 0cd62b6548..648a20b716 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 c3b4467f9a..054e4c6d46 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 9974287709..e7c19a0b79 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 5a193c356b..0942cccc2b 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 afe3237300..4f6abb3425 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 ffe6114d0b..ea9c345bbc 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 a0f099d70f..c86a67e4d4 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 382c16d803..bee0a2765b 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 4d16c75455..fec2a046ea 100644 --- a/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html +++ b/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 1675 of file box_definitions.cc.

+

Definition at line 1691 of file box_definitions.cc.

@@ -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 1a8dde9b5a..72f663e093 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -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 b566835a56..f3bd05844e 100644 --- a/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html +++ b/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html @@ -186,7 +186,7 @@ Additional Inherited Members

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

-

Definition at line 303 of file box_definitions.cc.

+

Definition at line 308 of file box_definitions.cc.

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

Definition at line 354 of file box_definitions.cc.

+

Definition at line 359 of file box_definitions.cc.

@@ -250,7 +250,7 @@ Additional Inherited Members diff --git a/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html b/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html index 0ca78fe64c..3bac3dceb0 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 5ad373b444..d8ca7f8c4f 100644 --- a/docs/d4/db2/cluster__builder_8h_source.html +++ b/docs/d4/db2/cluster__builder_8h_source.html @@ -176,7 +176,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 0598149c0c..4d8b84fa92 100644 --- a/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html +++ b/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html @@ -112,7 +112,7 @@ virtual scoped_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 14a3ecbc26..126ad6b443 100644 --- a/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html +++ b/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html @@ -183,7 +183,7 @@ Additional Inherited Members

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

-

Definition at line 1879 of file box_definitions.cc.

+

Definition at line 1904 of file box_definitions.cc.

@@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d4/dc8/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html b/docs/d4/dc8/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html index 7870e3abca..7ad464dae1 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 @@ -226,7 +226,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 a347140443..a27b773a18 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -178,7 +178,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 5a2ecc4cd8..5b95f54940 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 094cc3e911..045dd8f3d0 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 f085620b91..0a0363b4d3 100644 --- a/docs/d4/dde/webvtt__util_8h_source.html +++ b/docs/d4/dde/webvtt__util_8h_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html b/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html index 8920ea18ce..911c4681b1 100644 --- a/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html +++ b/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 1974 of file box_definitions.cc.

+

Definition at line 1999 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d4/de6/classshaka_1_1media_1_1ProgressListener.html b/docs/d4/de6/classshaka_1_1media_1_1ProgressListener.html index 5df3043761..1408025240 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 1ab7b3b67b..9dfa69cb20 100644 --- a/docs/d4/de7/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html +++ b/docs/d4/de7/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html @@ -111,7 +111,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 01ab256edc..f49d0ed6c6 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -178,7 +178,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 a2654b68b6..c2114d0fc1 100644 --- a/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html +++ b/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html @@ -183,7 +183,7 @@ Additional Inherited Members

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

-

Definition at line 2507 of file box_definitions.cc.

+

Definition at line 2532 of file box_definitions.cc.

@@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html b/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html index 49e94c3841..a720782fd6 100644 --- a/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html +++ b/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 1656 of file box_definitions.cc.

+

Definition at line 1672 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/dfd/structshaka_1_1media_1_1H265Sps.html b/docs/d4/dfd/structshaka_1_1media_1_1H265Sps.html index eaecf22e42..f6ca13cdcb 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 270f444c56..188e64e057 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 ef7000913c..5c96225373 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 @@ -171,7 +171,7 @@ Additional Inherited Members

Reimplemented in shaka::media::mp4::SegmentType.

-

Definition at line 133 of file box_definitions.cc.

+

Definition at line 138 of file box_definitions.cc.

@@ -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 0e20955109..0df88511ee 100644 --- a/docs/d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html +++ b/docs/d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 374 of file box_definitions.cc.

+

Definition at line 379 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html b/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html index b1d461db0e..4d0932c8d3 100644 --- a/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html +++ b/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 2609 of file box_definitions.cc.

+

Definition at line 2634 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d5/d11/classshaka_1_1media_1_1WebMInfoParser-members.html b/docs/d5/d11/classshaka_1_1media_1_1WebMInfoParser-members.html index e52375ac09..ff1d9f4065 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 84035e350d..74e802788d 100644 --- a/docs/d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html +++ b/docs/d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 1591 of file box_definitions.cc.

+

Definition at line 1607 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d5/d13/classshaka_1_1media_1_1ESDescriptor.html b/docs/d5/d13/classshaka_1_1media_1_1ESDescriptor.html index b88a0f666f..ceae261ef1 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 6cf2982926..a295338afa 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 d45c0dba49..2bb07b82e6 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 2af0ca482f..f354d0682b 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 4d2a1a82b0..3307cf7ced 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 ebffa1d8eb..a4e7e29bd4 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 8385489824..1c4c3e0f95 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 de48c13952..439958d978 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -156,7 +156,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 aa6b1612bf..268282990e 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 589dc811fa..34ac174aba 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 0c8d819baf..cd1d80a6d3 100644 --- a/docs/d5/d52/ts__section__pes_8h_source.html +++ b/docs/d5/d52/ts__section__pes_8h_source.html @@ -161,7 +161,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 96aed254aa..d00a27a4e5 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 39d79eb261..61d0b584a8 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 18589e9253..a3434bfaf1 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 b1d75ba541..322a510195 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 1c58225f5e..506db193ab 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 f36b5414cc..69c16a69cb 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 582220e3fb..d5f5642864 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 03d27d8201..b27fad785b 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 f8339e00ea..d068530814 100644 --- a/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html +++ b/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html @@ -203,7 +203,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 e0477296aa..b9f8871869 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -904,11 +904,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); -
bool ParseFromBuffer(uint8_t iv_size, bool has_subsamples, BufferReader *reader)
+
bool ParseFromBuffer(uint8_t iv_size, bool has_subsamples, BufferReader *reader)
Implemented per http://id3.org/id3v2.4.0-frames.
-
FourCC BoxType() const override
+
FourCC BoxType() const override
@@ -939,11 +939,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - -
bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
+ +
bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
-
bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
+
bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
@@ -994,13 +994,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
PrivFrame private_frame
We only support PrivateFrame in ID3. Other frames are ignored.
- + 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 e8c8bf40b6..cc5a77e4e6 100644 --- a/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html +++ b/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 2010 of file box_definitions.cc.

+

Definition at line 2035 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d5/d89/widevine__key__source_8cc_source.html b/docs/d5/d89/widevine__key__source_8cc_source.html index 6dc4aaa395..564926586b 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -724,7 +724,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d8c/structshaka_1_1media_1_1mp4_1_1CompositionOffset.html b/docs/d5/d8c/structshaka_1_1media_1_1mp4_1_1CompositionOffset.html index 354f0d236d..0e70110e0a 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 1972307ce7..82befc4c76 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -741,7 +741,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 a7a76d46ae..f68389aa8a 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -378,7 +378,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 81fd226b27..2608ddff50 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 2d3fa172eb..86d86d2e61 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -234,7 +234,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 7bbce210dd..85327164fd 100644 --- a/docs/d5/d9b/vp__codec__configuration__record_8h_source.html +++ b/docs/d5/d9b/vp__codec__configuration__record_8h_source.html @@ -193,7 +193,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 9b04929e73..f34ae24f02 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 ac44fb3993..755c543d03 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 41aa94d81b..79b6fd52e1 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 55c8c154f8..5c0b5e367d 100644 --- a/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html +++ b/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html @@ -229,7 +229,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 ca744487bb..812d09d772 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 5ebe276f7f..b04d982606 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 944fa3449e..89584895d7 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 e43218ba8a..1752fce12e 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 3de7359559..87a2c1ea41 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 @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 182 of file box_definitions.cc.

+

Definition at line 187 of file box_definitions.cc.

@@ -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 ffbb785ad0..cef6e4a025 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 3f0be0570d..b70992ebbf 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 a8db0d7be8..86f296a892 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 d1b53caceb..29e4cf033d 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 @@ -306,7 +306,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 b36292bc5f..06632808e4 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 3e8ea23b5f..045985d5ad 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 bdab026069..ed38ec5380 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 d12e4fdcb6..f7af18e737 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 04831a2bb6..e2a1608d71 100644 --- a/docs/d5/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html +++ b/docs/d5/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html @@ -491,7 +491,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 fdfe6e249e..087108dd0c 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 6785f464a2..0b4e83c281 100644 --- a/docs/d5/dfc/file_8cc_source.html +++ b/docs/d5/dfc/file_8cc_source.html @@ -375,7 +375,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html b/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html index 1ec0432e4a..e665cb3e99 100644 --- a/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html +++ b/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html @@ -110,12 +110,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); mutable_aes_key() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorinlineprotected SetIv(const std::vector< uint8_t > &iv)shaka::media::AesCryptor UpdateIv()shaka::media::AesCryptor - ~AesCbcDecryptor() override (defined in shaka::media::AesCbcDecryptor)shaka::media::AesCbcDecryptor - ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual + use_constant_iv() const shaka::media::AesCryptorinline + ~AesCbcDecryptor() override (defined in shaka::media::AesCbcDecryptor)shaka::media::AesCbcDecryptor + ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual diff --git a/docs/d6/d09/aes__pattern__cryptor_8h_source.html b/docs/d6/d09/aes__pattern__cryptor_8h_source.html index 019ad426bb..082da883df 100644 --- a/docs/d6/d09/aes__pattern__cryptor_8h_source.html +++ b/docs/d6/d09/aes__pattern__cryptor_8h_source.html @@ -108,36 +108,36 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
35  };
36 
-
51  AesPatternCryptor(uint8_t crypt_byte_block,
-
52  uint8_t skip_byte_block,
-
53  PatternEncryptionMode encryption_mode,
-
54  ConstantIvFlag constant_iv_flag,
-
55  scoped_ptr<AesCryptor> cryptor);
-
56  ~AesPatternCryptor() override;
-
57 
-
60  bool InitializeWithIv(const std::vector<uint8_t>& key,
-
61  const std::vector<uint8_t>& iv) override;
-
63 
-
64  private:
-
65  bool CryptInternal(const uint8_t* text,
-
66  size_t text_size,
-
67  uint8_t* crypt_text,
-
68  size_t* crypt_text_size) override;
-
69  void SetIvInternal() override;
-
70 
-
71  bool NeedEncrypt(size_t input_size, size_t target_data_size);
-
72 
-
73  const uint8_t crypt_byte_block_;
-
74  const uint8_t skip_byte_block_;
-
75  const PatternEncryptionMode encryption_mode_;
-
76  scoped_ptr<AesCryptor> cryptor_;
-
77 
-
78  DISALLOW_COPY_AND_ASSIGN(AesPatternCryptor);
-
79 };
-
80 
-
81 } // namespace media
-
82 } // namespace shaka
-
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
+
52  AesPatternCryptor(uint8_t crypt_byte_block,
+
53  uint8_t skip_byte_block,
+
54  PatternEncryptionMode encryption_mode,
+
55  ConstantIvFlag constant_iv_flag,
+
56  scoped_ptr<AesCryptor> cryptor);
+
57  ~AesPatternCryptor() override;
+
58 
+
61  bool InitializeWithIv(const std::vector<uint8_t>& key,
+
62  const std::vector<uint8_t>& iv) override;
+
64 
+
65  private:
+
66  bool CryptInternal(const uint8_t* text,
+
67  size_t text_size,
+
68  uint8_t* crypt_text,
+
69  size_t* crypt_text_size) override;
+
70  void SetIvInternal() override;
+
71 
+
72  bool NeedEncrypt(size_t input_size, size_t target_data_size);
+
73 
+
74  const uint8_t crypt_byte_block_;
+
75  const uint8_t skip_byte_block_;
+
76  const PatternEncryptionMode encryption_mode_;
+
77  scoped_ptr<AesCryptor> cryptor_;
+
78 
+
79  DISALLOW_COPY_AND_ASSIGN(AesPatternCryptor);
+
80 };
+
81 
+
82 } // namespace media
+
83 } // namespace shaka
+
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
AesPatternCryptor(uint8_t crypt_byte_block, uint8_t skip_byte_block, PatternEncryptionMode encryption_mode, ConstantIvFlag constant_iv_flag, scoped_ptr< AesCryptor > cryptor)
@@ -148,7 +148,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 bcb986fe58..789439ecc5 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -132,7 +132,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 df4b97bc5a..4c43799a67 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -257,7 +257,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 6b04138939..10489c6fee 100644 --- a/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html +++ b/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html @@ -189,7 +189,7 @@ Additional Inherited Members

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

-

Definition at line 513 of file box_definitions.cc.

+

Definition at line 521 of file box_definitions.cc.

@@ -200,7 +200,7 @@ Additional Inherited Members diff --git a/docs/d6/d1a/ts__packet__writer__util_8cc_source.html b/docs/d6/d1a/ts__packet__writer__util_8cc_source.html index 975ce05343..0e2898d96c 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 de53bd80fa..05de27b3a7 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 88ef99c5d8..fa2caf349b 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 2ca0b37b39..be09057361 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 c18effc3f7..c01fb5bc2e 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 9d18f7c18c..c6d34be45c 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 1f76c16817..1a19f2cef1 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -275,173 +275,184 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
186  DCHECK(!IsSubsampleEncryptionRequired());
187  saiz.default_sample_info_size = per_sample_iv_size;
188  }
-
189  // It should only happen with full sample encryption + constant iv, which is
-
190  // not a legal combination.
-
191  CHECK(!saiz.sample_info_sizes.empty() || saiz.default_sample_info_size != 0);
-
192 }
-
193 
- -
195  DCHECK(encryption_key_);
-
196  scoped_ptr<AesCryptor> encryptor;
-
197  switch (protection_scheme_) {
-
198  case FOURCC_cenc:
-
199  encryptor.reset(new AesCtrEncryptor);
-
200  break;
-
201  case FOURCC_cbc1:
-
202  encryptor.reset(new AesCbcEncryptor(kNoPadding));
-
203  break;
-
204  case FOURCC_cens:
-
205  encryptor.reset(new AesPatternCryptor(
-
206  crypt_byte_block(), skip_byte_block(),
- -
208  AesCryptor::kDontUseConstantIv,
-
209  scoped_ptr<AesCryptor>(new AesCtrEncryptor())));
-
210  break;
-
211  case FOURCC_cbcs:
-
212  encryptor.reset(new AesPatternCryptor(
-
213  crypt_byte_block(), skip_byte_block(),
- -
215  AesCryptor::kUseConstantIv,
-
216  scoped_ptr<AesCryptor>(new AesCbcEncryptor(kNoPadding))));
-
217  break;
-
218  default:
-
219  return Status(error::MUXER_FAILURE, "Unsupported protection scheme.");
-
220  }
-
221 
-
222  DCHECK(!encryption_key_->iv.empty());
-
223  const bool initialized =
-
224  encryptor->InitializeWithIv(encryption_key_->key, encryption_key_->iv);
-
225  if (!initialized)
-
226  return Status(error::MUXER_FAILURE, "Failed to create the encryptor.");
-
227  encryptor_ = encryptor.Pass();
-
228  return Status::OK;
-
229 }
+
189 
+
190  // It should only happen with full sample encryption + constant iv, i.e.
+
191  // 'cbcs' applying to audio.
+
192  if (saiz.default_sample_info_size == 0 && saiz.sample_info_sizes.empty()) {
+
193  DCHECK_EQ(protection_scheme_, FOURCC_cbcs);
+
194  DCHECK(!IsSubsampleEncryptionRequired());
+
195  // ISO/IEC 23001-7:2016(E) The sample auxiliary information would then be
+
196  // empty and should be emitted. Clear saiz and saio boxes so they are not
+
197  // written.
+
198  saiz.sample_count = 0;
+
199  traf()->auxiliary_offset.offsets.clear();
+
200  }
+
201 }
+
202 
+ +
204  DCHECK(encryption_key_);
+
205  scoped_ptr<AesCryptor> encryptor;
+
206  switch (protection_scheme_) {
+
207  case FOURCC_cenc:
+
208  encryptor.reset(new AesCtrEncryptor);
+
209  break;
+
210  case FOURCC_cbc1:
+
211  encryptor.reset(new AesCbcEncryptor(kNoPadding));
+
212  break;
+
213  case FOURCC_cens:
+
214  encryptor.reset(new AesPatternCryptor(
+
215  crypt_byte_block(), skip_byte_block(),
+ +
217  AesCryptor::kDontUseConstantIv,
+
218  scoped_ptr<AesCryptor>(new AesCtrEncryptor())));
+
219  break;
+
220  case FOURCC_cbcs:
+
221  encryptor.reset(new AesPatternCryptor(
+
222  crypt_byte_block(), skip_byte_block(),
+ +
224  AesCryptor::kUseConstantIv,
+
225  scoped_ptr<AesCryptor>(new AesCbcEncryptor(kNoPadding))));
+
226  break;
+
227  default:
+
228  return Status(error::MUXER_FAILURE, "Unsupported protection scheme.");
+
229  }
230 
-
231 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
-
232  DCHECK(encryptor_);
-
233  CHECK(encryptor_->Crypt(data, size, data));
-
234 }
-
235 
-
236 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
-
237  DCHECK(encryptor_);
-
238 
-
239  SampleEncryptionEntry sample_encryption_entry;
-
240  // For 'cbcs' scheme, Constant IVs SHALL be used.
-
241  if (protection_scheme_ != FOURCC_cbcs)
-
242  sample_encryption_entry.initialization_vector = encryptor_->iv();
-
243  uint8_t* data = sample->writable_data();
-
244  if (IsSubsampleEncryptionRequired()) {
-
245  if (vpx_parser_) {
-
246  std::vector<VPxFrameInfo> vpx_frames;
-
247  if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
-
248  &vpx_frames)) {
-
249  return Status(error::MUXER_FAILURE, "Failed to parse vpx frame.");
-
250  }
-
251 
-
252  const bool is_superframe = vpx_frames.size() > 1;
-
253  for (const VPxFrameInfo& frame : vpx_frames) {
-
254  SubsampleEntry subsample;
-
255  subsample.clear_bytes = frame.uncompressed_header_size;
-
256  subsample.cipher_bytes =
-
257  frame.frame_size - frame.uncompressed_header_size;
-
258 
-
259  // "VP Codec ISO Media File Format Binding" document requires that the
-
260  // encrypted bytes of each frame within the superframe must be block
-
261  // aligned so that the counter state can be computed for each frame
-
262  // within the superframe.
-
263  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
-
264  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
-
265  // avoid partial blocks in Subsamples.
-
266  if (is_superframe || protection_scheme_ == FOURCC_cbc1 ||
-
267  protection_scheme_ == FOURCC_cens) {
-
268  const uint16_t misalign_bytes =
-
269  subsample.cipher_bytes % kCencBlockSize;
-
270  subsample.clear_bytes += misalign_bytes;
-
271  subsample.cipher_bytes -= misalign_bytes;
-
272  }
-
273 
-
274  sample_encryption_entry.subsamples.push_back(subsample);
-
275  if (subsample.cipher_bytes > 0)
-
276  EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
-
277  data += frame.frame_size;
-
278  }
-
279  } else {
-
280  const Nalu::CodecType nalu_type =
-
281  (video_codec_ == kCodecHVC1 || video_codec_ == kCodecHEV1)
-
282  ? Nalu::kH265
-
283  : Nalu::kH264;
-
284  NaluReader reader(nalu_type, nalu_length_size_, data,
-
285  sample->data_size());
-
286 
-
287  // Store the current length of clear data. This is used to squash
-
288  // multiple unencrypted NAL units into fewer subsample entries.
-
289  uint64_t accumulated_clear_bytes = 0;
-
290 
-
291  Nalu nalu;
-
292  NaluReader::Result result;
-
293  while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
-
294  if (nalu.is_video_slice()) {
-
295  // For video-slice NAL units, encrypt the video slice. This skips
-
296  // the frame header. If this is an unrecognized codec (e.g. H.265),
-
297  // the whole NAL unit will be encrypted.
-
298  const int64_t video_slice_header_size =
-
299  header_parser_ ? header_parser_->GetHeaderSize(nalu) : 0;
-
300  if (video_slice_header_size < 0)
-
301  return Status(error::MUXER_FAILURE, "Failed to read slice header.");
-
302 
-
303  uint64_t current_clear_bytes =
-
304  nalu.header_size() + video_slice_header_size;
-
305  uint64_t cipher_bytes = nalu.payload_size() - video_slice_header_size;
-
306 
-
307  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
-
308  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
-
309  // avoid partial blocks in Subsamples.
-
310  if (protection_scheme_ == FOURCC_cbc1 ||
-
311  protection_scheme_ == FOURCC_cens) {
-
312  const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
-
313  current_clear_bytes += misalign_bytes;
-
314  cipher_bytes -= misalign_bytes;
-
315  }
-
316 
-
317  const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
-
318  EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
-
319 
-
320  AddSubsamples(
-
321  accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
-
322  cipher_bytes, &sample_encryption_entry.subsamples);
-
323  accumulated_clear_bytes = 0;
-
324  } else {
-
325  // For non-video-slice NAL units, don't encrypt.
-
326  accumulated_clear_bytes +=
-
327  nalu_length_size_ + nalu.header_size() + nalu.payload_size();
-
328  }
-
329  }
-
330  if (result != NaluReader::kEOStream)
-
331  return Status(error::MUXER_FAILURE, "Failed to parse NAL units.");
-
332  AddSubsamples(accumulated_clear_bytes, 0,
-
333  &sample_encryption_entry.subsamples);
-
334  }
-
335 
-
336  // The length of per-sample auxiliary datum, defined in CENC ch. 7.
-
337  traf()->auxiliary_size.sample_info_sizes.push_back(
-
338  sample_encryption_entry.ComputeSize());
-
339  } else {
-
340  EncryptBytes(data, sample->data_size());
-
341  }
-
342 
-
343  traf()->sample_encryption.sample_encryption_entries.push_back(
-
344  sample_encryption_entry);
-
345  encryptor_->UpdateIv();
-
346  return Status::OK;
-
347 }
-
348 
-
349 bool EncryptingFragmenter::IsSubsampleEncryptionRequired() {
-
350  return vpx_parser_ || nalu_length_size_ != 0;
-
351 }
-
352 
-
353 } // namespace mp4
-
354 } // namespace media
-
355 } // namespace shaka
+
231  DCHECK(!encryption_key_->iv.empty());
+
232  const bool initialized =
+
233  encryptor->InitializeWithIv(encryption_key_->key, encryption_key_->iv);
+
234  if (!initialized)
+
235  return Status(error::MUXER_FAILURE, "Failed to create the encryptor.");
+
236  encryptor_ = encryptor.Pass();
+
237  return Status::OK;
+
238 }
+
239 
+
240 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
+
241  DCHECK(encryptor_);
+
242  CHECK(encryptor_->Crypt(data, size, data));
+
243 }
+
244 
+
245 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
+
246  DCHECK(encryptor_);
+
247 
+
248  SampleEncryptionEntry sample_encryption_entry;
+
249  // For 'cbcs' scheme, Constant IVs SHALL be used.
+
250  if (protection_scheme_ != FOURCC_cbcs)
+
251  sample_encryption_entry.initialization_vector = encryptor_->iv();
+
252  uint8_t* data = sample->writable_data();
+
253  if (IsSubsampleEncryptionRequired()) {
+
254  if (vpx_parser_) {
+
255  std::vector<VPxFrameInfo> vpx_frames;
+
256  if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
+
257  &vpx_frames)) {
+
258  return Status(error::MUXER_FAILURE, "Failed to parse vpx frame.");
+
259  }
+
260 
+
261  const bool is_superframe = vpx_frames.size() > 1;
+
262  for (const VPxFrameInfo& frame : vpx_frames) {
+
263  SubsampleEntry subsample;
+
264  subsample.clear_bytes = frame.uncompressed_header_size;
+
265  subsample.cipher_bytes =
+
266  frame.frame_size - frame.uncompressed_header_size;
+
267 
+
268  // "VP Codec ISO Media File Format Binding" document requires that the
+
269  // encrypted bytes of each frame within the superframe must be block
+
270  // aligned so that the counter state can be computed for each frame
+
271  // within the superframe.
+
272  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
+
273  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
+
274  // avoid partial blocks in Subsamples.
+
275  if (is_superframe || protection_scheme_ == FOURCC_cbc1 ||
+
276  protection_scheme_ == FOURCC_cens) {
+
277  const uint16_t misalign_bytes =
+
278  subsample.cipher_bytes % kCencBlockSize;
+
279  subsample.clear_bytes += misalign_bytes;
+
280  subsample.cipher_bytes -= misalign_bytes;
+
281  }
+
282 
+
283  sample_encryption_entry.subsamples.push_back(subsample);
+
284  if (subsample.cipher_bytes > 0)
+
285  EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
+
286  data += frame.frame_size;
+
287  }
+
288  } else {
+
289  const Nalu::CodecType nalu_type =
+
290  (video_codec_ == kCodecHVC1 || video_codec_ == kCodecHEV1)
+
291  ? Nalu::kH265
+
292  : Nalu::kH264;
+
293  NaluReader reader(nalu_type, nalu_length_size_, data,
+
294  sample->data_size());
+
295 
+
296  // Store the current length of clear data. This is used to squash
+
297  // multiple unencrypted NAL units into fewer subsample entries.
+
298  uint64_t accumulated_clear_bytes = 0;
+
299 
+
300  Nalu nalu;
+
301  NaluReader::Result result;
+
302  while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
+
303  if (nalu.is_video_slice()) {
+
304  // For video-slice NAL units, encrypt the video slice. This skips
+
305  // the frame header. If this is an unrecognized codec (e.g. H.265),
+
306  // the whole NAL unit will be encrypted.
+
307  const int64_t video_slice_header_size =
+
308  header_parser_ ? header_parser_->GetHeaderSize(nalu) : 0;
+
309  if (video_slice_header_size < 0)
+
310  return Status(error::MUXER_FAILURE, "Failed to read slice header.");
+
311 
+
312  uint64_t current_clear_bytes =
+
313  nalu.header_size() + video_slice_header_size;
+
314  uint64_t cipher_bytes = nalu.payload_size() - video_slice_header_size;
+
315 
+
316  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
+
317  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
+
318  // avoid partial blocks in Subsamples.
+
319  if (protection_scheme_ == FOURCC_cbc1 ||
+
320  protection_scheme_ == FOURCC_cens) {
+
321  const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
+
322  current_clear_bytes += misalign_bytes;
+
323  cipher_bytes -= misalign_bytes;
+
324  }
+
325 
+
326  const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
+
327  EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
+
328 
+
329  AddSubsamples(
+
330  accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
+
331  cipher_bytes, &sample_encryption_entry.subsamples);
+
332  accumulated_clear_bytes = 0;
+
333  } else {
+
334  // For non-video-slice NAL units, don't encrypt.
+
335  accumulated_clear_bytes +=
+
336  nalu_length_size_ + nalu.header_size() + nalu.payload_size();
+
337  }
+
338  }
+
339  if (result != NaluReader::kEOStream)
+
340  return Status(error::MUXER_FAILURE, "Failed to parse NAL units.");
+
341  AddSubsamples(accumulated_clear_bytes, 0,
+
342  &sample_encryption_entry.subsamples);
+
343  }
+
344 
+
345  // The length of per-sample auxiliary datum, defined in CENC ch. 7.
+
346  traf()->auxiliary_size.sample_info_sizes.push_back(
+
347  sample_encryption_entry.ComputeSize());
+
348  } else {
+
349  DCHECK_LE(crypt_byte_block(), 1u);
+
350  DCHECK_EQ(skip_byte_block(), 0u);
+
351  EncryptBytes(data, sample->data_size());
+
352  }
+
353 
+
354  traf()->sample_encryption.sample_encryption_entries.push_back(
+
355  sample_encryption_entry);
+
356  encryptor_->UpdateIv();
+
357  return Status::OK;
+
358 }
+
359 
+
360 bool EncryptingFragmenter::IsSubsampleEncryptionRequired() {
+
361  return vpx_parser_ || nalu_length_size_ != 0;
+
362 }
+
363 
+
364 } // namespace mp4
+
365 } // namespace media
+
366 } // namespace shaka
Status AddSample(scoped_refptr< MediaSample > sample) override
Status InitializeFragment(int64_t first_sample_dts) override
@@ -462,13 +473,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:92
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 739f442878..1543426489 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -183,12 +183,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
94 } // namespace shaka
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
void Update(const Status &new_status)
Definition: status.h:117
- + diff --git a/docs/d6/d55/aes__cryptor_8cc_source.html b/docs/d6/d55/aes__cryptor_8cc_source.html index 9cf86395a6..b51d79bf1f 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 6faccf4157..887b316519 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 6c86dc79e7..50c9999e63 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 986f804d02..6798fe60af 100644 --- a/docs/d6/d60/classshaka_1_1media_1_1VPCodecConfigurationRecord-members.html +++ b/docs/d6/d60/classshaka_1_1media_1_1VPCodecConfigurationRecord-members.html @@ -131,7 +131,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 ef04d043fe..fad127ad0d 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 d45ec91c95..5749c5ca7d 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 cbcf05eb4a..cff56d1fc6 100644 --- a/docs/d6/d71/scoped__xml__ptr_8h_source.html +++ b/docs/d6/d71/scoped__xml__ptr_8h_source.html @@ -131,7 +131,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 50db064f36..da95500e30 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 727fab7868..27418a658b 100644 --- a/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html +++ b/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 2679 of file box_definitions.cc.

+

Definition at line 2704 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d6/d7b/webm__tracks__parser_8h_source.html b/docs/d6/d7b/webm__tracks__parser_8h_source.html index 936929af82..8b75e8de04 100644 --- a/docs/d6/d7b/webm__tracks__parser_8h_source.html +++ b/docs/d6/d7b/webm__tracks__parser_8h_source.html @@ -202,7 +202,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 097d1a8061..353d7239e4 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 b489a297e3..b6fb379698 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 fa56c1a070..39c70a65bb 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 097b9997a3..c24b925c3e 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 41f8714dd7..3994215dcc 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/da0/ts__section__pat_8h_source.html b/docs/d6/da0/ts__section__pat_8h_source.html index cd1ccca40f..7a0718625a 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 4a5ec225c0..8c934ccaeb 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 419e81b01b..822730bbfc 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 a92d48c0e2..ceb183dd2f 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 2f7d4f1439..5fea456886 100644 --- a/docs/d6/da9/classshaka_1_1media_1_1BitReader.html +++ b/docs/d6/da9/classshaka_1_1media_1_1BitReader.html @@ -362,7 +362,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 59c2c013be..0e6df7db6e 100644 --- a/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html +++ b/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 2697 of file box_definitions.cc.

+

Definition at line 2722 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html b/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html index 306f65c321..bd1e2dff24 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 c4cbdf962c..bf6daa4b77 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 61ae3d8bcd..1a6405f823 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 857f170025..17a88676a4 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 c2ccaacd1a..a4ed4ef232 100644 --- a/docs/d6/dc8/mkv__writer_8cc_source.html +++ b/docs/d6/dc8/mkv__writer_8cc_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html b/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html index e5a67ba3b3..857b8748b5 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 @@ -133,7 +133,7 @@ std::vector<
Returns
The size of the structure in bytes when it is stored.
-

Definition at line 285 of file box_definitions.cc.

+

Definition at line 290 of file box_definitions.cc.

@@ -151,7 +151,7 @@ std::vector<
Returns
The accumulated size of subsamples. Returns 0 if there is no subsamples.
-

Definition at line 294 of file box_definitions.cc.

+

Definition at line 299 of file box_definitions.cc.

@@ -195,7 +195,7 @@ std::vector<
Returns
true on success, false otherwise.
-

Definition at line 260 of file box_definitions.cc.

+

Definition at line 265 of file box_definitions.cc.

@@ -239,7 +239,7 @@ std::vector<
Returns
true on success, false otherwise.
-

Definition at line 236 of file box_definitions.cc.

+

Definition at line 241 of file box_definitions.cc.

@@ -250,7 +250,7 @@ std::vector< diff --git a/docs/d6/dcc/classshaka_1_1media_1_1VP9Parser-members.html b/docs/d6/dcc/classshaka_1_1media_1_1VP9Parser-members.html index 4d79e0dddc..62ac2607ef 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 8557741fe6..4e0ad080e9 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 9556322111..eecaa6caef 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 56b132d077..98be6a362f 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 d07cd88805..0d79cd3810 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 797541bb1b..65c959c661 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 5026c1dbe4..365c168f99 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 389e4abd37..a6a4377597 100644 --- a/docs/d6/de8/local__file_8cc_source.html +++ b/docs/d6/de8/local__file_8cc_source.html @@ -191,7 +191,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 112f92c504..d0c8ea6d29 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 c1e7ca5928..3b429407ef 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -307,7 +307,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 87d20c58d2..f8509b4029 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 33e8d39b32..5f23dbe925 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 1e1c0e7496..905bf0e49c 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 7537f63d24..048074b3a0 100644 --- a/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html +++ b/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html @@ -183,7 +183,7 @@ Additional Inherited Members

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

-

Definition at line 991 of file box_definitions.cc.

+

Definition at line 999 of file box_definitions.cc.

@@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html b/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html index c9e124f6f1..f2d6e94c16 100644 --- a/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html +++ b/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 1924 of file box_definitions.cc.

+

Definition at line 1949 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html index 5d01ac631a..db96c7072d 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 3a70cef912..45804aa8f5 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -150,7 +150,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 495d8ec681..03e0a1e395 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 dfdd230c49..6098065a5c 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 0022baa64a..28170f25fb 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 23a3d9404e..b8306b96a7 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 796afc0c46..c0c99ff76c 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 394e65bc05..99f3a2cbef 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 72df81fdda..b6a2e681ad 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 b66a2abe58..3150296e6e 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 091bb07f59..79c3d5b52c 100644 --- a/docs/d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html +++ b/docs/d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html @@ -177,7 +177,7 @@ Additional Inherited Members

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

-

Definition at line 768 of file box_definitions.cc.

+

Definition at line 776 of file box_definitions.cc.

@@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html b/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html index e1bb8abb53..f15850c4ae 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 c70c554de3..29a16bf4f2 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 944df7a5b6..919c18e3a3 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 15eb485168..f912f5aa38 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 e735768044..b39fb9da74 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 cc6da7984b..240d838e94 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 9ae74032b9..87ad4855d7 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 a9f9885a3c..6fcbf5a954 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 ab11618767..c97f7216cd 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 9eb8bde8ae..9349a4b3a8 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -188,7 +188,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 3bc3b860bb..c5614a0bd1 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 db397c9192..5beb8c0890 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 8ddd20e33d..b2817d9d63 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 d20b53a4ca..b2a7758c57 100644 --- a/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html +++ b/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 2559 of file box_definitions.cc.

+

Definition at line 2584 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d7/db0/mpd__writer_8h_source.html b/docs/d7/db0/mpd__writer_8h_source.html index b8e249c6e4..0ee35d4661 100644 --- a/docs/d7/db0/mpd__writer_8h_source.html +++ b/docs/d7/db0/mpd__writer_8h_source.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html index 89e2f5754c..d4b549a070 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 b5d036acc4..3c4fcde6f9 100644 --- a/docs/d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html +++ b/docs/d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 1843 of file box_definitions.cc.

+

Definition at line 1868 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d7/dc6/byte__queue_8h_source.html b/docs/d7/dc6/byte__queue_8h_source.html index 6fab59933e..529e3855e7 100644 --- a/docs/d7/dc6/byte__queue_8h_source.html +++ b/docs/d7/dc6/byte__queue_8h_source.html @@ -144,7 +144,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 e5933406bf..e6918f2d8e 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 3bb85558cd..24fbfb08d0 100644 --- a/docs/d7/dd4/request__signer_8h_source.html +++ b/docs/d7/dd4/request__signer_8h_source.html @@ -178,7 +178,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 439f58443a..cabfaba540 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 ae91810e43..0b6226b8b3 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 e0120f55f8..2d31c2a6c7 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 d841258d54..09eda55729 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 b1ba62eff0..c33b826ca6 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 8296a5e0b3..54f92596fe 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 7693e64066..f5bb71e0aa 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 09b86e5398..475eec5def 100644 --- a/docs/d7/dee/mpd__generator_8cc_source.html +++ b/docs/d7/dee/mpd__generator_8cc_source.html @@ -198,7 +198,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/def/mp4__media__parser_8cc_source.html b/docs/d7/def/mp4__media__parser_8cc_source.html index 8f3dfef945..8eaab40b4c 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -872,7 +872,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/df9/byte__queue_8cc_source.html b/docs/d7/df9/byte__queue_8cc_source.html index 7cfb00e6ff..f8d676dc22 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 e10778cfeb..630d0c1d0f 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 fcb4eab340..28a37f6946 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 fea9211977..1e288957b9 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 f84148b8e9..48d3f5c00e 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 fca5636a4e..f2bfa3746f 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 de348220d7..05849e06ab 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 88400ea28f..372c5a665b 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 ed44cf0cb4..010c4beb9f 100644 --- a/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html +++ b/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html @@ -104,7 +104,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 ddf3d662c0..61a03a8499 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 557f1bf570..64edc2a73a 100644 --- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html +++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html @@ -111,7 +111,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 d664a0471a..441a40d207 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 89523e02a0..e01b236aad 100644 --- a/docs/d8/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html +++ b/docs/d8/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 1805 of file box_definitions.cc.

+

Definition at line 1830 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/d23/structshaka_1_1media_1_1SubsampleEntry-members.html b/docs/d8/d23/structshaka_1_1media_1_1SubsampleEntry-members.html index 3c94ed5329..16e9ae56bb 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 06c9ff1e59..8c284233cc 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 5be55e445f..a2e3ac4816 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 a641caffa4..6acd30c374 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 bb222c85e9..b32732411c 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 3267152a0b..109cc0eb47 100644 --- a/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html +++ b/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html @@ -195,7 +195,7 @@ Additional Inherited Members

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

-

Definition at line 1751 of file box_definitions.cc.

+

Definition at line 1767 of file box_definitions.cc.

@@ -206,7 +206,7 @@ Additional Inherited Members diff --git a/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html b/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html index 7b6796ffe2..a94940ba2d 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 900fca9c5c..1595b34c90 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 c887da081e..134275e4c8 100644 --- a/docs/d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html +++ b/docs/d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 1996 of file box_definitions.cc.

+

Definition at line 2021 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/d70/structshaka_1_1media_1_1mp4_1_1Metadata-members.html b/docs/d8/d70/structshaka_1_1media_1_1mp4_1_1Metadata-members.html index 72f2f8f9f9..dbb0adbd73 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 8a4364d15e..9e70639f87 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 87ccac874c..830b0bc3fb 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 6d5916d9e4..60cb7c4384 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 4f88e702ec..a0fe63856a 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 bab8d2c719..df73c1fc9c 100644 --- a/docs/d8/d91/classshaka_1_1media_1_1AesCtrEncryptor-members.html +++ b/docs/d8/d91/classshaka_1_1media_1_1AesCtrEncryptor-members.html @@ -111,13 +111,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); mutable_aes_key() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorinlineprotected SetIv(const std::vector< uint8_t > &iv)shaka::media::AesCryptor UpdateIv()shaka::media::AesCryptor - ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual - ~AesCtrEncryptor() override (defined in shaka::media::AesCtrEncryptor)shaka::media::AesCtrEncryptor - ~AesEncryptor() override (defined in shaka::media::AesEncryptor)shaka::media::AesEncryptor + use_constant_iv() const shaka::media::AesCryptorinline + ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual + ~AesCtrEncryptor() override (defined in shaka::media::AesCtrEncryptor)shaka::media::AesCtrEncryptor + ~AesEncryptor() override (defined in shaka::media::AesEncryptor)shaka::media::AesEncryptor 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 55fa8e206f..009e0bba96 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 102634ef29..eea8ae7156 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 ad99970861..594b49ee4b 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 b21d70809a..e1f7b1aa0a 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 f7cfa9b364..81928e6df8 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 6d24025fb1..3b5369c459 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 38c7104038..ebe79eae98 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -293,7 +293,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d9c/webm__tracks__parser_8cc_source.html b/docs/d8/d9c/webm__tracks__parser_8cc_source.html index edd3cca85f..79777b9ab8 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 69f62081de..83c9635d71 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 acc88dadb8..94ed7fb92d 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 a02ac9f874..8512eb77ad 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 2f21cfd8e3..1203722da1 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 0878bb880b..1a33f58688 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daf/namespaceshaka.html b/docs/d8/daf/namespaceshaka.html index cad83102ac..8eb70cfddd 100644 --- a/docs/d8/daf/namespaceshaka.html +++ b/docs/d8/daf/namespaceshaka.html @@ -523,7 +523,7 @@ const char kPsshElementNam

Validate widevine encryption/decryption flags.

Returns
true on success, false otherwise.
-

Definition at line 69 of file widevine_encryption_flags.cc.

+

Definition at line 65 of file widevine_encryption_flags.cc.

@@ -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 e5d4732eae..b5cfe5f7e7 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 65be33d075..fc85cbeed2 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 e11110877d..48de3e764b 100644 --- a/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html +++ b/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 2589 of file box_definitions.cc.

+

Definition at line 2614 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/dca/ts__writer_8h_source.html b/docs/d8/dca/ts__writer_8h_source.html index 0defc66433..c3710a97a0 100644 --- a/docs/d8/dca/ts__writer_8h_source.html +++ b/docs/d8/dca/ts__writer_8h_source.html @@ -165,7 +165,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 e3e54a6d84..08ed2f4fc5 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 d624d11a7c..bcc2b5bcff 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 96dedabf9f..f16d6c3d69 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 70129d5398..6aa59755d2 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 01d5abc4ca..760c6b1150 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 f718daad3f..799cb01be6 100644 --- a/docs/d8/de6/webm__crypto__helpers_8h_source.html +++ b/docs/d8/de6/webm__crypto__helpers_8h_source.html @@ -116,7 +116,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 c11600aeb9..df16e88a2a 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 31366871a7..0f5bf595fb 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 afe8d57f9a..1c6f4ef324 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 8fa5509e16..1763c8eaee 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -177,11 +177,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
88 } // namespace webm
89 } // namespace media
90 } // namespace shaka
- + diff --git a/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html b/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html index 85fa186c96..29ab91b528 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 dd84ce191b..8e37766dce 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 cdc04ec3fc..c4c6bc1af9 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 cfda173c8d..bc474dd139 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 e39ad4139a..6923daff8c 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 e1c27a8007..419e404353 100644 --- a/docs/d9/d0b/classshaka_1_1media_1_1HlsNotifyMuxerListener-members.html +++ b/docs/d9/d0b/classshaka_1_1media_1_1HlsNotifyMuxerListener-members.html @@ -110,7 +110,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 798236dc13..3153d0c081 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 2059e804ec..a8ca916e83 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 1729d581c7..11e9669ef6 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
EncryptingFragmenter generates MP4 fragments with sample encrypted.
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
Status PrepareFragmentForEncryption(bool enable_encryption) override
@@ -242,7 +242,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 c993ac1998..397373d067 100644 --- a/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html +++ b/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 2472 of file box_definitions.cc.

+

Definition at line 2497 of file box_definitions.cc.

@@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html b/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html index 8100c69daa..dc38068204 100644 --- a/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html +++ b/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html @@ -109,12 +109,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); mutable_aes_key() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorinlineprotected SetIv(const std::vector< uint8_t > &iv)shaka::media::AesCryptor UpdateIv()shaka::media::AesCryptor - ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual - ~AesEncryptor() override (defined in shaka::media::AesEncryptor)shaka::media::AesEncryptor + use_constant_iv() const shaka::media::AesCryptorinline + ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual + ~AesEncryptor() override (defined in shaka::media::AesEncryptor)shaka::media::AesEncryptor 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 901cfe14cd..94251bad48 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 @@ -203,7 +203,7 @@ void set_progress_target
Returns
OK on success, an error status otherwise.
-

Definition at line 304 of file segmenter.cc.

+

Definition at line 312 of file segmenter.cc.

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

Returns
OK on success, an error status otherwise.
-

Definition at line 278 of file segmenter.cc.

+

Definition at line 286 of file segmenter.cc.

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

Definition at line 362 of file segmenter.cc.

+

Definition at line 370 of file segmenter.cc.

@@ -393,7 +393,7 @@ void set_progress_target
Returns
OK on success, an error status otherwise.
-

Definition at line 145 of file segmenter.cc.

+

Definition at line 164 of file segmenter.cc.

@@ -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 5ea8d857c2..bff39932dc 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 fd750ef971..93a0aa921c 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 7e16548cdd..55a7241c05 100644 --- a/docs/d9/d3b/webm__content__encodings_8h_source.html +++ b/docs/d9/d3b/webm__content__encodings_8h_source.html @@ -179,7 +179,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 e30c310da1..22c0c7b06e 100644 --- a/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html +++ b/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html @@ -155,7 +155,7 @@ Additional Inherited Members

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

-

Definition at line 2664 of file box_definitions.cc.

+

Definition at line 2689 of file box_definitions.cc.

@@ -166,7 +166,7 @@ Additional Inherited Members diff --git a/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html b/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html index 548efafbfc..e4412caeb2 100644 --- a/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html +++ b/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 2573 of file box_definitions.cc.

+

Definition at line 2598 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html b/docs/d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html index fca349dd8d..35ab6d2037 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 a2aca74923..61f68cce4f 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 ddf5472515..686c41fd48 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 21c463b6d3..236ee00e95 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 ad4825d777..e2034e0c8d 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 5a042db215..fe200dc80a 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 e052476dda..cb581cd3ca 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 f60b3a9cc5..a53f8d9fb7 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 2891afa517..ce4f62febc 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 c6de433d89..26cc6a7293 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 c6e416c9d4..1be0554835 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 6edbe9978e..62b83a2f97 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 e2946b2ea1..dc41728aff 100644 --- a/docs/d9/da4/stream__descriptor_8h_source.html +++ b/docs/d9/da4/stream__descriptor_8h_source.html @@ -141,7 +141,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 6922b79a4c..1746f76600 100644 --- a/docs/d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html +++ b/docs/d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html @@ -483,7 +483,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 23fb30030a..e12a861dc0 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 f7d2fa3dd2..cfeb25300c 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 737923fe3d..28dba9564c 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 a00274b6b2..b12aadf762 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 5c925ad73f..22a2a0ce2c 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -218,7 +218,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 495944aa49..971b8a7625 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 7a694303b9..fbeec0019f 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 2895d623ec..5dd61f6ad8 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 0b0c012c31..ce1b7a4108 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 02a5c98e43..07027ba16e 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 aef133a900..7b789575fb 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -348,7 +348,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html b/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html index cdbf1be04a..4111626fac 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 5f37a912ef..dfc0f1e164 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 89402646a0..6c879904c3 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 1cbb06e4dd..c169114fef 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 9501c40345..613ad65863 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 ff4879e0fd..9d4c6b2a56 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 88425a1a82..5ed063e8e6 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -240,7 +240,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 27b541d956..5be4b7dc47 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 6ea9e96637..08a068759b 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 518f8c0faa..9b387766f6 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 cc75257ef5..a8ef7f1106 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 076edd91df..33379ee62e 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 d59d9f32a9..cc0256e610 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 346c113901..4d64272818 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 baf2fb5c54..232187558a 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -140,7 +140,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 472a14fead..8e50f2a093 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 d05d0634d0..eece72eaea 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 18fa1bda34..6cf46e795a 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 b558096f15..eac19ad963 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 062d4ad0b8..180fe4055a 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 22a4a53fe9..7a5ef76412 100644 --- a/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html +++ b/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 2109 of file box_definitions.cc.

+

Definition at line 2134 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d53/es__parser__h265_8cc_source.html b/docs/da/d53/es__parser__h265_8cc_source.html index 9b9584bcef..98989f7f19 100644 --- a/docs/da/d53/es__parser__h265_8cc_source.html +++ b/docs/da/d53/es__parser__h265_8cc_source.html @@ -267,7 +267,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 b65df3657d..398ef2963f 100644 --- a/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html +++ b/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 793 of file box_definitions.cc.

+

Definition at line 801 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/da/d5c/widevine__key__source_8h_source.html b/docs/da/d5c/widevine__key__source_8h_source.html index bb6fded810..28bbeecb0e 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -218,7 +218,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d5e/classshaka_1_1media_1_1H264VideoSliceHeaderParser-members.html b/docs/da/d5e/classshaka_1_1media_1_1H264VideoSliceHeaderParser-members.html index e8caa5ef78..82ca4fe39e 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 d3e5e2ee67..7d0ab6cad9 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 fa3fc5e3a3..4ab14aa606 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 @@ -105,7 +105,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 591b5eb8ca..28d69542fe 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 6de7450752..313f2a52d9 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 47d3bf2d4b..d3e294be7e 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 b6cc5c1678..41f2c7060d 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -510,7 +510,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html b/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html index 58cf5883eb..27c4cf90fa 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 131ecc2c7a..22ffc17a79 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1845,7 +1845,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 e40b07ccf9..b53f55bdd3 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 92cc3c90a7..6ac7b1d0c3 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 2fc4c1acea..1f893e088e 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 0e8cf5c082..05dc74c76c 100644 --- a/docs/da/d9f/classshaka_1_1media_1_1MockMuxerListener-members.html +++ b/docs/da/d9f/classshaka_1_1media_1_1MockMuxerListener-members.html @@ -115,7 +115,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 fb92608d7c..99617d024a 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 a26e7837ec..b3e4d8ed52 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 4716bbe590..58cac933ac 100644 --- a/docs/da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html +++ b/docs/da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 1227 of file box_definitions.cc.

+

Definition at line 1234 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/dc3/status_8cc_source.html b/docs/da/dc3/status_8cc_source.html index 4b475a3527..0250f2b038 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 4f4a8556b3..4097389cfb 100644 --- a/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html +++ b/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html @@ -204,7 +204,7 @@ Additional Inherited Members

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

-

Definition at line 556 of file box_definitions.cc.

+

Definition at line 564 of file box_definitions.cc.

@@ -215,7 +215,7 @@ Additional Inherited Members diff --git a/docs/da/dcb/es__descriptor_8h_source.html b/docs/da/dcb/es__descriptor_8h_source.html index 873e536cb3..1afaca44c9 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 e2275e0d2f..3a5ec5fc9c 100644 --- a/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html +++ b/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 1210 of file box_definitions.cc.

+

Definition at line 1217 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/da/dd0/webm__info__parser_8h_source.html b/docs/da/dd0/webm__info__parser_8h_source.html index 6c7ac5a85e..3dcfe2e4c0 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 d5b6823505..9406777070 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html b/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html index e8c731b82c..f2cae0fcc8 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 cece6fc75e..18fe63a6ab 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 ff4c9ebce5..d590efbe76 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 2e40639f9d..fd61d8fc3d 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 fe3a688837..7ef31b2e6a 100644 --- a/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html +++ b/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html @@ -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 f6745e5c4f..5de2ba3b32 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 32eed3805f..4d725032d8 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 668ea00cdb..62c7948317 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 23a3f81f17..f77a1aa86c 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 1fe5600113..6572026383 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 eb47dd2654..d48b7ed737 100644 --- a/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html +++ b/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html @@ -168,7 +168,7 @@ Additional Inherited Members

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

-

Definition at line 479 of file box_definitions.cc.

+

Definition at line 484 of file box_definitions.cc.

@@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html b/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html index 4179f3649c..c4c86ca6a7 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 2403251663..565846ecf6 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 90af8a4c32..05bb4a316c 100644 --- a/docs/da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html +++ b/docs/da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html @@ -180,7 +180,7 @@ Additional Inherited Members

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

-

Definition at line 596 of file box_definitions.cc.

+

Definition at line 604 of file box_definitions.cc.

@@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html b/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html index 886b53cb65..62748ba9f9 100644 --- a/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html +++ b/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html @@ -112,12 +112,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); PatternEncryptionMode enum nameshaka::media::AesPatternCryptor SetIv(const std::vector< uint8_t > &iv)shaka::media::AesCryptor UpdateIv()shaka::media::AesCryptor - ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual - ~AesPatternCryptor() override (defined in shaka::media::AesPatternCryptor)shaka::media::AesPatternCryptor + use_constant_iv() const shaka::media::AesCryptorinline + ~AesCryptor() (defined in shaka::media::AesCryptor)shaka::media::AesCryptorvirtual + ~AesPatternCryptor() override (defined in shaka::media::AesPatternCryptor)shaka::media::AesPatternCryptor diff --git a/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html b/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html index bb2c108852..64bba350ee 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 27bea33ece..2a4159f68e 100644 --- a/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html +++ b/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html @@ -165,7 +165,7 @@ Additional Inherited Members

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

-

Definition at line 1422 of file box_definitions.cc.

+

Definition at line 1429 of file box_definitions.cc.

@@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/db/d14/classshaka_1_1media_1_1H265Parser-members.html b/docs/db/d14/classshaka_1_1media_1_1H265Parser-members.html index 3e5bfbea85..81d83e46d9 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 ef694db32b..e8593a8d3e 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 8a9e4353f1..fd63d51519 100644 --- a/docs/db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html +++ b/docs/db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html @@ -164,7 +164,7 @@ uint32_t flagsImplements shaka::media::mp4::Box.

-

Definition at line 1939 of file box_definitions.cc.

+

Definition at line 1964 of file box_definitions.cc.

@@ -175,7 +175,7 @@ uint32_t flags diff --git a/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html b/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html index 328888f8b4..3956732bf1 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 b7be7a4f43..2966f420bf 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 f89bf78bec..2a88352a90 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -741,7 +741,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); -
bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
+
bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
std::vector< uint8_t > sample_encryption_data
@@ -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 4074a5dab2..88f79dded3 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 97d02e9f7a..f5583731ca 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 1bf6e683fc..1be03a725e 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -187,7 +187,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 e3d2917286..ef7827fb00 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 a4baac3d34..37c31bb732 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 0b8c071be8..6277694f23 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -193,7 +193,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 6a1b00fb5b..1ae9c81838 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 @@ -145,7 +145,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 646e573114..55321cd389 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 20e46872a2..b72e948e93 100644 --- a/docs/db/d60/mpd__options_8h_source.html +++ b/docs/db/d60/mpd__options_8h_source.html @@ -130,7 +130,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 f86a02491e..d1963ed709 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 2d431a4c36..af4a16fc35 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 0db8e6c68f..f2541f4828 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 afc8ac46fb..b952a676c6 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 05b737a8c0..9bdde3823c 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 fc6acad1f4..b33a2d208b 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 50bfc4fe97..e1838f46bd 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 ecb43334f0..033ed26b5c 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 2b8017942f..ac89279684 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 dfac79679c..4d5b06c0bb 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 0d9ae827cd..c4c60e561d 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 @@ scoped_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 14ef4aab7c..7eefe3eabc 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 @@ -310,7 +310,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 736f27bf1e..308089da18 100644 --- a/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html +++ b/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html @@ -174,7 +174,7 @@ Additional Inherited Members

Reimplemented in shaka::media::mp4::ChunkOffset.

-

Definition at line 867 of file box_definitions.cc.

+

Definition at line 875 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/db/d96/wvm__media__parser_8h_source.html b/docs/db/d96/wvm__media__parser_8h_source.html index 93786ab430..1c3bc26f0d 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -363,7 +363,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 48c0dbd077..744e50fb77 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 891bf59d44..148ab01a0f 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 1b22b67ad4..72ad134ec0 100644 --- a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html +++ b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html @@ -276,7 +276,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 c492f337ca..dedbb62db1 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 61579f8af7..10fcd1f65a 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 73a431018f..738864cce0 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 3933368e01..b235cb7334 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 edeb69bfa4..486c45dad8 100644 --- a/docs/db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html +++ b/docs/db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html @@ -186,7 +186,7 @@ Additional Inherited Members

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

-

Definition at line 406 of file box_definitions.cc.

+

Definition at line 411 of file box_definitions.cc.

@@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html b/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html index 1eb736dcec..434350272c 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 750da4f117..afadf76ba5 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 7183c91fe2..8211fdd484 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 d0b2740aff..0094f3e1a9 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 2e170181ba..30655bd3e7 100644 --- a/docs/db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html +++ b/docs/db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html @@ -501,7 +501,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 8658f4568a..535de16e21 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 4de1814b35..044e73a14e 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 3045a238db..b7c5a2ea5c 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 82f980dfb0..c81b3b7eb9 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 e30103abb4..fd71f84c9f 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 d813940a9f..18cfa38ccb 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 3482b54de7..f9d50d94d7 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 98e9d51019..0b01b1be15 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 4036dc7903..c48f87ae0b 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 ec1e41f557..44ea640516 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -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 297c85e072..dfda1d7391 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -271,7 +271,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 d31af91885..ac5c718d79 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 ce91280499..42537e36be 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 3bc3fb7948..160ec067ba 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 @@ -218,7 +218,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 53c5454536..ce9181c0d8 100644 --- a/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html +++ b/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html @@ -113,7 +113,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 bae1219a50..1a84248b99 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 68005d962b..74c2e5ee5d 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 8786658141..d777ef6991 100644 --- a/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html +++ b/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/dc/d18/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html b/docs/dc/d18/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html index bb3654fcc1..80d17dc249 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 05eb70345a..b4d1fe5536 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 721ca858a1..347d5d7190 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 02ae958af8..d626f50dd8 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 2d08c61225..2ae62828af 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -298,7 +298,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 bf819adfd1..912f87e427 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -169,7 +169,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 4c199cbfc5..161ff48002 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 032983efeb..a569de9cc6 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 4a89347114..27b1af52ef 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 6d46723bed..de59ab6ccc 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 557ac51eca..7a1b5ad36b 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 8ba0cb983f..b09a185e4a 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 1097e3d8f9..cff6494c6d 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -505,16 +505,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Abstract class holds stream information.
Definition: stream_info.h:26
std::string packager_version_string
Specify the version string to be embedded in the output files.
Definition: muxer_options.h:82
-
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:145
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:371
+
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:164
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:379
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
-
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:304
+
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:312
This class listens to progress updates events.
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
An implementation of IMkvWriter using our File type.
Definition: mkv_writer.h:21
- +
virtual void OnProgress(double progress)=0
@@ -522,13 +522,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
-
double GetDuration() const
Definition: segmenter.cc:362
+
double GetDuration() const
Definition: segmenter.cc:370
Holds video stream information.
diff --git a/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html b/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html index 22e6767ad5..9b05aadc61 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 60281ce3ee..cc020ac6d1 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 1933358b54..6755c04d53 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 0630afd525..b77388ac6e 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 e862900395..372fc38a73 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 d6f293fb8b..a14ec26fc6 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 eb557a7455..fa8391d7f2 100644 --- a/docs/dc/d73/classshaka_1_1media_1_1MockMuxerListener.html +++ b/docs/dc/d73/classshaka_1_1media_1_1MockMuxerListener.html @@ -152,7 +152,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 f449038648..d4c0bb2acc 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 36141a0919..6746366a60 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1267,7 +1267,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 73f8a67d1d..3ce3990029 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 d7b54dbb6e..e34a8b3270 100644 --- a/docs/dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html +++ b/docs/dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 2232 of file box_definitions.cc.

+

Definition at line 2257 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html b/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html index fdbfc6b79e..896159b8a8 100644 --- a/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html +++ b/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 1623 of file box_definitions.cc.

+

Definition at line 1639 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/dc/da1/classshaka_1_1MpdBuilder.html b/docs/dc/da1/classshaka_1_1MpdBuilder.html index 846cbbbc2d..a081e95403 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 4b9e332868..b586041239 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 08fe165a8b..ec8bc8ec50 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 8a0d4a6620..0eb65c7f3a 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 7de2c2adb3..dde09eda31 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 a6143d8a43..523a4aaddc 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 f4eb99fb75..0f8107f669 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 54829f5205..4c5fd6ef00 100644 --- a/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html +++ b/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html @@ -168,7 +168,7 @@ Additional Inherited Members

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

-

Definition at line 2055 of file box_definitions.cc.

+

Definition at line 2080 of file box_definitions.cc.

@@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/dc/ddf/udp__file__posix_8cc_source.html b/docs/dc/ddf/udp__file__posix_8cc_source.html index 00ac91b036..da00b10b3b 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 69d7e7fe84..0079e282f2 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 a0bf7616f7..4b5ab765e5 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 @@ -110,7 +110,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 bedfb8b247..ba242cd0b6 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 13c4f3d62a..a8d06c84db 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 5c24891baf..935d98866a 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 c7d956353d..5c1c5d25d7 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 03129a7c33..f16629fa39 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 @@ -320,7 +320,7 @@ void set_encryption_keyCreate the encryptor for the internal encryption key. The existing encryptor will be reset if it is not NULL.

Returns
OK on success, an error status otherwise.
-

Definition at line 194 of file encrypting_fragmenter.cc.

+

Definition at line 203 of file encrypting_fragmenter.cc.

@@ -397,7 +397,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 3e640c300c..34e05d1b4b 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 4009628113..8588e8b734 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 17fe3c3d17..5336d94ce8 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 9e9d40de6c..6ab99eb36e 100644 --- a/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html +++ b/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html @@ -169,7 +169,7 @@ uint32_t flagsReimplemented from shaka::media::mp4::ChunkLargeOffset.

-

Definition at line 848 of file box_definitions.cc.

+

Definition at line 856 of file box_definitions.cc.

@@ -180,7 +180,7 @@ uint32_t flags diff --git a/docs/dd/d11/mpd__builder_8cc_source.html b/docs/dd/d11/mpd__builder_8cc_source.html index 495a0fdd5a..d7bc0e0ec6 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1503,7 +1503,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 c300e207d6..523efa53b5 100644 --- a/docs/dd/d12/mpd__writer_8cc_source.html +++ b/docs/dd/d12/mpd__writer_8cc_source.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html b/docs/dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html index f013a76ecd..b9b4bd9ad2 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 @@ -177,7 +177,7 @@ Additional Inherited Members

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

-

Definition at line 210 of file box_definitions.cc.

+

Definition at line 215 of file box_definitions.cc.

@@ -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 56d6b1f87a..218e2dc254 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 05c66bfee1..9ad77fef2b 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 00bdabe646..7a8c0d19ff 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -197,7 +197,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 cec1346193..eb254bb5c8 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -1264,7 +1264,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 c976d44664..047fb6ed26 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -202,26 +202,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
152 } // namespace shaka
153 
154 #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:145
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:371
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:387
+
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:164
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:379
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:395
virtual bool GetInitRange(size_t *offset, size_t *size)=0
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
uint32_t sample_duration() const
Definition: segmenter.h:101
-
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:304
+
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:312
This class listens to progress updates events.
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
-
double GetDuration() const
Definition: segmenter.cc:362
+
double GetDuration() const
Definition: segmenter.cc:370
virtual bool GetIndexRange(size_t *offset, size_t *size)=0
diff --git a/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html b/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html index d62e5f1ece..f9f8b7da07 100644 --- a/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html +++ b/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 903 of file box_definitions.cc.

+

Definition at line 911 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dd/d42/encryptor_8h_source.html b/docs/dd/d42/encryptor_8h_source.html index 3927ea1893..b8dfa89569 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -151,7 +151,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 d6a23021d0..a004efcc0f 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 79abb3452a..3e1c64acf4 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 114a6b98f3..97bcc80533 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 b624612afc..bc8211c2e2 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -121,11 +121,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
34 } // namespace shaka
35 
36 #endif // APP_WIDEVINE_ENCRYPTION_FLAGS_H_
-
bool ValidateWidevineCryptoFlags()
+
bool ValidateWidevineCryptoFlags()
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 06b81a6ddb..43a517b25f 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 61466a022e..f77d543765 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 12ae87b8b3..57cbc0ebbc 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 855c6969bc..d66de3f7e6 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 3ec2cd0aff..7a9dc9d40e 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 2cb1604573..2b3a457de5 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 4512c14473..df18fdd5ec 100644 --- a/docs/dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html +++ b/docs/dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html @@ -165,7 +165,7 @@ Additional Inherited Members

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

-

Definition at line 1457 of file box_definitions.cc.

+

Definition at line 1464 of file box_definitions.cc.

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

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

-

Definition at line 2306 of file box_definitions.cc.

+

Definition at line 2331 of file box_definitions.cc.

@@ -212,7 +212,7 @@ Additional Inherited Members diff --git a/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html b/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html index 1712f5d1cb..42ac37c7b5 100644 --- a/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html +++ b/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 1400 of file box_definitions.cc.

+

Definition at line 1407 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/de/d0f/local__file_8h_source.html b/docs/de/d0f/local__file_8h_source.html index a8cfee5ac7..6a1aa5a0d0 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 76b72c8674..62c59c3732 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 66b1cf52f8..6b914f90fd 100644 --- a/docs/de/d13/ts__writer_8cc_source.html +++ b/docs/de/d13/ts__writer_8cc_source.html @@ -367,7 +367,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 7cbe5691f9..c8146741a0 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 837a3a1b1b..b21e8f4bf0 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 c04b457a0c..96236ba1c8 100644 --- a/docs/de/d17/cluster__builder_8cc_source.html +++ b/docs/de/d17/cluster__builder_8cc_source.html @@ -330,7 +330,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 178476b490..7b34951c9c 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 de2a80b173..10f25b406b 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -335,7 +335,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d22/aes__pattern__cryptor_8cc_source.html b/docs/de/d22/aes__pattern__cryptor_8cc_source.html index 12217ef8b0..4e481ccdb1 100644 --- a/docs/de/d22/aes__pattern__cryptor_8cc_source.html +++ b/docs/de/d22/aes__pattern__cryptor_8cc_source.html @@ -112,66 +112,83 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
23  skip_byte_block_(skip_byte_block),
24  encryption_mode_(encryption_mode),
25  cryptor_(cryptor.Pass()) {
-
26  DCHECK(cryptor_);
-
27 }
-
28 
-
29 AesPatternCryptor::~AesPatternCryptor() {}
-
30 
-
31 bool AesPatternCryptor::InitializeWithIv(const std::vector<uint8_t>& key,
-
32  const std::vector<uint8_t>& iv) {
-
33  return SetIv(iv) && cryptor_->InitializeWithIv(key, iv);
-
34 }
-
35 
-
36 bool AesPatternCryptor::CryptInternal(const uint8_t* text,
-
37  size_t text_size,
-
38  uint8_t* crypt_text,
-
39  size_t* crypt_text_size) {
-
40  // |crypt_text_size| is always the same as |text_size| for pattern encryption.
-
41  if (*crypt_text_size < text_size) {
-
42  LOG(ERROR) << "Expecting output size of at least " << text_size
-
43  << " bytes.";
-
44  return false;
-
45  }
-
46  *crypt_text_size = text_size;
-
47 
-
48  while (text_size > 0) {
-
49  const size_t crypt_byte_size = crypt_byte_block_ * AES_BLOCK_SIZE;
-
50  if (NeedEncrypt(text_size, crypt_byte_size)) {
-
51  if (!cryptor_->Crypt(text, crypt_byte_size, crypt_text))
-
52  return false;
-
53  } else {
-
54  // If there is not enough data, just keep it in clear.
-
55  memcpy(crypt_text, text, text_size);
-
56  return true;
-
57  }
-
58  text += crypt_byte_size;
-
59  text_size -= crypt_byte_size;
-
60  crypt_text += crypt_byte_size;
-
61 
-
62  const size_t skip_byte_size = std::min(
-
63  static_cast<size_t>(skip_byte_block_ * AES_BLOCK_SIZE), text_size);
-
64  memcpy(crypt_text, text, skip_byte_size);
-
65  text += skip_byte_size;
-
66  text_size -= skip_byte_size;
-
67  crypt_text += skip_byte_size;
-
68  }
-
69  return true;
-
70 }
-
71 
-
72 void AesPatternCryptor::SetIvInternal() {
-
73  CHECK(cryptor_->SetIv(iv()));
-
74 }
-
75 
-
76 bool AesPatternCryptor::NeedEncrypt(size_t input_size,
-
77  size_t target_data_size) {
-
78  if (encryption_mode_ == kSkipIfCryptByteBlockRemaining)
-
79  return input_size > target_data_size;
-
80  return input_size >= target_data_size;
-
81 }
-
82 
-
83 } // namespace media
-
84 } // namespace shaka
-
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
+
26  // |crypt_byte_block_| should never be 0. |skip_byte_block_| can be 0 to allow
+
27  // a special pattern of 1:0, which is the pattern for the case of pattern
+
28  // encryption when applied to non video tracks.
+
29  DCHECK_NE(crypt_byte_block_, 0u);
+
30  DCHECK(skip_byte_block_ != 0 || crypt_byte_block_ == 1);
+
31  DCHECK(cryptor_);
+
32  DCHECK(!cryptor_->use_constant_iv());
+
33 }
+
34 
+
35 AesPatternCryptor::~AesPatternCryptor() {}
+
36 
+
37 bool AesPatternCryptor::InitializeWithIv(const std::vector<uint8_t>& key,
+
38  const std::vector<uint8_t>& iv) {
+
39  return SetIv(iv) && cryptor_->InitializeWithIv(key, iv);
+
40 }
+
41 
+
42 bool AesPatternCryptor::CryptInternal(const uint8_t* text,
+
43  size_t text_size,
+
44  uint8_t* crypt_text,
+
45  size_t* crypt_text_size) {
+
46  // |crypt_text_size| is always the same as |text_size| for pattern encryption.
+
47  if (*crypt_text_size < text_size) {
+
48  LOG(ERROR) << "Expecting output size of at least " << text_size
+
49  << " bytes.";
+
50  return false;
+
51  }
+
52  *crypt_text_size = text_size;
+
53 
+
54  // Handle the special pattern 1:0.
+
55  if (skip_byte_block_ == 0) {
+
56  DCHECK_EQ(crypt_byte_block_, 1u);
+
57  const size_t crypt_byte_size = text_size / AES_BLOCK_SIZE * AES_BLOCK_SIZE;
+
58  if (!cryptor_->Crypt(text, crypt_byte_size, crypt_text))
+
59  return false;
+
60  memcpy(crypt_text + crypt_byte_size, text + crypt_byte_size,
+
61  text_size - crypt_byte_size);
+
62  return true;
+
63  }
+
64 
+
65  while (text_size > 0) {
+
66  const size_t crypt_byte_size = crypt_byte_block_ * AES_BLOCK_SIZE;
+
67  if (NeedEncrypt(text_size, crypt_byte_size)) {
+
68  if (!cryptor_->Crypt(text, crypt_byte_size, crypt_text))
+
69  return false;
+
70  } else {
+
71  // If there is not enough data, just keep it in clear.
+
72  memcpy(crypt_text, text, text_size);
+
73  return true;
+
74  }
+
75  text += crypt_byte_size;
+
76  text_size -= crypt_byte_size;
+
77  crypt_text += crypt_byte_size;
+
78 
+
79  const size_t skip_byte_size = std::min(
+
80  static_cast<size_t>(skip_byte_block_ * AES_BLOCK_SIZE), text_size);
+
81  memcpy(crypt_text, text, skip_byte_size);
+
82  text += skip_byte_size;
+
83  text_size -= skip_byte_size;
+
84  crypt_text += skip_byte_size;
+
85  }
+
86  return true;
+
87 }
+
88 
+
89 void AesPatternCryptor::SetIvInternal() {
+
90  CHECK(cryptor_->SetIv(iv()));
+
91 }
+
92 
+
93 bool AesPatternCryptor::NeedEncrypt(size_t input_size,
+
94  size_t target_data_size) {
+
95  if (encryption_mode_ == kSkipIfCryptByteBlockRemaining)
+
96  return input_size > target_data_size;
+
97  return input_size >= target_data_size;
+
98 }
+
99 
+
100 } // namespace media
+
101 } // namespace shaka
+
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
AesPatternCryptor(uint8_t crypt_byte_block, uint8_t skip_byte_block, PatternEncryptionMode encryption_mode, ConstantIvFlag constant_iv_flag, scoped_ptr< AesCryptor > cryptor)
@@ -181,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 dc8b25c8fa..ad33f501b9 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 @@ -226,7 +226,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 14dc4dbef0..03a19f26af 100644 --- a/docs/de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html +++ b/docs/de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html @@ -183,7 +183,7 @@ Additional Inherited Members

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

-

Definition at line 2133 of file box_definitions.cc.

+

Definition at line 2158 of file box_definitions.cc.

@@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/de/d33/classshaka_1_1media_1_1WebMTracksParser-members.html b/docs/de/d33/classshaka_1_1media_1_1WebMTracksParser-members.html index 9f01a49ac0..9b2ad444fc 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 7366a827ac..9110ba58b5 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 8d687fc108..06b1b5a50f 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 2a1bfae711..3704bdce7a 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 0aebdf18c8..01d5cdd378 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 802f9df06a..6c2538839b 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 da9c668ec2..ee8a5d8bd9 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 1c6821e566..c861b8781a 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 8df8095aed..d2e714d6c9 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 03926696ab..961f853650 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 cea010f8bd..88862ea286 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 12e65776f9..97c83c7602 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 1c5562e647..5ad260538b 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 6dc3c95563..9ca356fdc4 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 33476bbef7..070c1bbc17 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 @@ -103,7 +103,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 8d0712c6de..4698c96db9 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 @@ -292,7 +292,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 0f387dd609..a227cb1d19 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 91a8637d80..80e200ce77 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 af062f27b3..3cabf69ec6 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 f4e29fbc7e..b2edac5f24 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 ba06952e9c..ee3d10916d 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -206,7 +206,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 9e340b0b07..f3a19c4997 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 64a9c46087..390b3e744a 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 936476cda0..2c5c94edc0 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 19ebf77e5d..4355dd37d9 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 9daa0de30b..1639c03dda 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 3ce8656b33..3d4e0d7bcb 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 00f7565114..ed28cf1a1d 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 2d61eb0ef4..a038246411 100644 --- a/docs/de/dab/es__parser__h26x_8cc_source.html +++ b/docs/de/dab/es__parser__h26x_8cc_source.html @@ -375,7 +375,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 49b3298a74..1052834f7c 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 98caf12e98..b3b9c0f306 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 823ad19962..02a30c2425 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 6913c14f69..b69a2c354e 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 cab90f8f47..55a55e8799 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 e967a86ce9..415c0df645 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 d8c3e73493..cb31f22fd2 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 d19d072ad6..6f9b40d5fb 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 6c067e0e92..812434e75a 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 acf3d785ea..e776701402 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 38bb9deff0..cfa21a0b79 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -219,7 +219,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 0c2ebe0937..d626294f0c 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 4dbb1889ea..6508f3d34a 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 86854f7d70..57431ee7f4 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 03c423e466..c253462b8c 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 b40017eb40..469af7ff8d 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 787275c0e7..69f428d3a3 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 78a2e15f34..50d651ce2e 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 33b5b46565..54a08d348a 100644 --- a/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html +++ b/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 669 of file box_definitions.cc.

+

Definition at line 677 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html b/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html index be6fa2a1c6..1b42f75398 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 abfb6da279..6154a83ea4 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 @@ -203,7 +203,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 f23452f515..5a02c8a445 100644 --- a/docs/de/dfa/muxer__listener_8h_source.html +++ b/docs/de/dfa/muxer__listener_8h_source.html @@ -170,7 +170,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 1e8cc09e51..9ab6d4d7a4 100644 --- a/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html +++ b/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html @@ -165,7 +165,7 @@ Additional Inherited Members

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

-

Definition at line 1694 of file box_definitions.cc.

+

Definition at line 1710 of file box_definitions.cc.

@@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/de/dfd/stream__info_8cc_source.html b/docs/de/dfd/stream__info_8cc_source.html index 8904ecfb48..25e2d5bc2f 100644 --- a/docs/de/dfd/stream__info_8cc_source.html +++ b/docs/de/dfd/stream__info_8cc_source.html @@ -143,7 +143,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 00fbfcfff1..33673109ca 100644 --- a/docs/df/d05/vp__codec__configuration__record_8cc_source.html +++ b/docs/df/d05/vp__codec__configuration__record_8cc_source.html @@ -217,7 +217,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 42be57e329..66bcdd791a 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 26b0b5d5c7..b26e9f6203 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 08a0f4d0c5..605db3e9f3 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 360974b3fb..53a042c8dc 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 2c7896bd52..d8eb55762e 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 cc72f41338..cb4235e75e 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 635c80a70f..f3df38b699 100644 --- a/docs/df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html +++ b/docs/df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html @@ -126,6 +126,8 @@ Public Member Functions   const std::vector< uint8_t > & iv () const   +bool use_constant_iv () const +  bool Crypt (const std::vector< uint8_t > &text, std::vector< uint8_t > *crypt_text)   @@ -277,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 e6fa8a3f26..e5dca8e8fe 100644 --- a/docs/df/d31/muxer__util_8cc_source.html +++ b/docs/df/d31/muxer__util_8cc_source.html @@ -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 9e148cdbf8..ab398cda37 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -193,7 +193,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 7990db9484..82c343ecbb 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 96e88409c1..897e93d628 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 4787333fba..414409a45e 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 279358d501..1d8d8f9b83 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 a593e8592e..c26a8ccf47 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 b85f972936..1b83bd36c2 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 b6e61161c1..19ce05ea58 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 @@ -105,7 +105,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 68239515f1..a6b67bf0a3 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 e28f48d582..0dfc8cd83d 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 @@ -121,7 +121,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 68176c3af0..9a8a772c95 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 5505005e4a..19939aa1ee 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 4e4a172b3f..1914a803a4 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 32b30936bb..c431a33347 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 5fbd640209..5fa5f0d490 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 d86548c086..fff309da2d 100644 --- a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html +++ b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 691 of file box_definitions.cc.

+

Definition at line 699 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html index 68a855b6ce..5cd5165062 100644 --- a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html +++ b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html @@ -187,7 +187,7 @@ Additional Inherited Members

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

-

Definition at line 2427 of file box_definitions.cc.

+

Definition at line 2452 of file box_definitions.cc.

@@ -198,7 +198,7 @@ Additional Inherited Members diff --git a/docs/df/d7d/webm__info__parser_8cc_source.html b/docs/df/d7d/webm__info__parser_8cc_source.html index 29ec2198be..001a0161bc 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 97832a347a..d872219b61 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 0ee5e638fe..50fd6d550e 100644 --- a/docs/df/d87/classshaka_1_1media_1_1AesCryptor.html +++ b/docs/df/d87/classshaka_1_1media_1_1AesCryptor.html @@ -129,6 +129,8 @@ Public Member Functions   const std::vector< uint8_t > & iv () const   +bool use_constant_iv () const + 
Various forms of crypt (Encrypt/Decrypt) calls.

It is an Encrypt function for encryptor and a Decrypt function for decryptor. The text and crypt_text pointers can be the same address for in place encryption/decryption.

@@ -387,6 +389,32 @@ AES_KEY * mutable_aes_key<

Definition at line 80 of file aes_cryptor.cc.

+ + + +
+
+ + + + + +
+ + + + + + + +
bool shaka::media::AesCryptor::use_constant_iv () const
+
+inline
+
+
Returns
true if constant iv is used, false otherwise.
+ +

Definition at line 84 of file aes_cryptor.h.

+

The documentation for this class was generated from the following files:
    @@ -396,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 9ad76c76f0..5e4bcc21d5 100644 --- a/docs/df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html +++ b/docs/df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

    -

    Definition at line 1954 of file box_definitions.cc.

    +

    Definition at line 1979 of file box_definitions.cc.

    @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d8a/vp9__parser_8h_source.html b/docs/df/d8a/vp9__parser_8h_source.html index defe3d5555..cc21511849 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 43e3ceb668..f7fd76e0fe 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 71e3dff831..5198194849 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 d4fa2e4f6c..4524032d40 100644 --- a/docs/df/d8d/es__parser__h26x_8h_source.html +++ b/docs/df/d8d/es__parser__h26x_8h_source.html @@ -203,7 +203,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 a7a1d24783..f2a90ca17b 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 3b75464a4b..0898becd0b 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 8b2beea3e1..4f9d2c1a03 100644 --- a/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html +++ b/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html @@ -171,7 +171,7 @@ Additional Inherited Members

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

    -

    Definition at line 2216 of file box_definitions.cc.

    +

    Definition at line 2241 of file box_definitions.cc.

    @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html b/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html index b47c4f18b8..f84cc19846 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 de23fdea19..03995c3ac7 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 db42f5e60f..91b478d938 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 0a4e61f8cc..5a6d8f1f79 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 232161ad82..e8ea4446d0 100644 --- a/docs/df/db8/structshaka_1_1media_1_1StreamDescriptor-members.html +++ b/docs/df/db8/structshaka_1_1media_1_1StreamDescriptor-members.html @@ -105,7 +105,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 32023e4a8b..4b9d22f896 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 f835b206d7..64637a95a0 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 bc763d391f..5771ee6aad 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 45b09ce513..b339bcab0f 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 80af35f7fa..b350b57e22 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 5e743735d2..cd36dddfbd 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 8784e57767..9eed843dda 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 f726c5c7d5..89019e409f 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 2e3b446b04..33886d177c 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 c4dd062fa8..5c427bb196 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 767a7de0fa..e5bed0a7d9 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 5851bb34c4..ad0525a73a 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 93e365ebe3..611153d1e6 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 f0d80b0bfa..ccab397bcd 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 3c9a3fe062..770a2418c5 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 c2f20496b1..7c9c9f77d8 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 b0daca4570..1a2ba6ec26 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 b77f92d9e9..cfadf308a3 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 884ca0bfa0..5b7da1b430 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 d3dc11df55..4e207c7e63 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 06b107eafe..34f313c134 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 eba1db720b..eca38070be 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 2cbc56397a..e85f10b844 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 5db0743e30..754f0bf31f 100644 --- a/docs/dir_d422163b96683743ed3963d4aac17747.html +++ b/docs/dir_d422163b96683743ed3963d4aac17747.html @@ -131,7 +131,7 @@ Files diff --git a/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html b/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html index 1c8b8dc08a..d86ede8ff3 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 ce33820ed7..022a63970f 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 bb8d35dc7f..5fda93f948 100644 --- a/docs/files.html +++ b/docs/files.html @@ -428,7 +428,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index 287663c354..7a9374c129 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 7d14e2850c..ec138f7bbf 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 69ad87889c..75ab0f33b7 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index db0395b33b..f9826153b6 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 56150a97ba..a2bc1308da 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 4b5506bb41..29711e77a0 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 76945a4879..9aa3ce6b92 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 f81da76cbe..fda4f3743a 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 73edc4c020..fc48f79527 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 28eacf9216..15cc55fa3d 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 06081b9a9b..7831390b29 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 34128929a3..56c694c753 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 58dacde88c..09425d8127 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 d6ef4ca440..d81116351f 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 22b8ddb08e..cd7f592145 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 909d67027a..e0a2f3cb45 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 65eb060d95..1c5a5a007c 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 af6ce6226d..8f59c350f8 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 872e1ed980..12de4fe8c2 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 3e13b0c36f..4706d16392 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 a3d3ce9a36..fde222498e 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 335ce703ec..a53b33ba64 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index 25d5d04f25..118752e984 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index d8007d67a1..86a4ec1cc5 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 de55b5a9ea..584ff699dc 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -282,7 +282,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 53efb40741..63e4dea643 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 9476fa8f5b..2eed345f93 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -139,11 +139,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::Segmenter , shaka::media::webm::Segmenter +
  • use_constant_iv() +: shaka::media::AesCryptor +
diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index cb8a86add7..9748ad4735 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 a50334abc4..b36707d770 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index f207989393..3923b39ec7 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 4d58c1e7ee..74c0e1d253 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 68bd93c7a8..44645f3f9b 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 106470305e..bb19bfcdb7 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_i.html b/docs/functions_i.html index 9502088347..0333b80463 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 fa55ce3c28..0a78b2fe8e 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 c80140ded7..263e359e1d 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 858cdbd4df..7fea5e1800 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index def7087223..a649a23deb 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 8ca4dd5be2..1226a09c4b 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -190,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index cedaf69bd8..391980151c 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -232,7 +232,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 19b9af2b85..0210bd7a21 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 81a890c541..4362f136ed 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -297,7 +297,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index aa6d703436..a9e27a2af2 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 9cc2938588..62fbd4d271 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 326c612530..ceb47e996e 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -139,11 +139,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::Segmenter , shaka::media::webm::Segmenter +
  • use_constant_iv() +: shaka::media::AesCryptor +
  • diff --git a/docs/functions_v.html b/docs/functions_v.html index 86102f1396..f5afd15eec 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 edde106a8e..3bff7802ec 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index c284b4559c..3b227de65b 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index e8c45a93ea..d567d40312 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 2a1740ec13..3e50723fd4 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 b13fdee4f8..07f9a03001 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -309,13 +309,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); oCshaka::media::mp4::SampleEncryptionEntry oCshaka::media::mp4::SampleToGroupEntry oCshaka::media::SeekHead -oCshaka::media::webm::Segmenter -|oCshaka::media::webm::MultiSegmentSegmenter -|\Cshaka::media::webm::SingleSegmentSegmenter -| \Cshaka::media::webm::TwoPassSingleSegmentSegmenter -oCshaka::media::mp4::Segmenter -|oCshaka::media::mp4::MultiSegmentSegmenter -|\Cshaka::media::mp4::SingleSegmentSegmenter +oCshaka::media::mp4::Segmenter +|oCshaka::media::mp4::MultiSegmentSegmenter +|\Cshaka::media::mp4::SingleSegmentSegmenter +oCshaka::media::webm::Segmenter +|oCshaka::media::webm::MultiSegmentSegmenter +|\Cshaka::media::webm::SingleSegmentSegmenter +| \Cshaka::media::webm::TwoPassSingleSegmentSegmenter oCshaka::SegmentInfo oCshaka::media::mp4::SegmentReference oCSimpleThread @@ -368,7 +368,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/index.html b/docs/index.html index cf83117910..6429ee4636 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 1e1c7807d7..ed4d012912 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 b53c2fd5ef..1648161835 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 0d02eece39..e00ecd0809 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/search/all_10.js b/docs/search/all_10.js index be14da1458..97b4f39e6a 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -27,8 +27,8 @@ var searchData= ['segment_5fduration',['segment_duration',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a4e98ad5fc7bbc2df0cb95df3f1db9687',1,'shaka::media::MuxerOptions']]], ['segment_5fsap_5faligned',['segment_sap_aligned',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a1f1336e9be8b12733fe28da083eaf93f',1,'shaka::media::MuxerOptions']]], ['segment_5ftemplate',['segment_template',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#ab98cfd28046fc5c52ab2a45dba1a339a',1,'shaka::media::MuxerOptions']]], - ['segmenter',['Segmenter',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html',1,'shaka::media::mp4']]], ['segmenter',['Segmenter',['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html',1,'shaka::media::webm']]], + ['segmenter',['Segmenter',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html',1,'shaka::media::mp4']]], ['segmentindex',['SegmentIndex',['../d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html',1,'shaka::media::mp4']]], ['segmentinfo',['SegmentInfo',['../dc/de1/structshaka_1_1SegmentInfo.html',1,'shaka']]], ['segmentreference',['SegmentReference',['../dd/d9b/structshaka_1_1media_1_1mp4_1_1SegmentReference.html',1,'shaka::media::mp4']]], diff --git a/docs/search/all_12.js b/docs/search/all_12.js index 5417faa02f..2bbbe27d7e 100644 --- a/docs/search/all_12.js +++ b/docs/search/all_12.js @@ -6,5 +6,6 @@ var searchData= ['update',['Update',['../d0/d93/classshaka_1_1media_1_1Status.html#a74d29f349b4673d2eef69a47f5152fe4',1,'shaka::media::Status']]], ['updatecontentprotectionpssh',['UpdateContentProtectionPssh',['../d8/d8e/classshaka_1_1AdaptationSet.html#ae8a28838bf1bbc1ad8f5b80961fe33c2',1,'shaka::AdaptationSet::UpdateContentProtectionPssh()'],['../de/d52/classshaka_1_1Representation.html#a3d17325903aa01f0c8ff7753d94ff330',1,'shaka::Representation::UpdateContentProtectionPssh()']]], ['updateiv',['UpdateIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a812dfc641212f8eb877ab153de7fbb37',1,'shaka::media::AesCryptor']]], - ['updateprogress',['UpdateProgress',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#afd8bb3584c984c711615800ad93642a3',1,'shaka::media::mp4::Segmenter::UpdateProgress()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#a32dc8b7461252b99fe52384b04e3bca2',1,'shaka::media::webm::Segmenter::UpdateProgress()']]] + ['updateprogress',['UpdateProgress',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#afd8bb3584c984c711615800ad93642a3',1,'shaka::media::mp4::Segmenter::UpdateProgress()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#a32dc8b7461252b99fe52384b04e3bca2',1,'shaka::media::webm::Segmenter::UpdateProgress()']]], + ['use_5fconstant_5fiv',['use_constant_iv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a731765982d899509626b4979322db926',1,'shaka::media::AesCryptor']]] ]; diff --git a/docs/search/classes_f.js b/docs/search/classes_f.js index 87be7e822d..228504ad68 100644 --- a/docs/search/classes_f.js +++ b/docs/search/classes_f.js @@ -14,8 +14,8 @@ var searchData= ['schemeinfo',['SchemeInfo',['../d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html',1,'shaka::media::mp4']]], ['schemetype',['SchemeType',['../d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html',1,'shaka::media::mp4']]], ['seekhead',['SeekHead',['../dc/d16/classshaka_1_1media_1_1SeekHead.html',1,'shaka::media']]], - ['segmenter',['Segmenter',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html',1,'shaka::media::mp4']]], ['segmenter',['Segmenter',['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html',1,'shaka::media::webm']]], + ['segmenter',['Segmenter',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html',1,'shaka::media::mp4']]], ['segmentindex',['SegmentIndex',['../d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html',1,'shaka::media::mp4']]], ['segmentinfo',['SegmentInfo',['../dc/de1/structshaka_1_1SegmentInfo.html',1,'shaka']]], ['segmentreference',['SegmentReference',['../dd/d9b/structshaka_1_1media_1_1mp4_1_1SegmentReference.html',1,'shaka::media::mp4']]], diff --git a/docs/search/functions_12.js b/docs/search/functions_12.js index afee19b77e..043f027471 100644 --- a/docs/search/functions_12.js +++ b/docs/search/functions_12.js @@ -5,5 +5,6 @@ var searchData= ['update',['Update',['../d0/d93/classshaka_1_1media_1_1Status.html#a74d29f349b4673d2eef69a47f5152fe4',1,'shaka::media::Status']]], ['updatecontentprotectionpssh',['UpdateContentProtectionPssh',['../d8/d8e/classshaka_1_1AdaptationSet.html#ae8a28838bf1bbc1ad8f5b80961fe33c2',1,'shaka::AdaptationSet::UpdateContentProtectionPssh()'],['../de/d52/classshaka_1_1Representation.html#a3d17325903aa01f0c8ff7753d94ff330',1,'shaka::Representation::UpdateContentProtectionPssh()']]], ['updateiv',['UpdateIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a812dfc641212f8eb877ab153de7fbb37',1,'shaka::media::AesCryptor']]], - ['updateprogress',['UpdateProgress',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#afd8bb3584c984c711615800ad93642a3',1,'shaka::media::mp4::Segmenter::UpdateProgress()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#a32dc8b7461252b99fe52384b04e3bca2',1,'shaka::media::webm::Segmenter::UpdateProgress()']]] + ['updateprogress',['UpdateProgress',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#afd8bb3584c984c711615800ad93642a3',1,'shaka::media::mp4::Segmenter::UpdateProgress()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#a32dc8b7461252b99fe52384b04e3bca2',1,'shaka::media::webm::Segmenter::UpdateProgress()']]], + ['use_5fconstant_5fiv',['use_constant_iv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a731765982d899509626b4979322db926',1,'shaka::media::AesCryptor']]] ];