From acb7b5dfc804d2e6b2e75b688f536fd38d75641a Mon Sep 17 00:00:00 2001 From: Pannag Sanketi Date: Fri, 10 Jun 2011 18:30:30 -0700 Subject: [PATCH] Adding SurfaceEncoder for encoding FilterFrames Adding SurfaceEncoder which can be used to encode custom frame data. In a sense, it is reverse of what SurfaceTexture does. SurfaceEncoder takes in frames from a native window and passes them to an encoder, thus acting like a MediaSource. It uses GRAlloc buffers underneath for passing data. The client side sets the geometry, format in the beginning, which cannot be changed while the recording is going on. Currently, there is no common pixel format that both GRAlloc and HAL understand. Also, the encoder cannot encode using the data from the GRAlloc buffers. The SurfaceEncoder_test examines mainly the buffer passage since true encoding cannot be done at this point. SimpleDummyRecorder 'reads' the frames in the same thread as the start(), whereas DummyRecorder 'reads' in a separate thread much like the MPEG4Writer. The test with DummyRecorder is much closer to the real encoding implementation. Related to bug id: 4529323 Change-Id: I58ec19a150f8fe4d6195196dc44f55002b46c7c8 --- include/ui/PixelFormat.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/ui/PixelFormat.h b/include/ui/PixelFormat.h index f46f25c36..848c5a114 100644 --- a/include/ui/PixelFormat.h +++ b/include/ui/PixelFormat.h @@ -55,7 +55,7 @@ enum { PIXEL_FORMAT_OPAQUE = -1, // System chooses an opaque format (no alpha bits required) - + // real pixel formats supported for rendering ----------------------------- PIXEL_FORMAT_RGBA_8888 = HAL_PIXEL_FORMAT_RGBA_8888, // 4x8-bit RGBA @@ -84,7 +84,7 @@ struct PixelFormatInfo INDEX_GREEN = 2, INDEX_BLUE = 3 }; - + enum { // components ALPHA = 1, RGB = 2, @@ -98,10 +98,10 @@ struct PixelFormatInfo uint8_t h; uint8_t l; }; - + inline PixelFormatInfo() : version(sizeof(PixelFormatInfo)) { } size_t getScanlineSize(unsigned int width) const; - size_t getSize(size_t ci) const { + size_t getSize(size_t ci) const { return (ci <= 3) ? (cinfo[ci].h - cinfo[ci].l) : 0; } size_t version; @@ -112,7 +112,7 @@ struct PixelFormatInfo szinfo cinfo[4]; struct { uint8_t h_alpha; - uint8_t l_alpha; + uint8_t l_alpha; uint8_t h_red; uint8_t l_red; uint8_t h_green;