Loading libs/vr/libdvr/dvr_buffer.cpp +17 −13 Original line number Diff line number Diff line #include "include/dvr/dvr_buffer.h" #include <android/hardware_buffer.h> #include <private/dvr/buffer_hub_client.h> #include <ui/GraphicBuffer.h> Loading Loading @@ -54,6 +55,16 @@ void InitializeGraphicBuffer(const dvr::BufferHubBuffer* buffer, false /* keep ownership */)); } int ConvertToAHardwareBuffer(GraphicBuffer* graphic_buffer, AHardwareBuffer** hardware_buffer) { if (!hardware_buffer || !graphic_buffer) { return -EINVAL; } *hardware_buffer = reinterpret_cast<AHardwareBuffer*>(graphic_buffer); AHardwareBuffer_acquire(*hardware_buffer); return 0; } } // anonymous namespace extern "C" { Loading @@ -68,9 +79,8 @@ int dvrWriteBufferGetId(DvrWriteBuffer* write_buffer) { int dvrWriteBufferGetAHardwareBuffer(DvrWriteBuffer* write_buffer, AHardwareBuffer** hardware_buffer) { *hardware_buffer = reinterpret_cast<AHardwareBuffer*>( write_buffer->write_buffer->buffer()->buffer().get()); return 0; return ConvertToAHardwareBuffer( write_buffer->write_buffer->buffer()->buffer().get(), hardware_buffer); } int dvrWriteBufferPost(DvrWriteBuffer* write_buffer, int ready_fence_fd, Loading Loading @@ -99,9 +109,8 @@ int dvrReadBufferGetId(DvrReadBuffer* read_buffer) { int dvrReadBufferGetAHardwareBuffer(DvrReadBuffer* read_buffer, AHardwareBuffer** hardware_buffer) { *hardware_buffer = reinterpret_cast<AHardwareBuffer*>( read_buffer->read_buffer->buffer()->buffer().get()); return 0; return ConvertToAHardwareBuffer( read_buffer->read_buffer->buffer()->buffer().get(), hardware_buffer); } int dvrReadBufferAcquire(DvrReadBuffer* read_buffer, int* ready_fence_fd, Loading @@ -127,13 +136,8 @@ void dvrBufferDestroy(DvrBuffer* buffer) { delete buffer; } int dvrBufferGetAHardwareBuffer(DvrBuffer* buffer, AHardwareBuffer** hardware_buffer) { if (!hardware_buffer) { return -EINVAL; } *hardware_buffer = reinterpret_cast<AHardwareBuffer*>(buffer->buffer->buffer().get()); return 0; return ConvertToAHardwareBuffer(buffer->buffer->buffer().get(), hardware_buffer); } const struct native_handle* dvrWriteBufferGetNativeHandle( Loading libs/vr/libdvr/include/dvr/dvr_buffer.h +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ struct native_handle; // Write buffer void dvrWriteBufferDestroy(DvrWriteBuffer* write_buffer); int dvrWriteBufferGetId(DvrWriteBuffer* write_buffer); // Caller must call AHardwareBuffer_release on hardware_buffer. int dvrWriteBufferGetAHardwareBuffer(DvrWriteBuffer* write_buffer, AHardwareBuffer** hardware_buffer); int dvrWriteBufferPost(DvrWriteBuffer* write_buffer, int ready_fence_fd, Loading @@ -30,6 +31,7 @@ const struct native_handle* dvrWriteBufferGetNativeHandle( // Read buffer void dvrReadBufferDestroy(DvrReadBuffer* read_buffer); int dvrReadBufferGetId(DvrReadBuffer* read_buffer); // Caller must call AHardwareBuffer_release on hardware_buffer. int dvrReadBufferGetAHardwareBuffer(DvrReadBuffer* read_buffer, AHardwareBuffer** hardware_buffer); int dvrReadBufferAcquire(DvrReadBuffer* read_buffer, int* ready_fence_fd, Loading @@ -41,6 +43,7 @@ const struct native_handle* dvrReadBufferGetNativeHandle( // Buffer void dvrBufferDestroy(DvrBuffer* buffer); // Caller must call AHardwareBuffer_release on hardware_buffer. int dvrBufferGetAHardwareBuffer(DvrBuffer* buffer, AHardwareBuffer** hardware_buffer); const struct native_handle* dvrBufferGetNativeHandle(DvrBuffer* buffer); Loading libs/vr/libdvr/tests/dvr_named_buffer-test.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -42,11 +42,12 @@ TEST_F(DvrNamedBufferTest, TestNamedBuffersSameName) { AHardwareBuffer* hardware_buffer1 = nullptr; int e1 = dvrBufferGetAHardwareBuffer(buffer1, &hardware_buffer1); ASSERT_EQ(0, e1); ASSERT_NE(nullptr, hardware_buffer1); AHardwareBuffer* hardware_buffer2 = nullptr; int e2 = dvrBufferGetAHardwareBuffer(buffer2, &hardware_buffer2); ASSERT_EQ(0, e2); ASSERT_NE(nullptr, hardware_buffer1); ASSERT_NE(nullptr, hardware_buffer2); AHardwareBuffer_Desc desc1 = {}; AHardwareBuffer_describe(hardware_buffer1, &desc1); Loading Loading @@ -88,6 +89,10 @@ TEST_F(DvrNamedBufferTest, TestNamedBuffersSameName) { ASSERT_EQ(desc3.usage1, 0u); dvrBufferDestroy(buffer3); AHardwareBuffer_release(hardware_buffer1); AHardwareBuffer_release(hardware_buffer2); AHardwareBuffer_release(hardware_buffer3); } TEST_F(DvrNamedBufferTest, TestMultipleNamedBuffers) { Loading Loading @@ -141,6 +146,7 @@ TEST_F(DvrNamedBufferTest, TestNamedBufferUsage) { ASSERT_EQ(desc.usage0, AHARDWAREBUFFER_USAGE0_VIDEO_ENCODE); dvrBufferDestroy(setup_buffer); AHardwareBuffer_release(hardware_buffer); } Loading Loading
libs/vr/libdvr/dvr_buffer.cpp +17 −13 Original line number Diff line number Diff line #include "include/dvr/dvr_buffer.h" #include <android/hardware_buffer.h> #include <private/dvr/buffer_hub_client.h> #include <ui/GraphicBuffer.h> Loading Loading @@ -54,6 +55,16 @@ void InitializeGraphicBuffer(const dvr::BufferHubBuffer* buffer, false /* keep ownership */)); } int ConvertToAHardwareBuffer(GraphicBuffer* graphic_buffer, AHardwareBuffer** hardware_buffer) { if (!hardware_buffer || !graphic_buffer) { return -EINVAL; } *hardware_buffer = reinterpret_cast<AHardwareBuffer*>(graphic_buffer); AHardwareBuffer_acquire(*hardware_buffer); return 0; } } // anonymous namespace extern "C" { Loading @@ -68,9 +79,8 @@ int dvrWriteBufferGetId(DvrWriteBuffer* write_buffer) { int dvrWriteBufferGetAHardwareBuffer(DvrWriteBuffer* write_buffer, AHardwareBuffer** hardware_buffer) { *hardware_buffer = reinterpret_cast<AHardwareBuffer*>( write_buffer->write_buffer->buffer()->buffer().get()); return 0; return ConvertToAHardwareBuffer( write_buffer->write_buffer->buffer()->buffer().get(), hardware_buffer); } int dvrWriteBufferPost(DvrWriteBuffer* write_buffer, int ready_fence_fd, Loading Loading @@ -99,9 +109,8 @@ int dvrReadBufferGetId(DvrReadBuffer* read_buffer) { int dvrReadBufferGetAHardwareBuffer(DvrReadBuffer* read_buffer, AHardwareBuffer** hardware_buffer) { *hardware_buffer = reinterpret_cast<AHardwareBuffer*>( read_buffer->read_buffer->buffer()->buffer().get()); return 0; return ConvertToAHardwareBuffer( read_buffer->read_buffer->buffer()->buffer().get(), hardware_buffer); } int dvrReadBufferAcquire(DvrReadBuffer* read_buffer, int* ready_fence_fd, Loading @@ -127,13 +136,8 @@ void dvrBufferDestroy(DvrBuffer* buffer) { delete buffer; } int dvrBufferGetAHardwareBuffer(DvrBuffer* buffer, AHardwareBuffer** hardware_buffer) { if (!hardware_buffer) { return -EINVAL; } *hardware_buffer = reinterpret_cast<AHardwareBuffer*>(buffer->buffer->buffer().get()); return 0; return ConvertToAHardwareBuffer(buffer->buffer->buffer().get(), hardware_buffer); } const struct native_handle* dvrWriteBufferGetNativeHandle( Loading
libs/vr/libdvr/include/dvr/dvr_buffer.h +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ struct native_handle; // Write buffer void dvrWriteBufferDestroy(DvrWriteBuffer* write_buffer); int dvrWriteBufferGetId(DvrWriteBuffer* write_buffer); // Caller must call AHardwareBuffer_release on hardware_buffer. int dvrWriteBufferGetAHardwareBuffer(DvrWriteBuffer* write_buffer, AHardwareBuffer** hardware_buffer); int dvrWriteBufferPost(DvrWriteBuffer* write_buffer, int ready_fence_fd, Loading @@ -30,6 +31,7 @@ const struct native_handle* dvrWriteBufferGetNativeHandle( // Read buffer void dvrReadBufferDestroy(DvrReadBuffer* read_buffer); int dvrReadBufferGetId(DvrReadBuffer* read_buffer); // Caller must call AHardwareBuffer_release on hardware_buffer. int dvrReadBufferGetAHardwareBuffer(DvrReadBuffer* read_buffer, AHardwareBuffer** hardware_buffer); int dvrReadBufferAcquire(DvrReadBuffer* read_buffer, int* ready_fence_fd, Loading @@ -41,6 +43,7 @@ const struct native_handle* dvrReadBufferGetNativeHandle( // Buffer void dvrBufferDestroy(DvrBuffer* buffer); // Caller must call AHardwareBuffer_release on hardware_buffer. int dvrBufferGetAHardwareBuffer(DvrBuffer* buffer, AHardwareBuffer** hardware_buffer); const struct native_handle* dvrBufferGetNativeHandle(DvrBuffer* buffer); Loading
libs/vr/libdvr/tests/dvr_named_buffer-test.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -42,11 +42,12 @@ TEST_F(DvrNamedBufferTest, TestNamedBuffersSameName) { AHardwareBuffer* hardware_buffer1 = nullptr; int e1 = dvrBufferGetAHardwareBuffer(buffer1, &hardware_buffer1); ASSERT_EQ(0, e1); ASSERT_NE(nullptr, hardware_buffer1); AHardwareBuffer* hardware_buffer2 = nullptr; int e2 = dvrBufferGetAHardwareBuffer(buffer2, &hardware_buffer2); ASSERT_EQ(0, e2); ASSERT_NE(nullptr, hardware_buffer1); ASSERT_NE(nullptr, hardware_buffer2); AHardwareBuffer_Desc desc1 = {}; AHardwareBuffer_describe(hardware_buffer1, &desc1); Loading Loading @@ -88,6 +89,10 @@ TEST_F(DvrNamedBufferTest, TestNamedBuffersSameName) { ASSERT_EQ(desc3.usage1, 0u); dvrBufferDestroy(buffer3); AHardwareBuffer_release(hardware_buffer1); AHardwareBuffer_release(hardware_buffer2); AHardwareBuffer_release(hardware_buffer3); } TEST_F(DvrNamedBufferTest, TestMultipleNamedBuffers) { Loading Loading @@ -141,6 +146,7 @@ TEST_F(DvrNamedBufferTest, TestNamedBufferUsage) { ASSERT_EQ(desc.usage0, AHARDWAREBUFFER_USAGE0_VIDEO_ENCODE); dvrBufferDestroy(setup_buffer); AHardwareBuffer_release(hardware_buffer); } Loading