diff options
author | John Grossman <johngro@google.com> | 2012-06-21 17:29:24 -0700 |
---|---|---|
committer | John Grossman <johngro@google.com> | 2012-08-13 09:48:56 -0700 |
commit | 44a7e42f0310831e6a846d1b6bb40bf3a399bf6d (patch) | |
tree | aba58d779eb8a1d8fe4616d33b8eb6e1672d6f00 /media/libmedia/IMediaPlayer.cpp | |
parent | b3e12a4d15a329821979bf287c49a9630486e23f (diff) | |
download | frameworks_av-44a7e42f0310831e6a846d1b6bb40bf3a399bf6d.zip frameworks_av-44a7e42f0310831e6a846d1b6bb40bf3a399bf6d.tar.gz frameworks_av-44a7e42f0310831e6a846d1b6bb40bf3a399bf6d.tar.bz2 |
Add the ability to dynamicaly register MediaPlayer types.
Add the ability to dynamically register low level MediaPlayer
factories which will be probed at setDataSource time to determine the
proper MediaPlayerBase to instantiate.
This change is in preparation for moving libaah_rtp out of
frameworks/base and into phantasm platform directory.
Change-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076
Signed-off-by: John Grossman <johngro@google.com>
Diffstat (limited to 'media/libmedia/IMediaPlayer.cpp')
-rw-r--r-- | media/libmedia/IMediaPlayer.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/media/libmedia/IMediaPlayer.cpp b/media/libmedia/IMediaPlayer.cpp index 0bb237d..cb07766 100644 --- a/media/libmedia/IMediaPlayer.cpp +++ b/media/libmedia/IMediaPlayer.cpp @@ -55,6 +55,7 @@ enum { SET_PARAMETER, GET_PARAMETER, SET_RETRANSMIT_ENDPOINT, + GET_RETRANSMIT_ENDPOINT, SET_NEXT_PLAYER, }; @@ -292,7 +293,8 @@ public: return remote()->transact(GET_PARAMETER, data, reply); } - status_t setRetransmitEndpoint(const struct sockaddr_in* endpoint) { + status_t setRetransmitEndpoint(const struct sockaddr_in* endpoint) + { Parcel data, reply; status_t err; @@ -319,6 +321,23 @@ public: remote()->transact(SET_NEXT_PLAYER, data, &reply); return reply.readInt32(); } + + status_t getRetransmitEndpoint(struct sockaddr_in* endpoint) + { + Parcel data, reply; + status_t err; + + data.writeInterfaceToken(IMediaPlayer::getInterfaceDescriptor()); + err = remote()->transact(GET_RETRANSMIT_ENDPOINT, data, &reply); + + if ((OK != err) || (OK != (err = reply.readInt32()))) { + return err; + } + + data.read(endpoint, sizeof(*endpoint)); + + return err; + } }; IMPLEMENT_META_INTERFACE(MediaPlayer, "android.media.IMediaPlayer"); @@ -498,11 +517,24 @@ status_t BnMediaPlayer::onTransact( } else { reply->writeInt32(setRetransmitEndpoint(NULL)); } + + return NO_ERROR; + } break; + case GET_RETRANSMIT_ENDPOINT: { + CHECK_INTERFACE(IMediaPlayer, data, reply); + + struct sockaddr_in endpoint; + status_t res = getRetransmitEndpoint(&endpoint); + + reply->writeInt32(res); + reply->write(&endpoint, sizeof(endpoint)); + return NO_ERROR; } break; case SET_NEXT_PLAYER: { CHECK_INTERFACE(IMediaPlayer, data, reply); reply->writeInt32(setNextPlayer(interface_cast<IMediaPlayer>(data.readStrongBinder()))); + return NO_ERROR; } break; default: |