Lines Matching refs:output

44 #define INIT_OUTPUT_PRIV    psb_x11_output_p output = (psb_x11_output_p)(((psb_driver_data_p)ctx->pDriverData)->ws_priv)
62 static int GetPortId(VADriverContextP ctx, psb_x11_output_p output)
98 output->textured_portID = info[i].base_id + k;
101 output->overlay_portID = info[i].base_id + k;
112 if ((output->textured_portID == 0) && (output->overlay_portID == 0)) {
121 VAStatus psb_init_xvideo(VADriverContextP ctx, psb_x11_output_p output)
130 output->textured_portID = output->overlay_portID = 0;
131 if (GetPortId(ctx, output)) {
136 if (output->textured_portID)
137 drv_debug_msg(VIDEO_DEBUG_GENERAL, "Detected textured Xvideo port_id = %d.\n", (unsigned int)output->textured_portID);
138 if (output->overlay_portID)
139 drv_debug_msg(VIDEO_DEBUG_GENERAL, "Detected overlay Xvideo port_id = %d.\n", (unsigned int)output->overlay_portID);
141 output->sprite_enabled = 0;
144 output->sprite_enabled = 1;
147 output->ignore_dpm = 1;
161 output->ignore_dpm = 0;
166 if (output->textured_portID)
168 if (output->overlay_portID)
186 if (output->gc) {
187 XFreeGC((Display *)ctx->native_dpy, output->gc);
188 output->gc = NULL;
191 if (output->extend_gc) {
192 XFreeGC((Display *)ctx->native_dpy, output->extend_gc);
193 output->extend_gc = NULL;
196 if (output->textured_xvimage) {
198 XFree(output->textured_xvimage);
199 output->textured_xvimage = NULL;
202 if (output->overlay_xvimage) {
204 XFree(output->overlay_xvimage);
205 output->textured_xvimage = NULL;
208 if (output->textured_portID) {
209 if ((output->using_port == USING_TEXTURE_PORT) && output->output_drawable
210 && (psb_CheckDrawable(ctx, output->output_drawable) == 0)) {
212 XvStopVideo((Display *)ctx->native_dpy, output->textured_portID, output->output_drawable);
216 XvUngrabPort((Display *)ctx->native_dpy, output->textured_portID, CurrentTime);
217 output->textured_portID = 0;
220 if (output->overlay_portID) {
221 if ((output->using_port == USING_OVERLAY_PORT) && output->output_drawable
222 && (psb_CheckDrawable(ctx, output->output_drawable) == 0)) {
224 XvStopVideo((Display *)ctx->native_dpy, output->overlay_portID, output->output_drawable);
228 XvUngrabPort((Display *)ctx->native_dpy, output->overlay_portID, CurrentTime);
229 output->overlay_portID = 0;
239 output->using_port = 0;
240 output->output_drawable = 0;
241 output->extend_drawable = 0;
352 if (output->overlay_portID) {
353 XvSetPortAttribute((Display *)ctx->native_dpy, output->overlay_portID, xvDrawable, draw);
354 XvGetPortAttribute((Display *)ctx->native_dpy, output->overlay_portID, xvDrawable, &val);
355 } else if (output->textured_portID) {
356 XvSetPortAttribute((Display *)ctx->native_dpy, output->textured_portID, xvDrawable, draw);
357 XvGetPortAttribute((Display *)ctx->native_dpy, output->textured_portID, xvDrawable, &val);
400 if (output->overlay_portID == 0) { /* no overlay usable */
471 if (output->output_drawable != draw) {
472 if (output->gc)
473 XFreeGC((Display *)ctx->native_dpy, output->gc);
474 output->gc = XCreateGC((Display *)ctx->native_dpy, draw, 0, NULL);
475 output->output_drawable = draw;
479 if (output->textured_portID && (output->using_port == USING_TEXTURE_PORT)) {
481 XvStopVideo((Display *)ctx->native_dpy, output->textured_portID, draw);
484 if (output->overlay_portID && (output->using_port == USING_OVERLAY_PORT)) {
486 XvStopVideo((Display *)ctx->native_dpy, output->overlay_portID, draw);
489 output->using_port = 0;
491 XSetForeground((Display *)ctx->native_dpy, output->gc, driver_data->clear_color);
500 ((output->output_width != obj_surface->width) ||
501 (output->output_height != obj_surface->height) ||
502 (!output->overlay_xvimage))) {
504 if (output->overlay_xvimage)
505 XFree(output->overlay_xvimage);
508 output->overlay_xvimage = XvCreateImage((Display *)ctx->native_dpy, output->overlay_portID,
512 output->overlay_xvimage->data = (char *) & output->imgdata_vasrf;
513 output->output_width = obj_surface->width;
514 output->output_height = obj_surface->height;
516 *xvImage = output->overlay_xvimage;
517 *port_id = output->overlay_portID;
519 if ((output->textured_portID) && (output->using_port == USING_TEXTURE_PORT)) { /* stop texture port */
521 XvStopVideo((Display *)ctx->native_dpy, output->textured_portID, draw);
524 output->using_port = USING_OVERLAY_PORT;
526 drv_debug_msg(VIDEO_DEBUG_GENERAL, "Using Overlay Xvideo (%d) for PutSurface\n", output->textured_portID);
535 ((output->output_width != obj_surface->width) ||
536 (output->output_height != obj_surface->height ||
537 (!output->textured_xvimage)))) {
538 if (output->textured_xvimage)
539 XFree(output->textured_xvimage);
542 output->textured_xvimage = XvCreateImage((Display *)ctx->native_dpy, output->textured_portID, FOURCC_XVVA, 0,
544 output->textured_xvimage->data = (char *) & output->imgdata_vasrf;
545 output->output_width = obj_surface->width;
546 output->output_height = obj_surface->height;
550 *xvImage = output->textured_xvimage;
551 *port_id = output->textured_portID;
553 if ((output->overlay_portID) && (output->using_port == USING_OVERLAY_PORT)) { /* stop overlay port */
555 XvStopVideo((Display *)ctx->native_dpy, output->overlay_portID, draw);
558 output->using_port = USING_TEXTURE_PORT;
561 drv_debug_msg(VIDEO_DEBUG_GENERAL, "Using Texture Xvideo (%d) for PutSurface\n", output->textured_portID);
602 if (output->rotate_surface) {
603 obj_rotate_surface = SURFACE(output->rotate_surfaceID);
607 psb_surface_destroy(output->rotate_surface);
608 free(output->rotate_surface);
610 output->rotate_surface = NULL;
613 if (output->rotate_surface == NULL) {
614 output->rotate_surfaceID = object_heap_allocate(&driver_data->surface_heap);
615 obj_rotate_surface = SURFACE(output->rotate_surfaceID);
623 obj_rotate_surface->surface_id = output->rotate_surfaceID;
630 output->rotate_surface = (psb_surface_p) calloc(1, sizeof(struct psb_surface_s));
631 if (NULL == output->rotate_surface) {
644 fourcc, flags, output->rotate_surface);
653 obj_rotate_surface->psb_surface = output->rotate_surface;
726 XFillRectangle((Display *)ctx->native_dpy, draw, output->gc, destx, desty, destw, desth);
729 XFreeGC((Display *)ctx->native_dpy, output->gc);
730 output->gc = NULL;
731 output->output_drawable = 0;
767 if (output->sprite_enabled)
786 output->rotate_surface->stride, output->rotate_surface->size,
787 output->rotate_surface->buf.buffer_ofs, /* for surface created from RAR/camera device memory
791 output->rotate_surface->buf.drm_buf, 0);
808 if (output->ignore_dpm == 0)
811 XvPutImage((Display *)ctx->native_dpy, portID, draw, output->gc, xvImage,
816 if (portID == output->overlay_portID) {