Index: content/renderer/media/android/media_source_delegate.h |
diff --git a/content/renderer/media/android/media_source_delegate.h b/content/renderer/media/android/media_source_delegate.h |
deleted file mode 100644 |
index f3b7e37eac1089ab20a6f7773604cc67e9eb8b46..0000000000000000000000000000000000000000 |
--- a/content/renderer/media/android/media_source_delegate.h |
+++ /dev/null |
@@ -1,259 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CONTENT_RENDERER_MEDIA_ANDROID_MEDIA_SOURCE_DELEGATE_H_ |
-#define CONTENT_RENDERER_MEDIA_ANDROID_MEDIA_SOURCE_DELEGATE_H_ |
- |
-#include <stddef.h> |
-#include <stdint.h> |
- |
-#include <memory> |
-#include <string> |
-#include <vector> |
- |
-#include "base/callback.h" |
-#include "base/macros.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/time/time.h" |
-#include "media/base/cdm_context.h" |
-#include "media/base/demuxer.h" |
-#include "media/base/media_keys.h" |
-#include "media/base/pipeline_status.h" |
-#include "media/base/ranges.h" |
-#include "media/base/text_track.h" |
-#include "third_party/WebKit/public/platform/WebMediaPlayer.h" |
- |
-namespace base { |
-class SingleThreadTaskRunner; |
-} |
- |
-namespace media { |
-class ChunkDemuxer; |
-class DecoderBuffer; |
-class DecryptingDemuxerStream; |
-class DemuxerStream; |
-class MediaLog; |
-struct DemuxerConfigs; |
-struct DemuxerData; |
-} |
- |
-namespace content { |
- |
-class RendererDemuxerAndroid; |
- |
-class MediaSourceDelegate : public media::DemuxerHost { |
- public: |
- typedef base::Callback<void(blink::WebMediaSource*)> |
- MediaSourceOpenedCB; |
- typedef base::Callback<void(blink::WebMediaPlayer::NetworkState)> |
- UpdateNetworkStateCB; |
- typedef base::Callback<void(const base::TimeDelta&)> DurationChangeCB; |
- |
- // Callback to notify that a CDM is ready. CdmAttachedCB is called when the |
- // CDM has been completely attached to the media pipeline. |
- typedef base::Callback<void(media::CdmContext*, const media::CdmAttachedCB&)> |
- CdmReadyCB; |
- |
- // Callback to set a CdmReadyCB, which will be called when a CDM is ready. |
- typedef base::Callback<void(const CdmReadyCB&)> SetCdmReadyCB; |
- |
- MediaSourceDelegate( |
- RendererDemuxerAndroid* demuxer_client, |
- int demuxer_client_id, |
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
- const scoped_refptr<media::MediaLog> media_log); |
- ~MediaSourceDelegate() override; |
- |
- // Initialize the MediaSourceDelegate. |media_source| will be owned by |
- // this object after this call. |
- void InitializeMediaSource( |
- const MediaSourceOpenedCB& media_source_opened_cb, |
- const media::Demuxer::EncryptedMediaInitDataCB& |
- encrypted_media_init_data_cb, |
- const SetCdmReadyCB& set_cdm_ready_cb, |
- const UpdateNetworkStateCB& update_network_state_cb, |
- const DurationChangeCB& duration_change_cb, |
- const base::Closure& waiting_for_decryption_key_cb); |
- |
- blink::WebTimeRanges Buffered() const; |
- size_t DecodedFrameCount() const; |
- size_t DroppedFrameCount() const; |
- size_t AudioDecodedByteCount() const; |
- size_t VideoDecodedByteCount() const; |
- |
- // In MSE case, calls ChunkDemuxer::CancelPendingSeek(). Also sets the |
- // expectation that a regular seek will be arriving and to trivially finish |
- // any browser seeks that may be requested prior to the regular seek. |
- void CancelPendingSeek(const base::TimeDelta& seek_time); |
- |
- // In MSE case, calls ChunkDemuxer::StartWaitingForSeek(), first calling |
- // ChunkDemuxer::CancelPendingSeek() if a browser seek is in progress. |
- // Also sets the expectation that a regular seek will be arriving and to |
- // trivially finish any browser seeks that may be requested prior to the |
- // regular seek. |
- void StartWaitingForSeek(const base::TimeDelta& seek_time); |
- |
- // Seeks the demuxer and later calls OnDemuxerSeekDone() after the seek has |
- // been completed. There must be no other seek of the demuxer currently in |
- // process when this method is called. |
- // If |is_browser_seek| is true, then this is a short-term hack browser |
- // seek. |
- // TODO(wolenetz): Instead of doing browser seek, browser player should replay |
- // cached data since last keyframe. See http://crbug.com/304234. |
- void Seek(const base::TimeDelta& seek_time, bool is_browser_seek); |
- |
- // Called when DemuxerStreamPlayer needs to read data from ChunkDemuxer. |
- void OnReadFromDemuxer(media::DemuxerStream::Type type); |
- |
- // Must be called explicitly before |this| can be destroyed. |
- void Stop(const base::Closure& stop_cb); |
- |
- // Called on the main thread to check whether the video stream is encrypted. |
- bool IsVideoEncrypted(); |
- |
- // Gets the ChunkDemuxer timeline offset. |
- base::Time GetTimelineOffset() const; |
- |
- private: |
- // Methods inherited from DemuxerHost. |
- void OnBufferedTimeRangesChanged( |
- const media::Ranges<base::TimeDelta>& ranges) override; |
- void SetDuration(base::TimeDelta duration) override; |
- void OnDemuxerError(media::PipelineStatus status) override; |
- void AddTextStream(media::DemuxerStream* text_stream, |
- const media::TextTrackConfig& config) override; |
- void RemoveTextStream(media::DemuxerStream* text_stream) override; |
- |
- // Notifies |demuxer_client_| and fires |duration_changed_cb_|. |
- void OnDurationChanged(const base::TimeDelta& duration); |
- |
- // Callback for ChunkDemuxer initialization. |
- void OnDemuxerInitDone(media::PipelineStatus status); |
- |
- bool HasEncryptedStream(); |
- |
- // Callback to set CDM and fires |cdm_attached_cb| with the result. |
- void SetCdm(media::CdmContext* cdm_context, |
- const media::CdmAttachedCB& cdm_attached_cb); |
- |
- // Initializes DecryptingDemuxerStreams if audio/video stream is encrypted. |
- void InitAudioDecryptingDemuxerStream(); |
- void InitVideoDecryptingDemuxerStream(); |
- |
- // Callbacks for DecryptingDemuxerStream::Initialize(). |
- void OnAudioDecryptingDemuxerStreamInitDone(media::PipelineStatus status); |
- void OnVideoDecryptingDemuxerStreamInitDone(media::PipelineStatus status); |
- |
- // Callback for ChunkDemuxer::Seek() and callback chain for resetting |
- // decrypted audio/video streams if present. |
- // |
- // Runs on the media thread. |
- void OnDemuxerSeekDone(media::PipelineStatus status); |
- void ResetAudioDecryptingDemuxerStream(); |
- void ResetVideoDecryptingDemuxerStream(); |
- void FinishResettingDecryptingDemuxerStreams(); |
- |
- void OnDemuxerOpened(); |
- void OnEncryptedMediaInitData(media::EmeInitDataType init_data_type, |
- const std::vector<uint8_t>& init_data); |
- void NotifyDemuxerReady(bool is_cdm_attached); |
- |
- // Stops and clears objects on the media thread. |
- void StopDemuxer(const base::Closure& stop_cb); |
- |
- void InitializeDemuxer(); |
- void SeekInternal(const base::TimeDelta& seek_time); |
- // Reads an access unit from the demuxer stream |stream| and stores it in |
- // the |index|th access unit in |params|. |
- void ReadFromDemuxerStream(media::DemuxerStream::Type type, |
- std::unique_ptr<media::DemuxerData> data, |
- size_t index); |
- void OnBufferReady(media::DemuxerStream::Type type, |
- std::unique_ptr<media::DemuxerData> data, |
- size_t index, |
- media::DemuxerStream::Status status, |
- const scoped_refptr<media::DecoderBuffer>& buffer); |
- |
- // Helper function for calculating duration. |
- base::TimeDelta GetDuration() const; |
- |
- bool IsSeeking() const; |
- |
- // Returns |seek_time| if it is still buffered or if there is no currently |
- // buffered range including or soon after |seek_time|. If |seek_time| is not |
- // buffered, but there is a later range buffered near to |seek_time|, returns |
- // next buffered range's start time instead. Only call this for browser seeks. |
- // |seeking_lock_| must be held by caller. |
- base::TimeDelta FindBufferedBrowserSeekTime_Locked( |
- const base::TimeDelta& seek_time) const; |
- |
- // Get the demuxer configs for a particular stream identified by |is_audio|. |
- // Returns true on success, of false otherwise. |
- bool GetDemuxerConfigFromStream(media::DemuxerConfigs* configs, |
- bool is_audio); |
- |
- RendererDemuxerAndroid* demuxer_client_; |
- int demuxer_client_id_; |
- |
- scoped_refptr<media::MediaLog> media_log_; |
- UpdateNetworkStateCB update_network_state_cb_; |
- DurationChangeCB duration_change_cb_; |
- |
- std::unique_ptr<media::ChunkDemuxer> chunk_demuxer_; |
- bool is_demuxer_ready_; |
- |
- SetCdmReadyCB set_cdm_ready_cb_; |
- media::CdmContext* cdm_context_; |
- media::CdmAttachedCB pending_cdm_attached_cb_; |
- |
- std::unique_ptr<media::DecryptingDemuxerStream> |
- audio_decrypting_demuxer_stream_; |
- std::unique_ptr<media::DecryptingDemuxerStream> |
- video_decrypting_demuxer_stream_; |
- |
- media::DemuxerStream* audio_stream_; |
- media::DemuxerStream* video_stream_; |
- |
- media::PipelineStatistics statistics_; |
- media::Ranges<base::TimeDelta> buffered_time_ranges_; |
- |
- MediaSourceOpenedCB media_source_opened_cb_; |
- media::Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb_; |
- base::Closure waiting_for_decryption_key_cb_; |
- |
- // Lock used to serialize access for |seeking_|. |
- mutable base::Lock seeking_lock_; |
- bool seeking_; |
- |
- // Lock used to serialize access for |is_video_encrypted_|. |
- mutable base::Lock is_video_encrypted_lock_; |
- bool is_video_encrypted_; |
- |
- // Track if we are currently performing a browser seek, and track whether or |
- // not a regular seek is expected soon. If a regular seek is expected soon, |
- // then any in-progress browser seek will be canceled pending the |
- // regular seek, if using |chunk_demuxer_|, and any requested browser seek |
- // will be trivially finished. Access is serialized by |seeking_lock_|. |
- bool doing_browser_seek_; |
- base::TimeDelta browser_seek_time_; |
- bool expecting_regular_seek_; |
- |
- size_t access_unit_size_; |
- |
- // Task runner for main renderer and media threads. |
- const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; |
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_; |
- |
- // NOTE: Weak pointers must be invalidated before all other member variables. |
- base::WeakPtr<MediaSourceDelegate> main_weak_this_; |
- base::WeakPtrFactory<MediaSourceDelegate> main_weak_factory_; |
- base::WeakPtrFactory<MediaSourceDelegate> media_weak_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MediaSourceDelegate); |
-}; |
- |
-} // namespace content |
- |
-#endif // CONTENT_RENDERER_MEDIA_ANDROID_MEDIA_SOURCE_DELEGATE_H_ |