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

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

Merge "MediaPlayer2: use long type for media time."

parents b4bec47d 800fe371
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -87,7 +87,6 @@ public:

    static bool isOnEmulator();
    static int getMinBufferCount();
    void setNextOutput(const sp<MediaPlayer2AudioOutput>& nextOutput);
    virtual bool needsTrailingPadding() {
        return true;
        // TODO: return correct value.
+3 −3
Original line number Diff line number Diff line
@@ -200,9 +200,9 @@ public:
        return OK;
    }
    virtual status_t seekTo(
            int msec, MediaPlayer2SeekMode mode = MediaPlayer2SeekMode::SEEK_PREVIOUS_SYNC) = 0;
    virtual status_t getCurrentPosition(int *msec) = 0;
    virtual status_t getDuration(int *msec) = 0;
            int64_t msec, MediaPlayer2SeekMode mode = MediaPlayer2SeekMode::SEEK_PREVIOUS_SYNC) = 0;
    virtual status_t getCurrentPosition(int64_t *msec) = 0;
    virtual status_t getDuration(int64_t *msec) = 0;
    virtual status_t reset() = 0;
    virtual status_t notifyAt(int64_t /* mediaTimeUs */) {
        return INVALID_OPERATION;
+7 −8
Original line number Diff line number Diff line
@@ -77,11 +77,11 @@ public:
            status_t        getVideoWidth(int *w);
            status_t        getVideoHeight(int *h);
            status_t        seekTo(
                    int msec,
                    int64_t msec,
                    MediaPlayer2SeekMode mode = MediaPlayer2SeekMode::SEEK_PREVIOUS_SYNC);
            status_t        notifyAt(int64_t mediaTimeUs);
            status_t        getCurrentPosition(int *msec);
            status_t        getDuration(int *msec);
            status_t        getCurrentPosition(int64_t *msec);
            status_t        getDuration(int64_t *msec);
            status_t        reset();
            status_t        setAudioStreamType(audio_stream_type_t type);
            status_t        getAudioStreamType(audio_stream_type_t *type);
@@ -99,7 +99,6 @@ public:
            status_t        attachAuxEffect(int effectId);
            status_t        setParameter(int key, const Parcel& request);
            status_t        getParameter(int key, Parcel* reply);
            status_t        setNextMediaPlayer(const sp<MediaPlayer2>& player);

            // Modular DRM
            status_t        prepareDrm(const uint8_t uuid[16], const Vector<uint8_t>& drmSessionId);
@@ -131,9 +130,9 @@ private:
    status_t setAudioAttributes_l(const Parcel &request);

    void clear_l();
    status_t seekTo_l(int msec, MediaPlayer2SeekMode mode);
    status_t seekTo_l(int64_t msec, MediaPlayer2SeekMode mode);
    status_t prepareAsync_l();
    status_t getDuration_l(int *msec);
    status_t getDuration_l(int64_t *msec);
    status_t reset_l();
    status_t checkStateForKeySet_l(int key);

@@ -147,9 +146,9 @@ private:
    Mutex                       mNotifyLock;
    sp<MediaPlayer2Listener>    mListener;
    media_player2_states        mCurrentState;
    int                         mCurrentPosition;
    int64_t                     mCurrentPosition;
    MediaPlayer2SeekMode        mCurrentSeekMode;
    int                         mSeekPosition;
    int64_t                     mSeekPosition;
    MediaPlayer2SeekMode        mSeekMode;
    audio_stream_type_t         mStreamType;
    Parcel*                     mAudioAttributesParcel;
+51 −47
Original line number Diff line number Diff line
@@ -936,27 +936,27 @@ status_t MediaPlayer2::getVideoHeight(int *h) {
    return NO_ERROR;
}

status_t MediaPlayer2::getCurrentPosition(int *msec) {
status_t MediaPlayer2::getCurrentPosition(int64_t *msec) {
    ALOGV("getCurrentPosition");
    Mutex::Autolock _l(mLock);
    if (mPlayer == 0) {
        return INVALID_OPERATION;
    }
    if (mCurrentPosition >= 0) {
        ALOGV("Using cached seek position: %d", mCurrentPosition);
        ALOGV("Using cached seek position: %lld", (long long)mCurrentPosition);
        *msec = mCurrentPosition;
        return NO_ERROR;
    }
    status_t ret = mPlayer->getCurrentPosition(msec);
    if (ret == NO_ERROR) {
        ALOGV("getCurrentPosition = %d", *msec);
        ALOGV("getCurrentPosition = %lld", (long long)*msec);
    } else {
        ALOGE("getCurrentPosition returned %d", ret);
    }
    return ret;
}

status_t MediaPlayer2::getDuration(int *msec) {
status_t MediaPlayer2::getDuration(int64_t *msec) {
    Mutex::Autolock _l(mLock);
    ALOGV("getDuration_l");
    bool isValidState = (mCurrentState & (MEDIA_PLAYER2_PREPARED | MEDIA_PLAYER2_STARTED |
@@ -966,11 +966,11 @@ status_t MediaPlayer2::getDuration(int *msec) {
                mPlayer.get(), mCurrentState);
        return INVALID_OPERATION;
    }
    int durationMs;
    int64_t durationMs;
    status_t ret = mPlayer->getDuration(&durationMs);

    if (ret == NO_ERROR) {
        ALOGV("getDuration = %d", durationMs);
        ALOGV("getDuration = %lld", (long long)durationMs);
    } else {
        ALOGE("getDuration returned %d", ret);
        // Do not enter error state just because no duration was available.
@@ -983,16 +983,20 @@ status_t MediaPlayer2::getDuration(int *msec) {
    return OK;
}

status_t MediaPlayer2::seekTo_l(int msec, MediaPlayer2SeekMode mode) {
    ALOGV("seekTo (%d, %d)", msec, mode);
    if ((mPlayer != 0) && ( mCurrentState & ( MEDIA_PLAYER2_STARTED | MEDIA_PLAYER2_PREPARED |
status_t MediaPlayer2::seekTo_l(int64_t msec, MediaPlayer2SeekMode mode) {
    ALOGV("seekTo (%lld, %d)", (long long)msec, mode);
    if ((mPlayer == 0) || !(mCurrentState & (MEDIA_PLAYER2_STARTED | MEDIA_PLAYER2_PREPARED |
            MEDIA_PLAYER2_PAUSED | MEDIA_PLAYER2_PLAYBACK_COMPLETE))) {
        ALOGE("Attempt to perform seekTo in wrong state: mPlayer=%p, mCurrentState=%u",
              mPlayer.get(), mCurrentState);
        return INVALID_OPERATION;
    }
    if (msec < 0) {
            ALOGW("Attempt to seek to invalid position: %d", msec);
        ALOGW("Attempt to seek to invalid position: %lld", (long long)msec);
        msec = 0;
    }

        int durationMs;
    int64_t durationMs;
    status_t err = mPlayer->getDuration(&durationMs);

    if (err != OK) {
@@ -1001,10 +1005,8 @@ status_t MediaPlayer2::seekTo_l(int msec, MediaPlayer2SeekMode mode) {
    }

    if (msec > durationMs) {
            ALOGW("Attempt to seek to past end of file: request = %d, "
                  "durationMs = %d",
                  msec,
                  durationMs);
        ALOGW("Attempt to seek to past end of file: request = %lld, durationMs = %lld",
              (long long)msec, (long long)durationMs);

        msec = durationMs;
    }
@@ -1016,17 +1018,12 @@ status_t MediaPlayer2::seekTo_l(int msec, MediaPlayer2SeekMode mode) {
        mSeekPosition = msec;
        mSeekMode = mode;
        return mPlayer->seekTo(msec, mode);
        } else {
            ALOGV("Seek in progress - queue up seekTo[%d, %d]", msec, mode);
            return NO_ERROR;
        }
    }
    ALOGE("Attempt to perform seekTo in wrong state: mPlayer=%p, mCurrentState=%u", mPlayer.get(),
            mCurrentState);
    return INVALID_OPERATION;
    ALOGV("Seek in progress - queue up seekTo[%lld, %d]", (long long)msec, mode);
    return NO_ERROR;
}

status_t MediaPlayer2::seekTo(int msec, MediaPlayer2SeekMode mode) {
status_t MediaPlayer2::seekTo(int64_t msec, MediaPlayer2SeekMode mode) {
    mLockThreadId = getThreadId();
    Mutex::Autolock _l(mLock);
    status_t result = seekTo_l(msec, mode);
@@ -1228,6 +1225,16 @@ status_t MediaPlayer2::setParameter(int key, const Parcel& request) {
status_t MediaPlayer2::getParameter(int key, Parcel *reply) {
    ALOGV("MediaPlayer2::getParameter(%d)", key);
    Mutex::Autolock _l(mLock);
    if (key == MEDIA2_KEY_PARAMETER_AUDIO_ATTRIBUTES) {
        if (reply == NULL) {
            return BAD_VALUE;
        }
        if (mAudioAttributesParcel != NULL) {
            reply->appendFrom(mAudioAttributesParcel, 0, mAudioAttributesParcel->dataSize());
        }
        return OK;
    }

    if (mPlayer == NULL) {
        ALOGV("getParameter: no active player");
        return INVALID_OPERATION;
@@ -1339,7 +1346,8 @@ void MediaPlayer2::notify(int64_t srcId, int msg, int ext1, int ext2, const Parc
    case MEDIA2_SEEK_COMPLETE:
        ALOGV("Received seek complete");
        if (mSeekPosition != mCurrentPosition || (mSeekMode != mCurrentSeekMode)) {
            ALOGV("Executing queued seekTo(%d, %d)", mCurrentPosition, mCurrentSeekMode);
            ALOGV("Executing queued seekTo(%lld, %d)",
                  (long long)mCurrentPosition, mCurrentSeekMode);
            mSeekPosition = -1;
            mSeekMode = MediaPlayer2SeekMode::SEEK_PREVIOUS_SYNC;
            seekTo_l(mCurrentPosition, mCurrentSeekMode);
@@ -1387,10 +1395,6 @@ void MediaPlayer2::notify(int64_t srcId, int msg, int ext1, int ext2, const Parc
    }
}

status_t MediaPlayer2::setNextMediaPlayer(const sp<MediaPlayer2>& /* next */) {
    return INVALID_OPERATION;
}

// Modular DRM
status_t MediaPlayer2::prepareDrm(const uint8_t uuid[16], const Vector<uint8_t>& drmSessionId) {
    // TODO change to ALOGV
+2 −2
Original line number Diff line number Diff line
@@ -2765,10 +2765,10 @@ void NuPlayer2::onSourceNotify(const sp<AMessage> &msg) {
                break;
            }

            int posMs;
            int64_t posMs;
            int64_t timeUs, posUs;
            driver->getCurrentPosition(&posMs);
            posUs = (int64_t) posMs * 1000ll;
            posUs = posMs * 1000ll;
            CHECK(buffer->meta()->findInt64("timeUs", &timeUs));

            if (posUs < timeUs) {
Loading