102f4aeb0Sopenharmony_ciName
202f4aeb0Sopenharmony_ci
302f4aeb0Sopenharmony_ci    NV_stream_metadata
402f4aeb0Sopenharmony_ci
502f4aeb0Sopenharmony_ciName Strings
602f4aeb0Sopenharmony_ci
702f4aeb0Sopenharmony_ci    EGL_NV_stream_metadata
802f4aeb0Sopenharmony_ci
902f4aeb0Sopenharmony_ciContributors
1002f4aeb0Sopenharmony_ci
1102f4aeb0Sopenharmony_ci    Daniel Kartch
1202f4aeb0Sopenharmony_ci    Gajanan Bhat
1302f4aeb0Sopenharmony_ci    Laszlo Weber
1402f4aeb0Sopenharmony_ci    Lawrence Ibarria
1502f4aeb0Sopenharmony_ci    Miguel A. Vico
1602f4aeb0Sopenharmony_ci
1702f4aeb0Sopenharmony_ciContacts
1802f4aeb0Sopenharmony_ci
1902f4aeb0Sopenharmony_ci    Daniel Kartch, NVIDIA (dkartch 'at' nvidia 'dot' com)
2002f4aeb0Sopenharmony_ci
2102f4aeb0Sopenharmony_ciStatus
2202f4aeb0Sopenharmony_ci
2302f4aeb0Sopenharmony_ci    Complete
2402f4aeb0Sopenharmony_ci
2502f4aeb0Sopenharmony_ciVersion
2602f4aeb0Sopenharmony_ci
2702f4aeb0Sopenharmony_ci    Version 8 - July 31, 2015
2802f4aeb0Sopenharmony_ci
2902f4aeb0Sopenharmony_ciNumber
3002f4aeb0Sopenharmony_ci
3102f4aeb0Sopenharmony_ci    EGL Extension #93
3202f4aeb0Sopenharmony_ci
3302f4aeb0Sopenharmony_ci
3402f4aeb0Sopenharmony_ciExtension Type
3502f4aeb0Sopenharmony_ci
3602f4aeb0Sopenharmony_ci    EGL display extension
3702f4aeb0Sopenharmony_ci
3802f4aeb0Sopenharmony_ciDependencies
3902f4aeb0Sopenharmony_ci
4002f4aeb0Sopenharmony_ci    Requires EGL_KHR_stream
4102f4aeb0Sopenharmony_ci
4202f4aeb0Sopenharmony_ci    Interacts with EGL_EXT_device_base
4302f4aeb0Sopenharmony_ci
4402f4aeb0Sopenharmony_ciOverview
4502f4aeb0Sopenharmony_ci
4602f4aeb0Sopenharmony_ci    Application suites which make use of streams to transmit images may
4702f4aeb0Sopenharmony_ci    need to communicate additional data between the producer and
4802f4aeb0Sopenharmony_ci    consumer, synchronized with the frame updates. This data may change
4902f4aeb0Sopenharmony_ci    infrequently, such as a movie title and track number to be displayed
5002f4aeb0Sopenharmony_ci    to the user, or every frame, such as a focal length and exposure
5102f4aeb0Sopenharmony_ci    time used to process the image. Transmitting this data outside the
5202f4aeb0Sopenharmony_ci    scope of the stream may be inconvenient, particularly in the case of
5302f4aeb0Sopenharmony_ci    cross-process streams. But the nature of the data is highly
5402f4aeb0Sopenharmony_ci    application-dependent, so it is not feasible for an EGL
5502f4aeb0Sopenharmony_ci    implementation to define specific extensions for a broad range of
5602f4aeb0Sopenharmony_ci    application data.
5702f4aeb0Sopenharmony_ci
5802f4aeb0Sopenharmony_ci    This extension provides a means for an application (or application
5902f4aeb0Sopenharmony_ci    suite in the cross-process case) to associate arbitrary metadata
6002f4aeb0Sopenharmony_ci    with a stream. Multiple metadata fields are available, allowing them
6102f4aeb0Sopenharmony_ci    to be updated and used independently by separate subcomponents of
6202f4aeb0Sopenharmony_ci    producers and consumers, respectively. The format of the data is
6302f4aeb0Sopenharmony_ci    determined by the application, which is responsible for writing and
6402f4aeb0Sopenharmony_ci    reading it correctly.
6502f4aeb0Sopenharmony_ci
6602f4aeb0Sopenharmony_ciNew Types
6702f4aeb0Sopenharmony_ci
6802f4aeb0Sopenharmony_ci    None
6902f4aeb0Sopenharmony_ci
7002f4aeb0Sopenharmony_ciNew Functions
7102f4aeb0Sopenharmony_ci
7202f4aeb0Sopenharmony_ci    EGLBoolean eglQueryDisplayAttribNV(
7302f4aeb0Sopenharmony_ci        EGLDisplay   dpy,
7402f4aeb0Sopenharmony_ci        EGLint       attribute,
7502f4aeb0Sopenharmony_ci        EGLAttrib*   value);
7602f4aeb0Sopenharmony_ci
7702f4aeb0Sopenharmony_ci    EGLBoolean eglSetStreamMetadataNV(
7802f4aeb0Sopenharmony_ci        EGLDisplay   dpy,
7902f4aeb0Sopenharmony_ci        EGLStreamKHR stream,
8002f4aeb0Sopenharmony_ci        EGLint       n,
8102f4aeb0Sopenharmony_ci        EGLint       offset,
8202f4aeb0Sopenharmony_ci        EGLint       size,
8302f4aeb0Sopenharmony_ci        const void*  data);
8402f4aeb0Sopenharmony_ci
8502f4aeb0Sopenharmony_ci    EGLBoolean eglQueryStreamMetadataNV(
8602f4aeb0Sopenharmony_ci        EGLDisplay   dpy,
8702f4aeb0Sopenharmony_ci        EGLStreamKHR stream,
8802f4aeb0Sopenharmony_ci        EGLenum      name,
8902f4aeb0Sopenharmony_ci        EGLint       n,
9002f4aeb0Sopenharmony_ci        EGLint       offset,
9102f4aeb0Sopenharmony_ci        EGLint       size,
9202f4aeb0Sopenharmony_ci        void*        data);
9302f4aeb0Sopenharmony_ci
9402f4aeb0Sopenharmony_ciNew Tokens
9502f4aeb0Sopenharmony_ci
9602f4aeb0Sopenharmony_ci    Accepted as <attribute> by eglQueryDisplayAttribNV:
9702f4aeb0Sopenharmony_ci
9802f4aeb0Sopenharmony_ci        EGL_MAX_STREAM_METADATA_BLOCKS_NV            0x3250
9902f4aeb0Sopenharmony_ci        EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV        0x3251
10002f4aeb0Sopenharmony_ci        EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV        0x3252
10102f4aeb0Sopenharmony_ci
10202f4aeb0Sopenharmony_ci    Accepted as <name> by eglQueryStreamMetatdataNV:
10302f4aeb0Sopenharmony_ci
10402f4aeb0Sopenharmony_ci        EGL_PRODUCER_METADATA_NV                     0x3253
10502f4aeb0Sopenharmony_ci        EGL_CONSUMER_METADATA_NV                     0x3254
10602f4aeb0Sopenharmony_ci        EGL_PENDING_METADATA_NV                      0x3328
10702f4aeb0Sopenharmony_ci
10802f4aeb0Sopenharmony_ci    Accepted in <attrib_list> by eglCreateStreamKHR and as <attribute>
10902f4aeb0Sopenharmony_ci    by eglQueryStreamKHR:
11002f4aeb0Sopenharmony_ci
11102f4aeb0Sopenharmony_ci        EGL_METADATA0_SIZE_NV                        0x3255
11202f4aeb0Sopenharmony_ci        EGL_METADATA1_SIZE_NV                        0x3256
11302f4aeb0Sopenharmony_ci        EGL_METADATA2_SIZE_NV                        0x3257
11402f4aeb0Sopenharmony_ci        EGL_METADATA3_SIZE_NV                        0x3258
11502f4aeb0Sopenharmony_ci
11602f4aeb0Sopenharmony_ci        EGL_METADATA0_TYPE_NV                        0x3259
11702f4aeb0Sopenharmony_ci        EGL_METADATA1_TYPE_NV                        0x325A
11802f4aeb0Sopenharmony_ci        EGL_METADATA2_TYPE_NV                        0x325B
11902f4aeb0Sopenharmony_ci        EGL_METADATA3_TYPE_NV                        0x325C
12002f4aeb0Sopenharmony_ci
12102f4aeb0Sopenharmony_ci
12202f4aeb0Sopenharmony_ciAdd to section "3.3 EGL Queries"
12302f4aeb0Sopenharmony_ci
12402f4aeb0Sopenharmony_ci    To query attributes of an initialized display, call
12502f4aeb0Sopenharmony_ci
12602f4aeb0Sopenharmony_ci        EGLBoolean eglQueryDisplayAttribNV(
12702f4aeb0Sopenharmony_ci            EGLDisplay   dpy,
12802f4aeb0Sopenharmony_ci            EGLint       attribute,
12902f4aeb0Sopenharmony_ci            EGLAttrib*   value)
13002f4aeb0Sopenharmony_ci
13102f4aeb0Sopenharmony_ci    On success, EGL_TRUE is returned, and the value associated with
13202f4aeb0Sopenharmony_ci    attribute <name> is returned in <value>.
13302f4aeb0Sopenharmony_ci
13402f4aeb0Sopenharmony_ci    If <name> is EGL_MAX_STREAM_METADATA_BLOCKS_NV, the total number
13502f4aeb0Sopenharmony_ci    of independent metadata blocks supported by each stream is returned.
13602f4aeb0Sopenharmony_ci    If <name> is EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV, the maximum size
13702f4aeb0Sopenharmony_ci    supported for an individual metadata block is returned. If <name> is
13802f4aeb0Sopenharmony_ci    EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV, the maximum combined size of
13902f4aeb0Sopenharmony_ci    all metadata blocks supported by a single stream is returned.
14002f4aeb0Sopenharmony_ci
14102f4aeb0Sopenharmony_ci    On failure, EGL_FALSE is returned.  An EGL_BAD_DISPLAY error is
14202f4aeb0Sopenharmony_ci    generated if <dpy> is not a valid initialized display. An
14302f4aeb0Sopenharmony_ci    EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid
14402f4aeb0Sopenharmony_ci    attribute name.
14502f4aeb0Sopenharmony_ci
14602f4aeb0Sopenharmony_ciIf EGL_EXT_device_base is present, eglQueryDisplayAttribNV is equivalent
14702f4aeb0Sopenharmony_cito eglQueryDisplayAttribEXT, and calls to either will return the same
14802f4aeb0Sopenharmony_civalues.
14902f4aeb0Sopenharmony_ci
15002f4aeb0Sopenharmony_ciAdd to table "3.10.4.4 EGLStream Attributes" in EGL_KHR_stream
15102f4aeb0Sopenharmony_ci
15202f4aeb0Sopenharmony_ci        Attribute                 Read/Write    Type    Section
15302f4aeb0Sopenharmony_ci        ------------------------  ----------   ------   ----------
15402f4aeb0Sopenharmony_ci        EGL_METADATA<n>_SIZE_NV       io       EGLint   3.10.4.x
15502f4aeb0Sopenharmony_ci        EGL_METADATA<n>_TYPE_NV       io       EGLint   3.10.4.x+1
15602f4aeb0Sopenharmony_ci
15702f4aeb0Sopenharmony_ciAdd new subsections to section "3.10.4 EGLStream Attributes" of
15802f4aeb0Sopenharmony_ciEGL_KHR_stream
15902f4aeb0Sopenharmony_ci
16002f4aeb0Sopenharmony_ci    3.10.4.x EGL_METADATA<n>_SIZE_NV
16102f4aeb0Sopenharmony_ci
16202f4aeb0Sopenharmony_ci    The EGL_METADATA<n>_SIZE_NV attribute indicates the size of the
16302f4aeb0Sopenharmony_ci    <n>th metadata block associated with a stream. If <n> is not less
16402f4aeb0Sopenharmony_ci    than the value of EGL_MAX_STREAM_METADATA_BLOCKS_NV for the parent
16502f4aeb0Sopenharmony_ci    EGLDisplay, the attribute is treated as unknown.
16602f4aeb0Sopenharmony_ci
16702f4aeb0Sopenharmony_ci    These attributes may only be set when the stream is created. The
16802f4aeb0Sopenharmony_ci    default value is 0. The value may not exceed that of
16902f4aeb0Sopenharmony_ci    EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV for the parent EGLDisplay.
17002f4aeb0Sopenharmony_ci    Furthermore, the total size of all metadata blocks may not exceed
17102f4aeb0Sopenharmony_ci    the value of EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV. If either of
17202f4aeb0Sopenharmony_ci    these restrictions are exceeded, an EGL_BAD_PARAMETER error is
17302f4aeb0Sopenharmony_ci    generated.
17402f4aeb0Sopenharmony_ci
17502f4aeb0Sopenharmony_ci    3.10.4.x+1 EGL_METADATA<n>_TYPE_NV
17602f4aeb0Sopenharmony_ci
17702f4aeb0Sopenharmony_ci    The EGL_METADATA<n>_TYPE_NV attribute indicates an optional
17802f4aeb0Sopenharmony_ci    application-defined type associated with the stream's <n>th metadata
17902f4aeb0Sopenharmony_ci    block. If <n> is not less than the value of
18002f4aeb0Sopenharmony_ci    EGL_MAX_STREAM_METADATA_BLOCKS_NV for the parent EGLDisplay, the
18102f4aeb0Sopenharmony_ci    attribute is treated as unknown.
18202f4aeb0Sopenharmony_ci
18302f4aeb0Sopenharmony_ci    These attributes may only be set when the stream is created. The
18402f4aeb0Sopenharmony_ci    default value is 0. It is not required that a type be provided for
18502f4aeb0Sopenharmony_ci    every metadata block for which a size has been specified. These may
18602f4aeb0Sopenharmony_ci    be used to help separate application components coordinate their use
18702f4aeb0Sopenharmony_ci    of the stream's metadata blocks.
18802f4aeb0Sopenharmony_ci
18902f4aeb0Sopenharmony_ciAdd new section to "3.10 EGLStreams" of EGL_KHR_stream
19002f4aeb0Sopenharmony_ci
19102f4aeb0Sopenharmony_ci    3.10.y EGLStream metadata
19202f4aeb0Sopenharmony_ci
19302f4aeb0Sopenharmony_ci    An application may associate arbitrary blocks of additional data
19402f4aeb0Sopenharmony_ci    with the stream, to be updated in sync with the frames. The contents
19502f4aeb0Sopenharmony_ci    and format of these data blocks are left to the application, subject
19602f4aeb0Sopenharmony_ci    to size restrictions imposed by the implementation. The application
19702f4aeb0Sopenharmony_ci    must specify the sizes of its metadata blocks at the time the stream
19802f4aeb0Sopenharmony_ci    is created. The contents may be completely or partially modified
19902f4aeb0Sopenharmony_ci    every frame or less frequently, as the application chooses. When a
20002f4aeb0Sopenharmony_ci    new frame is inserted into the stream, a snapshot of the current
20102f4aeb0Sopenharmony_ci    metadata contents are associated with the frame, and may then be
20202f4aeb0Sopenharmony_ci    queried from the stream.
20302f4aeb0Sopenharmony_ci
20402f4aeb0Sopenharmony_ci    The contents of all metadata blocks of non-zero size are initialized
20502f4aeb0Sopenharmony_ci    to zeroes. To modify the contents of a portion of a metadata block,
20602f4aeb0Sopenharmony_ci    call
20702f4aeb0Sopenharmony_ci
20802f4aeb0Sopenharmony_ci        EGLBoolean eglSetStreamMetadataNV(
20902f4aeb0Sopenharmony_ci            EGLDisplay   dpy,
21002f4aeb0Sopenharmony_ci            EGLStreamKHR stream,
21102f4aeb0Sopenharmony_ci            EGLint       n,
21202f4aeb0Sopenharmony_ci            EGLint       offset,
21302f4aeb0Sopenharmony_ci            EGLint       size,
21402f4aeb0Sopenharmony_ci            const void*  data)
21502f4aeb0Sopenharmony_ci
21602f4aeb0Sopenharmony_ci    On success, EGL_TRUE is returned and the first <size> bytes pointed
21702f4aeb0Sopenharmony_ci    to by <data> will be copied to the <n>th metadata block of <stream>,
21802f4aeb0Sopenharmony_ci    starting at <offset> bytes from the beginning of the block. This
21902f4aeb0Sopenharmony_ci    data will be associated with all subsequent frames inserted into the
22002f4aeb0Sopenharmony_ci    stream until the contents are next modified.
22102f4aeb0Sopenharmony_ci
22202f4aeb0Sopenharmony_ci    On failure, EGL_FALSE is returned
22302f4aeb0Sopenharmony_ci        - An EGL_BAD_DISPLAY error is generated if <dpy> is not a valid
22402f4aeb0Sopenharmony_ci          display.
22502f4aeb0Sopenharmony_ci        - An EGL_BAD_STREAM_KHR error is generated if <stream> is not a
22602f4aeb0Sopenharmony_ci          valid stream associated with <dpy>.
22702f4aeb0Sopenharmony_ci        - An EGL_BAD_STATE_KHR error is generated if the state of
22802f4aeb0Sopenharmony_ci          <stream> is not EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR,
22902f4aeb0Sopenharmony_ci          EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR, or
23002f4aeb0Sopenharmony_ci          EGL_STREAM_STATE_EMPTY_KHR.
23102f4aeb0Sopenharmony_ci        - An EGL_BAD_ACCESS error is generated if the producer and
23202f4aeb0Sopenharmony_ci          consumer endpoints of the stream are represented by separate
23302f4aeb0Sopenharmony_ci          EGLStream objects, and the producer is not attached to
23402f4aeb0Sopenharmony_ci          <stream>.
23502f4aeb0Sopenharmony_ci        - An EGL_BAD_PARAMETER error is generated if <n> is negative or
23602f4aeb0Sopenharmony_ci          is equal to or greather than the value of
23702f4aeb0Sopenharmony_ci          EGL_MAX_STREAM_METADATA_BLOCKS_NV for <dpy>.
23802f4aeb0Sopenharmony_ci        - An EGL_BAD_PARAMETER error is generated if <offset> or <size>
23902f4aeb0Sopenharmony_ci          are negative, or if <offset>+<size> is greater than the value
24002f4aeb0Sopenharmony_ci          of EGL_METADATA<n>_SIZE_NV for <stream>.
24102f4aeb0Sopenharmony_ci
24202f4aeb0Sopenharmony_ci    If <data> does not point to valid readable memory of at least <size>
24302f4aeb0Sopenharmony_ci    bytes, undefined behavior will result. If the value of <size> is
24402f4aeb0Sopenharmony_ci    zero, no error will occur, but the function will have no effect.
24502f4aeb0Sopenharmony_ci
24602f4aeb0Sopenharmony_ci    To query the contents of a metadata block for a frame, call
24702f4aeb0Sopenharmony_ci
24802f4aeb0Sopenharmony_ci        EGLBoolean eglQueryStreamMetadataNV(
24902f4aeb0Sopenharmony_ci            EGLDisplay   dpy,
25002f4aeb0Sopenharmony_ci            EGLStreamKHR stream,
25102f4aeb0Sopenharmony_ci            EGLenum      name,
25202f4aeb0Sopenharmony_ci            EGLint       n,
25302f4aeb0Sopenharmony_ci            EGLint       offset,
25402f4aeb0Sopenharmony_ci            EGLint       size,
25502f4aeb0Sopenharmony_ci            void*        data)
25602f4aeb0Sopenharmony_ci
25702f4aeb0Sopenharmony_ci    On success, EGL_TRUE is returned and <size> bytes starting from the
25802f4aeb0Sopenharmony_ci    <offset>th byte of the <n>th metadata block of <stream> will be
25902f4aeb0Sopenharmony_ci    copied into the memory pointed to by <data>. If <name> is
26002f4aeb0Sopenharmony_ci    EGL_PRODUCER_METADATA_NV, the metadata will be taken from the frame
26102f4aeb0Sopenharmony_ci    most recently inserted into the stream by the producer. If <name> is
26202f4aeb0Sopenharmony_ci    EGL_CONSUMER_METADATA_NV, the metadata will be taken from the frame
26302f4aeb0Sopenharmony_ci    most recently acquired by the consumer. If <name> is
26402f4aeb0Sopenharmony_ci    EGL_PENDING_METADATA_NV, the metadata will be taken from the frame
26502f4aeb0Sopenharmony_ci    which would be obtained if an acquire operation were performed at
26602f4aeb0Sopenharmony_ci    the time of the query.
26702f4aeb0Sopenharmony_ci
26802f4aeb0Sopenharmony_ci    On failure, EGL_FALSE is returned
26902f4aeb0Sopenharmony_ci        - An EGL_BAD_DISPLAY error is generated if <dpy> is not a valid
27002f4aeb0Sopenharmony_ci          display.
27102f4aeb0Sopenharmony_ci        - An EGL_BAD_STREAM_KHR error is generated if <stream> is not a
27202f4aeb0Sopenharmony_ci          valid stream associated with <dpy>.
27302f4aeb0Sopenharmony_ci        - An EGL_BAD_STATE_KHR error is generated if the state of
27402f4aeb0Sopenharmony_ci          <stream> is not EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or
27502f4aeb0Sopenharmony_ci          EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR.
27602f4aeb0Sopenharmony_ci        - An EGL_BAD_ATTRIBUTE error is generated if <name> is not
27702f4aeb0Sopenharmony_ci          EGL_PRODUCER_METADATA_NV, EGL_CONSUMER_METADATA_NV, or
27802f4aeb0Sopenharmony_ci          EGL_PENDING_METADATA_NV.
27902f4aeb0Sopenharmony_ci        - An EGL_BAD_PARAMETER error is generated if <n> is negative or
28002f4aeb0Sopenharmony_ci          is equal to or greater than the value of
28102f4aeb0Sopenharmony_ci          EGL_MAX_STREAM_METADATA_BLOCKS_NV for <dpy>.
28202f4aeb0Sopenharmony_ci        - An EGL_BAD_PARAMETER error is generated if <offset> or <size>
28302f4aeb0Sopenharmony_ci          are negative, or if <offset>+<size> is greater than the value
28402f4aeb0Sopenharmony_ci          of EGL_METADATA<n>_SIZE_NV for <stream>.
28502f4aeb0Sopenharmony_ci
28602f4aeb0Sopenharmony_ci    If <data> does not point to valid writeable memory of at least
28702f4aeb0Sopenharmony_ci    <size> bytes, undefined behavior will result. If the value of <size>
28802f4aeb0Sopenharmony_ci    is zero, no error will occur, but the function will have no effect.
28902f4aeb0Sopenharmony_ci
29002f4aeb0Sopenharmony_ciIssues
29102f4aeb0Sopenharmony_ci
29202f4aeb0Sopenharmony_ci    1.  What happens if multiple calls are made to
29302f4aeb0Sopenharmony_ci        eglSetStreamMetadataNV without presenting a new frame?
29402f4aeb0Sopenharmony_ci
29502f4aeb0Sopenharmony_ci        RESOLVED: If the calls specify overlapping ranges of the same
29602f4aeb0Sopenharmony_ci        metadata block, the earlier data in the overlapped portion is
29702f4aeb0Sopenharmony_ci        overwritten. Only the most recent values are associated with
29802f4aeb0Sopenharmony_ci        the next frame when it is inserted into the stream.
29902f4aeb0Sopenharmony_ci
30002f4aeb0Sopenharmony_ci    2.  What happens if multiple frames are presented without calling
30102f4aeb0Sopenharmony_ci        eglSetStreamMetadataNV?
30202f4aeb0Sopenharmony_ci
30302f4aeb0Sopenharmony_ci        RESOLVED: The most recently provided data is reused.
30402f4aeb0Sopenharmony_ci
30502f4aeb0Sopenharmony_ciRevision History
30602f4aeb0Sopenharmony_ci
30702f4aeb0Sopenharmony_ci    #8  (July 31, 2015) Daniel Kartch
30802f4aeb0Sopenharmony_ci        - Cleaned up and added contact info for publication.
30902f4aeb0Sopenharmony_ci
31002f4aeb0Sopenharmony_ci    #7  (April 2, 2015) Miguel A. Vico
31102f4aeb0Sopenharmony_ci        - Assigned enumerated value for metadata of pending frame.
31202f4aeb0Sopenharmony_ci
31302f4aeb0Sopenharmony_ci    #6  (March 20, 2015) Daniel Kartch
31402f4aeb0Sopenharmony_ci        - Add query for metadata of pending frame.
31502f4aeb0Sopenharmony_ci
31602f4aeb0Sopenharmony_ci    #5  (January 15, 2015) Daniel Kartch
31702f4aeb0Sopenharmony_ci        - Add paragraph of supported attributes to description of
31802f4aeb0Sopenharmony_ci          eglQueryDisplayAttribNV.
31902f4aeb0Sopenharmony_ci        - Added/updated error conditions to set/query functions.
32002f4aeb0Sopenharmony_ci        - Fixed errors in prototypes.
32102f4aeb0Sopenharmony_ci
32202f4aeb0Sopenharmony_ci    #4  (January 6, 2015) Daniel Kartch
32302f4aeb0Sopenharmony_ci        - Fixed errors in prototypes.
32402f4aeb0Sopenharmony_ci        - Added enum values.
32502f4aeb0Sopenharmony_ci
32602f4aeb0Sopenharmony_ci    #3  (December 12, 2014) Daniel Kartch
32702f4aeb0Sopenharmony_ci        - Clarified language on how metadata becomes associated with
32802f4aeb0Sopenharmony_ci          frames inserted into the stream.
32902f4aeb0Sopenharmony_ci        - Fixed typos.
33002f4aeb0Sopenharmony_ci
33102f4aeb0Sopenharmony_ci    #2  (December 12, 2014) Daniel Kartch
33202f4aeb0Sopenharmony_ci        - Added offset and size to Set and Query functions.
33302f4aeb0Sopenharmony_ci
33402f4aeb0Sopenharmony_ci    #1  (December 11, 2014) Daniel Kartch
33502f4aeb0Sopenharmony_ci        - Initial draft
336