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

Side by Side Diff: content/renderer/media/android/renderer_demuxer_android.cc

Issue 24636002: Introduce content::ChildMessageFilter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix impl Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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 "content/renderer/media/android/renderer_demuxer_android.h" 5 #include "content/renderer/media/android/renderer_demuxer_android.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "content/child/thread_safe_sender.h"
10 #include "content/common/media/media_player_messages_android.h" 9 #include "content/common/media/media_player_messages_android.h"
11 #include "content/renderer/media/android/media_source_delegate.h" 10 #include "content/renderer/media/android/media_source_delegate.h"
12 #include "content/renderer/media/android/renderer_media_player_manager.h" 11 #include "content/renderer/media/android/renderer_media_player_manager.h"
13 #include "content/renderer/media/android/webmediaplayer_android.h" 12 #include "content/renderer/media/android/webmediaplayer_android.h"
14 #include "content/renderer/render_thread_impl.h" 13 #include "content/renderer/render_thread_impl.h"
15 14
16 namespace content { 15 namespace content {
17 16
18 RendererDemuxerAndroid::RendererDemuxerAndroid() 17 RendererDemuxerAndroid::RendererDemuxerAndroid()
19 : thread_safe_sender_(RenderThreadImpl::current()->thread_safe_sender()), 18 : media_message_loop_(
20 media_message_loop_(
21 RenderThreadImpl::current()->GetMediaThreadMessageLoopProxy()) {} 19 RenderThreadImpl::current()->GetMediaThreadMessageLoopProxy()) {}
22 20
23 RendererDemuxerAndroid::~RendererDemuxerAndroid() {} 21 RendererDemuxerAndroid::~RendererDemuxerAndroid() {}
24 22
25 int RendererDemuxerAndroid::GetNextDemuxerClientID() { 23 int RendererDemuxerAndroid::GetNextDemuxerClientID() {
26 // Don't use zero for IDs since it can be interpreted as having no ID. 24 // Don't use zero for IDs since it can be interpreted as having no ID.
27 return next_demuxer_client_id_.GetNext() + 1; 25 return next_demuxer_client_id_.GetNext() + 1;
28 } 26 }
29 27
30 void RendererDemuxerAndroid::AddDelegate(int demuxer_client_id, 28 void RendererDemuxerAndroid::AddDelegate(int demuxer_client_id,
31 MediaSourceDelegate* delegate) { 29 MediaSourceDelegate* delegate) {
32 DCHECK(media_message_loop_->BelongsToCurrentThread()); 30 DCHECK(media_message_loop_->BelongsToCurrentThread());
33 delegates_.AddWithID(delegate, demuxer_client_id); 31 delegates_.AddWithID(delegate, demuxer_client_id);
34 } 32 }
35 33
36 void RendererDemuxerAndroid::RemoveDelegate(int demuxer_client_id) { 34 void RendererDemuxerAndroid::RemoveDelegate(int demuxer_client_id) {
37 DCHECK(media_message_loop_->BelongsToCurrentThread()); 35 DCHECK(media_message_loop_->BelongsToCurrentThread());
38 delegates_.Remove(demuxer_client_id); 36 delegates_.Remove(demuxer_client_id);
39 } 37 }
40 38
41 bool RendererDemuxerAndroid::OnMessageReceived(const IPC::Message& message) { 39 base::TaskRunner* RendererDemuxerAndroid::OverrideTaskRunnerForMessage(
40 const IPC::Message& message) {
42 switch (message.type()) { 41 switch (message.type()) {
43 case MediaPlayerMsg_DemuxerSeekRequest::ID: 42 case MediaPlayerMsg_DemuxerSeekRequest::ID:
44 case MediaPlayerMsg_ReadFromDemuxer::ID: 43 case MediaPlayerMsg_ReadFromDemuxer::ID:
45 case MediaPlayerMsg_MediaConfigRequest::ID: 44 case MediaPlayerMsg_MediaConfigRequest::ID:
46 media_message_loop_->PostTask(FROM_HERE, base::Bind( 45 return media_message_loop_;
47 &RendererDemuxerAndroid::DispatchMessage, this, message));
48 return true;
49 } 46 }
50 return false; 47 return NULL;
48 }
49
50 bool RendererDemuxerAndroid::OnMessageReceived(const IPC::Message& message) {
51 bool handled = true;
52 IPC_BEGIN_MESSAGE_MAP(RendererDemuxerAndroid, message)
53 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DemuxerSeekRequest, OnDemuxerSeekRequest)
54 IPC_MESSAGE_HANDLER(MediaPlayerMsg_ReadFromDemuxer, OnReadFromDemuxer)
55 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaConfigRequest, OnMediaConfigRequest)
56 IPC_MESSAGE_UNHANDLED(handled = false)
57 IPC_END_MESSAGE_MAP()
58 return handled;
51 } 59 }
52 60
53 void RendererDemuxerAndroid::DemuxerReady( 61 void RendererDemuxerAndroid::DemuxerReady(
54 int demuxer_client_id, 62 int demuxer_client_id,
55 const media::DemuxerConfigs& configs) { 63 const media::DemuxerConfigs& configs) {
56 thread_safe_sender_->Send(new MediaPlayerHostMsg_DemuxerReady( 64 Send(new MediaPlayerHostMsg_DemuxerReady(demuxer_client_id, configs));
57 demuxer_client_id, configs));
58 } 65 }
59 66
60 void RendererDemuxerAndroid::ReadFromDemuxerAck( 67 void RendererDemuxerAndroid::ReadFromDemuxerAck(
61 int demuxer_client_id, 68 int demuxer_client_id,
62 const media::DemuxerData& data) { 69 const media::DemuxerData& data) {
63 thread_safe_sender_->Send(new MediaPlayerHostMsg_ReadFromDemuxerAck( 70 Send(new MediaPlayerHostMsg_ReadFromDemuxerAck(demuxer_client_id, data));
64 demuxer_client_id, data));
65 } 71 }
66 72
67 void RendererDemuxerAndroid::DemuxerSeekDone( 73 void RendererDemuxerAndroid::DemuxerSeekDone(
68 int demuxer_client_id, 74 int demuxer_client_id,
69 const base::TimeDelta& actual_browser_seek_time) { 75 const base::TimeDelta& actual_browser_seek_time) {
70 thread_safe_sender_->Send(new MediaPlayerHostMsg_DemuxerSeekDone( 76 Send(new MediaPlayerHostMsg_DemuxerSeekDone(demuxer_client_id,
71 demuxer_client_id, actual_browser_seek_time)); 77 actual_browser_seek_time));
72 } 78 }
73 79
74 void RendererDemuxerAndroid::DurationChanged(int demuxer_client_id, 80 void RendererDemuxerAndroid::DurationChanged(int demuxer_client_id,
75 const base::TimeDelta& duration) { 81 const base::TimeDelta& duration) {
76 thread_safe_sender_->Send(new MediaPlayerHostMsg_DurationChanged( 82 Send(new MediaPlayerHostMsg_DurationChanged(demuxer_client_id, duration));
77 demuxer_client_id, duration));
78 }
79
80 void RendererDemuxerAndroid::DispatchMessage(const IPC::Message& message) {
81 IPC_BEGIN_MESSAGE_MAP(RendererDemuxerAndroid, message)
82 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DemuxerSeekRequest, OnDemuxerSeekRequest)
83 IPC_MESSAGE_HANDLER(MediaPlayerMsg_ReadFromDemuxer, OnReadFromDemuxer)
84 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaConfigRequest, OnMediaConfigRequest)
85 IPC_END_MESSAGE_MAP()
86 } 83 }
87 84
88 void RendererDemuxerAndroid::OnReadFromDemuxer( 85 void RendererDemuxerAndroid::OnReadFromDemuxer(
89 int demuxer_client_id, 86 int demuxer_client_id,
90 media::DemuxerStream::Type type) { 87 media::DemuxerStream::Type type) {
91 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id); 88 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id);
92 if (delegate) 89 if (delegate)
93 delegate->OnReadFromDemuxer(type); 90 delegate->OnReadFromDemuxer(type);
94 } 91 }
95 92
96 void RendererDemuxerAndroid::OnDemuxerSeekRequest( 93 void RendererDemuxerAndroid::OnDemuxerSeekRequest(
97 int demuxer_client_id, 94 int demuxer_client_id,
98 const base::TimeDelta& time_to_seek, 95 const base::TimeDelta& time_to_seek,
99 bool is_browser_seek) { 96 bool is_browser_seek) {
100 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id); 97 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id);
101 if (delegate) 98 if (delegate)
102 delegate->Seek(time_to_seek, is_browser_seek); 99 delegate->Seek(time_to_seek, is_browser_seek);
103 } 100 }
104 101
105 void RendererDemuxerAndroid::OnMediaConfigRequest(int demuxer_client_id) { 102 void RendererDemuxerAndroid::OnMediaConfigRequest(int demuxer_client_id) {
106 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id); 103 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id);
107 if (delegate) 104 if (delegate)
108 delegate->OnMediaConfigRequest(); 105 delegate->OnMediaConfigRequest();
109 } 106 }
110 107
111 } // namespace content 108 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698