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

Commit 94c59802 authored by Jamie Gennis's avatar Jamie Gennis
Browse files

Stagefright: Query buffer usage from the component.

This change makes Stagefright query the gralloc buffer usage flags from
the OMX IL component and passing those flags on to the ANativeWindow.

Change-Id: Ic9af8a9e6df9ff4aadc7355890324d68841bc488
Related-Bug: 3479027
parent e6befb88
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -440,10 +440,17 @@ status_t ACodec::allocateOutputBuffersFromNativeWindow() {
    }

    // Set up the native window.
    // XXX TODO: Get the gralloc usage flags from the OMX plugin!
    OMX_U32 usage = 0;
    err = mOMX->getGraphicBufferUsage(mNode, kPortIndexOutput, &usage);
    if (err != 0) {
        LOGW("querying usage flags from OMX IL component failed: %d", err);
        // XXX: Currently this error is logged, but not fatal.
        usage = 0;
    }

    err = native_window_set_usage(
            mNativeWindow.get(),
            GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_EXTERNAL_DISP);
            usage | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_EXTERNAL_DISP);

    if (err != 0) {
        LOGE("native_window_set_usage failed: %s (%d)", strerror(-err), -err);
@@ -2286,4 +2293,3 @@ void ACodec::FlushingState::changeStateIfWeOwnAllBuffers() {
}

}  // namespace android
+9 −2
Original line number Diff line number Diff line
@@ -1753,9 +1753,16 @@ status_t OMXCodec::allocateOutputBuffersFromNativeWindow() {
    }

    // Set up the native window.
    // XXX TODO: Get the gralloc usage flags from the OMX plugin!
    OMX_U32 usage = 0;
    err = mOMX->getGraphicBufferUsage(mNode, kPortIndexOutput, &usage);
    if (err != 0) {
        LOGW("querying usage flags from OMX IL component failed: %d", err);
        // XXX: Currently this error is logged, but not fatal.
        usage = 0;
    }

    err = native_window_set_usage(
            mNativeWindow.get(), GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_EXTERNAL_DISP);
            mNativeWindow.get(), usage | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_EXTERNAL_DISP);
    if (err != 0) {
        LOGE("native_window_set_usage failed: %s (%d)", strerror(-err), -err);
        return err;