f0ab104f070bc7f569404826fea1828ed985638cvboxsync * Copyright (c) 2001 by The XFree86 Project, Inc.
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 * The above copyright notice and this permission notice shall be included in
f0ab104f070bc7f569404826fea1828ed985638cvboxsync * all copies or substantial portions of the Software.
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 * 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).
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int *xvimage_ids; /* reference the subpictures in the XF86MCAdaptorRec */
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync int surface_type_id; /* Driver generated. Must be unique on the port */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync XF86MCImageIDList *compatible_subpictures; /* can be null, if none */
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateContextProc
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 xf86XvMCCreateSurfaceProc
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 xf86XvMCCreateSubpictureProc
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 The driver may pass data back to the client in the same manner as the
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCCreateContextProc.
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef struct {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCDestroySubpictureProcPtr DestroySubpicture;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync xf86XvMCScreenInit
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.
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT XF86MCAdaptorPtr xf86XvMCCreateAdaptorRec (void);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT void xf86XvMCDestroyAdaptorRec(XF86MCAdaptorPtr adaptor);
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctypedef int (*XvMCScreenInitProcPtr)(ScreenPtr, int, XvMCAdaptorPtr);
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncextern _X_EXPORT XvMCScreenInitProcPtr XvMCScreenInitProc;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#endif /* _XF86XVMC_H */