123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- Name
- ANDROID_recordable
- Name Strings
- EGL_ANDROID_recordable
- Contributors
- Jamie Gennis
- Contact
- Jamie Gennis, Google Inc. (jgennis 'at' google.com)
- Status
- Complete
- Version
- Version 2, July 15, 2011
- Number
- EGL Extension #51
- Dependencies
- Requires EGL 1.0
- This extension is written against the wording of the EGL 1.4 Specification
- Overview
- Android supports a number of different ANativeWindow implementations that
- can be used to create an EGLSurface. One implementation, which records the
- rendered image as a video each time eglSwapBuffers gets called, may have
- some device-specific restrictions. Because of this, some EGLConfigs may be
- incompatible with these ANativeWindows. This extension introduces a new
- boolean EGLConfig attribute that indicates whether the EGLConfig supports
- rendering to an ANativeWindow that records images to a video.
- New Types
- None.
- New Procedures and Functions
- None.
- New Tokens
- Accepted by the <attribute> parameter of eglGetConfigAttrib and
- the <attrib_list> parameter of eglChooseConfig:
- EGL_RECORDABLE_ANDROID 0x3142
- Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
- Section 3.4, Configuration Management, add a row to Table 3.1.
-
- Attribute Type Notes
- ---------------------- ------- --------------------------
- EGL_RECORDABLE_ANDROID boolean whether video recording is
- supported
- Section 3.4, Configuration Management, add a row to Table 3.4.
- Attribute Default Selection Sort Sort
- Criteria Order Priority
- ---------------------- ------------- --------- ----- --------
- EGL_RECORDABLE_ANDROID EGL_DONT_CARE Exact None
- Section 3.4, Configuration Management, add a paragraph at the end of the
- subsection titled Other EGLConfig Attribute Descriptions.
- EGL_RECORDABLE_ANDROID is a boolean indicating whether the config may
- be used to create an EGLSurface from an ANativeWindow that is a video
- recorder as indicated by the NATIVE_WINDOW_IS_VIDEO_RECORDER query on
- the ANativeWindow.
- Section 3.4.1, Querying Configurations, change the last paragraph as follow
- EGLConfigs are not sorted with respect to the parameters
- EGL_BIND_TO_TEXTURE_RGB, EGL_BIND_TO_TEXTURE_RGBA, EGL_CONFORMANT,
- EGL_LEVEL, EGL_NATIVE_RENDERABLE, EGL_MAX_SWAP_INTERVAL,
- EGL_MIN_SWAP_INTERVAL, EGL_RENDERABLE_TYPE, EGL_SURFACE_TYPE,
- EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_RED_VALUE,
- EGL_TRANSPARENT_GREEN_VALUE, EGL_TRANSPARENT_BLUE_VALUE, and
- EGL_RECORDABLE_ANDROID.
- Issues
- 1. Should this functionality be exposed as a new attribute or as a bit in
- the EGL_SURFACE_TYPE bitfield?
- RESOLVED: It should be a new attribute. It does not make sense to use up a
- bit in the limit-size bitfield for a platform-specific extension.
- 2. How should the new attribute affect the sorting of EGLConfigs?
- RESOLVED: It should not affect sorting. Some implementations may not have
- any drawback associated with using a recordable EGLConfig. Such
- implementations should not have to double-up some of their configs to one
- sort earlier than . Implementations that do have drawbacks can use the
- existing caveat mechanism to report this drawback to the client.
- 3. How is this extension expected to be implemented?
- RESPONSE: There are two basic approaches to implementing this extension
- that were considered during its design. In both cases it is assumed that a
- color space conversion must be performed at some point because most video
- encoding formats use a YUV color space. The two approaches are
- distinguished by the point at which this color space conversion is
- performed.
- One approach involves performing the color space conversion as part of the
- eglSwapBuffers call before queuing the rendered image to the ANativeWindow.
- In this case, the VisualID of the EGLConfig would correspond to a YUV
- Android HAL pixel format from which the video encoder can read. The
- EGLConfig would likely have the EGL_SLOW_CONFIG caveat because using that
- config to render normal window contents would result in an RGB -> YUV color
- space conversion when rendering the frame as well as a YUV -> RGB
- conversion when compositing the window.
- The other approach involves performing the color space conversion in the
- video encoder. In this case, the VisualID of the EGLConfig would
- correspond to an RGB HAL pixel format from which the video encoder can
- read. The EGLConfig would likely not need to have any caveat set, as using
- this config for normal window rendering would not have any added cost.
- Revision History
- #2 (Jamie Gennis, July 15, 2011)
- - Added issue 3.
- #1 (Jamie Gennis, July 8, 2011)
- - Initial draft.
|