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

Commit e8600e37 authored by Andreas Huber's avatar Andreas Huber Committed by Android Git Automerger
Browse files

am 63d64a14: Merge "Properly rotate video that\'s marked as such and decoded...

am 63d64a14: Merge "Properly rotate video that\'s marked as such and decoded to a surface." into honeycomb

* commit '63d64a14790ae21db31b60747864b4a7565b33c3':
  Properly rotate video that's marked as such and decoded to a surface.
parents 42ab7806 7fac331b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -305,6 +305,8 @@ private:

    void restorePatchedDataPointer(BufferInfo *info);

    status_t applyRotation();

    OMXCodec(const OMXCodec &);
    OMXCodec &operator=(const OMXCodec &);
};
+32 −0
Original line number Diff line number Diff line
@@ -1680,6 +1680,33 @@ status_t OMXCodec::allocateBuffersOnPort(OMX_U32 portIndex) {
    return OK;
}

status_t OMXCodec::applyRotation() {
    sp<MetaData> meta = mSource->getFormat();

    int32_t rotationDegrees;
    if (!meta->findInt32(kKeyRotation, &rotationDegrees)) {
        rotationDegrees = 0;
    }

    uint32_t transform;
    switch (rotationDegrees) {
        case 0: transform = 0; break;
        case 90: transform = HAL_TRANSFORM_ROT_90; break;
        case 180: transform = HAL_TRANSFORM_ROT_180; break;
        case 270: transform = HAL_TRANSFORM_ROT_270; break;
        default: transform = 0; break;
    }

    status_t err = OK;

    if (transform) {
        err = native_window_set_buffers_transform(
                mNativeWindow.get(), transform);
    }

    return err;
}

status_t OMXCodec::allocateOutputBuffersFromNativeWindow() {
    // Get the number of buffers needed.
    OMX_PARAM_PORTDEFINITIONTYPE def;
@@ -1713,6 +1740,11 @@ status_t OMXCodec::allocateOutputBuffersFromNativeWindow() {
        return err;
    }

    err = applyRotation();
    if (err != OK) {
        return err;
    }

    // Set up the native window.
    // XXX TODO: Get the gralloc usage flags from the OMX plugin!
    err = native_window_set_usage(