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

Commit a10b692c authored by Surajit Podder's avatar Surajit Podder Committed by Linux Build Service Account
Browse files

libstagefright: Add support to query selected track

Added support for INVOKE_ID_GET_SELECTED_TRACK method
in invoke to return the selected track in AwesomePlayer

Change-Id: I955ee71befdd32c00db6500bf6fc5184a5b60f81
CRs-Fixed: 721667
parent 7c812f07
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -500,6 +500,7 @@ status_t AwesomePlayer::setDataSource_l(const sp<MediaExtractor> &extractor) {
        if (!haveVideo && !strncasecmp(mime.string(), "video/", 6)) {
            setVideoSource(extractor->getTrack(i));
            haveVideo = true;
            mActiveVideoTrackIndex = i;

            // Set the presentation/display size
            int32_t displayWidth, displayHeight;
@@ -573,6 +574,8 @@ void AwesomePlayer::reset() {
void AwesomePlayer::reset_l() {
    mVideoRenderingStarted = false;
    mActiveAudioTrackIndex = -1;
    mActiveTextTrackIndex = -1;
    mActiveVideoTrackIndex = -1;
    mDisplayWidth = 0;
    mDisplayHeight = 0;

@@ -2992,12 +2995,14 @@ status_t AwesomePlayer::selectTrack(size_t trackIndex, bool select) {
                mTextDriver->start();
                modifyFlags(TEXT_RUNNING, SET);
            }
            mActiveTextTrackIndex = trackIndex;
        }
    } else {
        err = mTextDriver->unselectTrack(trackIndex);
        if (err == OK) {
            modifyFlags(TEXTPLAYER_INITIALIZED, CLEAR);
            modifyFlags(TEXT_RUNNING, CLEAR);
            mActiveTextTrackIndex = -1;
        }
    }
    return err;
@@ -3082,6 +3087,24 @@ status_t AwesomePlayer::invoke(const Parcel &request, Parcel *reply) {
            int trackIndex = request.readInt32();
            return selectTrack(trackIndex, false /* select */);
        }
        case INVOKE_ID_GET_SELECTED_TRACK:
        {
            int32_t type = request.readInt32();
            ssize_t index = -1;
            switch(type) {
                case MEDIA_TRACK_TYPE_VIDEO:
                    index = mActiveVideoTrackIndex;
                    break;
                case MEDIA_TRACK_TYPE_AUDIO:
                    index = mActiveAudioTrackIndex;
                    break;
                case MEDIA_TRACK_TYPE_TIMEDTEXT:
                    index = mActiveTextTrackIndex;
                    break;
            }
            reply->writeInt32(index);
            return OK;
        }
        default:
        {
            return ERROR_UNSUPPORTED;
+2 −0
Original line number Diff line number Diff line
@@ -176,6 +176,7 @@ private:
    bool mVideoRendererIsPreview;
    int32_t mMediaRenderingStartGeneration;
    int32_t mStartGeneration;
    ssize_t mActiveVideoTrackIndex;

    ssize_t mActiveAudioTrackIndex;
    sp<MediaSource> mAudioTrack;
@@ -251,6 +252,7 @@ private:

    int64_t mLastVideoTimeUs;
    TimedTextDriver *mTextDriver;
    ssize_t mActiveTextTrackIndex;

    sp<WVMExtractor> mWVMExtractor;
    sp<MediaExtractor> mExtractor;