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

Commit 0d268a3c authored by James Dong's avatar James Dong
Browse files

Add setVideoScalingMode support to NuPlayer

o related-to-bug: 7089195

Change-Id: Ic30d9312673f2d5837c779e023ac64468ecd4951
parent fbe9d81f
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -68,7 +68,8 @@ NuPlayer::NuPlayer()
      mSkipRenderingVideoUntilMediaTimeUs(-1ll),
      mVideoLateByUs(0ll),
      mNumFramesTotal(0ll),
      mNumFramesDropped(0ll) {
      mNumFramesDropped(0ll),
      mVideoScalingMode(NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW) {
}

NuPlayer::~NuPlayer() {
@@ -217,6 +218,9 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) {
            CHECK(msg->findObject("native-window", &obj));

            mNativeWindow = static_cast<NativeWindowWrapper *>(obj.get());

            // XXX - ignore error from setVideoScalingMode for now
            setVideoScalingMode(mVideoScalingMode);
            break;
        }

@@ -957,4 +961,18 @@ sp<AMessage> NuPlayer::Source::getFormat(bool audio) {
    return NULL;
}

status_t NuPlayer::setVideoScalingMode(int32_t mode) {
    mVideoScalingMode = mode;
    if (mNativeWindow != NULL) {
        status_t ret = native_window_set_scaling_mode(
                mNativeWindow->getNativeWindow().get(), mVideoScalingMode);
        if (ret != OK) {
            ALOGE("Failed to set scaling mode (%d): %s",
                -ret, strerror(-ret));
            return ret;
        }
    }
    return OK;
}

}  // namespace android
+4 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ struct NuPlayer : public AHandler {
    // Will notify the driver through "notifySeekComplete" once finished.
    void seekToAsync(int64_t seekTimeUs);

    status_t setVideoScalingMode(int32_t mode);

protected:
    virtual ~NuPlayer();

@@ -130,6 +132,8 @@ private:
    int64_t mVideoLateByUs;
    int64_t mNumFramesTotal, mNumFramesDropped;

    int32_t mVideoScalingMode;

    status_t instantiateDecoder(bool audio, sp<Decoder> *decoder);

    status_t feedDecoderInputData(bool audio, const sp<AMessage> &msg);
+23 −1
Original line number Diff line number Diff line
@@ -259,8 +259,30 @@ player_type NuPlayerDriver::playerType() {
}

status_t NuPlayerDriver::invoke(const Parcel &request, Parcel *reply) {
    if (reply == NULL) {
        ALOGE("reply is a NULL pointer");
        return BAD_VALUE;
    }

    int32_t methodId;
    status_t ret = request.readInt32(&methodId);
    if (ret != OK) {
        ALOGE("Failed to retrieve the requested method to invoke");
        return ret;
    }

    switch (methodId) {
        case INVOKE_ID_SET_VIDEO_SCALING_MODE:
        {
            int mode = request.readInt32();
            return mPlayer->setVideoScalingMode(mode);
        }
        default:
        {
            return INVALID_OPERATION;
        }
    }
}

void NuPlayerDriver::setAudioSink(const sp<AudioSink> &audioSink) {
    mPlayer->setAudioSink(audioSink);