Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c273196c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "mediaplayer2: add srcId for source dependent API's"

parents e21f3418 17944af5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ public:
                    MediaPlayer2SeekMode mode = MediaPlayer2SeekMode::SEEK_PREVIOUS_SYNC);
            status_t        notifyAt(int64_t mediaTimeUs);
            status_t        getCurrentPosition(int64_t *msec);
            status_t        getDuration(int64_t *msec);
            status_t        getDuration(int64_t srcId, int64_t *msec);
            status_t        reset();
            status_t        setAudioStreamType(audio_stream_type_t type);
            status_t        getAudioStreamType(audio_stream_type_t *type);
+8 −1
Original line number Diff line number Diff line
@@ -718,8 +718,15 @@ status_t MediaPlayer2::getCurrentPosition(int64_t *msec) {
    return ret;
}

status_t MediaPlayer2::getDuration(int64_t *msec) {
status_t MediaPlayer2::getDuration(int64_t srcId, int64_t *msec) {
    Mutex::Autolock _l(mLock);
    // TODO: cache duration for currentSrcId and nextSrcId, and return correct
    // value for nextSrcId.
    if (srcId != mSrcId) {
        *msec = -1;
        return OK;
    }

    ALOGV("getDuration_l");
    bool isValidState = (mCurrentState & (MEDIA_PLAYER2_PREPARED | MEDIA_PLAYER2_STARTED |
            MEDIA_PLAYER2_PAUSED | MEDIA_PLAYER2_PLAYBACK_COMPLETE));
+17 −3
Original line number Diff line number Diff line
@@ -791,9 +791,13 @@ void NuPlayer2::onMessageReceived(const sp<AMessage> &msg) {
            sp<AReplyToken> replyID;
            CHECK(msg->senderAwaitsResponse(&replyID));

            int64_t srcId;
            CHECK(msg->findInt64("srcId", (int64_t*)&srcId));

            PlayerMessage* reply;
            CHECK(msg->findPointer("reply", (void**)&reply));

            // TODO: use correct source info based on srcId.
            size_t inbandTracks = 0;
            if (mCurrentSourceInfo.mSource != NULL) {
                inbandTracks = mCurrentSourceInfo.mSource->getTrackCount();
@@ -824,10 +828,14 @@ void NuPlayer2::onMessageReceived(const sp<AMessage> &msg) {

        case kWhatGetSelectedTrack:
        {
            int64_t srcId;
            CHECK(msg->findInt64("srcId", (int64_t*)&srcId));

            int32_t type32;
            CHECK(msg->findInt32("type", (int32_t*)&type32));
            media_track_type type = (media_track_type)type32;

            // TODO: use correct source info based on srcId.
            size_t inbandTracks = 0;
            status_t err = INVALID_OPERATION;
            ssize_t selectedTrack = -1;
@@ -863,15 +871,18 @@ void NuPlayer2::onMessageReceived(const sp<AMessage> &msg) {
            sp<AReplyToken> replyID;
            CHECK(msg->senderAwaitsResponse(&replyID));

            int64_t srcId;
            size_t trackIndex;
            int32_t select;
            int64_t timeUs;
            CHECK(msg->findInt64("srcId", (int64_t*)&srcId));
            CHECK(msg->findSize("trackIndex", &trackIndex));
            CHECK(msg->findInt32("select", &select));
            CHECK(msg->findInt64("timeUs", &timeUs));

            status_t err = INVALID_OPERATION;

            // TODO: use correct source info based on srcId.
            size_t inbandTracks = 0;
            if (mCurrentSourceInfo.mSource != NULL) {
                inbandTracks = mCurrentSourceInfo.mSource->getTrackCount();
@@ -2324,8 +2335,9 @@ status_t NuPlayer2::setVideoScalingMode(int32_t mode) {
    return OK;
}

status_t NuPlayer2::getTrackInfo(PlayerMessage* reply) const {
status_t NuPlayer2::getTrackInfo(int64_t srcId, PlayerMessage* reply) const {
    sp<AMessage> msg = new AMessage(kWhatGetTrackInfo, this);
    msg->setInt64("srcId", srcId);
    msg->setPointer("reply", reply);

    sp<AMessage> response;
@@ -2333,9 +2345,10 @@ status_t NuPlayer2::getTrackInfo(PlayerMessage* reply) const {
    return err;
}

status_t NuPlayer2::getSelectedTrack(int32_t type, PlayerMessage* reply) const {
status_t NuPlayer2::getSelectedTrack(int64_t srcId, int32_t type, PlayerMessage* reply) const {
    sp<AMessage> msg = new AMessage(kWhatGetSelectedTrack, this);
    msg->setPointer("reply", reply);
    msg->setInt64("srcId", srcId);
    msg->setInt32("type", type);

    sp<AMessage> response;
@@ -2346,8 +2359,9 @@ status_t NuPlayer2::getSelectedTrack(int32_t type, PlayerMessage* reply) const {
    return err;
}

status_t NuPlayer2::selectTrack(size_t trackIndex, bool select, int64_t timeUs) {
status_t NuPlayer2::selectTrack(int64_t srcId, size_t trackIndex, bool select, int64_t timeUs) {
    sp<AMessage> msg = new AMessage(kWhatSelectTrack, this);
    msg->setInt64("srcId", srcId);
    msg->setSize("trackIndex", trackIndex);
    msg->setInt32("select", select);
    msg->setInt64("timeUs", timeUs);
+3 −3
Original line number Diff line number Diff line
@@ -82,9 +82,9 @@ struct NuPlayer2 : public AHandler {
    void rewind();

    status_t setVideoScalingMode(int32_t mode);
    status_t getTrackInfo(PlayerMessage* reply) const;
    status_t getSelectedTrack(int32_t type, PlayerMessage* reply) const;
    status_t selectTrack(size_t trackIndex, bool select, int64_t timeUs);
    status_t getTrackInfo(int64_t srcId, PlayerMessage* reply) const;
    status_t getSelectedTrack(int64_t srcId, int32_t type, PlayerMessage* reply) const;
    status_t selectTrack(int64_t srcId, size_t trackIndex, bool select, int64_t timeUs);
    status_t getCurrentPosition(int64_t *mediaUs);
    void getStats(Vector<sp<AMessage> > *mTrackStats);

+9 −4
Original line number Diff line number Diff line
@@ -603,28 +603,33 @@ status_t NuPlayer2Driver::invoke(const PlayerMessage &request, PlayerMessage *re

        case MEDIA_PLAYER2_INVOKE_ID_GET_TRACK_INFO:
        {
            return mPlayer->getTrackInfo(response);
            int64_t srcId = (it++)->int64_value();
            return mPlayer->getTrackInfo(srcId, response);
        }

        case MEDIA_PLAYER2_INVOKE_ID_SELECT_TRACK:
        {
            int64_t srcId = (it++)->int64_value();
            int trackIndex = (it++)->int32_value();
            int64_t msec = 0;
            // getCurrentPosition should always return OK
            getCurrentPosition(&msec);
            return mPlayer->selectTrack(trackIndex, true /* select */, msec * 1000LL);
            return mPlayer->selectTrack(srcId, trackIndex, true /* select */, msec * 1000LL);
        }

        case MEDIA_PLAYER2_INVOKE_ID_UNSELECT_TRACK:
        {
            int64_t srcId = (it++)->int64_value();
            int trackIndex = (it++)->int32_value();
            return mPlayer->selectTrack(trackIndex, false /* select */, 0xdeadbeef /* not used */);
            return mPlayer->selectTrack(
                    srcId, trackIndex, false /* select */, 0xdeadbeef /* not used */);
        }

        case MEDIA_PLAYER2_INVOKE_ID_GET_SELECTED_TRACK:
        {
            int64_t srcId = (it++)->int64_value();
            int32_t type = (it++)->int32_value();
            return mPlayer->getSelectedTrack(type, response);
            return mPlayer->getSelectedTrack(srcId, type, response);
        }

        default: