f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Copyright (c) 2001 by The XFree86 Project, Inc.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync *
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Permission is hereby granted, free of charge, to any person obtaining a
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * copy of this software and associated documentation files (the "Software"),
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * to deal in the Software without restriction, including without limitation
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * and/or sell copies of the Software, and to permit persons to whom the
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Software is furnished to do so, subject to the following conditions:
f0ab104f070bc7f569404826fea1828ed985638cvboxsync *
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * The above copyright notice and this permission notice shall be included in
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * all copies or substantial portions of the Software.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync *
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * OTHER DEALINGS IN THE SOFTWARE.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync *
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Except as contained in this notice, the name of the copyright holder(s)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * and author(s) shall not be used in advertising or otherwise to promote
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * the sale, use or other dealings in this Software without prior written
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * authorization from the copyright holder(s) and author(s).
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#ifndef _XF86XVMC_H
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#define _XF86XVMC_H
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "xvmcext.h"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#include "xf86xv.h"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int num_xvimages;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int *xvimage_ids; /* reference the subpictures in the XF86MCAdaptorRec */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} XF86MCImageIDList;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int surface_type_id; /* Driver generated. Must be unique on the port */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int chroma_format;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int color_description; /* no longer used */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync unsigned short max_width;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync unsigned short max_height;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync unsigned short subpicture_max_width;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync unsigned short subpicture_max_height;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int mc_type;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int flags;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XF86MCImageIDList *compatible_subpictures; /* can be null, if none */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} XF86MCSurfaceInfoRec, *XF86MCSurfaceInfoPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateContextProc
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DIX will fill everything out in the context except the driver_priv.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync The port_priv holds the private data specified for the port when
f0ab104f070bc7f569404826fea1828ed985638cvboxsync Xv was initialized by the driver.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync The driver may store whatever it wants in driver_priv and edit
f0ab104f070bc7f569404826fea1828ed985638cvboxsync the width, height and flags. If the driver wants to return something
f0ab104f070bc7f569404826fea1828ed985638cvboxsync to the client it can allocate space in priv and specify the number
f0ab104f070bc7f569404826fea1828ed985638cvboxsync of 32 bit words in num_priv. This must be dynamically allocated
f0ab104f070bc7f569404826fea1828ed985638cvboxsync space because DIX will free it after it passes it to the client.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync*/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef int (*xf86XvMCCreateContextProcPtr) (
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ScrnInfoPtr pScrn,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XvMCContextPtr context,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int *num_priv,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 **priv
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef void (*xf86XvMCDestroyContextProcPtr) (
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ScrnInfoPtr pScrn,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XvMCContextPtr context
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateSurfaceProc
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DIX will fill everything out in the surface except the driver_priv.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync The driver may store whatever it wants in driver_priv. The driver
f0ab104f070bc7f569404826fea1828ed985638cvboxsync may pass data back to the client in the same manner as the
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateContextProc.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync*/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef int (*xf86XvMCCreateSurfaceProcPtr) (
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ScrnInfoPtr pScrn,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XvMCSurfacePtr surface,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int *num_priv,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 **priv
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef void (*xf86XvMCDestroySurfaceProcPtr) (
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ScrnInfoPtr pScrn,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XvMCSurfacePtr surface
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateSubpictureProc
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync DIX will fill everything out in the subpicture except the driver_priv,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync num_palette_entries, entry_bytes and component_order. The driver may
f0ab104f070bc7f569404826fea1828ed985638cvboxsync store whatever it wants in driver_priv and edit the width and height.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync If it is a paletted subpicture the driver needs to fill out the
f0ab104f070bc7f569404826fea1828ed985638cvboxsync num_palette_entries, entry_bytes and component_order. These are
f0ab104f070bc7f569404826fea1828ed985638cvboxsync not communicated to the client until the time the surface is
f0ab104f070bc7f569404826fea1828ed985638cvboxsync created.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync The driver may pass data back to the client in the same manner as the
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateContextProc.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync*/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef int (*xf86XvMCCreateSubpictureProcPtr) (
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ScrnInfoPtr pScrn,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XvMCSubpicturePtr subpicture,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int *num_priv,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync CARD32 **priv
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef void (*xf86XvMCDestroySubpictureProcPtr) (
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ScrnInfoPtr pScrn,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XvMCSubpicturePtr subpicture
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync char *name;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int num_surfaces;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XF86MCSurfaceInfoPtr *surfaces;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int num_subpictures;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XF86ImagePtr *subpictures;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateContextProcPtr CreateContext;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCDestroyContextProcPtr DestroyContext;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateSurfaceProcPtr CreateSurface;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCDestroySurfaceProcPtr DestroySurface;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateSubpictureProcPtr CreateSubpicture;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCDestroySubpictureProcPtr DestroySubpicture;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync} XF86MCAdaptorRec, *XF86MCAdaptorPtr;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync/*
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCScreenInit
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync Unlike Xv, the adaptor data is not copied from this structure.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync This structure's data is used so it must stick around for the
f0ab104f070bc7f569404826fea1828ed985638cvboxsync life of the server. Note that it's an array of pointers not
f0ab104f070bc7f569404826fea1828ed985638cvboxsync an array of structures.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync*/
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT Bool xf86XvMCScreenInit(
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ScreenPtr pScreen,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int num_adaptors,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XF86MCAdaptorPtr *adaptors
f0ab104f070bc7f569404826fea1828ed985638cvboxsync);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT XF86MCAdaptorPtr xf86XvMCCreateAdaptorRec (void);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void xf86XvMCDestroyAdaptorRec(XF86MCAdaptorPtr adaptor);
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef int (*XvMCScreenInitProcPtr)(ScreenPtr, int, XvMCAdaptorPtr);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT XvMCScreenInitProcPtr XvMCScreenInitProc;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif /* _XF86XVMC_H */