Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: content_decryption_module.h

Issue 120813004: Drop |data_offset| in cdm::InputBuffer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/cdm
Patch Set: rebase Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CDM_CONTENT_DECRYPTION_MODULE_H_ 5 #ifndef CDM_CONTENT_DECRYPTION_MODULE_H_
6 #define CDM_CONTENT_DECRYPTION_MODULE_H_ 6 #define CDM_CONTENT_DECRYPTION_MODULE_H_
7 7
8 #if defined(_MSC_VER) 8 #if defined(_MSC_VER)
9 typedef unsigned char uint8_t; 9 typedef unsigned char uint8_t;
10 typedef unsigned int uint32_t; 10 typedef unsigned int uint32_t;
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 // TODO(xhwang): Add checks to make sure these structs have fixed layout. 153 // TODO(xhwang): Add checks to make sure these structs have fixed layout.
154 struct SubsampleEntry { 154 struct SubsampleEntry {
155 SubsampleEntry(uint32_t clear_bytes, uint32_t cipher_bytes) 155 SubsampleEntry(uint32_t clear_bytes, uint32_t cipher_bytes)
156 : clear_bytes(clear_bytes), cipher_bytes(cipher_bytes) {} 156 : clear_bytes(clear_bytes), cipher_bytes(cipher_bytes) {}
157 157
158 uint32_t clear_bytes; 158 uint32_t clear_bytes;
159 uint32_t cipher_bytes; 159 uint32_t cipher_bytes;
160 }; 160 };
161 161
162 // Represents an input buffer to be decrypted (and possibly decoded). It does 162 // Represents an input buffer to be decrypted (and possibly decoded). It does
163 // own any pointers in this struct. 163 // not own any pointers in this struct.
164 struct InputBuffer { 164 // Deprecated: New CDM implementations should use InputBuffer.
165 InputBuffer() 165 struct InputBuffer_1 {
166 InputBuffer_1()
166 : data(NULL), 167 : data(NULL),
167 data_size(0), 168 data_size(0),
168 data_offset(0), 169 data_offset(0),
169 key_id(NULL), 170 key_id(NULL),
170 key_id_size(0), 171 key_id_size(0),
171 iv(NULL), 172 iv(NULL),
172 iv_size(0), 173 iv_size(0),
173 subsamples(NULL), 174 subsamples(NULL),
174 num_subsamples(0), 175 num_subsamples(0),
175 timestamp(0) {} 176 timestamp(0) {}
176 177
177 const uint8_t* data; // Pointer to the beginning of the input data. 178 const uint8_t* data; // Pointer to the beginning of the input data.
178 uint32_t data_size; // Size (in bytes) of |data|. 179 uint32_t data_size; // Size (in bytes) of |data|.
179 180
180 uint32_t data_offset; // Number of bytes to be discarded before decryption. 181 uint32_t data_offset; // Number of bytes to be discarded before decryption.
181 182
182 const uint8_t* key_id; // Key ID to identify the decryption key. 183 const uint8_t* key_id; // Key ID to identify the decryption key.
183 uint32_t key_id_size; // Size (in bytes) of |key_id|. 184 uint32_t key_id_size; // Size (in bytes) of |key_id|.
184 185
185 const uint8_t* iv; // Initialization vector. 186 const uint8_t* iv; // Initialization vector.
186 uint32_t iv_size; // Size (in bytes) of |iv|. 187 uint32_t iv_size; // Size (in bytes) of |iv|.
187 188
188 const struct SubsampleEntry* subsamples; 189 const struct SubsampleEntry* subsamples;
189 uint32_t num_subsamples; // Number of subsamples in |subsamples|. 190 uint32_t num_subsamples; // Number of subsamples in |subsamples|.
190 191
191 int64_t timestamp; // Presentation timestamp in microseconds. 192 int64_t timestamp; // Presentation timestamp in microseconds.
192 }; 193 };
193 194
195 // Represents an input buffer to be decrypted (and possibly decoded). It does
196 // not own any pointers in this struct.
197 struct InputBuffer_2 {
198 InputBuffer_2()
199 : data(NULL),
200 data_size(0),
201 key_id(NULL),
202 key_id_size(0),
203 iv(NULL),
204 iv_size(0),
205 subsamples(NULL),
206 num_subsamples(0),
207 timestamp(0) {}
208
209 const uint8_t* data; // Pointer to the beginning of the input data.
210 uint32_t data_size; // Size (in bytes) of |data|.
211
212 const uint8_t* key_id; // Key ID to identify the decryption key.
213 uint32_t key_id_size; // Size (in bytes) of |key_id|.
214
215 const uint8_t* iv; // Initialization vector.
216 uint32_t iv_size; // Size (in bytes) of |iv|.
217
218 const struct SubsampleEntry* subsamples;
219 uint32_t num_subsamples; // Number of subsamples in |subsamples|.
220
221 int64_t timestamp; // Presentation timestamp in microseconds.
222 };
223
224 typedef InputBuffer_2 InputBuffer;
225
194 struct AudioDecoderConfig { 226 struct AudioDecoderConfig {
195 enum AudioCodec { 227 enum AudioCodec {
196 kUnknownAudioCodec = 0, 228 kUnknownAudioCodec = 0,
197 kCodecVorbis, 229 kCodecVorbis,
198 kCodecAac 230 kCodecAac
199 }; 231 };
200 232
201 AudioDecoderConfig() 233 AudioDecoderConfig()
202 : codec(kUnknownAudioCodec), 234 : codec(kUnknownAudioCodec),
203 channel_count(0), 235 channel_count(0),
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 // Decrypts the |encrypted_buffer|. 491 // Decrypts the |encrypted_buffer|.
460 // 492 //
461 // Returns kSuccess if decryption succeeded, in which case the callee 493 // Returns kSuccess if decryption succeeded, in which case the callee
462 // should have filled the |decrypted_buffer| and passed the ownership of 494 // should have filled the |decrypted_buffer| and passed the ownership of
463 // |data| in |decrypted_buffer| to the caller. 495 // |data| in |decrypted_buffer| to the caller.
464 // Returns kNoKey if the CDM did not have the necessary decryption key 496 // Returns kNoKey if the CDM did not have the necessary decryption key
465 // to decrypt. 497 // to decrypt.
466 // Returns kDecryptError if any other error happened. 498 // Returns kDecryptError if any other error happened.
467 // If the return value is not kSuccess, |decrypted_buffer| should be ignored 499 // If the return value is not kSuccess, |decrypted_buffer| should be ignored
468 // by the caller. 500 // by the caller.
469 virtual Status Decrypt(const InputBuffer& encrypted_buffer, 501 virtual Status Decrypt(const InputBuffer_1& encrypted_buffer,
470 DecryptedBlock* decrypted_buffer) = 0; 502 DecryptedBlock* decrypted_buffer) = 0;
471 503
472 // Initializes the CDM audio decoder with |audio_decoder_config|. This 504 // Initializes the CDM audio decoder with |audio_decoder_config|. This
473 // function must be called before DecryptAndDecodeSamples() is called. 505 // function must be called before DecryptAndDecodeSamples() is called.
474 // 506 //
475 // Returns kSuccess if the |audio_decoder_config| is supported and the CDM 507 // Returns kSuccess if the |audio_decoder_config| is supported and the CDM
476 // audio decoder is successfully initialized. 508 // audio decoder is successfully initialized.
477 // Returns kSessionError if |audio_decoder_config| is not supported. The CDM 509 // Returns kSessionError if |audio_decoder_config| is not supported. The CDM
478 // may still be able to do Decrypt(). 510 // may still be able to do Decrypt().
479 // Returns kDeferredInitialization if the CDM is not ready to initialize the 511 // Returns kDeferredInitialization if the CDM is not ready to initialize the
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 // the callee will have filled the |video_frame| and passed the ownership of 546 // the callee will have filled the |video_frame| and passed the ownership of
515 // |frame_buffer| in |video_frame| to the caller. 547 // |frame_buffer| in |video_frame| to the caller.
516 // Returns kNoKey if the CDM did not have the necessary decryption key 548 // Returns kNoKey if the CDM did not have the necessary decryption key
517 // to decrypt. 549 // to decrypt.
518 // Returns kNeedMoreData if more data was needed by the decoder to generate 550 // Returns kNeedMoreData if more data was needed by the decoder to generate
519 // a decoded frame (e.g. during initialization and end-of-stream). 551 // a decoded frame (e.g. during initialization and end-of-stream).
520 // Returns kDecryptError if any decryption error happened. 552 // Returns kDecryptError if any decryption error happened.
521 // Returns kDecodeError if any decoding error happened. 553 // Returns kDecodeError if any decoding error happened.
522 // If the return value is not kSuccess, |video_frame| should be ignored by 554 // If the return value is not kSuccess, |video_frame| should be ignored by
523 // the caller. 555 // the caller.
524 virtual Status DecryptAndDecodeFrame(const InputBuffer& encrypted_buffer, 556 virtual Status DecryptAndDecodeFrame(const InputBuffer_1& encrypted_buffer,
525 VideoFrame* video_frame) = 0; 557 VideoFrame* video_frame) = 0;
526 558
527 // Decrypts the |encrypted_buffer| and decodes the decrypted buffer into 559 // Decrypts the |encrypted_buffer| and decodes the decrypted buffer into
528 // |audio_frames|. Upon end-of-stream, the caller should call this function 560 // |audio_frames|. Upon end-of-stream, the caller should call this function
529 // repeatedly with empty |encrypted_buffer| (|data| == NULL) until only empty 561 // repeatedly with empty |encrypted_buffer| (|data| == NULL) until only empty
530 // |audio_frames| is produced. 562 // |audio_frames| is produced.
531 // 563 //
532 // Returns kSuccess if decryption and decoding both succeeded, in which case 564 // Returns kSuccess if decryption and decoding both succeeded, in which case
533 // the callee will have filled |audio_frames| and passed the ownership of 565 // the callee will have filled |audio_frames| and passed the ownership of
534 // |data| in |audio_frames| to the caller. 566 // |data| in |audio_frames| to the caller.
535 // Returns kNoKey if the CDM did not have the necessary decryption key 567 // Returns kNoKey if the CDM did not have the necessary decryption key
536 // to decrypt. 568 // to decrypt.
537 // Returns kNeedMoreData if more data was needed by the decoder to generate 569 // Returns kNeedMoreData if more data was needed by the decoder to generate
538 // audio samples (e.g. during initialization and end-of-stream). 570 // audio samples (e.g. during initialization and end-of-stream).
539 // Returns kDecryptError if any decryption error happened. 571 // Returns kDecryptError if any decryption error happened.
540 // Returns kDecodeError if any decoding error happened. 572 // Returns kDecodeError if any decoding error happened.
541 // If the return value is not kSuccess, |audio_frames| should be ignored by 573 // If the return value is not kSuccess, |audio_frames| should be ignored by
542 // the caller. 574 // the caller.
543 virtual Status DecryptAndDecodeSamples(const InputBuffer& encrypted_buffer, 575 virtual Status DecryptAndDecodeSamples(const InputBuffer_1& encrypted_buffer,
544 AudioFrames* audio_frames) = 0; 576 AudioFrames* audio_frames) = 0;
545 577
546 // Called by the host after a platform challenge was initiated via 578 // Called by the host after a platform challenge was initiated via
547 // Host::SendPlatformChallenge(). 579 // Host::SendPlatformChallenge().
548 virtual void OnPlatformChallengeResponse( 580 virtual void OnPlatformChallengeResponse(
549 const PlatformChallengeResponse& response) = 0; 581 const PlatformChallengeResponse& response) = 0;
550 582
551 // Called by the host after a call to Host::QueryOutputProtectionStatus(). The 583 // Called by the host after a call to Host::QueryOutputProtectionStatus(). The
552 // |link_mask| is a bit mask of OutputLinkTypes. The |output_protection_mask| 584 // |link_mask| is a bit mask of OutputLinkTypes. The |output_protection_mask|
553 // is a bit mask of OutputProtectionMethods, indicating whether all 585 // is a bit mask of OutputProtectionMethods, indicating whether all
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 // Decrypts the |encrypted_buffer|. 655 // Decrypts the |encrypted_buffer|.
624 // 656 //
625 // Returns kSuccess if decryption succeeded, in which case the callee 657 // Returns kSuccess if decryption succeeded, in which case the callee
626 // should have filled the |decrypted_buffer| and passed the ownership of 658 // should have filled the |decrypted_buffer| and passed the ownership of
627 // |data| in |decrypted_buffer| to the caller. 659 // |data| in |decrypted_buffer| to the caller.
628 // Returns kNoKey if the CDM did not have the necessary decryption key 660 // Returns kNoKey if the CDM did not have the necessary decryption key
629 // to decrypt. 661 // to decrypt.
630 // Returns kDecryptError if any other error happened. 662 // Returns kDecryptError if any other error happened.
631 // If the return value is not kSuccess, |decrypted_buffer| should be ignored 663 // If the return value is not kSuccess, |decrypted_buffer| should be ignored
632 // by the caller. 664 // by the caller.
633 virtual Status Decrypt(const InputBuffer& encrypted_buffer, 665 virtual Status Decrypt(const InputBuffer_1& encrypted_buffer,
634 DecryptedBlock* decrypted_buffer) = 0; 666 DecryptedBlock* decrypted_buffer) = 0;
635 667
636 // Initializes the CDM audio decoder with |audio_decoder_config|. This 668 // Initializes the CDM audio decoder with |audio_decoder_config|. This
637 // function must be called before DecryptAndDecodeSamples() is called. 669 // function must be called before DecryptAndDecodeSamples() is called.
638 // 670 //
639 // Returns kSuccess if the |audio_decoder_config| is supported and the CDM 671 // Returns kSuccess if the |audio_decoder_config| is supported and the CDM
640 // audio decoder is successfully initialized. 672 // audio decoder is successfully initialized.
641 // Returns kSessionError if |audio_decoder_config| is not supported. The CDM 673 // Returns kSessionError if |audio_decoder_config| is not supported. The CDM
642 // may still be able to do Decrypt(). 674 // may still be able to do Decrypt().
643 // Returns kDeferredInitialization if the CDM is not ready to initialize the 675 // Returns kDeferredInitialization if the CDM is not ready to initialize the
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 // the callee will have filled the |video_frame| and passed the ownership of 710 // the callee will have filled the |video_frame| and passed the ownership of
679 // |frame_buffer| in |video_frame| to the caller. 711 // |frame_buffer| in |video_frame| to the caller.
680 // Returns kNoKey if the CDM did not have the necessary decryption key 712 // Returns kNoKey if the CDM did not have the necessary decryption key
681 // to decrypt. 713 // to decrypt.
682 // Returns kNeedMoreData if more data was needed by the decoder to generate 714 // Returns kNeedMoreData if more data was needed by the decoder to generate
683 // a decoded frame (e.g. during initialization and end-of-stream). 715 // a decoded frame (e.g. during initialization and end-of-stream).
684 // Returns kDecryptError if any decryption error happened. 716 // Returns kDecryptError if any decryption error happened.
685 // Returns kDecodeError if any decoding error happened. 717 // Returns kDecodeError if any decoding error happened.
686 // If the return value is not kSuccess, |video_frame| should be ignored by 718 // If the return value is not kSuccess, |video_frame| should be ignored by
687 // the caller. 719 // the caller.
688 virtual Status DecryptAndDecodeFrame(const InputBuffer& encrypted_buffer, 720 virtual Status DecryptAndDecodeFrame(const InputBuffer_1& encrypted_buffer,
689 VideoFrame* video_frame) = 0; 721 VideoFrame* video_frame) = 0;
690 722
691 // Decrypts the |encrypted_buffer| and decodes the decrypted buffer into 723 // Decrypts the |encrypted_buffer| and decodes the decrypted buffer into
692 // |audio_frames|. Upon end-of-stream, the caller should call this function 724 // |audio_frames|. Upon end-of-stream, the caller should call this function
693 // repeatedly with empty |encrypted_buffer| (|data| == NULL) until only empty 725 // repeatedly with empty |encrypted_buffer| (|data| == NULL) until only empty
694 // |audio_frames| is produced. 726 // |audio_frames| is produced.
695 // 727 //
696 // Returns kSuccess if decryption and decoding both succeeded, in which case 728 // Returns kSuccess if decryption and decoding both succeeded, in which case
697 // the callee will have filled |audio_frames| and passed the ownership of 729 // the callee will have filled |audio_frames| and passed the ownership of
698 // |data| in |audio_frames| to the caller. 730 // |data| in |audio_frames| to the caller.
699 // Returns kNoKey if the CDM did not have the necessary decryption key 731 // Returns kNoKey if the CDM did not have the necessary decryption key
700 // to decrypt. 732 // to decrypt.
701 // Returns kNeedMoreData if more data was needed by the decoder to generate 733 // Returns kNeedMoreData if more data was needed by the decoder to generate
702 // audio samples (e.g. during initialization and end-of-stream). 734 // audio samples (e.g. during initialization and end-of-stream).
703 // Returns kDecryptError if any decryption error happened. 735 // Returns kDecryptError if any decryption error happened.
704 // Returns kDecodeError if any decoding error happened. 736 // Returns kDecodeError if any decoding error happened.
705 // If the return value is not kSuccess, |audio_frames| should be ignored by 737 // If the return value is not kSuccess, |audio_frames| should be ignored by
706 // the caller. 738 // the caller.
707 virtual Status DecryptAndDecodeSamples(const InputBuffer& encrypted_buffer, 739 virtual Status DecryptAndDecodeSamples(const InputBuffer_1& encrypted_buffer,
708 AudioFrames* audio_frames) = 0; 740 AudioFrames* audio_frames) = 0;
709 741
710 // Called by the host after a platform challenge was initiated via 742 // Called by the host after a platform challenge was initiated via
711 // Host::SendPlatformChallenge(). 743 // Host::SendPlatformChallenge().
712 virtual void OnPlatformChallengeResponse( 744 virtual void OnPlatformChallengeResponse(
713 const PlatformChallengeResponse& response) = 0; 745 const PlatformChallengeResponse& response) = 0;
714 746
715 // Called by the host after a call to Host::QueryOutputProtectionStatus(). The 747 // Called by the host after a call to Host::QueryOutputProtectionStatus(). The
716 // |link_mask| is a bit mask of OutputLinkTypes and |output_protection_mask| 748 // |link_mask| is a bit mask of OutputLinkTypes and |output_protection_mask|
717 // is a bit mask of OutputProtectionMethods. 749 // is a bit mask of OutputProtectionMethods.
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 virtual AudioFormat Format() const = 0; 1373 virtual AudioFormat Format() const = 0;
1342 1374
1343 protected: 1375 protected:
1344 AudioFrames_2() {} 1376 AudioFrames_2() {}
1345 virtual ~AudioFrames_2() {} 1377 virtual ~AudioFrames_2() {}
1346 }; 1378 };
1347 1379
1348 } // namespace cdm 1380 } // namespace cdm
1349 1381
1350 #endif // CDM_CONTENT_DECRYPTION_MODULE_H_ 1382 #endif // CDM_CONTENT_DECRYPTION_MODULE_H_
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698