blob: c8f70c90d0c09f96aa5c2c511855f27e1d6799fd [file] [log] [blame]
#include <assert.h>
#include <X11/Xlib.h>
#include <X11/extensions/Xvlib.h>
#include <X11/extensions/XvMC.h>
Status XvMCCreateSubpicture
(
Display *display,
XvMCContext *context,
XvMCSubpicture *subpicture,
unsigned short width,
unsigned short height,
int xvimage_id
)
{
assert(display);
if (!context)
return XvMCBadContext;
assert(subpicture);
if (width > 2048 || height > 2048)
return BadValue;
if (xvimage_id != 123)
return BadMatch;
subpicture->subpicture_id = XAllocID(display);
subpicture->context_id = context->context_id;
subpicture->xvimage_id = xvimage_id;
subpicture->width = width;
subpicture->height = height;
subpicture->num_palette_entries = 0;
subpicture->entry_bytes = 0;
subpicture->component_order[0] = 0;
subpicture->component_order[1] = 0;
subpicture->component_order[2] = 0;
subpicture->component_order[3] = 0;
/* TODO: subpicture->privData = ;*/
return Success;
}
Status XvMCClearSubpicture
(
Display *display,
XvMCSubpicture *subpicture,
short x,
short y,
unsigned short width,
unsigned short height,
unsigned int color
)
{
assert(display);
if (!subpicture)
return XvMCBadSubpicture;
/* TODO: Assert clear rect is within bounds? Or clip? */
return Success;
}
Status XvMCCompositeSubpicture
(
Display *display,
XvMCSubpicture *subpicture,
XvImage *image,
short srcx,
short srcy,
unsigned short width,
unsigned short height,
short dstx,
short dsty
)
{
assert(display);
if (!subpicture)
return XvMCBadSubpicture;
assert(image);
if (subpicture->xvimage_id != image->id)
return BadMatch;
/* TODO: Assert rects are within bounds? Or clip? */
return Success;
}
Status XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture)
{
assert(display);
if (!subpicture)
return XvMCBadSubpicture;
return BadImplementation;
}
Status XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, unsigned char *palette)
{
assert(display);
if (!subpicture)
return XvMCBadSubpicture;
assert(palette);
/* We don't support paletted subpictures */
return BadMatch;
}
Status XvMCBlendSubpicture
(
Display *display,
XvMCSurface *target_surface,
XvMCSubpicture *subpicture,
short subx,
short suby,
unsigned short subw,
unsigned short subh,
short surfx,
short surfy,
unsigned short surfw,
unsigned short surfh
)
{
assert(display);
if (!target_surface)
return XvMCBadSurface;
if (!subpicture)
return XvMCBadSubpicture;
if (target_surface->context_id != subpicture->context_id)
return BadMatch;
/* TODO: Assert rects are within bounds? Or clip? */
return Success;
}
Status XvMCBlendSubpicture2
(
Display *display,
XvMCSurface *source_surface,
XvMCSurface *target_surface,
XvMCSubpicture *subpicture,
short subx,
short suby,
unsigned short subw,
unsigned short subh,
short surfx,
short surfy,
unsigned short surfw,
unsigned short surfh
)
{
assert(display);
if (!source_surface || !target_surface)
return XvMCBadSurface;
if (!subpicture)
return XvMCBadSubpicture;
if (source_surface->context_id != subpicture->context_id)
return BadMatch;
if (source_surface->context_id != subpicture->context_id)
return BadMatch;
/* TODO: Assert rects are within bounds? Or clip? */
return Success;
}
Status XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture)
{
assert(display);
if (!subpicture)
return XvMCBadSubpicture;
return Success;
}
Status XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture)
{
assert(display);
if (!subpicture)
return XvMCBadSubpicture;
return Success;
}
Status XvMCGetSubpictureStatus(Display *display, XvMCSubpicture *subpicture, int *status)
{
assert(display);
if (!subpicture)
return XvMCBadSubpicture;
assert(status);
/* TODO */
*status = 0;
return Success;
}