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

Side by Side Diff: media/base/android/media_source_player.h

Issue 1906423005: Replace scoped_ptr with std::unique_ptr in //media/base. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptr-media-base: android Created 4 years, 8 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
« no previous file with comments | « media/base/android/media_player_bridge.h ('k') | media/base/android/media_source_player.cc » ('j') | 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ 5 #ifndef MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_
6 #define MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ 6 #define MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_
7 7
8 #include <jni.h> 8 #include <jni.h>
9
9 #include <map> 10 #include <map>
11 #include <memory>
10 #include <string> 12 #include <string>
11 #include <vector> 13 #include <vector>
12 14
13 #include "base/android/scoped_java_ref.h" 15 #include "base/android/scoped_java_ref.h"
14 #include "base/callback.h" 16 #include "base/callback.h"
15 #include "base/cancelable_callback.h" 17 #include "base/cancelable_callback.h"
16 #include "base/macros.h" 18 #include "base/macros.h"
17 #include "base/memory/scoped_ptr.h"
18 #include "base/memory/weak_ptr.h" 19 #include "base/memory/weak_ptr.h"
19 #include "base/threading/thread.h" 20 #include "base/threading/thread.h"
20 #include "base/time/default_tick_clock.h" 21 #include "base/time/default_tick_clock.h"
21 #include "base/time/time.h" 22 #include "base/time/time.h"
22 #include "media/base/android/demuxer_android.h" 23 #include "media/base/android/demuxer_android.h"
23 #include "media/base/android/media_codec_bridge.h" 24 #include "media/base/android/media_codec_bridge.h"
24 #include "media/base/android/media_decoder_job.h" 25 #include "media/base/android/media_decoder_job.h"
25 #include "media/base/android/media_drm_bridge.h" 26 #include "media/base/android/media_drm_bridge.h"
26 #include "media/base/android/media_player_android.h" 27 #include "media/base/android/media_player_android.h"
27 #include "media/base/android/media_statistics.h" 28 #include "media/base/android/media_statistics.h"
28 #include "media/base/media_export.h" 29 #include "media/base/media_export.h"
29 #include "media/base/time_delta_interpolator.h" 30 #include "media/base/time_delta_interpolator.h"
30 31
31 namespace media { 32 namespace media {
32 33
33 class AudioDecoderJob; 34 class AudioDecoderJob;
34 class VideoDecoderJob; 35 class VideoDecoderJob;
35 36
36 // This class handles media source extensions on Android. It uses Android 37 // This class handles media source extensions on Android. It uses Android
37 // MediaCodec to decode audio and video streams in two separate threads. 38 // MediaCodec to decode audio and video streams in two separate threads.
38 class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid, 39 class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid,
39 public DemuxerAndroidClient { 40 public DemuxerAndroidClient {
40 public: 41 public:
41 // Constructs a player with the given ID and demuxer. |manager| must outlive 42 // Constructs a player with the given ID and demuxer. |manager| must outlive
42 // the lifetime of this object. 43 // the lifetime of this object.
43 MediaSourcePlayer( 44 MediaSourcePlayer(
44 int player_id, 45 int player_id,
45 MediaPlayerManager* manager, 46 MediaPlayerManager* manager,
46 const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, 47 const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb,
47 scoped_ptr<DemuxerAndroid> demuxer, 48 std::unique_ptr<DemuxerAndroid> demuxer,
48 const GURL& frame_url, 49 const GURL& frame_url,
49 int media_session_id); 50 int media_session_id);
50 ~MediaSourcePlayer() override; 51 ~MediaSourcePlayer() override;
51 52
52 // MediaPlayerAndroid implementation. 53 // MediaPlayerAndroid implementation.
53 void SetVideoSurface(gfx::ScopedJavaSurface surface) override; 54 void SetVideoSurface(gfx::ScopedJavaSurface surface) override;
54 void Start() override; 55 void Start() override;
55 void Pause(bool is_media_related_action) override; 56 void Pause(bool is_media_related_action) override;
56 void SeekTo(base::TimeDelta timestamp) override; 57 void SeekTo(base::TimeDelta timestamp) override;
57 void Release() override; 58 void Release() override;
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 187
187 static const char* GetEventName(PendingEventFlags event); 188 static const char* GetEventName(PendingEventFlags event);
188 bool IsEventPending(PendingEventFlags event) const; 189 bool IsEventPending(PendingEventFlags event) const;
189 void SetPendingEvent(PendingEventFlags event); 190 void SetPendingEvent(PendingEventFlags event);
190 void ClearPendingEvent(PendingEventFlags event); 191 void ClearPendingEvent(PendingEventFlags event);
191 192
192 // If the player is previously waiting for audio or video decoder job, retry 193 // If the player is previously waiting for audio or video decoder job, retry
193 // creating the decoders identified by |audio| and |video|. 194 // creating the decoders identified by |audio| and |video|.
194 void RetryDecoderCreation(bool audio, bool video); 195 void RetryDecoderCreation(bool audio, bool video);
195 196
196 scoped_ptr<DemuxerAndroid> demuxer_; 197 std::unique_ptr<DemuxerAndroid> demuxer_;
197 198
198 // Pending event that the player needs to do. 199 // Pending event that the player needs to do.
199 unsigned pending_event_; 200 unsigned pending_event_;
200 201
201 // Stats about the media. 202 // Stats about the media.
202 base::TimeDelta duration_; 203 base::TimeDelta duration_;
203 bool playing_; 204 bool playing_;
204 205
205 // base::TickClock used by |interpolator_|. 206 // base::TickClock used by |interpolator_|.
206 base::DefaultTickClock default_tick_clock_; 207 base::DefaultTickClock default_tick_clock_;
(...skipping 18 matching lines...) Expand all
225 bool doing_browser_seek_; 226 bool doing_browser_seek_;
226 227
227 // If already doing a browser seek when a regular seek request arrives, 228 // If already doing a browser seek when a regular seek request arrives,
228 // these fields remember the regular seek so OnDemuxerSeekDone() can trigger 229 // these fields remember the regular seek so OnDemuxerSeekDone() can trigger
229 // it when the browser seek is done. These are only valid when 230 // it when the browser seek is done. These are only valid when
230 // |SEEK_EVENT_PENDING| is pending. 231 // |SEEK_EVENT_PENDING| is pending.
231 bool pending_seek_; 232 bool pending_seek_;
232 base::TimeDelta pending_seek_time_; 233 base::TimeDelta pending_seek_time_;
233 234
234 // Decoder jobs. 235 // Decoder jobs.
235 scoped_ptr<AudioDecoderJob, MediaDecoderJob::Deleter> audio_decoder_job_; 236 std::unique_ptr<AudioDecoderJob, MediaDecoderJob::Deleter> audio_decoder_job_;
236 scoped_ptr<VideoDecoderJob, MediaDecoderJob::Deleter> video_decoder_job_; 237 std::unique_ptr<VideoDecoderJob, MediaDecoderJob::Deleter> video_decoder_job_;
237 238
238 // Track the most recent preroll target. Decoder re-creation needs this to 239 // Track the most recent preroll target. Decoder re-creation needs this to
239 // resume any in-progress preroll. 240 // resume any in-progress preroll.
240 base::TimeDelta preroll_timestamp_; 241 base::TimeDelta preroll_timestamp_;
241 242
242 // A cancelable task that is posted when the audio decoder starts requesting 243 // A cancelable task that is posted when the audio decoder starts requesting
243 // new data. This callback runs if no data arrives before the timeout period 244 // new data. This callback runs if no data arrives before the timeout period
244 // elapses. 245 // elapses.
245 base::CancelableClosure decoder_starvation_callback_; 246 base::CancelableClosure decoder_starvation_callback_;
246 247
(...skipping 20 matching lines...) Expand all
267 bool is_waiting_for_video_decoder_; 268 bool is_waiting_for_video_decoder_;
268 269
269 // Test-only callback for hooking the completion of the next decode cycle. 270 // Test-only callback for hooking the completion of the next decode cycle.
270 base::Closure decode_callback_for_testing_; 271 base::Closure decode_callback_for_testing_;
271 272
272 // Whether audio or video decoder is in the process of prerolling. 273 // Whether audio or video decoder is in the process of prerolling.
273 bool prerolling_; 274 bool prerolling_;
274 275
275 // Gathers and reports playback quality statistics to UMA. 276 // Gathers and reports playback quality statistics to UMA.
276 // Use pointer to enable replacement of this object for tests. 277 // Use pointer to enable replacement of this object for tests.
277 scoped_ptr<MediaStatistics> media_stat_; 278 std::unique_ptr<MediaStatistics> media_stat_;
278 279
279 // Weak pointer passed to media decoder jobs for callbacks. 280 // Weak pointer passed to media decoder jobs for callbacks.
280 base::WeakPtr<MediaSourcePlayer> weak_this_; 281 base::WeakPtr<MediaSourcePlayer> weak_this_;
281 // NOTE: Weak pointers must be invalidated before all other member variables. 282 // NOTE: Weak pointers must be invalidated before all other member variables.
282 base::WeakPtrFactory<MediaSourcePlayer> weak_factory_; 283 base::WeakPtrFactory<MediaSourcePlayer> weak_factory_;
283 284
284 DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer); 285 DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer);
285 }; 286 };
286 287
287 } // namespace media 288 } // namespace media
288 289
289 #endif // MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_ 290 #endif // MEDIA_BASE_ANDROID_MEDIA_SOURCE_PLAYER_H_
OLDNEW
« no previous file with comments | « media/base/android/media_player_bridge.h ('k') | media/base/android/media_source_player.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698