Hello community,

here is the log from the commit of package libvdpau-va-gl for openSUSE:Factory 
checked in at 2016-03-04 19:30:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libvdpau-va-gl (Old)
 and      /work/SRC/openSUSE:Factory/.libvdpau-va-gl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libvdpau-va-gl"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libvdpau-va-gl/libvdpau-va-gl.changes    
2016-02-26 00:35:46.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libvdpau-va-gl.new/libvdpau-va-gl.changes       
2016-03-04 19:30:37.000000000 +0100
@@ -1,0 +2,7 @@
+Fri Mar  4 07:46:25 UTC 2016 - [email protected]
+
+- Update to 0.3.6:
+  * core: Handle Constrained Baseline profile for H.264.
+  * misc: Bugfixes.
+
+-------------------------------------------------------------------

Old:
----
  libvdpau-va-gl-0.3.5.tar.gz

New:
----
  libvdpau-va-gl-0.3.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libvdpau-va-gl.spec ++++++
--- /var/tmp/diff_new_pack.y5mEQ5/_old  2016-03-04 19:30:37.000000000 +0100
+++ /var/tmp/diff_new_pack.y5mEQ5/_new  2016-03-04 19:30:37.000000000 +0100
@@ -19,7 +19,7 @@
 %define soname  libvdpau_va_gl
 %define sover   1
 Name:           libvdpau-va-gl
-Version:        0.3.5
+Version:        0.3.6
 Release:        0
 Summary:        VDPAU driver with OpenGL/VAAPI backend
 License:        LGPL-3.0+

++++++ libvdpau-va-gl-0.3.5.tar.gz -> libvdpau-va-gl-0.3.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/ChangeLog 
new/libvdpau-va-gl-0.3.6/ChangeLog
--- old/libvdpau-va-gl-0.3.5/ChangeLog  2016-02-21 21:57:50.000000000 +0100
+++ new/libvdpau-va-gl-0.3.6/ChangeLog  2016-03-02 17:59:50.000000000 +0100
@@ -1,3 +1,9 @@
+2016-03-02  Rinat Ibragimov  <[email protected]>
+
+       * tag v0.3.6
+       * core: handle Constrained Baseline profile for H.264
+       * misc: bugfixes
+
 2016-02-21  Rinat Ibragimov  <[email protected]>
 
        * tag: v0.3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/CMakeLists.txt 
new/libvdpau-va-gl-0.3.6/src/CMakeLists.txt
--- old/libvdpau-va-gl-0.3.5/src/CMakeLists.txt 2016-02-21 21:57:50.000000000 
+0100
+++ new/libvdpau-va-gl-0.3.6/src/CMakeLists.txt 2016-03-02 17:59:50.000000000 
+0100
@@ -49,9 +49,6 @@
 target_link_libraries(${DRIVER_NAME} ${LINK_LIBRARIES})
 target_link_libraries(${DRIVER_NAME}_static ${LINK_LIBRARIES})
 
-# add_library (xinitthreads SHARED xinitthreads.c)
-# target_link_libraries (xinitthreads -lpthread -lX11)
-
 set_target_properties(${DRIVER_NAME}
        PROPERTIES
        VERSION 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/api-video-decoder.c 
new/libvdpau-va-gl-0.3.6/src/api-video-decoder.c
--- old/libvdpau-va-gl-0.3.5/src/api-video-decoder.c    2016-02-21 
21:57:50.000000000 +0100
+++ new/libvdpau-va-gl-0.3.6/src/api-video-decoder.c    2016-03-02 
17:59:50.000000000 +0100
@@ -59,22 +59,31 @@
     while (! final_try) {
         profile = next_profile;
         switch (profile) {
+        case VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE:
+            va_profile = VAProfileH264ConstrainedBaseline;
+            data->num_render_targets = NUM_RENDER_TARGETS_H264;
+            next_profile = VDP_DECODER_PROFILE_H264_BASELINE;
+            break;
+
         case VDP_DECODER_PROFILE_H264_BASELINE:
             va_profile = VAProfileH264Baseline;
             data->num_render_targets = NUM_RENDER_TARGETS_H264;
             next_profile = VDP_DECODER_PROFILE_H264_MAIN;
             break;
+
         case VDP_DECODER_PROFILE_H264_MAIN:
             va_profile = VAProfileH264Main;
             data->num_render_targets = NUM_RENDER_TARGETS_H264;
             next_profile = VDP_DECODER_PROFILE_H264_HIGH;
             break;
+
         case VDP_DECODER_PROFILE_H264_HIGH:
             va_profile = VAProfileH264High;
             data->num_render_targets = NUM_RENDER_TARGETS_H264;
             // there is no more advanced profile, so it's final try
             final_try = 1;
             break;
+
         default:
             traceError("error (%s): decoder %s not implemented\n", __func__,
                        reverse_decoder_profile(profile));
@@ -349,20 +358,28 @@
         *is_supported = available_profiles.mpeg2_simple;
         *max_level = VDP_DECODER_LEVEL_MPEG2_HL;
         break;
+
     case VDP_DECODER_PROFILE_MPEG2_MAIN:
         *is_supported = available_profiles.mpeg2_main;
         *max_level = VDP_DECODER_LEVEL_MPEG2_HL;
         break;
 
+    case VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE:
+        *is_supported = available_profiles.h264_baseline || 
available_profiles.h264_main;
+        *max_level = VDP_DECODER_LEVEL_H264_5_1;
+        break;
+
     case VDP_DECODER_PROFILE_H264_BASELINE:
         *is_supported = available_profiles.h264_baseline;
         // TODO: Do underlying libva really support 5.1?
         *max_level = VDP_DECODER_LEVEL_H264_5_1;
         break;
+
     case VDP_DECODER_PROFILE_H264_MAIN:
         *is_supported = available_profiles.h264_main;
         *max_level = VDP_DECODER_LEVEL_H264_5_1;
         break;
+
     case VDP_DECODER_PROFILE_H264_HIGH:
         *is_supported = available_profiles.h264_high;
         *max_level = VDP_DECODER_LEVEL_H264_5_1;
@@ -372,10 +389,12 @@
         *is_supported = available_profiles.vc1_simple;
         *max_level = VDP_DECODER_LEVEL_VC1_SIMPLE_MEDIUM;
         break;
+
     case VDP_DECODER_PROFILE_VC1_MAIN:
         *is_supported = available_profiles.vc1_main;
         *max_level = VDP_DECODER_LEVEL_VC1_MAIN_HIGH;
         break;
+
     case VDP_DECODER_PROFILE_VC1_ADVANCED:
         *is_supported = available_profiles.vc1_advanced;
         *max_level = VDP_DECODER_LEVEL_VC1_ADVANCED_L4;
@@ -673,9 +692,10 @@
         goto quit;
     }
 
-    if (VDP_DECODER_PROFILE_H264_BASELINE == decoderData->profile ||
-        VDP_DECODER_PROFILE_H264_MAIN ==     decoderData->profile ||
-        VDP_DECODER_PROFILE_H264_HIGH ==     decoderData->profile)
+    if (decoderData->profile == VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE 
||
+        decoderData->profile == VDP_DECODER_PROFILE_H264_BASELINE ||
+        decoderData->profile == VDP_DECODER_PROFILE_H264_MAIN ||
+        decoderData->profile == VDP_DECODER_PROFILE_H264_HIGH)
     {
         // TODO: check exit code
         vdpDecoderRender_h264(decoder, decoderData, dstSurfData, picture_info,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/api-video-mixer.c 
new/libvdpau-va-gl-0.3.6/src/api-video-mixer.c
--- old/libvdpau-va-gl-0.3.5/src/api-video-mixer.c      2016-02-21 
21:57:50.000000000 +0100
+++ new/libvdpau-va-gl-0.3.6/src/api-video-mixer.c      2016-03-02 
17:59:50.000000000 +0100
@@ -13,6 +13,7 @@
 #include <stdlib.h>
 #include <va/va_x11.h>
 #include <vdpau/vdpau.h>
+#include <string.h>
 #include "api.h"
 #include "trace.h"
 
@@ -269,8 +270,28 @@
 vdpVideoMixerQueryParameterValueRange(VdpDevice device, VdpVideoMixerParameter 
parameter,
                                       void *min_value, void *max_value)
 {
-    (void)device; (void)parameter; (void)min_value; (void)max_value;
-    return VDP_STATUS_NO_IMPLEMENTATION;
+    uint32_t uint32_value;
+
+    switch (parameter) {
+    case VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH: // TODO: get actual 
limits
+        uint32_value = 16;
+        memcpy(min_value, &uint32_value, sizeof(uint32_value));
+        uint32_value = 4096;
+        memcpy(max_value, &uint32_value, sizeof(uint32_value));
+        return VDP_STATUS_OK;
+
+    case VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT: // TODO: get actual 
limits
+        uint32_value = 16;
+        memcpy(min_value, &uint32_value, sizeof(uint32_value));
+        uint32_value = 4096;
+        memcpy(max_value, &uint32_value, sizeof(uint32_value));
+        return VDP_STATUS_OK;
+
+    case VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE: // TODO
+    case VDP_VIDEO_MIXER_PARAMETER_LAYERS:      // TODO
+    default:
+        return VDP_STATUS_NO_IMPLEMENTATION;
+    }
 }
 
 VdpStatus
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/api-video-surface.c 
new/libvdpau-va-gl-0.3.6/src/api-video-surface.c
--- old/libvdpau-va-gl-0.3.5/src/api-video-surface.c    2016-02-21 
21:57:50.000000000 +0100
+++ new/libvdpau-va-gl-0.3.6/src/api-video-surface.c    2016-03-02 
17:59:50.000000000 +0100
@@ -134,12 +134,11 @@
 
     glx_ctx_push_thread_local(deviceData);
     glDeleteTextures(1, &videoSurfData->tex_id);
-
     GLenum gl_error = glGetError();
+    glx_ctx_pop();
 
     if (GL_NO_ERROR != gl_error) {
         traceError("error (%s): gl error %d\n", __func__, gl_error);
-        glx_ctx_pop();
         handle_release(surface);
         return VDP_STATUS_ERROR;
     }
@@ -162,7 +161,6 @@
         free(videoSurfData->u_plane);
     // do not free videoSurfData->v_plane, it's just pointer into the middle 
of u_plane
 
-    glx_ctx_pop();
     unref_device(deviceData);
     handle_expunge(surface);
     free(videoSurfData);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/h264-parse.c 
new/libvdpau-va-gl-0.3.6/src/h264-parse.c
--- old/libvdpau-va-gl-0.3.5/src/h264-parse.c   2016-02-21 21:57:50.000000000 
+0100
+++ new/libvdpau-va-gl-0.3.6/src/h264-parse.c   2016-03-02 17:59:50.000000000 
+0100
@@ -13,6 +13,23 @@
 #include <glib.h>
 #include "h264-parse.h"
 
+enum {
+    SLICE_TYPE_P =  0,
+    SLICE_TYPE_B =  1,
+    SLICE_TYPE_I =  2,
+    SLICE_TYPE_SP = 3,
+    SLICE_TYPE_SI = 4,
+};
+
+enum {
+    NAL_UNSPECIFIED  =  0,
+    NAL_SLICE        =  1,
+    NAL_SLICE_DATA_A =  2,
+    NAL_SLICE_DATA_B =  3,
+    NAL_SLICE_DATA_C =  4,
+    NAL_IDR_SLICE    =  5,
+};
+
 #define NOT_IMPLEMENTED(str)        assert(0 && "not implemented" && str)
 
 #define DESCRIBE(xparam, format)    fprintf(stderr, #xparam " = %" #format 
"\n", xparam)
@@ -102,22 +119,44 @@
     vasp->chroma_log2_weight_denom = sp->chroma_log2_weight_denom;
 
     vasp->luma_weight_l0_flag = sp->luma_weight_l0_flag;
-    for (int k = 0; k < 32; k ++) vasp->luma_weight_l0[k] = 
sp->luma_weight_l0[k];
-    for (int k = 0; k < 32; k ++) vasp->luma_offset_l0[k] = 
sp->luma_offset_l0[k];
+    for (int k = 0; k < 32; k ++)
+        vasp->luma_weight_l0[k] = sp->luma_weight_l0[k];
+
+    for (int k = 0; k < 32; k ++)
+        vasp->luma_offset_l0[k] = sp->luma_offset_l0[k];
+
     vasp->chroma_weight_l0_flag = sp->chroma_weight_l0_flag;
-    for (int k = 0; k < 32; k ++) vasp->chroma_weight_l0[k][0] = 
sp->chroma_weight_l0[k][0];
-    for (int k = 0; k < 32; k ++) vasp->chroma_weight_l0[k][1] = 
sp->chroma_weight_l0[k][1];
-    for (int k = 0; k < 32; k ++) vasp->chroma_offset_l0[k][0] = 
sp->chroma_offset_l0[k][0];
-    for (int k = 0; k < 32; k ++) vasp->chroma_offset_l0[k][1] = 
sp->chroma_offset_l0[k][1];
+    for (int k = 0; k < 32; k ++)
+        vasp->chroma_weight_l0[k][0] = sp->chroma_weight_l0[k][0];
+
+    for (int k = 0; k < 32; k ++)
+        vasp->chroma_weight_l0[k][1] = sp->chroma_weight_l0[k][1];
+
+    for (int k = 0; k < 32; k ++)
+        vasp->chroma_offset_l0[k][0] = sp->chroma_offset_l0[k][0];
+
+    for (int k = 0; k < 32; k ++)
+        vasp->chroma_offset_l0[k][1] = sp->chroma_offset_l0[k][1];
 
     vasp->luma_weight_l1_flag = sp->luma_weight_l1_flag;
-    for (int k = 0; k < 32; k ++) vasp->luma_weight_l1[k] = 
sp->luma_weight_l1[k];
-    for (int k = 0; k < 32; k ++) vasp->luma_offset_l1[k] = 
sp->luma_offset_l1[k];
+    for (int k = 0; k < 32; k ++)
+        vasp->luma_weight_l1[k] = sp->luma_weight_l1[k];
+
+    for (int k = 0; k < 32; k ++)
+        vasp->luma_offset_l1[k] = sp->luma_offset_l1[k];
+
     vasp->chroma_weight_l1_flag = sp->chroma_weight_l1_flag;
-    for (int k = 0; k < 32; k ++) vasp->chroma_weight_l1[k][0] = 
sp->chroma_weight_l1[k][0];
-    for (int k = 0; k < 32; k ++) vasp->chroma_weight_l1[k][1] = 
sp->chroma_weight_l1[k][1];
-    for (int k = 0; k < 32; k ++) vasp->chroma_offset_l1[k][0] = 
sp->chroma_offset_l1[k][0];
-    for (int k = 0; k < 32; k ++) vasp->chroma_offset_l1[k][1] = 
sp->chroma_offset_l1[k][1];
+    for (int k = 0; k < 32; k ++)
+        vasp->chroma_weight_l1[k][0] = sp->chroma_weight_l1[k][0];
+
+    for (int k = 0; k < 32; k ++)
+        vasp->chroma_weight_l1[k][1] = sp->chroma_weight_l1[k][1];
+
+    for (int k = 0; k < 32; k ++)
+        vasp->chroma_offset_l1[k][0] = sp->chroma_offset_l1[k][0];
+
+    for (int k = 0; k < 32; k ++)
+        vasp->chroma_offset_l1[k][1] = sp->chroma_offset_l1[k][1];
 }
 
 void
@@ -130,6 +169,12 @@
     p->BottomFieldOrderCnt  = 0;
 }
 
+struct comparison_fcn1_context {
+    int                  descending;
+    int                  what;
+    const VAPictureH264 *ReferenceFrames;
+};
+
 static
 gint
 comparison_fcn_1(gconstpointer p1, gconstpointer p2, gpointer context)
@@ -137,11 +182,7 @@
     const int idx_1 = *(const int *)p1;
     const int idx_2 = *(const int *)p2;
 
-    struct {
-        int descending;
-        int what;
-        const VAPictureH264 *ReferenceFrames;
-    } *ctx = context;
+    struct comparison_fcn1_context *ctx = context;
 
     int value1 = 0, value2 = 0;
     switch (ctx->what) {
@@ -178,13 +219,9 @@
 fill_ref_pic_list(struct slice_parameters *sp, const 
VAPictureParameterBufferH264 *vapp)
 {
     int idcs_asc[32], idcs_desc[32];
-    struct {
-        int descending;
-        int what;
-        const VAPictureH264 *ReferenceFrames;
-    } ctx;
+    struct comparison_fcn1_context ctx;
 
-    if (SLICE_TYPE_I == sp->slice_type || SLICE_TYPE_SI == sp->slice_type)
+    if (sp->slice_type == SLICE_TYPE_I || sp->slice_type == SLICE_TYPE_SI)
         return;
 
     ctx.ReferenceFrames = vapp->ReferenceFrames;
@@ -198,7 +235,7 @@
         frame_count ++;
     }
 
-    if (SLICE_TYPE_P == sp->slice_type || SLICE_TYPE_SP == sp->slice_type) {
+    if (sp->slice_type == SLICE_TYPE_P || sp->slice_type == SLICE_TYPE_SP) {
         // TODO: implement interlaced P slices
         ctx.what = 1;
         ctx.descending = 0;
@@ -215,7 +252,7 @@
             if (vapp->ReferenceFrames[idcs_asc[k]].flags & 
VA_PICTURE_H264_LONG_TERM_REFERENCE)
                 sp->RefPicList0[ptr++] = vapp->ReferenceFrames[idcs_asc[k]];
 
-    } else if (SLICE_TYPE_B == sp->slice_type && 
!vapp->pic_fields.bits.field_pic_flag) {
+    } else if (sp->slice_type == SLICE_TYPE_B && 
!vapp->pic_fields.bits.field_pic_flag) {
         ctx.what = 1;
         ctx.descending = 0;
         g_qsort_with_data(idcs_asc, frame_count, sizeof(idcs_asc[0]), 
&comparison_fcn_1, &ctx);
@@ -275,13 +312,15 @@
     sp.nal_ref_idc = rbsp_get_u(st, 2);
     sp.nal_unit_type = rbsp_get_u(st, 5);
 
-    if (14 == sp.nal_unit_type || 20 == sp.nal_unit_type) {
+    if (sp.nal_unit_type == 14 || sp.nal_unit_type == 20) {
         NOT_IMPLEMENTED("nal unit types 14 and 20");
     }
 
     sp.first_mb_in_slice = rbsp_get_uev(st);
     sp.slice_type = rbsp_get_uev(st);
-    if (sp.slice_type > 4) sp.slice_type -= 5;    // wrap 5-9 to 0-4
+
+    if (sp.slice_type > 4)
+        sp.slice_type -= 5;     // wrap 5-9 to 0-4
 
     // as now we know slice_type, time to fill RefPicListX
     fill_ref_pic_list(&sp, vapp);
@@ -301,12 +340,12 @@
         }
     }
     sp.idr_pic_id = 0;
-    if (NAL_IDR_SLICE == sp.nal_unit_type)    // IDR picture
+    if (sp.nal_unit_type == NAL_IDR_SLICE)    // IDR picture
         sp.idr_pic_id = rbsp_get_uev(st);
 
     sp.pic_order_cnt_lsb = 0;
     sp.delta_pic_order_cnt_bottom = 0;
-    if (0 == vapp->seq_fields.bits.pic_order_cnt_type) {
+    if (vapp->seq_fields.bits.pic_order_cnt_type == 0) {
         sp.pic_order_cnt_lsb =
             rbsp_get_u(st, 
vapp->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4 + 4);
         if (vapp->pic_fields.bits.pic_order_present_flag &&
@@ -316,8 +355,9 @@
         }
     }
 
-    sp.delta_pic_order_cnt[0] = sp.delta_pic_order_cnt[1] = 0;
-    if (1 == vapp->seq_fields.bits.pic_order_cnt_type &&
+    sp.delta_pic_order_cnt[0] = 0;
+    sp.delta_pic_order_cnt[1] = 0;
+    if (vapp->seq_fields.bits.pic_order_cnt_type == 1 &&
         !vapp->seq_fields.bits.delta_pic_order_always_zero_flag)
     {
         sp.delta_pic_order_cnt[0] = rbsp_get_sev(st);
@@ -330,28 +370,28 @@
         sp.redundant_pic_cnt = rbsp_get_uev(st);
 
     sp.direct_spatial_mv_pred_flag = 0;
-    if (SLICE_TYPE_B == sp.slice_type)
+    if (sp.slice_type == SLICE_TYPE_B)
         sp.direct_spatial_mv_pred_flag = rbsp_get_u(st, 1);
 
     sp.num_ref_idx_active_override_flag = 0;
     sp.num_ref_idx_l0_active_minus1 = 0;
     sp.num_ref_idx_l1_active_minus1 = 0;
-    if (SLICE_TYPE_P == sp.slice_type || SLICE_TYPE_SP == sp.slice_type ||
-        SLICE_TYPE_B == sp.slice_type)
+    if (sp.slice_type == SLICE_TYPE_P || sp.slice_type == SLICE_TYPE_SP ||
+        sp.slice_type == SLICE_TYPE_B)
     {
         sp.num_ref_idx_l0_active_minus1 = p_num_ref_idx_l0_active_minus1;
-        if (SLICE_TYPE_P != sp.slice_type)
-                sp.num_ref_idx_l1_active_minus1 = 
p_num_ref_idx_l1_active_minus1;
+        if (sp.slice_type != SLICE_TYPE_P)
+            sp.num_ref_idx_l1_active_minus1 = p_num_ref_idx_l1_active_minus1;
 
         sp.num_ref_idx_active_override_flag = rbsp_get_u(st, 1);
         if (sp.num_ref_idx_active_override_flag) {
             sp.num_ref_idx_l0_active_minus1 = rbsp_get_uev(st);
-            if (SLICE_TYPE_B == sp.slice_type)
+            if (sp.slice_type == SLICE_TYPE_B)
                 sp.num_ref_idx_l1_active_minus1 = rbsp_get_uev(st);
         }
     }
 
-    if (20 == sp.nal_unit_type) {
+    if (sp.nal_unit_type == 20) {
         NOT_IMPLEMENTED("nal unit type 20");
     } else {
         parse_ref_pic_list_modification(st, vapp, &sp);
@@ -365,8 +405,8 @@
     sp.chroma_weight_l0_flag = 0;
     sp.chroma_weight_l1_flag = 0;
     if ((vapp->pic_fields.bits.weighted_pred_flag &&
-        (SLICE_TYPE_P == sp.slice_type || SLICE_TYPE_SP == sp.slice_type)) ||
-        (1 == vapp->pic_fields.bits.weighted_bipred_idc && SLICE_TYPE_B == 
sp.slice_type))
+        (sp.slice_type == SLICE_TYPE_P || sp.slice_type == SLICE_TYPE_SP)) ||
+        (vapp->pic_fields.bits.weighted_bipred_idc == 1 && sp.slice_type == 
SLICE_TYPE_B))
     {
         parse_pred_weight_table(st, ChromaArrayType, &sp);
     }
@@ -377,15 +417,17 @@
 
     sp.cabac_init_idc = 0;
     if (vapp->pic_fields.bits.entropy_coding_mode_flag &&
-        SLICE_TYPE_I != sp.slice_type && SLICE_TYPE_SI != sp.slice_type)
-            sp.cabac_init_idc = rbsp_get_uev(st);
+        sp.slice_type != SLICE_TYPE_I && sp.slice_type != SLICE_TYPE_SI)
+    {
+        sp.cabac_init_idc = rbsp_get_uev(st);
+    }
 
     sp.slice_qp_delta = rbsp_get_sev(st);
 
     sp.sp_for_switch_flag = 0;
     sp.slice_qs_delta = 0;
-    if (SLICE_TYPE_SP == sp.slice_type || SLICE_TYPE_SI == sp.slice_type) {
-        if (SLICE_TYPE_SP == sp.slice_type)
+    if (sp.slice_type == SLICE_TYPE_SP || sp.slice_type == SLICE_TYPE_SI) {
+        if (sp.slice_type == SLICE_TYPE_SP)
             sp.sp_for_switch_flag = rbsp_get_u(st, 1);
         sp.slice_qs_delta = rbsp_get_sev(st);
     }
@@ -395,7 +437,7 @@
     sp.slice_beta_offset_div2 = 0;
     if (vapp->pic_fields.bits.deblocking_filter_control_present_flag) {
         sp.disable_deblocking_filter_idc = rbsp_get_uev(st);
-        if (1 != sp.disable_deblocking_filter_idc) {
+        if (sp.disable_deblocking_filter_idc != 1) {
             sp.slice_alpha_c0_offset_div2 = rbsp_get_sev(st);
             sp.slice_beta_offset_div2 = rbsp_get_sev(st);
         }
@@ -410,7 +452,6 @@
     do_fill_va_slice_parameter_buffer(&sp, vasp, st->bits_eaten);
 }
 
-
 static
 void
 parse_ref_pic_list_modification(rbsp_state_t *st, const 
VAPictureParameterBufferH264 *vapp,
@@ -419,7 +460,7 @@
     const int MaxFrameNum = 1 << 
(vapp->seq_fields.bits.log2_max_frame_num_minus4 + 4);
     const int MaxPicNum = (vapp->pic_fields.bits.field_pic_flag) ? 
2*MaxFrameNum : MaxFrameNum;
 
-    if (2 != sp->slice_type && 4 != sp->slice_type) {
+    if (sp->slice_type != SLICE_TYPE_I && sp->slice_type != SLICE_TYPE_SI) {
         int ref_pic_list_modification_flag_l0 = rbsp_get_u(st, 1);
         if (ref_pic_list_modification_flag_l0) {
             int modification_of_pic_nums_idc;
@@ -429,9 +470,9 @@
                 modification_of_pic_nums_idc = rbsp_get_uev(st);
                 if (modification_of_pic_nums_idc < 2) {
                     int abs_diff_pic_num_minus1 = rbsp_get_uev(st);
-                    if (0 == modification_of_pic_nums_idc) {
+                    if (modification_of_pic_nums_idc == 0) {
                         picNumL0 -= (abs_diff_pic_num_minus1 + 1);
-                    } else { // 1 == modification_of_pic_nums_idc
+                    } else { // modification_of_pic_nums_idc == 1
                         picNumL0 += (abs_diff_pic_num_minus1 + 1);
                     }
 
@@ -458,10 +499,12 @@
                     for (int k = refIdxL0; k <= 
sp->num_ref_idx_l0_active_minus1 + 1; k ++) {
                         if (sp->RefPicList0[k].frame_idx != picNumL0 &&
                             (sp->RefPicList0[k].flags & 
VA_PICTURE_H264_SHORT_TERM_REFERENCE))
-                                sp->RefPicList0[j++] = sp->RefPicList0[k];
+                        {
+                            sp->RefPicList0[j++] = sp->RefPicList0[k];
+                        }
                     }
 
-                } else if (2 == modification_of_pic_nums_idc) {
+                } else if (modification_of_pic_nums_idc == 2) {
                     NOT_IMPLEMENTED("long");
                     fprintf(stderr, "long_term_pic_num = %d\n", 
rbsp_get_uev(st));
                 }
@@ -471,18 +514,18 @@
         }
     }
 
-    if (1 == sp->slice_type) {
+    if (sp->slice_type == SLICE_TYPE_B) {
         int ref_pic_list_modification_flag_l1 = rbsp_get_u(st, 1);
         if (ref_pic_list_modification_flag_l1) {
             NOT_IMPLEMENTED("ref pic list modification 1"); // TODO: implement 
this
             int modification_of_pic_nums_idc;
             do {
                 modification_of_pic_nums_idc = rbsp_get_uev(st);
-                if (0 == modification_of_pic_nums_idc ||
-                    1 == modification_of_pic_nums_idc)
+                if (modification_of_pic_nums_idc == 0 ||
+                    modification_of_pic_nums_idc == 1)
                 {
                     fprintf(stderr, "abs_diff_pic_num_minus1 = %d\n", 
rbsp_get_uev(st));
-                } else if (2 == modification_of_pic_nums_idc) {
+                } else if (modification_of_pic_nums_idc == 2) {
                     fprintf(stderr, "long_term_pic_num = %d\n", 
rbsp_get_uev(st));
                 }
             } while (modification_of_pic_nums_idc != 3);
@@ -516,7 +559,7 @@
 {
     sp->luma_log2_weight_denom = rbsp_get_uev(st);
     sp->chroma_log2_weight_denom = 0;
-    if (0 != ChromaArrayType)
+    if (ChromaArrayType != 0)
         sp->chroma_log2_weight_denom = rbsp_get_uev(st);
 
     fill_default_pred_weight_table(sp);
@@ -532,7 +575,7 @@
             if (default_luma_weight != sp->luma_weight_l0[k])
                 sp->luma_weight_l0_flag = 1;
         }
-        if (0 != ChromaArrayType) {
+        if (ChromaArrayType != 0) {
             int chroma_weight_l0_flag = rbsp_get_u(st, 1);
             if (chroma_weight_l0_flag) {
                 for (int j = 0; j < 2; j ++) {
@@ -545,7 +588,7 @@
         }
     }
 
-    if (1 == sp->slice_type) {
+    if (sp->slice_type == SLICE_TYPE_B) {
         for (int k = 0; k <= sp->num_ref_idx_l1_active_minus1; k ++) {
             int luma_weight_l1_flag = rbsp_get_u(st, 1);
             if (luma_weight_l1_flag) {
@@ -554,7 +597,7 @@
                 if (default_luma_weight != sp->luma_weight_l1[k])
                     sp->luma_weight_l1_flag = 1;
             }
-            if (0 != ChromaArrayType) {
+            if (ChromaArrayType != 0) {
                 int chroma_weight_l1_flag = rbsp_get_u(st, 1);
                 if (chroma_weight_l1_flag) {
                     for (int j = 0; j < 2; j ++) {
@@ -573,7 +616,7 @@
 void
 parse_dec_ref_pic_marking(rbsp_state_t *st, struct slice_parameters *sp)
 {
-    if (NAL_IDR_SLICE == sp->nal_unit_type) {
+    if (sp->nal_unit_type == NAL_IDR_SLICE) {
         sp->no_output_of_prior_pics_flag = rbsp_get_u(st, 1);
         sp->long_term_reference_flag = rbsp_get_u(st, 1);
     } else {
@@ -584,20 +627,20 @@
             int memory_management_control_operation;
             do {
                 memory_management_control_operation = rbsp_get_uev(st);
-                if (1 == memory_management_control_operation ||
-                    3 == memory_management_control_operation)
+                if (memory_management_control_operation == 1 ||
+                    memory_management_control_operation == 3)
                 {
                     rbsp_get_uev(st);   // difference_of_pic_nums_minus1
                 }
-                if (2 == memory_management_control_operation) {
+                if (memory_management_control_operation == 2) {
                     rbsp_get_uev(st);   // long_term_pic_num
                 }
-                if (3 == memory_management_control_operation ||
-                    6 == memory_management_control_operation)
+                if (memory_management_control_operation == 3 ||
+                    memory_management_control_operation == 6)
                 {
                     rbsp_get_uev(st);   // long_term_frame_idx
                 }
-                if (4 == memory_management_control_operation) {
+                if (memory_management_control_operation == 4) {
                     rbsp_get_uev(st);   // max_long_term_frame_idx_plus1
                 }
             } while (memory_management_control_operation != 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/h264-parse.h 
new/libvdpau-va-gl-0.3.6/src/h264-parse.h
--- old/libvdpau-va-gl-0.3.5/src/h264-parse.h   2016-02-21 21:57:50.000000000 
+0100
+++ new/libvdpau-va-gl-0.3.6/src/h264-parse.h   2016-03-02 17:59:50.000000000 
+0100
@@ -12,18 +12,6 @@
 #include <va/va.h>
 #include "bitstream.h"
 
-#define SLICE_TYPE_P    0
-#define SLICE_TYPE_B    1
-#define SLICE_TYPE_I    2
-#define SLICE_TYPE_SP   3
-#define SLICE_TYPE_SI   4
-
-#define NAL_UNSPECIFIED     0
-#define NAL_SLICE           1
-#define NAL_SLICE_DATA_A    2
-#define NAL_SLICE_DATA_B    3
-#define NAL_SLICE_DATA_C    4
-#define NAL_IDR_SLICE       5
 
 void
 parse_slice_header(rbsp_state_t *st, const VAPictureParameterBufferH264 *vapp,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/reverse-constant.c 
new/libvdpau-va-gl-0.3.6/src/reverse-constant.c
--- old/libvdpau-va-gl-0.3.5/src/reverse-constant.c     2016-02-21 
21:57:50.000000000 +0100
+++ new/libvdpau-va-gl-0.3.6/src/reverse-constant.c     2016-03-02 
17:59:50.000000000 +0100
@@ -10,134 +10,74 @@
 #include <vdpau/vdpau.h>
 #include <vdpau/vdpau_x11.h>
 
+#define CASE(q) case q: return #q
+
 const char *
 reverse_func_id(VdpFuncId func_id)
 {
     switch (func_id) {
-    case VDP_FUNC_ID_GET_ERROR_STRING:
-        return "VDP_FUNC_ID_GET_ERROR_STRING";
-    case VDP_FUNC_ID_GET_PROC_ADDRESS:
-        return "VDP_FUNC_ID_GET_PROC_ADDRESS";
-    case VDP_FUNC_ID_GET_API_VERSION:
-        return "VDP_FUNC_ID_GET_API_VERSION";
-    case VDP_FUNC_ID_GET_INFORMATION_STRING:
-        return "VDP_FUNC_ID_GET_INFORMATION_STRING";
-    case VDP_FUNC_ID_DEVICE_DESTROY:
-        return "VDP_FUNC_ID_DEVICE_DESTROY";
-    case VDP_FUNC_ID_GENERATE_CSC_MATRIX:
-        return "VDP_FUNC_ID_GENERATE_CSC_MATRIX";
-    case VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES:
-        return "VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES";
-    case VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES:
-        return 
"VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES";
-    case VDP_FUNC_ID_VIDEO_SURFACE_CREATE:
-        return "VDP_FUNC_ID_VIDEO_SURFACE_CREATE";
-    case VDP_FUNC_ID_VIDEO_SURFACE_DESTROY:
-        return "VDP_FUNC_ID_VIDEO_SURFACE_DESTROY";
-    case VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS:
-        return "VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS";
-    case VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR:
-        return "VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR";
-    case VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR:
-        return "VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES:
-        return 
"VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES:
-        return 
"VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES:
-        return 
"VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_CREATE:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_CREATE";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR";
-    case VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES:
-        return "VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES";
-    case VDP_FUNC_ID_BITMAP_SURFACE_CREATE:
-        return "VDP_FUNC_ID_BITMAP_SURFACE_CREATE";
-    case VDP_FUNC_ID_BITMAP_SURFACE_DESTROY:
-        return "VDP_FUNC_ID_BITMAP_SURFACE_DESTROY";
-    case VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS:
-        return "VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS";
-    case VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE:
-        return "VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE";
-    case VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA:
-        return "VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA";
-    case VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES:
-        return "VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES";
-    case VDP_FUNC_ID_DECODER_CREATE:
-        return "VDP_FUNC_ID_DECODER_CREATE";
-    case VDP_FUNC_ID_DECODER_DESTROY:
-        return "VDP_FUNC_ID_DECODER_DESTROY";
-    case VDP_FUNC_ID_DECODER_GET_PARAMETERS:
-        return "VDP_FUNC_ID_DECODER_GET_PARAMETERS";
-    case VDP_FUNC_ID_DECODER_RENDER:
-        return "VDP_FUNC_ID_DECODER_RENDER";
-    case VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT:
-        return "VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT";
-    case VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT:
-        return "VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT";
-    case VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT:
-        return "VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT";
-    case VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE:
-        return "VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE";
-    case VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE:
-        return "VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE";
-    case VDP_FUNC_ID_VIDEO_MIXER_CREATE:
-        return "VDP_FUNC_ID_VIDEO_MIXER_CREATE";
-    case VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES:
-        return "VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES";
-    case VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES:
-        return "VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES";
-    case VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT:
-        return "VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT";
-    case VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES:
-        return "VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES";
-    case VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES:
-        return "VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES";
-    case VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES:
-        return "VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES";
-    case VDP_FUNC_ID_VIDEO_MIXER_DESTROY:
-        return "VDP_FUNC_ID_VIDEO_MIXER_DESTROY";
-    case VDP_FUNC_ID_VIDEO_MIXER_RENDER:
-        return "VDP_FUNC_ID_VIDEO_MIXER_RENDER";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS";
-    case VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER:
-        return "VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER";
-    case VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_CREATE_X11:
-        return "VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_CREATE_X11";
+    CASE(VDP_FUNC_ID_GET_ERROR_STRING);
+    CASE(VDP_FUNC_ID_GET_PROC_ADDRESS);
+    CASE(VDP_FUNC_ID_GET_API_VERSION);
+    CASE(VDP_FUNC_ID_GET_INFORMATION_STRING);
+    CASE(VDP_FUNC_ID_DEVICE_DESTROY);
+    CASE(VDP_FUNC_ID_GENERATE_CSC_MATRIX);
+    CASE(VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES);
+    CASE(VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES);
+    CASE(VDP_FUNC_ID_VIDEO_SURFACE_CREATE);
+    CASE(VDP_FUNC_ID_VIDEO_SURFACE_DESTROY);
+    CASE(VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS);
+    CASE(VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR);
+    CASE(VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_CREATE);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR);
+    CASE(VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES);
+    CASE(VDP_FUNC_ID_BITMAP_SURFACE_CREATE);
+    CASE(VDP_FUNC_ID_BITMAP_SURFACE_DESTROY);
+    CASE(VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS);
+    CASE(VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE);
+    CASE(VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA);
+    CASE(VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES);
+    CASE(VDP_FUNC_ID_DECODER_CREATE);
+    CASE(VDP_FUNC_ID_DECODER_DESTROY);
+    CASE(VDP_FUNC_ID_DECODER_GET_PARAMETERS);
+    CASE(VDP_FUNC_ID_DECODER_RENDER);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_CREATE);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_DESTROY);
+    CASE(VDP_FUNC_ID_VIDEO_MIXER_RENDER);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS);
+    CASE(VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER);
+    CASE(VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_CREATE_X11);
     default:
         return "Unknown";
     }
@@ -147,36 +87,21 @@
 reverse_video_mixer_feature(VdpVideoMixerFeature mixer_feature)
 {
     switch (mixer_feature) {
-    case VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL:
-        return "VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL";
-    case VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL:
-        return "VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL";
-    case VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE:
-        return "VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE";
-    case VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION:
-        return "VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION";
-    case VDP_VIDEO_MIXER_FEATURE_SHARPNESS:
-        return "VDP_VIDEO_MIXER_FEATURE_SHARPNESS";
-    case VDP_VIDEO_MIXER_FEATURE_LUMA_KEY:
-        return "VDP_VIDEO_MIXER_FEATURE_LUMA_KEY";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8";
-    case VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9:
-        return "VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9";
+    CASE(VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL);
+    CASE(VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL);
+    CASE(VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE);
+    CASE(VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION);
+    CASE(VDP_VIDEO_MIXER_FEATURE_SHARPNESS);
+    CASE(VDP_VIDEO_MIXER_FEATURE_LUMA_KEY);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8);
+    CASE(VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9);
     default:
         return "Unknown video mixer feature";
     }
@@ -186,20 +111,13 @@
 reverse_video_mixer_attribute(VdpVideoMixerAttribute attr)
 {
     switch (attr) {
-    case VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR:
-        return "VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR";
-    case VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX:
-        return "VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX";
-    case VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL:
-        return "VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL";
-    case VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL:
-        return "VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL";
-    case VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA:
-        return "VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA";
-    case VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA:
-        return "VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA";
-    case VDP_VIDEO_MIXER_ATTRIBUTE_SKIP_CHROMA_DEINTERLACE:
-        return "VDP_VIDEO_MIXER_ATTRIBUTE_SKIP_CHROMA_DEINTERLACE";
+    CASE(VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR);
+    CASE(VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX);
+    CASE(VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL);
+    CASE(VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL);
+    CASE(VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA);
+    CASE(VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA);
+    CASE(VDP_VIDEO_MIXER_ATTRIBUTE_SKIP_CHROMA_DEINTERLACE);
     default:
         return "Unknown video mixer attribute";
     }
@@ -209,16 +127,11 @@
 reverse_rgba_format(VdpRGBAFormat rgba_format)
 {
     switch (rgba_format) {
-    case VDP_RGBA_FORMAT_B8G8R8A8:
-        return "VDP_RGBA_FORMAT_B8G8R8A8";
-    case VDP_RGBA_FORMAT_R8G8B8A8:
-        return "VDP_RGBA_FORMAT_R8G8B8A8";
-    case VDP_RGBA_FORMAT_R10G10B10A2:
-        return "VDP_RGBA_FORMAT_R10G10B10A2";
-    case VDP_RGBA_FORMAT_B10G10R10A2:
-        return "VDP_RGBA_FORMAT_B10G10R10A2";
-    case VDP_RGBA_FORMAT_A8:
-        return "VDP_RGBA_FORMAT_A8";
+    CASE(VDP_RGBA_FORMAT_B8G8R8A8);
+    CASE(VDP_RGBA_FORMAT_R8G8B8A8);
+    CASE(VDP_RGBA_FORMAT_R10G10B10A2);
+    CASE(VDP_RGBA_FORMAT_B10G10R10A2);
+    CASE(VDP_RGBA_FORMAT_A8);
     default:
         return "Unknown RGBA format";
     }
@@ -228,12 +141,9 @@
 reverse_chroma_type(VdpChromaType chroma_type)
 {
     switch (chroma_type) {
-    case VDP_CHROMA_TYPE_420:
-        return "VDP_CHROMA_TYPE_420";
-    case VDP_CHROMA_TYPE_422:
-        return "VDP_CHROMA_TYPE_422";
-    case VDP_CHROMA_TYPE_444:
-        return "VDP_CHROMA_TYPE_444";
+    CASE(VDP_CHROMA_TYPE_420);
+    CASE(VDP_CHROMA_TYPE_422);
+    CASE(VDP_CHROMA_TYPE_444);
     default:
         return "Unknown chroma type";
     }
@@ -243,18 +153,12 @@
 reverse_ycbcr_format(VdpYCbCrFormat ycbcr_format)
 {
     switch (ycbcr_format) {
-    case VDP_YCBCR_FORMAT_NV12:
-        return "VDP_YCBCR_FORMAT_NV12";
-    case VDP_YCBCR_FORMAT_YV12:
-        return "VDP_YCBCR_FORMAT_YV12";
-    case VDP_YCBCR_FORMAT_UYVY:
-        return "VDP_YCBCR_FORMAT_UYVY";
-    case VDP_YCBCR_FORMAT_YUYV:
-        return "VDP_YCBCR_FORMAT_YUYV";
-    case VDP_YCBCR_FORMAT_Y8U8V8A8:
-        return "VDP_YCBCR_FORMAT_Y8U8V8A8";
-    case VDP_YCBCR_FORMAT_V8U8Y8A8:
-        return "VDP_YCBCR_FORMAT_V8U8Y8A8";
+    CASE(VDP_YCBCR_FORMAT_NV12);
+    CASE(VDP_YCBCR_FORMAT_YV12);
+    CASE(VDP_YCBCR_FORMAT_UYVY);
+    CASE(VDP_YCBCR_FORMAT_YUYV);
+    CASE(VDP_YCBCR_FORMAT_Y8U8V8A8);
+    CASE(VDP_YCBCR_FORMAT_V8U8Y8A8);
     default:
         return "Unknown YCbCr format";
     }
@@ -264,12 +168,9 @@
 reverser_video_mixer_picture_structure(VdpVideoMixerPictureStructure s)
 {
     switch (s) {
-    case VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD:
-        return "VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD";
-    case VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD:
-        return "VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD";
-    case VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME:
-        return "VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME";
+    CASE(VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD);
+    CASE(VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD);
+    CASE(VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME);
     default:
         return "Unknown video mixer picture structure";
     }
@@ -279,36 +180,21 @@
 reverse_blend_factor(VdpOutputSurfaceRenderBlendFactor blend_factor)
 {
     switch (blend_factor) {
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:
-        return 
"VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:
-        return 
"VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA);
     default:
         return "Unknown blend factor";
     }
@@ -318,16 +204,11 @@
 reverse_blend_equation(VdpOutputSurfaceRenderBlendEquation blend_equation)
 {
     switch (blend_equation) {
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN";
-    case VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX:
-        return "VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX";
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX);
     default:
         return "Unknown blend equation";
     }
@@ -337,44 +218,26 @@
 reverse_decoder_profile(VdpDecoderProfile profile)
 {
     switch (profile) {
-    case VDP_DECODER_PROFILE_MPEG1:
-        return "VDP_DECODER_PROFILE_MPEG1";
-    case VDP_DECODER_PROFILE_MPEG2_SIMPLE:
-        return "VDP_DECODER_PROFILE_MPEG2_SIMPLE";
-    case VDP_DECODER_PROFILE_MPEG2_MAIN:
-        return "VDP_DECODER_PROFILE_MPEG2_MAIN";
-    case VDP_DECODER_PROFILE_H264_BASELINE:
-        return "VDP_DECODER_PROFILE_H264_BASELINE";
-    case VDP_DECODER_PROFILE_H264_MAIN:
-        return "VDP_DECODER_PROFILE_H264_MAIN";
-    case VDP_DECODER_PROFILE_H264_HIGH:
-        return "VDP_DECODER_PROFILE_H264_HIGH";
-    case VDP_DECODER_PROFILE_VC1_SIMPLE:
-        return "VDP_DECODER_PROFILE_VC1_SIMPLE";
-    case VDP_DECODER_PROFILE_VC1_MAIN:
-        return "VDP_DECODER_PROFILE_VC1_MAIN";
-    case VDP_DECODER_PROFILE_VC1_ADVANCED:
-        return "VDP_DECODER_PROFILE_VC1_ADVANCED";
-    case VDP_DECODER_PROFILE_MPEG4_PART2_SP:
-        return "VDP_DECODER_PROFILE_MPEG4_PART2_SP";
-    case VDP_DECODER_PROFILE_MPEG4_PART2_ASP:
-        return "VDP_DECODER_PROFILE_MPEG4_PART2_ASP";
-    case VDP_DECODER_PROFILE_DIVX4_QMOBILE:
-        return "VDP_DECODER_PROFILE_DIVX4_QMOBILE";
-    case VDP_DECODER_PROFILE_DIVX4_MOBILE:
-        return "VDP_DECODER_PROFILE_DIVX4_MOBILE";
-    case VDP_DECODER_PROFILE_DIVX4_HOME_THEATER:
-        return "VDP_DECODER_PROFILE_DIVX4_HOME_THEATER";
-    case VDP_DECODER_PROFILE_DIVX4_HD_1080P:
-        return "VDP_DECODER_PROFILE_DIVX4_HD_1080P";
-    case VDP_DECODER_PROFILE_DIVX5_QMOBILE:
-        return "VDP_DECODER_PROFILE_DIVX5_QMOBILE";
-    case VDP_DECODER_PROFILE_DIVX5_MOBILE:
-        return "VDP_DECODER_PROFILE_DIVX5_MOBILE";
-    case VDP_DECODER_PROFILE_DIVX5_HOME_THEATER:
-        return "VDP_DECODER_PROFILE_DIVX5_HOME_THEATER";
-    case VDP_DECODER_PROFILE_DIVX5_HD_1080P:
-        return "VDP_DECODER_PROFILE_DIVX5_HD_1080P";
+    CASE(VDP_DECODER_PROFILE_MPEG1);
+    CASE(VDP_DECODER_PROFILE_MPEG2_SIMPLE);
+    CASE(VDP_DECODER_PROFILE_MPEG2_MAIN);
+    CASE(VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE);
+    CASE(VDP_DECODER_PROFILE_H264_BASELINE);
+    CASE(VDP_DECODER_PROFILE_H264_MAIN);
+    CASE(VDP_DECODER_PROFILE_H264_HIGH);
+    CASE(VDP_DECODER_PROFILE_VC1_SIMPLE);
+    CASE(VDP_DECODER_PROFILE_VC1_MAIN);
+    CASE(VDP_DECODER_PROFILE_VC1_ADVANCED);
+    CASE(VDP_DECODER_PROFILE_MPEG4_PART2_SP);
+    CASE(VDP_DECODER_PROFILE_MPEG4_PART2_ASP);
+    CASE(VDP_DECODER_PROFILE_DIVX4_QMOBILE);
+    CASE(VDP_DECODER_PROFILE_DIVX4_MOBILE);
+    CASE(VDP_DECODER_PROFILE_DIVX4_HOME_THEATER);
+    CASE(VDP_DECODER_PROFILE_DIVX4_HD_1080P);
+    CASE(VDP_DECODER_PROFILE_DIVX5_QMOBILE);
+    CASE(VDP_DECODER_PROFILE_DIVX5_MOBILE);
+    CASE(VDP_DECODER_PROFILE_DIVX5_HOME_THEATER);
+    CASE(VDP_DECODER_PROFILE_DIVX5_HD_1080P);
     default:
         return "Unknown decoder profile";
     }
@@ -384,58 +247,32 @@
 reverse_status(VdpStatus status)
 {
     switch (status) {
-    case VDP_STATUS_OK:
-        return "VDP_STATUS_OK";
-    case VDP_STATUS_NO_IMPLEMENTATION:
-        return "VDP_STATUS_NO_IMPLEMENTATION";
-    case VDP_STATUS_DISPLAY_PREEMPTED:
-        return "VDP_STATUS_DISPLAY_PREEMPTED";
-    case VDP_STATUS_INVALID_HANDLE:
-        return "VDP_STATUS_INVALID_HANDLE";
-    case VDP_STATUS_INVALID_POINTER:
-        return "VDP_STATUS_INVALID_POINTER";
-    case VDP_STATUS_INVALID_CHROMA_TYPE:
-        return "VDP_STATUS_INVALID_CHROMA_TYPE";
-    case VDP_STATUS_INVALID_Y_CB_CR_FORMAT:
-        return "VDP_STATUS_INVALID_Y_CB_CR_FORMAT";
-    case VDP_STATUS_INVALID_RGBA_FORMAT:
-        return "VDP_STATUS_INVALID_RGBA_FORMAT";
-    case VDP_STATUS_INVALID_INDEXED_FORMAT:
-        return "VDP_STATUS_INVALID_INDEXED_FORMAT";
-    case VDP_STATUS_INVALID_COLOR_STANDARD:
-        return "VDP_STATUS_INVALID_COLOR_STANDARD";
-    case VDP_STATUS_INVALID_COLOR_TABLE_FORMAT:
-        return "VDP_STATUS_INVALID_COLOR_TABLE_FORMAT";
-    case VDP_STATUS_INVALID_BLEND_FACTOR:
-        return "VDP_STATUS_INVALID_BLEND_FACTOR";
-    case VDP_STATUS_INVALID_BLEND_EQUATION:
-        return "VDP_STATUS_INVALID_BLEND_EQUATION";
-    case VDP_STATUS_INVALID_FLAG:
-        return "VDP_STATUS_INVALID_FLAG";
-    case VDP_STATUS_INVALID_DECODER_PROFILE:
-        return "VDP_STATUS_INVALID_DECODER_PROFILE";
-    case VDP_STATUS_INVALID_VIDEO_MIXER_FEATURE:
-        return "VDP_STATUS_INVALID_VIDEO_MIXER_FEATURE";
-    case VDP_STATUS_INVALID_VIDEO_MIXER_PARAMETER:
-        return "VDP_STATUS_INVALID_VIDEO_MIXER_PARAMETER";
-    case VDP_STATUS_INVALID_VIDEO_MIXER_ATTRIBUTE:
-        return "VDP_STATUS_INVALID_VIDEO_MIXER_ATTRIBUTE";
-    case VDP_STATUS_INVALID_VIDEO_MIXER_PICTURE_STRUCTURE:
-        return "VDP_STATUS_INVALID_VIDEO_MIXER_PICTURE_STRUCTURE";
-    case VDP_STATUS_INVALID_FUNC_ID:
-        return "VDP_STATUS_INVALID_FUNC_ID";
-    case VDP_STATUS_INVALID_SIZE:
-        return "VDP_STATUS_INVALID_SIZE";
-    case VDP_STATUS_INVALID_VALUE:
-        return "VDP_STATUS_INVALID_VALUE";
-    case VDP_STATUS_INVALID_STRUCT_VERSION:
-        return "VDP_STATUS_INVALID_STRUCT_VERSION";
-    case VDP_STATUS_RESOURCES:
-        return "VDP_STATUS_RESOURCES";
-    case VDP_STATUS_HANDLE_DEVICE_MISMATCH:
-        return "VDP_STATUS_HANDLE_DEVICE_MISMATCH";
-    case VDP_STATUS_ERROR:
-        return "VDP_STATUS_ERROR";
+    CASE(VDP_STATUS_OK);
+    CASE(VDP_STATUS_NO_IMPLEMENTATION);
+    CASE(VDP_STATUS_DISPLAY_PREEMPTED);
+    CASE(VDP_STATUS_INVALID_HANDLE);
+    CASE(VDP_STATUS_INVALID_POINTER);
+    CASE(VDP_STATUS_INVALID_CHROMA_TYPE);
+    CASE(VDP_STATUS_INVALID_Y_CB_CR_FORMAT);
+    CASE(VDP_STATUS_INVALID_RGBA_FORMAT);
+    CASE(VDP_STATUS_INVALID_INDEXED_FORMAT);
+    CASE(VDP_STATUS_INVALID_COLOR_STANDARD);
+    CASE(VDP_STATUS_INVALID_COLOR_TABLE_FORMAT);
+    CASE(VDP_STATUS_INVALID_BLEND_FACTOR);
+    CASE(VDP_STATUS_INVALID_BLEND_EQUATION);
+    CASE(VDP_STATUS_INVALID_FLAG);
+    CASE(VDP_STATUS_INVALID_DECODER_PROFILE);
+    CASE(VDP_STATUS_INVALID_VIDEO_MIXER_FEATURE);
+    CASE(VDP_STATUS_INVALID_VIDEO_MIXER_PARAMETER);
+    CASE(VDP_STATUS_INVALID_VIDEO_MIXER_ATTRIBUTE);
+    CASE(VDP_STATUS_INVALID_VIDEO_MIXER_PICTURE_STRUCTURE);
+    CASE(VDP_STATUS_INVALID_FUNC_ID);
+    CASE(VDP_STATUS_INVALID_SIZE);
+    CASE(VDP_STATUS_INVALID_VALUE);
+    CASE(VDP_STATUS_INVALID_STRUCT_VERSION);
+    CASE(VDP_STATUS_RESOURCES);
+    CASE(VDP_STATUS_HANDLE_DEVICE_MISMATCH);
+    CASE(VDP_STATUS_ERROR);
     default:
         return "Unknown VDP error";
     }
@@ -445,14 +282,10 @@
 reverse_indexed_format(VdpIndexedFormat indexed_format)
 {
     switch (indexed_format) {
-    case VDP_INDEXED_FORMAT_A4I4:
-        return "VDP_INDEXED_FORMAT_A4I4";
-    case VDP_INDEXED_FORMAT_I4A4:
-        return "VDP_INDEXED_FORMAT_I4A4";
-    case VDP_INDEXED_FORMAT_A8I8:
-        return "VDP_INDEXED_FORMAT_A8I8";
-    case VDP_INDEXED_FORMAT_I8A8:
-        return "VDP_INDEXED_FORMAT_I8A8";
+    CASE(VDP_INDEXED_FORMAT_A4I4);
+    CASE(VDP_INDEXED_FORMAT_I4A4);
+    CASE(VDP_INDEXED_FORMAT_A8I8);
+    CASE(VDP_INDEXED_FORMAT_I8A8);
     default:
         return "Unknown indexed format";
     }
@@ -462,8 +295,7 @@
 reverse_color_table_format(VdpColorTableFormat color_table_format)
 {
     switch (color_table_format) {
-    case VDP_COLOR_TABLE_FORMAT_B8G8R8X8:
-        return "VDP_COLOR_TABLE_FORMAT_B8G8R8X8";
+    CASE(VDP_COLOR_TABLE_FORMAT_B8G8R8X8);
     default:
         return "Unknown color table format";
     }
@@ -473,14 +305,10 @@
 reverse_video_mixer_parameter(VdpVideoMixerParameter parameter)
 {
     switch (parameter) {
-    case VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH:
-        return "VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH";
-    case VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT:
-        return "VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT";
-    case VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE:
-        return "VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE";
-    case VDP_VIDEO_MIXER_PARAMETER_LAYERS:
-        return "VDP_VIDEO_MIXER_PARAMETER_LAYERS";
+    CASE(VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH);
+    CASE(VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT);
+    CASE(VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE);
+    CASE(VDP_VIDEO_MIXER_PARAMETER_LAYERS);
     default:
         return "Unknown video mixer parameter";
     }
@@ -490,12 +318,9 @@
 reverse_color_standard(VdpColorStandard color_standard)
 {
     switch (color_standard) {
-    case VDP_COLOR_STANDARD_ITUR_BT_601:
-        return "VDP_COLOR_STANDARD_ITUR_BT_601";
-    case VDP_COLOR_STANDARD_ITUR_BT_709:
-        return "VDP_COLOR_STANDARD_ITUR_BT_709";
-    case VDP_COLOR_STANDARD_SMPTE_240M:
-        return "VDP_COLOR_STANDARD_SMPTE_240M";
+    CASE(VDP_COLOR_STANDARD_ITUR_BT_601);
+    CASE(VDP_COLOR_STANDARD_ITUR_BT_709);
+    CASE(VDP_COLOR_STANDARD_SMPTE_240M);
     default:
         return "Unknown color standard";
     }
@@ -505,11 +330,11 @@
 reverse_output_surface_render_rotate(int flags)
 {
     switch (flags & 3) {
-    case VDP_OUTPUT_SURFACE_RENDER_ROTATE_0: return 
"VDP_OUTPUT_SURFACE_RENDER_ROTATE_0";
-    case VDP_OUTPUT_SURFACE_RENDER_ROTATE_90: return 
"VDP_OUTPUT_SURFACE_RENDER_ROTATE_90";
-    case VDP_OUTPUT_SURFACE_RENDER_ROTATE_180: return 
"VDP_OUTPUT_SURFACE_RENDER_ROTATE_180";
+    CASE(VDP_OUTPUT_SURFACE_RENDER_ROTATE_0);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_ROTATE_90);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_ROTATE_180);
+    CASE(VDP_OUTPUT_SURFACE_RENDER_ROTATE_270);
     default:
-        // The only possible case execution get here is 
VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 case.
-        return "VDP_OUTPUT_SURFACE_RENDER_ROTATE_270";
+        return "Unknown rotate";
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/trace.c 
new/libvdpau-va-gl-0.3.6/src/trace.c
--- old/libvdpau-va-gl-0.3.5/src/trace.c        2016-02-21 21:57:50.000000000 
+0100
+++ new/libvdpau-va-gl-0.3.6/src/trace.c        2016-03-02 17:59:50.000000000 
+0100
@@ -125,8 +125,8 @@
     if (!trace_enabled)
         goto skip;
     traceCallHook(VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES, 0, NULL);
-    fprintf(tlog, "%s%s VdpDecoderQueryCapabilities device=%d, profile=%s\n",
-        trace_header, impl_state, device, reverse_decoder_profile(profile));
+    fprintf(tlog, "%s%s VdpDecoderQueryCapabilities device=%d, 
profile=%s(%d)\n",
+            trace_header, impl_state, device, 
reverse_decoder_profile(profile), profile);
 skip:;
     VdpStatus ret = vdpDecoderQueryCapabilities(device, profile, is_supported, 
max_level,
         max_macroblocks, max_width, max_height);
@@ -458,7 +458,7 @@
                                            VdpVideoMixerParameter parameter,
                                            void *min_value, void *max_value)
 {
-    const char *impl_state = "{zilch}";
+    const char *impl_state = "{part}";
     if (!trace_enabled)
         goto skip;
     traceCallHook(VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE, 0, 
NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvdpau-va-gl-0.3.5/src/xinitthreads.c 
new/libvdpau-va-gl-0.3.6/src/xinitthreads.c
--- old/libvdpau-va-gl-0.3.5/src/xinitthreads.c 2016-02-21 21:57:50.000000000 
+0100
+++ new/libvdpau-va-gl-0.3.6/src/xinitthreads.c 1970-01-01 01:00:00.000000000 
+0100
@@ -1,19 +0,0 @@
-/*
- * Copyright 2013-2014  Rinat Ibragimov
- *
- * This file is part of libvdpau-va-gl
- *
- * libvdpau-va-gl is distributed under the terms of the LGPLv3. See COPYING 
for details.
- */
-
-#include <X11/Xlib.h>
-#include <stdio.h>
-
-__attribute__((constructor))
-static
-void
-library_constructor(void)
-{
-    XInitThreads();
-    printf("XInitThreads()\n");
-}


Reply via email to