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

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: Created 7 years, 2 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 | 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::HandleMessage(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(int demuxer_client_id) { 73 void RendererDemuxerAndroid::DemuxerSeekDone(int demuxer_client_id) {
68 thread_safe_sender_->Send(new MediaPlayerHostMsg_DemuxerSeekDone( 74 Send(new MediaPlayerHostMsg_DemuxerSeekDone(demuxer_client_id));
69 demuxer_client_id));
70 } 75 }
71 76
72 void RendererDemuxerAndroid::DurationChanged(int demuxer_client_id, 77 void RendererDemuxerAndroid::DurationChanged(int demuxer_client_id,
73 const base::TimeDelta& duration) { 78 const base::TimeDelta& duration) {
74 thread_safe_sender_->Send(new MediaPlayerHostMsg_DurationChanged( 79 Send(new MediaPlayerHostMsg_DurationChanged(demuxer_client_id, duration));
75 demuxer_client_id, duration));
76 }
77
78 void RendererDemuxerAndroid::DispatchMessage(const IPC::Message& message) {
79 IPC_BEGIN_MESSAGE_MAP(RendererDemuxerAndroid, message)
80 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DemuxerSeekRequest, OnDemuxerSeekRequest)
81 IPC_MESSAGE_HANDLER(MediaPlayerMsg_ReadFromDemuxer, OnReadFromDemuxer)
82 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaConfigRequest, OnMediaConfigRequest)
83 IPC_END_MESSAGE_MAP()
84 } 80 }
85 81
86 void RendererDemuxerAndroid::OnReadFromDemuxer( 82 void RendererDemuxerAndroid::OnReadFromDemuxer(
87 int demuxer_client_id, 83 int demuxer_client_id,
88 media::DemuxerStream::Type type) { 84 media::DemuxerStream::Type type) {
89 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id); 85 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id);
90 if (delegate) 86 if (delegate)
91 delegate->OnReadFromDemuxer(type); 87 delegate->OnReadFromDemuxer(type);
92 } 88 }
93 89
94 void RendererDemuxerAndroid::OnDemuxerSeekRequest( 90 void RendererDemuxerAndroid::OnDemuxerSeekRequest(
95 int demuxer_client_id, 91 int demuxer_client_id,
96 const base::TimeDelta& time_to_seek) { 92 const base::TimeDelta& time_to_seek) {
97 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id); 93 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id);
98 if (delegate) 94 if (delegate)
99 delegate->Seek(time_to_seek); 95 delegate->Seek(time_to_seek);
100 } 96 }
101 97
102 void RendererDemuxerAndroid::OnMediaConfigRequest(int demuxer_client_id) { 98 void RendererDemuxerAndroid::OnMediaConfigRequest(int demuxer_client_id) {
103 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id); 99 MediaSourceDelegate* delegate = delegates_.Lookup(demuxer_client_id);
104 if (delegate) 100 if (delegate)
105 delegate->OnMediaConfigRequest(); 101 delegate->OnMediaConfigRequest();
106 } 102 }
107 103
108 } // namespace content 104 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698