ftab.c revision f3e34ba6fba76870b1c91a27adb706d1b87aeec8
1/************************************************************************** 2 * 3 * Copyright 2010 Younes Manton. 4 * All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial portions 16 * of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 * 26 **************************************************************************/ 27 28#include <assert.h> 29#include "vdpau_private.h" 30 31static void* ftab[67] = 32{ 33 0, /* VDP_FUNC_ID_GET_ERROR_STRING */ 34 0, /* VDP_FUNC_ID_GET_PROC_ADDRESS */ 35 &vlVdpGetApiVersion, /* VDP_FUNC_ID_GET_API_VERSION */ 36 0, 37 &vlVdpGetInformationString, /* VDP_FUNC_ID_GET_INFORMATION_STRING */ 38 &vlVdpDeviceDestroy, /* VDP_FUNC_ID_DEVICE_DESTROY */ 39 0, /* VDP_FUNC_ID_GENERATE_CSC_MATRIX */ 40 &vlVdpVideoSurfaceQueryCapabilities, /* VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES */ 41 &vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities, /* VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES */ 42 0, /* VDP_FUNC_ID_VIDEO_SURFACE_CREATE */ 43 0, /* VDP_FUNC_ID_VIDEO_SURFACE_DESTROY */ 44 0, /* VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS */ 45 0, /* VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR */ 46 0, /* VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR */ 47 &vlVdpOutputSurfaceQueryCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES */ 48 &vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES */ 49 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES */ 50 &vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES */ 51 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_CREATE */ 52 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY */ 53 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS */ 54 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE */ 55 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE */ 56 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED */ 57 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR */ 58 &vlVdpBitmapSurfaceQueryCapabilities, /* VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES */ 59 0, /* VDP_FUNC_ID_BITMAP_SURFACE_CREATE */ 60 0, /* VDP_FUNC_ID_BITMAP_SURFACE_DESTROY */ 61 0, /* VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS */ 62 0, /* VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE */ 63 0, 64 0, 65 0, 66 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE */ 67 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE */ 68 0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA */ 69 &vlVdpDecoderQueryCapabilities, /* VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES */ 70 0, /* VDP_FUNC_ID_DECODER_CREATE */ 71 0, /* VDP_FUNC_ID_DECODER_DESTROY */ 72 0, /* VDP_FUNC_ID_DECODER_GET_PARAMETERS */ 73 0, /* VDP_FUNC_ID_DECODER_RENDER */ 74 &vlVdpVideoMixerQueryFeatureSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT */ 75 &vlVdpVideoMixerQueryParameterSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT */ 76 &vlVdpVideoMixerQueryAttributeSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT */ 77 &vlVdpVideoMixerQueryParameterValueRange, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE */ 78 &vlVdpVideoMixerQueryAttributeValueRange, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE */ 79 0, /* VDP_FUNC_ID_VIDEO_MIXER_CREATE */ 80 0, /* VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES */ 81 0, /* VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES */ 82 0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT */ 83 0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES */ 84 0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES */ 85 0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES */ 86 0, /* VDP_FUNC_ID_VIDEO_MIXER_DESTROY */ 87 0, /* VDP_FUNC_ID_VIDEO_MIXER_RENDER */ 88 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY */ 89 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE */ 90 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY */ 91 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR */ 92 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR */ 93 0, 94 0, 95 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME */ 96 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY */ 97 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE */ 98 0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS */ 99 0 /* VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER */ 100}; 101 102static void* ftab_winsys[1] = 103{ 104 0 /* VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_CREATE_X11 */ 105}; 106 107boolean vlGetFuncFTAB(VdpFuncId function_id, void **func) 108{ 109 assert(func); 110 if (function_id < VDP_FUNC_ID_BASE_WINSYS) { 111 if (function_id > 66) 112 return FALSE; 113 *func = ftab[function_id]; 114 } 115 else { 116 function_id -= VDP_FUNC_ID_BASE_WINSYS; 117 if (function_id > 0) 118 return FALSE; 119 *func = ftab_winsys[function_id]; 120 } 121 return TRUE; 122} 123