3 #include <X11/extensions/XvMC.h>
4 #include <util/u_memory.h>
5 #include <vl_display.h>
7 #include <vl_context.h>
9 #define BLOCK_SIZE (64 * 2)
11 Status
XvMCCreateBlocks(Display
*display
, XvMCContext
*context
, unsigned int num_blocks
, XvMCBlockArray
*blocks
)
13 struct vlContext
*vl_ctx
;
18 return XvMCBadContext
;
24 vl_ctx
= context
->privData
;
25 assert(display
== vlGetNativeDisplay(vlGetDisplay(vlContextGetScreen(vl_ctx
))));
27 blocks
->context_id
= context
->context_id
;
28 blocks
->num_blocks
= num_blocks
;
29 blocks
->blocks
= MALLOC(BLOCK_SIZE
* num_blocks
);
30 /* Since we don't have a VL type for blocks, set privData to the display so we can catch mismatches */
31 blocks
->privData
= display
;
36 Status
XvMCDestroyBlocks(Display
*display
, XvMCBlockArray
*blocks
)
40 assert(display
== blocks
->privData
);
46 Status
XvMCCreateMacroBlocks(Display
*display
, XvMCContext
*context
, unsigned int num_blocks
, XvMCMacroBlockArray
*blocks
)
48 struct vlContext
*vl_ctx
;
53 return XvMCBadContext
;
59 vl_ctx
= context
->privData
;
60 assert(display
== vlGetNativeDisplay(vlGetDisplay(vlContextGetScreen(vl_ctx
))));
62 blocks
->context_id
= context
->context_id
;
63 blocks
->num_blocks
= num_blocks
;
64 blocks
->macro_blocks
= MALLOC(sizeof(XvMCMacroBlock
) * num_blocks
);
65 /* Since we don't have a VL type for blocks, set privData to the display so we can catch mismatches */
66 blocks
->privData
= display
;
71 Status
XvMCDestroyMacroBlocks(Display
*display
, XvMCMacroBlockArray
*blocks
)
75 assert(display
== blocks
->privData
);
76 FREE(blocks
->macro_blocks
);