diff options
author | Robert Shih <robertshih@google.com> | 2014-07-09 18:53:31 -0700 |
---|---|---|
committer | Robert Shih <robertshih@google.com> | 2014-08-08 18:32:22 -0700 |
commit | 7c4f0d757bfeedaab4b7ef4ccf5b0a72ec8f4306 (patch) | |
tree | 2955488eabae107a5ea3eb510aa867d05c2570f7 /media/libmediaplayerservice | |
parent | a912c194ded6c9ece78c492c68c3763f284bb5d5 (diff) | |
download | frameworks_av-7c4f0d757bfeedaab4b7ef4ccf5b0a72ec8f4306.zip frameworks_av-7c4f0d757bfeedaab4b7ef4ccf5b0a72ec8f4306.tar.gz frameworks_av-7c4f0d757bfeedaab4b7ef4ccf5b0a72ec8f4306.tar.bz2 |
NuPlayer: getSelectedTrack
Change-Id: If5251f89b881e7f268e11a06cd3685d794c958b6
Diffstat (limited to 'media/libmediaplayerservice')
4 files changed, 51 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp index 6f6c9d9..55fd708 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp @@ -427,6 +427,31 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { break; } + case kWhatGetSelectedTrack: + { + status_t err = INVALID_OPERATION; + if (mSource != NULL) { + err = OK; + + int32_t type32; + CHECK(msg->findInt32("type", (int32_t*)&type32)); + media_track_type type = (media_track_type)type32; + ssize_t selectedTrack = mSource->getSelectedTrack(type); + + Parcel* reply; + CHECK(msg->findPointer("reply", (void**)&reply)); + reply->writeInt32(selectedTrack); + } + + sp<AMessage> response = new AMessage; + response->setInt32("err", err); + + uint32_t replyID; + CHECK(msg->senderAwaitsResponse(&replyID)); + response->postReply(replyID); + break; + } + case kWhatSelectTrack: { uint32_t replyID; @@ -1495,6 +1520,19 @@ status_t NuPlayer::getTrackInfo(Parcel* reply) const { return err; } +status_t NuPlayer::getSelectedTrack(int32_t type, Parcel* reply) const { + sp<AMessage> msg = new AMessage(kWhatGetSelectedTrack, id()); + msg->setPointer("reply", reply); + msg->setInt32("type", type); + + sp<AMessage> response; + status_t err = msg->postAndAwaitResponse(&response); + if (err == OK && response != NULL) { + CHECK(response->findInt32("err", &err)); + } + return err; +} + status_t NuPlayer::selectTrack(size_t trackIndex, bool select) { sp<AMessage> msg = new AMessage(kWhatSelectTrack, id()); msg->setSize("trackIndex", trackIndex); diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.h b/media/libmediaplayerservice/nuplayer/NuPlayer.h index 486b7cc..fc456a4 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayer.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayer.h @@ -63,6 +63,7 @@ struct NuPlayer : public AHandler { status_t setVideoScalingMode(int32_t mode); status_t getTrackInfo(Parcel* reply) const; + status_t getSelectedTrack(int32_t type, Parcel* reply) const; status_t selectTrack(size_t trackIndex, bool select); protected: @@ -109,6 +110,7 @@ private: kWhatPollDuration = 'polD', kWhatSourceNotify = 'srcN', kWhatGetTrackInfo = 'gTrI', + kWhatGetSelectedTrack = 'gSel', kWhatSelectTrack = 'selT', }; diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp index 4748546..e33e647 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp @@ -422,6 +422,12 @@ status_t NuPlayerDriver::invoke(const Parcel &request, Parcel *reply) { return mPlayer->selectTrack(trackIndex, false /* select */); } + case INVOKE_ID_GET_SELECTED_TRACK: + { + int32_t type = request.readInt32(); + return mPlayer->getSelectedTrack(type, reply); + } + default: { return INVALID_OPERATION; diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerSource.h b/media/libmediaplayerservice/nuplayer/NuPlayerSource.h index 06bbbec..74892b6 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerSource.h +++ b/media/libmediaplayerservice/nuplayer/NuPlayerSource.h @@ -22,6 +22,7 @@ #include <media/stagefright/foundation/AMessage.h> #include <media/stagefright/MetaData.h> +#include <media/mediaplayer.h> #include <utils/Vector.h> namespace android { @@ -86,6 +87,10 @@ struct NuPlayer::Source : public AHandler { return NULL; } + virtual ssize_t getSelectedTrack(media_track_type /* type */) const { + return INVALID_OPERATION; + } + virtual status_t selectTrack(size_t /* trackIndex */, bool /* select */) { return INVALID_OPERATION; } |