Fixed strncpy isssue, should copy "\0" too
[profile/ivi/libva.git] / test / test_11.c
index 53a1bd5..8f3c4b8 100644 (file)
 
 #include "test_common.c"
 
+VAConfigID config;
+VAContextID context;
+VASurfaceID *surfaces;
+int total_surfaces;
+
 void pre()
 {
     test_init();
+
+    va_status = vaCreateConfig(va_dpy, VAProfileMPEG2Main, VAEntrypointVLD, NULL, 0, &config);
+    ASSERT( VA_STATUS_SUCCESS == va_status );
+    status("vaCreateConfig returns %08x\n", config);
+
+    int width = 352;
+    int height = 288;
+    int surface_count = 4;
+    total_surfaces = surface_count;
+    
+    surfaces = malloc(total_surfaces * sizeof(VASurfaceID));
+
+    // TODO: Don't assume VA_RT_FORMAT_YUV420 is supported / needed for each config
+    va_status = vaCreateSurfaces(va_dpy, width, height, VA_RT_FORMAT_YUV420, total_surfaces, surfaces);
+    ASSERT( VA_STATUS_SUCCESS == va_status );
+    
+    status("vaCreateContext with config %08x\n", config);
+    int flags = 0;
+    va_status = vaCreateContext( va_dpy, config, width, height, flags, surfaces, surface_count, &context );
+    ASSERT( VA_STATUS_SUCCESS == va_status );
+}
+
+void test_unique_buffers(VABufferID *buffer_list, int buffer_count)
+{
+    int i,j;
+    
+    for(i = 0; i < buffer_count; i++)
+    {
+        for(j = 0; j < i; j++)
+        {
+            ASSERT(buffer_list[i] != buffer_list[j]);
+        }
+    }
 }
 
 VABufferType buffer_types[] =
@@ -42,7 +80,6 @@ VABufferType buffer_types[] =
   VAMacroblockParameterBufferType,
   VAResidualDataBufferType,
   VADeblockingParameterBufferType,
-  VAImageBufferType
 };
 
 unsigned int buffer_sizes[] =
@@ -56,11 +93,13 @@ unsigned int buffer_sizes[] =
   sizeof(VAMacroblockParameterBufferMPEG2),
   32*1024,
   15*1024,
-  32*1024,
 };
 
+
 #define NUM_BUFFER_TYPES       (sizeof(buffer_types) / sizeof(VABufferType))
 
+#define DEAD_BUFFER_ID ((VABufferID) 0x1234ffff)
+
 void test()
 {
     VABufferID buffer_ids[NUM_BUFFER_TYPES+1];
@@ -70,9 +109,6 @@ void test()
     for(i=0; i < NUM_BUFFER_TYPES; i++)
     {
         uint32_t *data;
-        va_status = vaCreateBuffer(va_dpy, buffer_types[i], &buffer_ids[i]);
-        ASSERT( VA_STATUS_SUCCESS == va_status );
-        status("vaCreateBuffer created buffer %08x of type %d\n", buffer_ids[i], buffer_types[i]);
 
         input_data[i] = malloc(buffer_sizes[i]+4);
         ASSERT(input_data[i]);
@@ -88,9 +124,10 @@ void test()
         ASSERT(data);
         memcpy(data, input_data[i], buffer_sizes[i]);
 
-        /* Send to VA Buffer */
-        va_status = vaBufferData(va_dpy, buffer_ids[i], buffer_sizes[i], 1, data);
+        /* Create buffer and fill with data */
+        va_status = vaCreateBuffer(va_dpy, context, buffer_types[i], buffer_sizes[i], 1, data, &buffer_ids[i]);
         ASSERT( VA_STATUS_SUCCESS == va_status );
+        status("vaCreateBuffer created buffer %08x of type %d\n", buffer_ids[i], buffer_types[i]);
         
         /* Wipe secondary buffer */
         memset(data, 0, buffer_sizes[i]);
@@ -101,9 +138,6 @@ void test()
     {
         void *data = NULL;
         /* Fetch VA Buffer */
-        va_status = vaBufferData(va_dpy, buffer_ids[i], buffer_sizes[i], 1, NULL);
-        ASSERT( VA_STATUS_SUCCESS == va_status );
-        
         va_status = vaMapBuffer(va_dpy, buffer_ids[i], &data);
         ASSERT( VA_STATUS_SUCCESS == va_status );
         status("vaMapBuffer mapped buffer %08x\n", buffer_ids[i]);
@@ -124,7 +158,22 @@ void test()
     }
 }
 
+
+
 void post()
 {
+    status("vaDestroyContext for context %08x\n", context);
+    va_status = vaDestroyContext( va_dpy, context );
+    ASSERT( VA_STATUS_SUCCESS == va_status );
+
+    status("vaDestroyConfig for config %08x\n", config);
+    va_status = vaDestroyConfig( va_dpy, config );
+    ASSERT( VA_STATUS_SUCCESS == va_status );
+    
+    va_status = vaDestroySurfaces(va_dpy, surfaces, total_surfaces);
+    ASSERT( VA_STATUS_SUCCESS == va_status );
+    
+    free(surfaces);
+
     test_terminate();
 }