| Index: media/base/android/media_codec_decoder.h
|
| diff --git a/media/base/android/media_codec_decoder.h b/media/base/android/media_codec_decoder.h
|
| index d22744fabc8dbae19e2fe0b767054ddcf3d0aa54..479e9d4e738cdeabcb1661a5dc6a1adbc9d8bcc1 100644
|
| --- a/media/base/android/media_codec_decoder.h
|
| +++ b/media/base/android/media_codec_decoder.h
|
| @@ -20,6 +20,7 @@
|
| namespace media {
|
|
|
| class MediaCodecBridge;
|
| +class MediaDrmBridge;
|
|
|
| // The decoder for MediaCodecPlayer.
|
| // This class accepts the incoming data into AccessUnitQueue and works with
|
| @@ -118,6 +119,7 @@ class MediaCodecDecoder {
|
| enum ConfigStatus {
|
| kConfigFailure = 0,
|
| kConfigOk,
|
| + kConfigNoCrypto,
|
| kConfigKeyFrameRequired,
|
| };
|
|
|
| @@ -162,6 +164,7 @@ class MediaCodecDecoder {
|
| const base::Closure& starvation_cb,
|
| const base::Closure& decoder_drained_cb,
|
| const base::Closure& stop_done_cb,
|
| + const base::Closure& key_required_cb,
|
| const base::Closure& error_cb,
|
| const char* decoder_thread_name);
|
| virtual ~MediaCodecDecoder();
|
| @@ -177,6 +180,10 @@ class MediaCodecDecoder {
|
| // Stores configuration for the use of upcoming Configure()
|
| virtual void SetDemuxerConfigs(const DemuxerConfigs& configs) = 0;
|
|
|
| + // Returns true if the DemuxerConfigs announce that content is encrypted and
|
| + // that MediaCrypto is required for configuration.
|
| + virtual bool IsContentEncrypted() const = 0;
|
| +
|
| // Stops decoder thread, releases the MediaCodecBridge and other resources.
|
| virtual void ReleaseDecoderResources() = 0;
|
|
|
| @@ -196,6 +203,10 @@ class MediaCodecDecoder {
|
| // Sets preroll timestamp and requests preroll.
|
| void SetPrerollTimestamp(base::TimeDelta preroll_ts);
|
|
|
| + // Sets the DRM bridge pointer.
|
| + void SetDrmBridge(MediaDrmBridge* drm_bridge);
|
| +
|
| + // Extracts MediaCrypto from DRM bridge.
|
| base::android::ScopedJavaLocalRef<jobject> GetMediaCrypto();
|
|
|
| // Starts prefetching: accumulates enough data in AccessUnitQueue.
|
| @@ -314,6 +325,9 @@ class MediaCodecDecoder {
|
| // The queue of access units.
|
| AccessUnitQueue au_queue_;
|
|
|
| + // Pointer to a DRM object that will be used for encrypted streams.
|
| + MediaDrmBridge* drm_bridge_;
|
| +
|
| // Flag forces reconfiguration even if |media_codec_bridge_| exists. Currently
|
| // is set by video decoder when the video surface changes.
|
| bool needs_reconfigure_;
|
| @@ -388,6 +402,7 @@ class MediaCodecDecoder {
|
| base::Closure preroll_done_cb_;
|
| base::Closure decoder_drained_cb_;
|
| base::Closure stop_done_cb_;
|
| + base::Closure key_required_cb_;
|
| base::Closure error_cb_;
|
|
|
| // Data request callback that is posted by decoder internally.
|
| @@ -412,6 +427,10 @@ class MediaCodecDecoder {
|
| // Flag is set when the EOS is enqueued into MediaCodec. Reset by Flush.
|
| bool eos_enqueued_;
|
|
|
| + // Flag is set when NO_KEY error is received from QueueSecureInputBuffer.
|
| + // Reset after we stop.
|
| + bool key_request_posted_;
|
| +
|
| // Flag is set when the EOS is received in MediaCodec output. Reset by Flush.
|
| bool completed_;
|
|
|
|
|