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

Commit 966f9e55 authored by Gloria Wang's avatar Gloria Wang Committed by Android (Google) Code Review
Browse files

Merge "- Add another parameter in notify() to be able to send timed text...

Merge "- Add another parameter in notify() to be able to send timed text sample through listener during video playback. - Add OnTimedTextListener in the MediaPlayer For feature request 800939."
parents 3220d0a1 162ee49e
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -107,7 +107,7 @@ struct MyClient : public BnMediaPlayerClient {
        : mEOS(false) {
        : mEOS(false) {
    }
    }


    virtual void notify(int msg, int ext1, int ext2) {
    virtual void notify(int msg, int ext1, int ext2, const Parcel *obj) {
        Mutex::Autolock autoLock(mLock);
        Mutex::Autolock autoLock(mLock);


        if (msg == MEDIA_ERROR || msg == MEDIA_PLAYBACK_COMPLETE) {
        if (msg == MEDIA_ERROR || msg == MEDIA_PLAYBACK_COMPLETE) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -28,7 +28,7 @@ class IMediaPlayerClient: public IInterface
public:
public:
    DECLARE_META_INTERFACE(MediaPlayerClient);
    DECLARE_META_INTERFACE(MediaPlayerClient);


    virtual void notify(int msg, int ext1, int ext2) = 0;
    virtual void notify(int msg, int ext1, int ext2, const Parcel *obj) = 0;
};
};


// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
+5 −3
Original line number Original line Diff line number Diff line
@@ -55,7 +55,8 @@ enum player_type {




// callback mechanism for passing messages to MediaPlayer object
// callback mechanism for passing messages to MediaPlayer object
typedef void (*notify_callback_f)(void* cookie, int msg, int ext1, int ext2);
typedef void (*notify_callback_f)(void* cookie,
        int msg, int ext1, int ext2, const Parcel *obj);


// abstract base class - use MediaPlayerInterface
// abstract base class - use MediaPlayerInterface
class MediaPlayerBase : public RefBase
class MediaPlayerBase : public RefBase
@@ -159,9 +160,10 @@ public:
        mCookie = cookie; mNotify = notifyFunc;
        mCookie = cookie; mNotify = notifyFunc;
    }
    }


    void        sendEvent(int msg, int ext1=0, int ext2=0) {
    void        sendEvent(int msg, int ext1=0, int ext2=0,
                          const Parcel *obj=NULL) {
        Mutex::Autolock autoLock(mNotifyLock);
        Mutex::Autolock autoLock(mNotifyLock);
        if (mNotify) mNotify(mCookie, msg, ext1, ext2);
        if (mNotify) mNotify(mCookie, msg, ext1, ext2, obj);
    }
    }


private:
private:
+3 −2
Original line number Original line Diff line number Diff line
@@ -37,6 +37,7 @@ enum media_event_type {
    MEDIA_BUFFERING_UPDATE  = 3,
    MEDIA_BUFFERING_UPDATE  = 3,
    MEDIA_SEEK_COMPLETE     = 4,
    MEDIA_SEEK_COMPLETE     = 4,
    MEDIA_SET_VIDEO_SIZE    = 5,
    MEDIA_SET_VIDEO_SIZE    = 5,
    MEDIA_TIMED_TEXT        = 99,
    MEDIA_ERROR             = 100,
    MEDIA_ERROR             = 100,
    MEDIA_INFO              = 200,
    MEDIA_INFO              = 200,
};
};
@@ -129,7 +130,7 @@ enum media_player_states {
class MediaPlayerListener: virtual public RefBase
class MediaPlayerListener: virtual public RefBase
{
{
public:
public:
    virtual void notify(int msg, int ext1, int ext2) = 0;
    virtual void notify(int msg, int ext1, int ext2, const Parcel *obj) = 0;
};
};


class MediaPlayer : public BnMediaPlayerClient,
class MediaPlayer : public BnMediaPlayerClient,
@@ -166,7 +167,7 @@ public:
            status_t        setLooping(int loop);
            status_t        setLooping(int loop);
            bool            isLooping();
            bool            isLooping();
            status_t        setVolume(float leftVolume, float rightVolume);
            status_t        setVolume(float leftVolume, float rightVolume);
            void            notify(int msg, int ext1, int ext2);
            void            notify(int msg, int ext1, int ext2, const Parcel *obj = NULL);
    static  sp<IMemory>     decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat);
    static  sp<IMemory>     decode(const char* url, uint32_t *pSampleRate, int* pNumChannels, int* pFormat);
    static  sp<IMemory>     decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, int* pFormat);
    static  sp<IMemory>     decode(int fd, int64_t offset, int64_t length, uint32_t *pSampleRate, int* pNumChannels, int* pFormat);
            status_t        invoke(const Parcel& request, Parcel *reply);
            status_t        invoke(const Parcel& request, Parcel *reply);
+40 −0
Original line number Original line Diff line number Diff line
@@ -1120,6 +1120,7 @@ public class MediaPlayer
        mOnErrorListener = null;
        mOnErrorListener = null;
        mOnInfoListener = null;
        mOnInfoListener = null;
        mOnVideoSizeChangedListener = null;
        mOnVideoSizeChangedListener = null;
        mOnTimedTextListener = null;
        _release();
        _release();
    }
    }


@@ -1301,6 +1302,7 @@ public class MediaPlayer
    private static final int MEDIA_BUFFERING_UPDATE = 3;
    private static final int MEDIA_BUFFERING_UPDATE = 3;
    private static final int MEDIA_SEEK_COMPLETE = 4;
    private static final int MEDIA_SEEK_COMPLETE = 4;
    private static final int MEDIA_SET_VIDEO_SIZE = 5;
    private static final int MEDIA_SET_VIDEO_SIZE = 5;
    private static final int MEDIA_TIMED_TEXT = 99;
    private static final int MEDIA_ERROR = 100;
    private static final int MEDIA_ERROR = 100;
    private static final int MEDIA_INFO = 200;
    private static final int MEDIA_INFO = 200;


@@ -1369,6 +1371,11 @@ public class MediaPlayer
                }
                }
                // No real default action so far.
                // No real default action so far.
                return;
                return;
            case MEDIA_TIMED_TEXT:
                if (mOnTimedTextListener != null) {
                    mOnTimedTextListener.onTimedText(mMediaPlayer, (String)msg.obj);
                }
                return;


            case MEDIA_NOP: // interface test message - ignore
            case MEDIA_NOP: // interface test message - ignore
                break;
                break;
@@ -1545,6 +1552,39 @@ public class MediaPlayer


    private OnVideoSizeChangedListener mOnVideoSizeChangedListener;
    private OnVideoSizeChangedListener mOnVideoSizeChangedListener;


    /**
     * Interface definition of a callback to be invoked when a
     * timed text is available for display.
     * {@hide}
     */
    public interface OnTimedTextListener
    {
        /**
         * Called to indicate the video size
         *
         * @param mp             the MediaPlayer associated with this callback
         * @param text           the timed text sample which contains the
         *                       text needed to be displayed.
         * {@hide}
         */
        public void onTimedText(MediaPlayer mp, String text);
    }

    /**
     * Register a callback to be invoked when a timed text is available
     * for display.
     *
     * @param listener the callback that will be run
     * {@hide}
     */
    public void setOnTimedTextListener(OnTimedTextListener listener)
    {
        mOnTimedTextListener = listener;
    }

    private OnTimedTextListener mOnTimedTextListener;


    /* Do not change these values without updating their counterparts
    /* Do not change these values without updating their counterparts
     * in include/media/mediaplayer.h!
     * in include/media/mediaplayer.h!
     */
     */
Loading