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

Commit 98787a7a authored by Wei Jia's avatar Wei Jia
Browse files

MediaPlayer2: add getMediaPlayer2State

Test: MediaPlayer2 plays
Bug: 63934228
Change-Id: I1a5290de44e0ba78fa6adc055ffdd18a4f259f15
parent f11edb6f
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -148,7 +148,16 @@ enum media2_info_type {
    MEDIA2_INFO_TIMED_TEXT_ERROR = 900,
};

enum media_player2_states {
// Do not change these values without updating their counterparts in MediaPlayer2.java
enum mediaplayer2_states {
    MEDIAPLAYER2_STATE_IDLE         = 1,
    MEDIAPLAYER2_STATE_PREPARED     = 2,
    MEDIAPLAYER2_STATE_PLAYING      = 3,
    MEDIAPLAYER2_STATE_PAUSED       = 4,
    MEDIAPLAYER2_STATE_ERROR        = 5,
};

enum media_player2_internal_states {
    MEDIA_PLAYER2_STATE_ERROR        = 0,
    MEDIA_PLAYER2_IDLE               = 1 << 0,
    MEDIA_PLAYER2_INITIALIZED        = 1 << 1,
+2 −1
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ public:
            status_t        stop();
            status_t        pause();
            bool            isPlaying();
            mediaplayer2_states getMediaPlayer2State();
            status_t        setPlaybackSettings(const AudioPlaybackRate& rate);
            status_t        getPlaybackSettings(AudioPlaybackRate* rate /* nonnull */);
            status_t        setSyncSettings(const AVSyncSettings& sync, float videoFpsHint);
@@ -145,7 +146,7 @@ private:
    mutable Mutex               mLock;
    Mutex                       mNotifyLock;
    sp<MediaPlayer2Listener>    mListener;
    media_player2_states        mCurrentState;
    media_player2_internal_states mCurrentState;
    int64_t                     mCurrentPosition;
    MediaPlayer2SeekMode        mCurrentSeekMode;
    int64_t                     mSeekPosition;
+21 −0
Original line number Diff line number Diff line
@@ -860,6 +860,27 @@ bool MediaPlayer2::isPlaying() {
    return false;
}

mediaplayer2_states MediaPlayer2::getMediaPlayer2State() {
    Mutex::Autolock _l(mLock);
    if (mCurrentState & MEDIA_PLAYER2_STATE_ERROR) {
        return MEDIAPLAYER2_STATE_ERROR;
    }
    if (mPlayer == 0
        || (mCurrentState &
            (MEDIA_PLAYER2_IDLE | MEDIA_PLAYER2_INITIALIZED | MEDIA_PLAYER2_PREPARING))) {
        return MEDIAPLAYER2_STATE_IDLE;
    }
    if (mCurrentState & MEDIA_PLAYER2_STARTED) {
        return MEDIAPLAYER2_STATE_PLAYING;
    }
    if (mCurrentState
        & (MEDIA_PLAYER2_PAUSED | MEDIA_PLAYER2_STOPPED | MEDIA_PLAYER2_PLAYBACK_COMPLETE)) {
        return MEDIAPLAYER2_STATE_PAUSED;
    }
    // now only mCurrentState & MEDIA_PLAYER2_PREPARED is true
    return MEDIAPLAYER2_STATE_PREPARED;
}

status_t MediaPlayer2::setPlaybackSettings(const AudioPlaybackRate& rate) {
    ALOGV("setPlaybackSettings: %f %f %d %d",
            rate.mSpeed, rate.mPitch, rate.mFallbackMode, rate.mStretchMode);