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

Side by Side Diff: media/filters/decrypting_demuxer_stream.h

Issue 1666653002: media: Remove SetCdmReadyCB and CdmReadyCB (part 1). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
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 MEDIA_FILTERS_DECRYPTING_DEMUXER_STREAM_H_ 5 #ifndef MEDIA_FILTERS_DECRYPTING_DEMUXER_STREAM_H_
6 #define MEDIA_FILTERS_DECRYPTING_DEMUXER_STREAM_H_ 6 #define MEDIA_FILTERS_DECRYPTING_DEMUXER_STREAM_H_
7 7
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 22 matching lines...) Expand all
33 public: 33 public:
34 DecryptingDemuxerStream( 34 DecryptingDemuxerStream(
35 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 35 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
36 const scoped_refptr<MediaLog>& media_log, 36 const scoped_refptr<MediaLog>& media_log,
37 const base::Closure& waiting_for_decryption_key_cb); 37 const base::Closure& waiting_for_decryption_key_cb);
38 38
39 // Cancels all pending operations immediately and fires all pending callbacks. 39 // Cancels all pending operations immediately and fires all pending callbacks.
40 ~DecryptingDemuxerStream() override; 40 ~DecryptingDemuxerStream() override;
41 41
42 void Initialize(DemuxerStream* stream, 42 void Initialize(DemuxerStream* stream,
43 const SetCdmReadyCB& set_cdm_ready_cb, 43 CdmContext* cdm_context,
44 const PipelineStatusCB& status_cb); 44 const PipelineStatusCB& status_cb);
45 45
46 // Cancels all pending operations and fires all pending callbacks. If in 46 // Cancels all pending operations and fires all pending callbacks. If in
47 // kPendingDemuxerRead or kPendingDecrypt state, waits for the pending 47 // kPendingDemuxerRead or kPendingDecrypt state, waits for the pending
48 // operation to finish before satisfying |closure|. Sets the state to 48 // operation to finish before satisfying |closure|. Sets the state to
49 // kUninitialized if |this| hasn't been initialized, or to kIdle otherwise. 49 // kUninitialized if |this| hasn't been initialized, or to kIdle otherwise.
50 void Reset(const base::Closure& closure); 50 void Reset(const base::Closure& closure);
51 51
52 // Returns the name of this class for logging purpose. 52 // Returns the name of this class for logging purpose.
53 std::string GetDisplayName() const; 53 std::string GetDisplayName() const;
54 54
55 // DemuxerStream implementation. 55 // DemuxerStream implementation.
56 void Read(const ReadCB& read_cb) override; 56 void Read(const ReadCB& read_cb) override;
57 AudioDecoderConfig audio_decoder_config() override; 57 AudioDecoderConfig audio_decoder_config() override;
58 VideoDecoderConfig video_decoder_config() override; 58 VideoDecoderConfig video_decoder_config() override;
59 Type type() const override; 59 Type type() const override;
60 Liveness liveness() const override; 60 Liveness liveness() const override;
61 void EnableBitstreamConverter() override; 61 void EnableBitstreamConverter() override;
62 bool SupportsConfigChanges() override; 62 bool SupportsConfigChanges() override;
63 VideoRotation video_rotation() override; 63 VideoRotation video_rotation() override;
64 64
65 private: 65 private:
66 // For a detailed state diagram please see this link: http://goo.gl/8jAok 66 // For a detailed state diagram please see this link: http://goo.gl/8jAok
67 // TODO(xhwang): Add a ASCII state diagram in this file after this class 67 // TODO(xhwang): Add a ASCII state diagram in this file after this class
68 // stabilizes. 68 // stabilizes.
69 // TODO(xhwang): Update this diagram for DecryptingDemuxerStream. 69 // TODO(xhwang): Update this diagram for DecryptingDemuxerStream.
70 enum State { 70 enum State {
71 kUninitialized = 0, 71 kUninitialized = 0,
72 kDecryptorRequested,
73 kIdle, 72 kIdle,
74 kPendingDemuxerRead, 73 kPendingDemuxerRead,
75 kPendingDecrypt, 74 kPendingDecrypt,
76 kWaitingForKey 75 kWaitingForKey
77 }; 76 };
78 77
79 // Callback to set CDM. |cdm_attached_cb| is called when the decryptor in the
80 // CDM has been completely attached to the pipeline.
81 void SetCdm(CdmContext* cdm_context, const CdmAttachedCB& cdm_attached_cb);
82
83 // Callback for DemuxerStream::Read(). 78 // Callback for DemuxerStream::Read().
84 void DecryptBuffer(DemuxerStream::Status status, 79 void DecryptBuffer(DemuxerStream::Status status,
85 const scoped_refptr<DecoderBuffer>& buffer); 80 const scoped_refptr<DecoderBuffer>& buffer);
86 81
87 void DecryptPendingBuffer(); 82 void DecryptPendingBuffer();
88 83
89 // Callback for Decryptor::Decrypt(). 84 // Callback for Decryptor::Decrypt().
90 void DeliverBuffer(Decryptor::Status status, 85 void DeliverBuffer(Decryptor::Status status,
91 const scoped_refptr<DecoderBuffer>& decrypted_buffer); 86 const scoped_refptr<DecoderBuffer>& decrypted_buffer);
92 87
(...skipping 21 matching lines...) Expand all
114 ReadCB read_cb_; 109 ReadCB read_cb_;
115 base::Closure reset_cb_; 110 base::Closure reset_cb_;
116 base::Closure waiting_for_decryption_key_cb_; 111 base::Closure waiting_for_decryption_key_cb_;
117 112
118 // Pointer to the input demuxer stream that will feed us encrypted buffers. 113 // Pointer to the input demuxer stream that will feed us encrypted buffers.
119 DemuxerStream* demuxer_stream_; 114 DemuxerStream* demuxer_stream_;
120 115
121 AudioDecoderConfig audio_config_; 116 AudioDecoderConfig audio_config_;
122 VideoDecoderConfig video_config_; 117 VideoDecoderConfig video_config_;
123 118
124 // Callback to request/cancel CDM ready notification.
125 SetCdmReadyCB set_cdm_ready_cb_;
126
127 Decryptor* decryptor_; 119 Decryptor* decryptor_;
128 120
129 // The buffer returned by the demuxer that needs to be decrypted. 121 // The buffer returned by the demuxer that needs to be decrypted.
130 scoped_refptr<media::DecoderBuffer> pending_buffer_to_decrypt_; 122 scoped_refptr<media::DecoderBuffer> pending_buffer_to_decrypt_;
131 123
132 // Indicates the situation where new key is added during pending decryption 124 // Indicates the situation where new key is added during pending decryption
133 // (in other words, this variable can only be set in state kPendingDecrypt). 125 // (in other words, this variable can only be set in state kPendingDecrypt).
134 // If this variable is true and kNoKey is returned then we need to try 126 // If this variable is true and kNoKey is returned then we need to try
135 // decrypting again in case the newly added key is the correct decryption key. 127 // decrypting again in case the newly added key is the correct decryption key.
136 bool key_added_while_decrypt_pending_; 128 bool key_added_while_decrypt_pending_;
137 129
138 base::WeakPtr<DecryptingDemuxerStream> weak_this_; 130 base::WeakPtr<DecryptingDemuxerStream> weak_this_;
139 base::WeakPtrFactory<DecryptingDemuxerStream> weak_factory_; 131 base::WeakPtrFactory<DecryptingDemuxerStream> weak_factory_;
140 132
141 DISALLOW_COPY_AND_ASSIGN(DecryptingDemuxerStream); 133 DISALLOW_COPY_AND_ASSIGN(DecryptingDemuxerStream);
142 }; 134 };
143 135
144 } // namespace media 136 } // namespace media
145 137
146 #endif // MEDIA_FILTERS_DECRYPTING_DEMUXER_STREAM_H_ 138 #endif // MEDIA_FILTERS_DECRYPTING_DEMUXER_STREAM_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698