summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--i965_drv_video/i965_drv_video.c2
-rw-r--r--libva.spec4
-rwxr-xr-xstyle_unify10
-rw-r--r--test/putsurface/Android.mk1
-rw-r--r--test/putsurface/loadsurface.h4
-rw-r--r--test/vainfo/Android.mk1
-rwxr-xr-xva/Android.mk32
-rw-r--r--va/Makefile.am2
-rw-r--r--va/android/Makefile.am4
-rw-r--r--va/android/va_android.cpp2
-rw-r--r--va/va.c36
-rw-r--r--va/va.h57
-rw-r--r--va/va_backend.h4
-rw-r--r--va/va_backend_tpi.h4
-rw-r--r--va/va_fool.c6
-rw-r--r--va/va_trace.c27
-rw-r--r--va/va_trace.h10
17 files changed, 173 insertions, 33 deletions
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 31f19dd..4a7397f 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -956,7 +956,7 @@ i965_BufferSetNumElements(VADriverContextP ctx,
} else {
obj_buffer->num_elements = num_elements;
if (obj_buffer->buffer_store != NULL) {
- obj_buffer->buffer_store->num_elements = num_elements;
+ obj_buffer->buffer_store->num_elements = num_elements;
}
}
diff --git a/libva.spec b/libva.spec
index bb51806..28842a3 100644
--- a/libva.spec
+++ b/libva.spec
@@ -79,6 +79,8 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/libva-x11.so.%{libversion}
%{_libdir}/libva-glx.so.1
%{_libdir}/libva-glx.so.%{libversion}
+%{_libdir}/libva-egl.so.1
+%{_libdir}/libva-egl.so.%{libversion}
%{_bindir}/vainfo
%{_bindir}/test_*
%{_bindir}/h264encode
@@ -95,10 +97,12 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/libva-tpi.so
%{_libdir}/libva-x11.so
%{_libdir}/libva-glx.so
+%{_libdir}/libva-egl.so
%{_libdir}/pkgconfig/libva.pc
%{_libdir}/pkgconfig/libva-tpi.pc
%{_libdir}/pkgconfig/libva-x11.pc
%{_libdir}/pkgconfig/libva-glx.pc
+%{_libdir}/pkgconfig/libva-egl.pc
%changelog
* Tue Jan 25 2011 Austin Yuan <shengquan.yuan@intel.com> 1.0.1
diff --git a/style_unify b/style_unify
new file mode 100755
index 0000000..4915e63
--- /dev/null
+++ b/style_unify
@@ -0,0 +1,10 @@
+#!/bin/bash
+file=$(find . -name "*.[ch]" -o -name "*.cpp")
+for i in $file
+do
+ echo $i
+ astyle --style=linux -s4 -c -s -p -U -H -n $i
+done
+
+
+
diff --git a/test/putsurface/Android.mk b/test/putsurface/Android.mk
index 9bf1438..8bcfd0c 100644
--- a/test/putsurface/Android.mk
+++ b/test/putsurface/Android.mk
@@ -14,6 +14,7 @@ LOCAL_CFLAGS += \
LOCAL_C_INCLUDES += \
$(TARGET_OUT_HEADERS)/libva
+LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := putsurface
LOCAL_SHARED_LIBRARIES := libva-android libva libdl libdrm libcutils libutils libui libsurfaceflinger_client
diff --git a/test/putsurface/loadsurface.h b/test/putsurface/loadsurface.h
index b14241f..1aac393 100644
--- a/test/putsurface/loadsurface.h
+++ b/test/putsurface/loadsurface.h
@@ -99,8 +99,8 @@ static int upload_surface(VADisplay va_dpy, VASurfaceID surface_id,
vaMapBuffer(va_dpy,surface_image.buf,&surface_p);
assert(VA_STATUS_SUCCESS == va_status);
- U_start = surface_p + surface_image.offsets[1];
- V_start = surface_p + surface_image.offsets[2];
+ U_start = (char *)surface_p + surface_image.offsets[1];
+ V_start = (char *)surface_p + surface_image.offsets[2];
/* assume surface is planar format */
yuvgen_planar(surface_image.width, surface_image.height,
diff --git a/test/vainfo/Android.mk b/test/vainfo/Android.mk
index b7c0c0b..0aac2cf 100644
--- a/test/vainfo/Android.mk
+++ b/test/vainfo/Android.mk
@@ -14,6 +14,7 @@ LOCAL_CFLAGS += \
LOCAL_C_INCLUDES += \
$(TARGET_OUT_HEADERS)/libva
+LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := vainfo
LOCAL_SHARED_LIBRARIES := libva-android libva libdl libdrm libcutils
diff --git a/va/Android.mk b/va/Android.mk
index f5be3d0..a5ff8d2 100755
--- a/va/Android.mk
+++ b/va/Android.mk
@@ -14,7 +14,7 @@ LOCAL_SRC_FILES := \
va.c \
va_trace.c \
va_fool.c \
- va_fool_getframe.c
+ va_fool_getframe.c
LOCAL_CFLAGS += \
-DANDROID \
@@ -34,6 +34,7 @@ LOCAL_COPY_HEADERS := \
LOCAL_COPY_HEADERS_TO := libva/va
+LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libva
LOCAL_SHARED_LIBRARIES := libdl libdrm libcutils
@@ -69,6 +70,7 @@ LOCAL_COPY_HEADERS_TO := libva/va
LOCAL_COPY_HEADERS := va_android.h
+LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libva-android
LOCAL_SHARED_LIBRARIES := libva
@@ -76,6 +78,33 @@ LOCAL_SHARED_LIBRARIES := libva
include $(BUILD_SHARED_LIBRARY)
+# For libva-egl
+# =====================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ egl/va_egl.c
+
+LOCAL_CFLAGS += \
+ -DANDROID
+
+LOCAL_C_INCLUDES += \
+ $(TARGET_OUT_HEADERS)/libva \
+ $(LOCAL_PATH)/x11
+
+LOCAL_COPY_HEADERS_TO := libva/va
+
+LOCAL_COPY_HEADERS := egl/va_egl.h egl/va_backend_egl.h
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE := libva-egl
+
+LOCAL_SHARED_LIBRARIES := libva
+
+include $(BUILD_SHARED_LIBRARY)
+
+
# For libva-tpi
# =====================================================
@@ -97,6 +126,7 @@ LOCAL_COPY_HEADERS := \
LOCAL_SHARED_LIBRARIES := libva
+LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libva-tpi
include $(BUILD_SHARED_LIBRARY)
diff --git a/va/Makefile.am b/va/Makefile.am
index a73fde7..0d955c4 100644
--- a/va/Makefile.am
+++ b/va/Makefile.am
@@ -93,7 +93,7 @@ DIST_SUBDIRS = x11 glx egl dummy
SUBDIRS = $(libva_x11_backenddir) $(libva_dummy_backenddir) $(libva_glx_backenddir) $(libva_egl_backenddir)
libvaincludedir = ${includedir}/va
-libvainclude_HEADERS = va.h va_tpi.h va_x11.h va_backend.h va_dummy.h va_version.h va_backend_tpi.h
+libvainclude_HEADERS = va.h va_tpi.h va_x11.h va_backend.h va_dummy.h va_version.h va_backend_tpi.h
DISTCLEANFILES = \
va_version.h
diff --git a/va/android/Makefile.am b/va/android/Makefile.am
index d86ea86..f7ca6f1 100644
--- a/va/android/Makefile.am
+++ b/va/android/Makefile.am
@@ -10,8 +10,8 @@
# secret laws and treaty provisions. No part of the Material may be used,
# copied, reproduced, modified, published, uploaded, posted, transmitted,
# distributed, or disclosed in any way without Intel's prior express written
-# permission.
-#
+# permission.
+#
# No license under any patent, copyright, trade secret or other intellectual
# property right is granted to or conferred upon you by disclosure or delivery
# of the Materials, either expressly, by implication, inducement, estoppel or
diff --git a/va/android/va_android.cpp b/va/android/va_android.cpp
index b4727aa..c0c2ded 100644
--- a/va/android/va_android.cpp
+++ b/va/android/va_android.cpp
@@ -328,7 +328,7 @@ VAStatus vaPutSurface (
destx, desty, destw, desth,
cliprects, number_cliprects, flags );
- return ctx->vtable.vaPutSurface( ctx, surface, static_cast<void*>(&draw), srcx, srcy, srcw, srch,
+ return ctx->vtable->vaPutSurface( ctx, surface, static_cast<void*>(&draw), srcx, srcy, srcw, srch,
destx, desty, destw, desth,
cliprects, number_cliprects, flags );
}
diff --git a/va/va.c b/va/va.c
index 2eea02b..f0f0082 100644
--- a/va/va.c
+++ b/va/va.c
@@ -28,6 +28,7 @@
#include "va_backend.h"
#include "va_trace.h"
#include "va_fool.h"
+#include "config.h"
#include <assert.h>
#include <stdarg.h>
@@ -191,7 +192,7 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
}
search_path = strdup((const char *)search_path);
- driver_dir = strtok_r((const char *)search_path, ":", &saveptr);
+ gdriver_dir = strtok_r((const char *)search_path, ":", &saveptr);
while(driver_dir)
{
void *handle = NULL;
@@ -430,6 +431,9 @@ VAStatus vaInitialize (
if (driver_name)
free(driver_name);
+
+ VA_TRACE(va_Initialize, dpy, major_version, minor_version);
+
return vaStatus;
}
@@ -459,6 +463,8 @@ VAStatus vaTerminate (
if (VA_STATUS_SUCCESS == vaStatus)
pDisplayContext->vaDestroy(pDisplayContext);
+ VA_TRACE(va_Terminate, dpy);
+
va_TraceEnd(dpy);
va_FoolEnd(dpy);
@@ -578,7 +584,7 @@ VAStatus vaCreateConfig (
ctx = CTX(dpy);
VA_FOOL(va_FoolCreateConfig, dpy, profile, entrypoint, attrib_list, num_attribs, config_id);
-
+
vaStatus = ctx->vtable->vaCreateConfig ( ctx, profile, entrypoint, attrib_list, num_attribs, config_id );
VA_TRACE(va_TraceCreateConfig, dpy, profile, entrypoint, attrib_list, num_attribs, config_id);
@@ -626,7 +632,7 @@ VAStatus vaCreateSurfaces (
VADriverContextP ctx;
VAStatus vaStatus;
int ret = 0;
-
+
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
@@ -704,11 +710,11 @@ VAStatus vaCreateBuffer (
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
int ret = 0;
-
+
VA_FOOL(va_FoolCreateBuffer, dpy, context, type, size, num_elements, data, buf_id);
if (ret)
return VA_STATUS_SUCCESS;
-
+
return ctx->vtable->vaCreateBuffer( ctx, context, type, size, num_elements, data, buf_id);
}
@@ -742,7 +748,7 @@ VAStatus vaMapBuffer (
VA_FOOL(va_FoolMapBuffer, dpy, buf_id, pbuf);
if (ret)
return VA_STATUS_SUCCESS;
-
+
va_status = ctx->vtable->vaMapBuffer( ctx, buf_id, pbuf );
if (va_status == VA_STATUS_SUCCESS)
@@ -760,11 +766,11 @@ VAStatus vaUnmapBuffer (
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
int ret = 0;
-
+
VA_FOOL(va_FoolUnmapBuffer, dpy, buf_id);
if (ret)
return VA_STATUS_SUCCESS;
-
+
return ctx->vtable->vaUnmapBuffer( ctx, buf_id );
}
@@ -804,7 +810,7 @@ VAStatus vaBeginPicture (
{
VADriverContextP ctx;
int ret = 0;
-
+
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
@@ -826,7 +832,7 @@ VAStatus vaRenderPicture (
{
VADriverContextP ctx;
int ret = 0;
-
+
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
@@ -847,7 +853,7 @@ VAStatus vaEndPicture (
VAStatus va_status;
VADriverContextP ctx;
int ret = 0;
-
+
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
@@ -872,7 +878,7 @@ VAStatus vaSyncSurface (
VAStatus va_status;
VADriverContextP ctx;
int ret = 0;
-
+
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
@@ -1116,14 +1122,14 @@ VAStatus vaQuerySubpictureFormats (
{
VADriverContextP ctx;
int ret = 0;
-
+
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
-
+
VA_FOOL(va_FoolQuerySubpictureFormats, dpy, format_list, flags, num_formats);
if (ret)
return VA_STATUS_SUCCESS;
-
+
return ctx->vtable->vaQuerySubpictureFormats ( ctx, format_list, flags, num_formats);
}
diff --git a/va/va.h b/va/va.h
index 596ee5a..0cf0117 100644
--- a/va/va.h
+++ b/va/va.h
@@ -60,7 +60,7 @@
* rev 0.31.2 (01/13/2011 Anthony Pabon)- Added a flag to indicate Subpicture coordinates are screen
* screen relative rather than source video relative.
* rev 0.32.0 (01/13/2011 Xiang Haihao) - Add profile into VAPictureParameterBufferVC1
- * update VAAPI to 0.32.0
+ * update VAAPI to 0.32.0
*
* Acknowledgements:
* Some concepts borrowed from XvMC and XvImage.
@@ -1320,12 +1320,14 @@ VAStatus vaBufferSetNumElements (
* SLICE_OVERFLOW(bit9): At least one slice in the current frame has
* exceeded the maximum slice size specified.
* BITRATE_OVERFLOW(bit10): The peak bitrate was exceeded for this frame.
+ * BITRATE_HIGH(bit11): The frame size got within the safety margin of the maximum size (VCM only)
* AIR_MB_OVER_THRESHOLD: the number of MBs adapted to Intra MB
*/
#define VA_CODED_BUF_STATUS_PICTURE_AVE_QP_MASK 0xff
#define VA_CODED_BUF_STATUS_LARGE_SLICE_MASK 0x100
#define VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK 0x200
#define VA_CODED_BUF_STATUS_BITRATE_OVERFLOW 0x400
+#define VA_CODED_BUF_STATUS_BITRATE_HIGH 0x800
#define VA_CODED_BUF_STATUS_AIR_MB_OVER_THRESHOLD 0xff0000
/*
@@ -1447,6 +1449,12 @@ VAStatus vaQuerySurfaceStatus (
VASurfaceStatus *status /* out */
);
+typedef enum
+{
+ VA_DECODE_SLICE_MISSING = 0,
+ VA_DECODE_MB_ERROR = 1,
+} VA_DECODE_ERROR_TYPE;
+
/*
* Client calls vaQuerySurfaceError with VA_STATUS_ERROR_DECODING_ERROR, server side returns
* an array of structure VASurfaceDecodeMBErrors, and the array is terminated by setting status=-1
@@ -1456,6 +1464,7 @@ typedef struct _VASurfaceDecodeMBErrors
int status; /* 1 if hardware has returned detailed info below, -1 means this record is invalid */
unsigned int start_mb; /* start mb address with errors */
unsigned int end_mb; /* end mb address with errors */
+ VA_DECODE_ERROR_TYPE decode_error_type;
} VASurfaceDecodeMBErrors;
/*
@@ -1842,6 +1851,23 @@ typedef enum
#define VA_OOL_DEBLOCKING_FALSE 0x00000000
#define VA_OOL_DEBLOCKING_TRUE 0x00000001
+/* Render mode */
+typedef enum
+{
+ VARenderModeUndefined = 0,
+ VARenderModeLocalOverlay = 1,
+ VARenderModeLocalGPU = 2,
+ VARenderModeExternalOverlay = 4,
+ VARenderModeExternalGPU = 8
+} VARenderMode;
+
+/* Render device */
+typedef enum
+{
+ VARenderDeviceUndefined = 0,
+ VARenderDeviceLocal = 1,
+ VARenderDeviceExternal = 2
+} VARenderDevice;
/* Currently defined display attribute types */
typedef enum
@@ -1853,7 +1879,8 @@ typedef enum
/* client can specifiy a background color for the target window
* the new feature of video conference,
* the uncovered area of the surface is filled by this color
- * also it will blend with the decoded video color*/
+ * also it will blend with the decoded video color
+ */
VADisplayAttribBackgroundColor = 4,
/*
* this is a gettable only attribute. For some implementations that use the
@@ -1888,6 +1915,32 @@ typedef enum
* b: background color of the drawable
*/
VADisplayAttribBlendColor = 13,
+ /*
+ * Indicate driver to skip painting color key or not.
+ * only applicable if the render is overlay
+ */
+ VADisplayAttribOverlayAutoPaintColorKey = 14,
+ /*
+ * customized overlay color key, the format is RGB888
+ * [23:16] = Red, [15:08] = Green, [07:00] = Blue.
+ */
+ VADisplayAttribOverlayColorKey = 15,
+ /*
+ * The hint for the implementation of vaPutSurface
+ * normally, the driver could use an overlay or GPU to render the surface on the screen
+ * this flag provides APP the flexibity to switch the render dynamically
+ */
+ VADisplayAttribRenderMode = 16,
+ /*
+ * specify if vaPutSurface needs to render into specified monitors
+ * one example is that one external monitor (e.g. HDMI) is enabled,
+ * but the window manager is not aware of it, and there is no associated drawable
+ */
+ VADisplayAttribRenderDevice = 17,
+ /*
+ * specify vaPutSurface render area if there is no drawable on the monitor
+ */
+ VADisplayAttribRenderRect = 18,
} VADisplayAttribType;
/* flags for VADisplayAttribute */
diff --git a/va/va_backend.h b/va/va_backend.h
index 736c680..060afd3 100644
--- a/va/va_backend.h
+++ b/va/va_backend.h
@@ -416,7 +416,7 @@ struct VADriverContext
* private API. The driver implementation is responsible for the
* allocation and deallocation of this structure.
*/
- void *vtable_tpi;
+ void *vtable_tpi;
void *native_dpy;
int x11_screen;
@@ -434,7 +434,7 @@ struct VADriverContext
void *dri_state;
void *glx; /* opaque for GLX code */
-
+
unsigned long reserved[45]; /* reserve for future add-ins, decrease the subscript accordingly */
};
diff --git a/va/va_backend_tpi.h b/va/va_backend_tpi.h
index 52f2073..f67b30f 100644
--- a/va/va_backend_tpi.h
+++ b/va/va_backend_tpi.h
@@ -52,7 +52,7 @@ struct VADriverVTableTPI
);
VAStatus (*vaCreateSurfacesForUserPtr)(
- VADisplay dpy,
+ VADriverContextP ctx,
int width,
int height,
int format,
@@ -70,7 +70,7 @@ struct VADriverVTableTPI
VAStatus (*vaPutSurfaceBuf) (
- VADisplay dpy,
+ VADriverContextP ctx,
VASurfaceID surface,
unsigned char* data,
int* data_len,
diff --git a/va/va_fool.c b/va/va_fool.c
index b2d7449..2d1ec4c 100644
--- a/va/va_fool.c
+++ b/va/va_fool.c
@@ -139,7 +139,7 @@ VAStatus vaLockSurface(VADisplay dpy,
unsigned int *chroma_u_offset,
unsigned int *chroma_v_offset,
unsigned int *buffer_name,
- void **buffer
+ void **buffer
);
VAStatus vaUnlockSurface(VADisplay dpy,
@@ -265,7 +265,7 @@ static int yuvgen_planar(
/* fill garbage data into the other field */
if (((field == VA_TOP_FIELD) && (row &1))
- || ((field == VA_BOTTOM_FIELD) && ((row &1)==0))) {
+ || ((field == VA_BOTTOM_FIELD) && ((row &1)==0))) {
memset(Y_row, 0xff, width);
continue;
}
@@ -554,7 +554,7 @@ VAStatus va_FoolUnmapBuffer(
if (FOOL_ENCODE(idx) || FOOL_DECODE(idx))
return 1; /* fool buffer creation */
-
+
return 0;
}
diff --git a/va/va_trace.c b/va/va_trace.c
index 553da70..c0c0d3f 100644
--- a/va/va_trace.c
+++ b/va/va_trace.c
@@ -404,6 +404,30 @@ void va_TraceSurface(VADisplay dpy)
va_TraceMsg(idx, "\tchecksum = 0x%02x\n", check_sum & 0xff);
}
+
+VAStatus va_TraceInitialize (
+ VADisplay dpy,
+ int *major_version, /* out */
+ int *minor_version /* out */
+)
+{
+ int i;
+ DPY2INDEX(dpy);
+
+ TRACE_FUNCNAME(idx);
+}
+
+VAStatus va_TraceTerminate (
+ VADisplay dpy
+)
+{
+ int i;
+ DPY2INDEX(dpy);
+
+ TRACE_FUNCNAME(idx);
+}
+
+
void va_TraceCreateConfig(
VADisplay dpy,
VAProfile profile,
@@ -1273,9 +1297,10 @@ void va_TraceBeginPicture(
DPY2INDEX(dpy);
TRACE_FUNCNAME(idx);
-
+
va_TraceMsg(idx, "\tcontext = 0x%08x\n", context);
va_TraceMsg(idx, "\trender_targets = 0x%08x\n", render_target);
+ va_TraceMsg(idx, "\tframe_count = #%d\n", trace_context[idx].trace_frame_no);
trace_context[idx].trace_rendertarget = render_target; /* for surface data dump after vaEndPicture */
diff --git a/va/va_trace.h b/va/va_trace.h
index 73f6f99..74c44c8 100644
--- a/va/va_trace.h
+++ b/va/va_trace.h
@@ -30,6 +30,16 @@ void va_TraceEnd(VADisplay dpy);
void va_TraceMsg(int idx, const char *msg, ...);
+VAStatus va_TraceInitialize (
+ VADisplay dpy,
+ int *major_version, /* out */
+ int *minor_version /* out */
+);
+
+VAStatus va_TraceTerminate (
+ VADisplay dpy
+);
+
void va_TraceCreateConfig(
VADisplay dpy,
VAProfile profile,