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

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

Merge "MediaPlayer2: initial code for playlist support"

parents 332adf69 57aeffd5
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -606,6 +606,39 @@ status_t MediaPlayer2Manager::Client::setDataSource(
    return status;
}

status_t MediaPlayer2Manager::Client::prepareNextDataSource(
        const sp<DataSourceDesc> &dsd) {
    sp<MediaPlayer2Interface> p = getPlayer();
    if (p == NULL) {
        return NO_INIT;
    }

    if (dsd == NULL) {
        return BAD_VALUE;
    }

    status_t status = p->prepareNextDataSource(dsd);
    if (status != OK) {
        ALOGE("prepareNextDataSource error: %d", status);
    }

    return status;
}

status_t MediaPlayer2Manager::Client::playNextDataSource(int64_t srcId) {
    sp<MediaPlayer2Interface> p = getPlayer();
    if (p == NULL) {
        return NO_INIT;
    }

    status_t status = p->playNextDataSource(srcId);
    if (status != OK) {
        ALOGE("playNextDataSource error: %d", status);
    }

    return status;
}

void MediaPlayer2Manager::Client::disconnectNativeWindow_l() {
    if (mConnectedWindow != NULL && mConnectedWindow->getANativeWindow() != NULL) {
        status_t err = native_window_api_disconnect(
+3 −1
Original line number Diff line number Diff line
@@ -274,7 +274,9 @@ private:
        virtual status_t        getParameter(int key, Parcel *reply);
        virtual status_t        setNextPlayer(const sp<MediaPlayer2Engine>& player);

        virtual status_t        setDataSource(const sp<DataSourceDesc> &dsd);
        virtual status_t        setDataSource(const sp<DataSourceDesc> &dsd) override;
        virtual status_t        prepareNextDataSource(const sp<DataSourceDesc> &dsd) override;
        virtual status_t        playNextDataSource(int64_t srcId) override;

        static  void            notify(const wp<MediaPlayer2Engine> &listener, int64_t srcId,
                                       int msg, int ext1, int ext2, const Parcel *obj);
+2 −0
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@ public:
    virtual void            disconnect() = 0;

    virtual status_t        setDataSource(const sp<DataSourceDesc>& source) = 0;
    virtual status_t        prepareNextDataSource(const sp<DataSourceDesc>& source) = 0;
    virtual status_t        playNextDataSource(int64_t srcId) = 0;
    virtual status_t        setVideoSurfaceTexture(const sp<ANativeWindowWrapper>& nww) = 0;
    virtual status_t        getBufferingSettings(
                                    BufferingSettings* buffering /* nonnull */) = 0;
+5 −4
Original line number Diff line number Diff line
@@ -150,9 +150,11 @@ public:

    virtual void        setAudioSink(const sp<AudioSink>& audioSink) { mAudioSink = audioSink; }

    virtual status_t    setDataSource(const sp<DataSourceDesc>& /* dsd */) {
        return INVALID_OPERATION;
    }
    virtual status_t    setDataSource(const sp<DataSourceDesc> &dsd) = 0;

    virtual status_t    prepareNextDataSource(const sp<DataSourceDesc> &dsd) = 0;

    virtual status_t    playNextDataSource(int64_t srcId) = 0;

    // pass the buffered native window to the media player service
    virtual status_t    setVideoSurfaceTexture(const sp<ANativeWindowWrapper>& nww) = 0;
@@ -166,7 +168,6 @@ public:
        return OK;
    }

    virtual status_t    prepare() = 0;
    virtual status_t    prepareAsync() = 0;
    virtual status_t    start() = 0;
    virtual status_t    stop() = 0;
+20 −5
Original line number Diff line number Diff line
@@ -114,7 +114,24 @@ enum media2_info_type {
    // player, which just completed playback
    MEDIA2_INFO_STARTED_AS_NEXT = 2,
    // The player just pushed the very first video frame for rendering
    MEDIA2_INFO_RENDERING_START = 3,
    MEDIA2_INFO_VIDEO_RENDERING_START = 3,
    // The player just pushed the very first audio frame for rendering
    MEDIA2_INFO_AUDIO_RENDERING_START = 4,
    // The player just completed the playback of this data source
    MEDIA2_INFO_PLAYBACK_COMPLETE = 5,
    // The player just completed the playback of the full play list
    MEDIA2_INFO_PLAYLIST_END = 6,

    //1xx
    // The player just prepared a data source.
    MEDIA2_INFO_PREPARED = 100,
    // The player just completed a call play().
    MEDIA2_INFO_COMPLETE_CALL_PLAY = 101,
    // The player just completed a call pause().
    MEDIA2_INFO_COMPLETE_CALL_PAUSE = 102,
    // The player just completed a call seekTo.
    MEDIA2_INFO_COMPLETE_CALL_SEEK = 103,

    // 7xx
    // The video is too complex for the decoder: it can't decode frames fast
    // enough. Possibly only the audio plays fine at this stage.
@@ -206,11 +223,12 @@ public:

            status_t        getSrcId(int64_t *srcId);
            status_t        setDataSource(const sp<DataSourceDesc> &dsd);
            status_t        prepareNextDataSource(const sp<DataSourceDesc> &dsd);
            status_t        playNextDataSource(int64_t srcId);
            status_t        setVideoSurfaceTexture(const sp<ANativeWindowWrapper>& nww);
            status_t        setListener(const sp<MediaPlayer2Listener>& listener);
            status_t        getBufferingSettings(BufferingSettings* buffering /* nonnull */);
            status_t        setBufferingSettings(const BufferingSettings& buffering);
            status_t        prepare();
            status_t        prepareAsync();
            status_t        start();
            status_t        stop();
@@ -271,7 +289,6 @@ private:
    thread_id_t                 mLockThreadId;
    Mutex                       mLock;
    Mutex                       mNotifyLock;
    Condition                   mSignal;
    sp<MediaPlayer2Listener>    mListener;
    void*                       mCookie;
    media_player2_states        mCurrentState;
@@ -279,8 +296,6 @@ private:
    MediaPlayer2SeekMode        mCurrentSeekMode;
    int                         mSeekPosition;
    MediaPlayer2SeekMode        mSeekMode;
    bool                        mPrepareSync;
    status_t                    mPrepareStatus;
    audio_stream_type_t         mStreamType;
    Parcel*                     mAudioAttributesParcel;
    bool                        mLoop;
Loading