3 #include <vl_context.h>
4 #include <vl_surface.h>
5 #include <xsp_winsys.h>
7 static const unsigned short ycbcr16x16_420
[8*8*6] =
9 0x00A5,0x00A5,0x00A5,0x0072,0x00A5,0x0072,0x0072,0x0072,
10 0x0072,0x00A5,0x0072,0x0072,0x00A5,0x0072,0x0072,0x0072,
11 0x0072,0x00A5,0x0072,0x0072,0x00A5,0x00A5,0x0072,0x0072,
12 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
13 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
14 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
15 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
16 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
18 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
19 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
20 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
21 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
22 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
23 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
24 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
25 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
27 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
28 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
29 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
30 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
31 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
32 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
33 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
34 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
36 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
37 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
38 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
39 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,
40 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x00A5,
41 0x0072,0x0072,0x0072,0x0072,0x0072,0x0072,0x00A5,0x00A5,
42 0x0072,0x0072,0x0072,0x0072,0x0072,0x00A5,0x00A5,0x00A5,
43 0x0072,0x0072,0x0072,0x0072,0x00A5,0x00A5,0x00A5,0x00A5,
45 0x004F,0x004F,0x004F,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,
46 0x00B2,0x00B2,0x004F,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,
47 0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,
48 0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,
49 0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,
50 0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,
51 0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x004F,
52 0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x00B2,0x004F,0x004F,
54 0x003E,0x003E,0x003E,0x0060,0x0060,0x0060,0x0060,0x0060,
55 0x0060,0x0060,0x003E,0x0060,0x0060,0x0060,0x0060,0x0060,
56 0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,
57 0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,
58 0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,
59 0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,
60 0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x003E,
61 0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x003E,0x003E
64 static const signed short ycbcr16x16_420_2
[8*8*6] =
66 -0x00A5,-0x00A5,-0x00A5,-0x0072,-0x00A5,-0x0072,-0x0072,-0x0072,
67 -0x0072,-0x00A5,-0x0072,-0x0072,-0x00A5,-0x0072,-0x0072,-0x0072,
68 -0x0072,-0x00A5,-0x0072,-0x0072,-0x00A5,-0x00A5,-0x0072,-0x0072,
69 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
70 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
71 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
72 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
73 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
75 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
76 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
77 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
78 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
79 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
80 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
81 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
82 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
84 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
85 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
86 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
87 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
88 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
89 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
90 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
91 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
93 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
94 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
95 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
96 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,
97 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x00A5,
98 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x00A5,-0x00A5,
99 -0x0072,-0x0072,-0x0072,-0x0072,-0x0072,-0x00A5,-0x00A5,-0x00A5,
100 -0x0072,-0x0072,-0x0072,-0x0072,-0x00A5,-0x00A5,-0x00A5,-0x00A5,
102 -0x004F,-0x004F,-0x004F,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,
103 -0x00B2,-0x00B2,-0x004F,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,
104 -0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,
105 -0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,
106 -0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,
107 -0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,
108 -0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x004F,
109 -0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x00B2,-0x004F,-0x004F,
111 -0x003E,-0x003E,-0x003E,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,
112 -0x0060,-0x0060,-0x003E,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,
113 -0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,
114 -0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,
115 -0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,
116 -0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,
117 -0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x003E,
118 -0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x0060,-0x003E,-0x003E
121 int main(int argc
, char **argv
)
123 const unsigned int video_width
= 32, video_height
= 32;
124 const unsigned int window_width
= video_width
* 2, window_height
= video_height
* 2;
130 struct pipe_context
*pipe
;
131 struct VL_CONTEXT
*ctx
;
132 struct VL_SURFACE
*sfc
, *past_sfc
, *future_sfc
;
133 struct VL_MOTION_VECTOR motion_vector
[2] =
143 display
= XOpenDisplay(NULL
);
144 root
= XDefaultRootWindow(display
);
145 window
= XCreateSimpleWindow(display
, root
, 0, 0, window_width
, window_height
, 0, 0, 0);
146 framebuffer
= XCreatePixmap(display
, root
, window_width
, window_height
, 24);
148 XSelectInput(display
, window
, ExposureMask
| KeyPressMask
);
149 XMapWindow(display
, window
);
152 pipe
= create_pipe_context(display
);
153 vlCreateContext(display
, pipe
, video_width
, video_height
, VL_FORMAT_YCBCR_420
, &ctx
);
154 vlCreateSurface(ctx
, &sfc
);
155 vlCreateSurface(ctx
, &past_sfc
);
156 vlCreateSurface(ctx
, &future_sfc
);
158 vlRenderIMacroBlock(VL_FRAME_PICTURE
, VL_FIELD_FIRST
, 0, 0, 0x3F, VL_DCT_FRAME_CODED
, (short*)ycbcr16x16_420
, past_sfc
);
159 vlRenderIMacroBlock(VL_FRAME_PICTURE
, VL_FIELD_FIRST
, 1, 0, 0x3F, VL_DCT_FRAME_CODED
, (short*)ycbcr16x16_420
, past_sfc
);
160 vlRenderIMacroBlock(VL_FRAME_PICTURE
, VL_FIELD_FIRST
, 0, 1, 0x3F, VL_DCT_FRAME_CODED
, (short*)ycbcr16x16_420
, past_sfc
);
161 vlRenderIMacroBlock(VL_FRAME_PICTURE
, VL_FIELD_FIRST
, 1, 1, 0x3F, VL_DCT_FRAME_CODED
, (short*)ycbcr16x16_420
, past_sfc
);
162 vlRenderIMacroBlock(VL_FRAME_PICTURE
, VL_FIELD_FIRST
, 0, 0, 0x3F, VL_DCT_FRAME_CODED
, (short*)ycbcr16x16_420
, future_sfc
);
163 vlRenderIMacroBlock(VL_FRAME_PICTURE
, VL_FIELD_FIRST
, 1, 0, 0x3F, VL_DCT_FRAME_CODED
, (short*)ycbcr16x16_420
, future_sfc
);
164 vlRenderIMacroBlock(VL_FRAME_PICTURE
, VL_FIELD_FIRST
, 0, 1, 0x3F, VL_DCT_FRAME_CODED
, (short*)ycbcr16x16_420
, future_sfc
);
165 vlRenderIMacroBlock(VL_FRAME_PICTURE
, VL_FIELD_FIRST
, 1, 1, 0x3F, VL_DCT_FRAME_CODED
, (short*)ycbcr16x16_420
, future_sfc
);
176 (short*)ycbcr16x16_420_2
,
181 vlPutSurface(sfc
, framebuffer
, 0, 0, video_width
, video_height
, 0, 0, window_width
, window_height
, VL_FRAME_PICTURE
);
183 puts("Press any key to continue...");
187 XNextEvent(display
, &event
);
197 XDefaultGC(display
, XDefaultScreen(display
)),
215 vlDestroySurface(sfc
);
216 vlDestroySurface(past_sfc
);
217 vlDestroySurface(future_sfc
);
218 vlDestroyContext(ctx
);
220 XFreePixmap(display
, framebuffer
);
221 XDestroyWindow(display
, window
);
222 XCloseDisplay(display
);