| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (c) 2007-2009 Intel Corporation. All Rights Reserved. | 2  * Copyright (c) 2007-2009 Intel Corporation. All Rights Reserved. | 
| 3  * | 3  * | 
| 4  * Permission is hereby granted, free of charge, to any person obtaining a | 4  * Permission is hereby granted, free of charge, to any person obtaining a | 
| 5  * copy of this software and associated documentation files (the | 5  * copy of this software and associated documentation files (the | 
| 6  * "Software"), to deal in the Software without restriction, including | 6  * "Software"), to deal in the Software without restriction, including | 
| 7  * without limitation the rights to use, copy, modify, merge, publish, | 7  * without limitation the rights to use, copy, modify, merge, publish, | 
| 8  * distribute, sub license, and/or sell copies of the Software, and to | 8  * distribute, sub license, and/or sell copies of the Software, and to | 
| 9  * permit persons to whom the Software is furnished to do so, subject to | 9  * permit persons to whom the Software is furnished to do so, subject to | 
| 10  * the following conditions: | 10  * the following conditions: | 
| 11  * | 11  * | 
| 12  * The above copyright notice and this permission notice (including the | 12  * The above copyright notice and this permission notice (including the | 
| 13  * next paragraph) shall be included in all copies or substantial portions | 13  * next paragraph) shall be included in all copies or substantial portions | 
| 14  * of the Software. | 14  * of the Software. | 
| 15  * | 15  * | 
| 16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | 16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | 
| 17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | 17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | 
| 18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | 18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. | 
| 19  * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR | 19  * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR | 
| 20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | 20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | 
| 21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | 21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | 
| 22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 
| 23  */ | 23  */ | 
|  | 24 #ifndef _VA_TPI_H_ | 
|  | 25 #define _VA_TPI_H_ | 
| 24 | 26 | 
| 25 /* Wrap a CI (camera imaging) frame as a VA surface to share captured video betw
     een camear |  | 
| 26  * and VA encode. With frame_id, VA driver need to call CI interfaces to get the
      information |  | 
| 27  * of the frame, and to determine if the frame can be wrapped as a VA surface |  | 
| 28  * |  | 
| 29  * Application should make sure the frame is idle before the frame is passed int
     o VA stack |  | 
| 30  * and also a vaSyncSurface should be called before application tries to access 
     the frame |  | 
| 31  * from CI stack |  | 
| 32  */ |  | 
| 33 #include <va/va.h> | 27 #include <va/va.h> | 
| 34 | 28 | 
| 35 #ifdef __cplusplus | 29 #ifdef __cplusplus | 
| 36 extern "C" { | 30 extern "C" { | 
| 37 #endif | 31 #endif | 
| 38 | 32 | 
| 39 VAStatus vaCreateSurfaceFromCIFrame ( |  | 
| 40     VADisplay dpy, |  | 
| 41     unsigned long frame_id, |  | 
| 42     VASurfaceID *surface        /* out */ |  | 
| 43 ); |  | 
| 44 | 33 | 
| 45 VAStatus vaCreateSurfaceFromV4L2Buf( | 34 typedef enum { | 
| 46     VADisplay dpy, | 35     VAExternalMemoryNULL, /* it is not external buffer, but requires the impleme
     ntation allocates | 
| 47     int v4l2_fd,         /* file descriptor of V4L2 device */ | 36                            * the surface with the input attribute | 
| 48     struct v4l2_format *v4l2_fmt,       /* format of V4L2 */ | 37                            */ | 
| 49     struct v4l2_buffer *v4l2_buf,       /* V4L2 buffer */ | 38     VAExternalMemoryV4L2Buffer, | 
| 50     VASurfaceID *surface»       /* out */ | 39     VAExternalMemoryCIFrame, /* the memory is from camera frames and buffers poi
     nts the frame ID list */ | 
| 51 ); | 40     VAExternalMemoryUserPointer, /* the memory is malloc-ed and buffers points t
     o the buffers */ | 
|  | 41     VAExternalMemoryKernelDRMBufffer, /* the memory is from kernel DRM buffers a
     nd buffers points the | 
|  | 42                                        * DRM buffer handle list | 
|  | 43                                        */ | 
|  | 44     VAExternalMemoryAndroidGrallocBuffer, /* the memory is from Android Gralloc 
     memory, and buffers points | 
|  | 45                                            * the gralloc native_handle_t list | 
|  | 46                                            */ | 
|  | 47 } VASurfaceMemoryType; | 
|  | 48 | 
|  | 49 typedef struct _VASurfaceAttributeTPI { | 
|  | 50     VASurfaceMemoryType type; | 
|  | 51     unsigned int width; | 
|  | 52     unsigned int height; | 
|  | 53     unsigned int size; | 
|  | 54     unsigned int pixel_format; /* buffer format */ | 
|  | 55     unsigned int tiling; /* the memory is tiling or not */ | 
|  | 56     unsigned int luma_stride; /* luma stride, could be width aligned with a spec
     ial value */ | 
|  | 57     unsigned int chroma_u_stride; /* chroma stride */ | 
|  | 58     unsigned int chroma_v_stride; | 
|  | 59     unsigned int luma_offset; /* could be 0 */ | 
|  | 60     unsigned int chroma_u_offset; /* U offset from the beginning of the memory *
     / | 
|  | 61     unsigned int chroma_v_offset; /* V offset from the beginning of the memory *
     / | 
|  | 62     unsigned int count; /* buffer count for surface creation */ | 
|  | 63     unsigned int *buffers; /* buffer handles or user pointers */ | 
|  | 64     unsigned int reserved[4]; /* used to pass additional information, like | 
|  | 65                                * Android native window pointer | 
|  | 66                                */ | 
|  | 67 } VASurfaceAttributeTPI; | 
|  | 68 | 
| 52 | 69 | 
| 53 VAStatus vaPutSurfaceBuf ( | 70 VAStatus vaPutSurfaceBuf ( | 
| 54     VADisplay dpy, | 71     VADisplay dpy, | 
| 55     VASurfaceID surface, | 72     VASurfaceID surface, | 
| 56     unsigned char* data, | 73     unsigned char* data, | 
| 57     int* data_len, | 74     int* data_len, | 
| 58     short srcx, | 75     short srcx, | 
| 59     short srcy, | 76     short srcy, | 
| 60     unsigned short srcw, | 77     unsigned short srcw, | 
| 61     unsigned short srch, | 78     unsigned short srch, | 
| 62     short destx, | 79     short destx, | 
| 63     short desty, | 80     short desty, | 
| 64     unsigned short destw, | 81     unsigned short destw, | 
| 65     unsigned short desth, | 82     unsigned short desth, | 
| 66     VARectangle *cliprects, /* client supplied clip list */ | 83     VARectangle *cliprects, /* client supplied clip list */ | 
| 67     unsigned int number_cliprects, /* number of clip rects in the clip list */ | 84     unsigned int number_cliprects, /* number of clip rects in the clip list */ | 
| 68     unsigned int flags /* de-interlacing flags */ | 85     unsigned int flags /* de-interlacing flags */ | 
| 69 ); | 86 ); | 
| 70 | 87 | 
| 71 | 88 | 
| 72 /* | 89 VAStatus vaCreateSurfacesWithAttribute ( | 
| 73  * The surfaces could be shared and accessed with extern devices |  | 
| 74  * which has special requirements, e.g. stride alignment |  | 
| 75  * This API is used to force libVA video surfaces are allocated |  | 
| 76  * according to these external requirements |  | 
| 77  * Special API for V4L2 user pointer support |  | 
| 78  */ |  | 
| 79 VAStatus vaCreateSurfacesForUserPtr( |  | 
| 80     VADisplay dpy, | 90     VADisplay dpy, | 
| 81     int width, | 91     int width, | 
| 82     int height, | 92     int height, | 
| 83     int format, | 93     int format, | 
| 84     int num_surfaces, | 94     int num_surfaces, | 
| 85     VASurfaceID *surfaces,       /* out */ | 95     VASurfaceID *surfaces,       /* out */ | 
| 86     unsigned size, /* total buffer size need to be allocated */ | 96     VASurfaceAttributeTPI *attribute_tpi | 
| 87     unsigned int fourcc, /* expected fourcc */ |  | 
| 88     unsigned int luma_stride, /* luma stride, could be width aligned with a spec
     ial value */ |  | 
| 89     unsigned int chroma_u_stride, /* chroma stride */ |  | 
| 90     unsigned int chroma_v_stride, |  | 
| 91     unsigned int luma_offset, /* could be 0 */ |  | 
| 92     unsigned int chroma_u_offset, /* UV offset from the beginning of the memory 
     */ |  | 
| 93     unsigned int chroma_v_offset |  | 
| 94 ); | 97 ); | 
| 95 | 98 | 
| 96 /* |  | 
| 97  * Create surface from the Kernel buffer |  | 
| 98  */ |  | 
| 99 VAStatus vaCreateSurfaceFromKBuf( |  | 
| 100     VADisplay dpy, |  | 
| 101     int width, |  | 
| 102     int height, |  | 
| 103     int format, |  | 
| 104     VASurfaceID *surface,       /* out */ |  | 
| 105     unsigned int kbuf_handle, /* kernel buffer handle*/ |  | 
| 106     unsigned size, /* kernel buffer size */ |  | 
| 107     unsigned int kBuf_fourcc, /* expected fourcc */ |  | 
| 108     unsigned int luma_stride, /* luma stride, could be width aligned with a spec
     ial value */ |  | 
| 109     unsigned int chroma_u_stride, /* chroma stride */ |  | 
| 110     unsigned int chroma_v_stride, |  | 
| 111     unsigned int luma_offset, /* could be 0 */ |  | 
| 112     unsigned int chroma_u_offset, /* UV offset from the beginning of the memory 
     */ |  | 
| 113     unsigned int chroma_v_offset |  | 
| 114 ); |  | 
| 115 |  | 
| 116 |  | 
| 117 #ifdef __cplusplus | 99 #ifdef __cplusplus | 
| 118 } | 100 } | 
| 119 #endif | 101 #endif | 
|  | 102 | 
|  | 103 #endif | 
| OLD | NEW | 
|---|