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

Unified Diff: content/renderer/media/android/media_source_delegate.h

Issue 2283493003: Delete browser MSE implementation. (Closed)
Patch Set: Actually delete MSP. Cleanse references. Remove AudioTrack usage. Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698