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

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

Issue 534063002: Remove OnMediaResourcesReleased callback passed to MediaPlayerAndroid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: make ReleaseMediaResources non-virtual Created 6 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 unified diff | Download patch
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 #include "media/base/android/media_source_player.h" 5 #include "media/base/android/media_source_player.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
11 #include "base/barrier_closure.h" 11 #include "base/barrier_closure.h"
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/callback_helpers.h" 14 #include "base/callback_helpers.h"
15 #include "base/debug/trace_event.h" 15 #include "base/debug/trace_event.h"
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "base/strings/string_number_conversions.h" 17 #include "base/strings/string_number_conversions.h"
18 #include "media/base/android/audio_decoder_job.h" 18 #include "media/base/android/audio_decoder_job.h"
19 #include "media/base/android/media_drm_bridge.h" 19 #include "media/base/android/media_drm_bridge.h"
20 #include "media/base/android/media_player_manager.h" 20 #include "media/base/android/media_player_manager.h"
21 #include "media/base/android/video_decoder_job.h" 21 #include "media/base/android/video_decoder_job.h"
22 22
23 23
24 namespace media { 24 namespace media {
25 25
26 MediaSourcePlayer::MediaSourcePlayer( 26 MediaSourcePlayer::MediaSourcePlayer(
27 int player_id, 27 int player_id,
28 MediaPlayerManager* manager, 28 MediaPlayerManager* manager,
29 const RequestMediaResourcesCB& request_media_resources_cb, 29 const RequestMediaResourcesCB& request_media_resources_cb,
30 const ReleaseMediaResourcesCB& release_media_resources_cb,
31 scoped_ptr<DemuxerAndroid> demuxer, 30 scoped_ptr<DemuxerAndroid> demuxer,
32 const GURL& frame_url) 31 const GURL& frame_url)
33 : MediaPlayerAndroid(player_id, 32 : MediaPlayerAndroid(player_id,
34 manager, 33 manager,
35 request_media_resources_cb, 34 request_media_resources_cb,
36 release_media_resources_cb,
37 frame_url), 35 frame_url),
38 demuxer_(demuxer.Pass()), 36 demuxer_(demuxer.Pass()),
39 pending_event_(NO_EVENT_PENDING), 37 pending_event_(NO_EVENT_PENDING),
40 playing_(false), 38 playing_(false),
41 interpolator_(&default_tick_clock_), 39 interpolator_(&default_tick_clock_),
42 doing_browser_seek_(false), 40 doing_browser_seek_(false),
43 pending_seek_(false), 41 pending_seek_(false),
44 drm_bridge_(NULL), 42 drm_bridge_(NULL),
45 cdm_registration_id_(0), 43 cdm_registration_id_(0),
46 is_waiting_for_key_(false), 44 is_waiting_for_key_(false),
47 is_waiting_for_audio_decoder_(false), 45 is_waiting_for_audio_decoder_(false),
48 is_waiting_for_video_decoder_(false), 46 is_waiting_for_video_decoder_(false),
49 weak_factory_(this) { 47 weak_factory_(this) {
50 audio_decoder_job_.reset(new AudioDecoderJob( 48 audio_decoder_job_.reset(new AudioDecoderJob(
51 base::Bind(&DemuxerAndroid::RequestDemuxerData, 49 base::Bind(&DemuxerAndroid::RequestDemuxerData,
52 base::Unretained(demuxer_.get()), 50 base::Unretained(demuxer_.get()),
53 DemuxerStream::AUDIO), 51 DemuxerStream::AUDIO),
54 base::Bind(&MediaSourcePlayer::OnDemuxerConfigsChanged, 52 base::Bind(&MediaSourcePlayer::OnDemuxerConfigsChanged,
55 weak_factory_.GetWeakPtr()))); 53 weak_factory_.GetWeakPtr())));
56 video_decoder_job_.reset(new VideoDecoderJob( 54 video_decoder_job_.reset(new VideoDecoderJob(
57 base::Bind(&DemuxerAndroid::RequestDemuxerData, 55 base::Bind(&DemuxerAndroid::RequestDemuxerData,
58 base::Unretained(demuxer_.get()), 56 base::Unretained(demuxer_.get()),
59 DemuxerStream::VIDEO), 57 DemuxerStream::VIDEO),
60 base::Bind(request_media_resources_cb_, player_id), 58 base::Bind(request_media_resources_cb_, player_id),
61 base::Bind(release_media_resources_cb_, player_id),
62 base::Bind(&MediaSourcePlayer::OnDemuxerConfigsChanged, 59 base::Bind(&MediaSourcePlayer::OnDemuxerConfigsChanged,
63 weak_factory_.GetWeakPtr()))); 60 weak_factory_.GetWeakPtr())));
64 demuxer_->Initialize(this); 61 demuxer_->Initialize(this);
65 interpolator_.SetUpperBound(base::TimeDelta()); 62 interpolator_.SetUpperBound(base::TimeDelta());
66 weak_this_ = weak_factory_.GetWeakPtr(); 63 weak_this_ = weak_factory_.GetWeakPtr();
67 } 64 }
68 65
69 MediaSourcePlayer::~MediaSourcePlayer() { 66 MediaSourcePlayer::~MediaSourcePlayer() {
70 Release(); 67 Release();
71 DCHECK_EQ(!drm_bridge_, !cdm_registration_id_); 68 DCHECK_EQ(!drm_bridge_, !cdm_registration_id_);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 return std::min(interpolator_.GetInterpolatedTime(), duration_); 179 return std::min(interpolator_.GetInterpolatedTime(), duration_);
183 } 180 }
184 181
185 base::TimeDelta MediaSourcePlayer::GetDuration() { 182 base::TimeDelta MediaSourcePlayer::GetDuration() {
186 return duration_; 183 return duration_;
187 } 184 }
188 185
189 void MediaSourcePlayer::Release() { 186 void MediaSourcePlayer::Release() {
190 DVLOG(1) << __FUNCTION__; 187 DVLOG(1) << __FUNCTION__;
191 188
192 is_surface_in_use_ = false;
193 audio_decoder_job_->ReleaseDecoderResources(); 189 audio_decoder_job_->ReleaseDecoderResources();
194 video_decoder_job_->ReleaseDecoderResources(); 190 video_decoder_job_->ReleaseDecoderResources();
195 191
196 // Prevent player restart, including job re-creation attempts. 192 // Prevent player restart, including job re-creation attempts.
197 playing_ = false; 193 playing_ = false;
198 194
199 decoder_starvation_callback_.Cancel(); 195 decoder_starvation_callback_.Cancel();
200 } 196 }
201 197
202 void MediaSourcePlayer::SetVolume(double volume) { 198 void MediaSourcePlayer::SetVolume(double volume) {
203 audio_decoder_job_->SetVolume(volume); 199 audio_decoder_job_->SetVolume(volume);
204 } 200 }
205 201
206 bool MediaSourcePlayer::IsSurfaceInUse() const { 202 bool MediaSourcePlayer::IsSurfaceInUse() const {
207 return is_surface_in_use_; 203 return video_decoder_job_ && video_decoder_job_->is_decoding();
208 } 204 }
209 205
210 bool MediaSourcePlayer::CanPause() { 206 bool MediaSourcePlayer::CanPause() {
211 return Seekable(); 207 return Seekable();
212 } 208 }
213 209
214 bool MediaSourcePlayer::CanSeekForward() { 210 bool MediaSourcePlayer::CanSeekForward() {
215 return Seekable(); 211 return Seekable();
216 } 212 }
217 213
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 // release MediaDrm when the video is paused, or when the device goes to 752 // release MediaDrm when the video is paused, or when the device goes to
757 // sleep (see http://crbug.com/272421). 753 // sleep (see http://crbug.com/272421).
758 NOTREACHED() << "CDM detachment not supported."; 754 NOTREACHED() << "CDM detachment not supported.";
759 DCHECK(drm_bridge_); 755 DCHECK(drm_bridge_);
760 audio_decoder_job_->SetDrmBridge(NULL); 756 audio_decoder_job_->SetDrmBridge(NULL);
761 video_decoder_job_->SetDrmBridge(NULL); 757 video_decoder_job_->SetDrmBridge(NULL);
762 drm_bridge_ = NULL; 758 drm_bridge_ = NULL;
763 } 759 }
764 760
765 } // namespace media 761 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/media_source_player.h ('k') | media/base/android/media_source_player_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698