Loading include/media/mediaplayer.h +2 −1 Original line number Diff line number Diff line Loading @@ -172,7 +172,8 @@ enum media_player_invoke_ids { INVOKE_ID_ADD_EXTERNAL_SOURCE_FD = 3, INVOKE_ID_SELECT_TRACK = 4, INVOKE_ID_UNSELECT_TRACK = 5, INVOKE_ID_SET_VIDEO_SCALING_MODE = 6 INVOKE_ID_SET_VIDEO_SCALING_MODE = 6, INVOKE_ID_GET_SELECTED_TRACK = 7 }; // Keep MEDIA_TRACK_TYPE_* in sync with MediaPlayer.java. Loading media/libmediaplayerservice/nuplayer/NuPlayer.cpp +38 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading media/libmediaplayerservice/nuplayer/NuPlayer.h +2 −0 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -109,6 +110,7 @@ private: kWhatPollDuration = 'polD', kWhatSourceNotify = 'srcN', kWhatGetTrackInfo = 'gTrI', kWhatGetSelectedTrack = 'gSel', kWhatSelectTrack = 'selT', }; Loading media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -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; Loading media/libmediaplayerservice/nuplayer/NuPlayerSource.h +5 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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; } Loading Loading
include/media/mediaplayer.h +2 −1 Original line number Diff line number Diff line Loading @@ -172,7 +172,8 @@ enum media_player_invoke_ids { INVOKE_ID_ADD_EXTERNAL_SOURCE_FD = 3, INVOKE_ID_SELECT_TRACK = 4, INVOKE_ID_UNSELECT_TRACK = 5, INVOKE_ID_SET_VIDEO_SCALING_MODE = 6 INVOKE_ID_SET_VIDEO_SCALING_MODE = 6, INVOKE_ID_GET_SELECTED_TRACK = 7 }; // Keep MEDIA_TRACK_TYPE_* in sync with MediaPlayer.java. Loading
media/libmediaplayerservice/nuplayer/NuPlayer.cpp +38 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading
media/libmediaplayerservice/nuplayer/NuPlayer.h +2 −0 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -109,6 +110,7 @@ private: kWhatPollDuration = 'polD', kWhatSourceNotify = 'srcN', kWhatGetTrackInfo = 'gTrI', kWhatGetSelectedTrack = 'gSel', kWhatSelectTrack = 'selT', }; Loading
media/libmediaplayerservice/nuplayer/NuPlayerDriver.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
media/libmediaplayerservice/nuplayer/NuPlayerSource.h +5 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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; } Loading