1*d5ae8d7fSLinus Torvalds /* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */ 2*d5ae8d7fSLinus Torvalds /* 3*d5ae8d7fSLinus Torvalds * osd.h - DEPRECATED On Screen Display API 4*d5ae8d7fSLinus Torvalds * 5*d5ae8d7fSLinus Torvalds * NOTE: should not be used on future drivers 6*d5ae8d7fSLinus Torvalds * 7*d5ae8d7fSLinus Torvalds * Copyright (C) 2001 Ralph Metzler <[email protected]> 8*d5ae8d7fSLinus Torvalds * & Marcus Metzler <[email protected]> 9*d5ae8d7fSLinus Torvalds * for convergence integrated media GmbH 10*d5ae8d7fSLinus Torvalds */ 11*d5ae8d7fSLinus Torvalds 12*d5ae8d7fSLinus Torvalds #ifndef _DVBOSD_H_ 13*d5ae8d7fSLinus Torvalds #define _DVBOSD_H_ 14*d5ae8d7fSLinus Torvalds 15*d5ae8d7fSLinus Torvalds #include <linux/compiler.h> 16*d5ae8d7fSLinus Torvalds 17*d5ae8d7fSLinus Torvalds typedef enum { 18*d5ae8d7fSLinus Torvalds /* All functions return -2 on "not open" */ 19*d5ae8d7fSLinus Torvalds OSD_Close = 1, /* () */ 20*d5ae8d7fSLinus Torvalds /* 21*d5ae8d7fSLinus Torvalds * Disables OSD and releases the buffers 22*d5ae8d7fSLinus Torvalds * returns 0 on success 23*d5ae8d7fSLinus Torvalds */ 24*d5ae8d7fSLinus Torvalds OSD_Open, /* (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0)) */ 25*d5ae8d7fSLinus Torvalds /* 26*d5ae8d7fSLinus Torvalds * Opens OSD with this size and bit depth 27*d5ae8d7fSLinus Torvalds * returns 0 on success, -1 on DRAM allocation error, -2 on "already open" 28*d5ae8d7fSLinus Torvalds */ 29*d5ae8d7fSLinus Torvalds OSD_Show, /* () */ 30*d5ae8d7fSLinus Torvalds /* 31*d5ae8d7fSLinus Torvalds * enables OSD mode 32*d5ae8d7fSLinus Torvalds * returns 0 on success 33*d5ae8d7fSLinus Torvalds */ 34*d5ae8d7fSLinus Torvalds OSD_Hide, /* () */ 35*d5ae8d7fSLinus Torvalds /* 36*d5ae8d7fSLinus Torvalds * disables OSD mode 37*d5ae8d7fSLinus Torvalds * returns 0 on success 38*d5ae8d7fSLinus Torvalds */ 39*d5ae8d7fSLinus Torvalds OSD_Clear, /* () */ 40*d5ae8d7fSLinus Torvalds /* 41*d5ae8d7fSLinus Torvalds * Sets all pixel to color 0 42*d5ae8d7fSLinus Torvalds * returns 0 on success 43*d5ae8d7fSLinus Torvalds */ 44*d5ae8d7fSLinus Torvalds OSD_Fill, /* (color) */ 45*d5ae8d7fSLinus Torvalds /* 46*d5ae8d7fSLinus Torvalds * Sets all pixel to color <col> 47*d5ae8d7fSLinus Torvalds * returns 0 on success 48*d5ae8d7fSLinus Torvalds */ 49*d5ae8d7fSLinus Torvalds OSD_SetColor, /* (color,R{x0},G{y0},B{x1},opacity{y1}) */ 50*d5ae8d7fSLinus Torvalds /* 51*d5ae8d7fSLinus Torvalds * set palette entry <num> to <r,g,b>, <mix> and <trans> apply 52*d5ae8d7fSLinus Torvalds * R,G,B: 0..255 53*d5ae8d7fSLinus Torvalds * R=Red, G=Green, B=Blue 54*d5ae8d7fSLinus Torvalds * opacity=0: pixel opacity 0% (only video pixel shows) 55*d5ae8d7fSLinus Torvalds * opacity=1..254: pixel opacity as specified in header 56*d5ae8d7fSLinus Torvalds * opacity=255: pixel opacity 100% (only OSD pixel shows) 57*d5ae8d7fSLinus Torvalds * returns 0 on success, -1 on error 58*d5ae8d7fSLinus Torvalds */ 59*d5ae8d7fSLinus Torvalds OSD_SetPalette, /* (firstcolor{color},lastcolor{x0},data) */ 60*d5ae8d7fSLinus Torvalds /* 61*d5ae8d7fSLinus Torvalds * Set a number of entries in the palette 62*d5ae8d7fSLinus Torvalds * sets the entries "firstcolor" through "lastcolor" from the array "data" 63*d5ae8d7fSLinus Torvalds * data has 4 byte for each color: 64*d5ae8d7fSLinus Torvalds * R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel 65*d5ae8d7fSLinus Torvalds */ 66*d5ae8d7fSLinus Torvalds OSD_SetTrans, /* (transparency{color}) */ 67*d5ae8d7fSLinus Torvalds /* 68*d5ae8d7fSLinus Torvalds * Sets transparency of mixed pixel (0..15) 69*d5ae8d7fSLinus Torvalds * returns 0 on success 70*d5ae8d7fSLinus Torvalds */ 71*d5ae8d7fSLinus Torvalds OSD_SetPixel, /* (x0,y0,color) */ 72*d5ae8d7fSLinus Torvalds /* 73*d5ae8d7fSLinus Torvalds * sets pixel <x>,<y> to color number <col> 74*d5ae8d7fSLinus Torvalds * returns 0 on success, -1 on error 75*d5ae8d7fSLinus Torvalds */ 76*d5ae8d7fSLinus Torvalds OSD_GetPixel, /* (x0,y0) */ 77*d5ae8d7fSLinus Torvalds /* returns color number of pixel <x>,<y>, or -1 */ 78*d5ae8d7fSLinus Torvalds OSD_SetRow, /* (x0,y0,x1,data) */ 79*d5ae8d7fSLinus Torvalds /* 80*d5ae8d7fSLinus Torvalds * fills pixels x0,y through x1,y with the content of data[] 81*d5ae8d7fSLinus Torvalds * returns 0 on success, -1 on clipping all pixel (no pixel drawn) 82*d5ae8d7fSLinus Torvalds */ 83*d5ae8d7fSLinus Torvalds OSD_SetBlock, /* (x0,y0,x1,y1,increment{color},data) */ 84*d5ae8d7fSLinus Torvalds /* 85*d5ae8d7fSLinus Torvalds * fills pixels x0,y0 through x1,y1 with the content of data[] 86*d5ae8d7fSLinus Torvalds * inc contains the width of one line in the data block, 87*d5ae8d7fSLinus Torvalds * inc<=0 uses blockwidth as linewidth 88*d5ae8d7fSLinus Torvalds * returns 0 on success, -1 on clipping all pixel 89*d5ae8d7fSLinus Torvalds */ 90*d5ae8d7fSLinus Torvalds OSD_FillRow, /* (x0,y0,x1,color) */ 91*d5ae8d7fSLinus Torvalds /* 92*d5ae8d7fSLinus Torvalds * fills pixels x0,y through x1,y with the color <col> 93*d5ae8d7fSLinus Torvalds * returns 0 on success, -1 on clipping all pixel 94*d5ae8d7fSLinus Torvalds */ 95*d5ae8d7fSLinus Torvalds OSD_FillBlock, /* (x0,y0,x1,y1,color) */ 96*d5ae8d7fSLinus Torvalds /* 97*d5ae8d7fSLinus Torvalds * fills pixels x0,y0 through x1,y1 with the color <col> 98*d5ae8d7fSLinus Torvalds * returns 0 on success, -1 on clipping all pixel 99*d5ae8d7fSLinus Torvalds */ 100*d5ae8d7fSLinus Torvalds OSD_Line, /* (x0,y0,x1,y1,color) */ 101*d5ae8d7fSLinus Torvalds /* 102*d5ae8d7fSLinus Torvalds * draw a line from x0,y0 to x1,y1 with the color <col> 103*d5ae8d7fSLinus Torvalds * returns 0 on success 104*d5ae8d7fSLinus Torvalds */ 105*d5ae8d7fSLinus Torvalds OSD_Query, /* (x0,y0,x1,y1,xasp{color}}), yasp=11 */ 106*d5ae8d7fSLinus Torvalds /* 107*d5ae8d7fSLinus Torvalds * fills parameters with the picture dimensions and the pixel aspect ratio 108*d5ae8d7fSLinus Torvalds * returns 0 on success 109*d5ae8d7fSLinus Torvalds */ 110*d5ae8d7fSLinus Torvalds OSD_Test, /* () */ 111*d5ae8d7fSLinus Torvalds /* 112*d5ae8d7fSLinus Torvalds * draws a test picture. for debugging purposes only 113*d5ae8d7fSLinus Torvalds * returns 0 on success 114*d5ae8d7fSLinus Torvalds * TODO: remove "test" in final version 115*d5ae8d7fSLinus Torvalds */ 116*d5ae8d7fSLinus Torvalds OSD_Text, /* (x0,y0,size,color,text) */ 117*d5ae8d7fSLinus Torvalds OSD_SetWindow, /* (x0) set window with number 0<x0<8 as current */ 118*d5ae8d7fSLinus Torvalds OSD_MoveWindow, /* move current window to (x0, y0) */ 119*d5ae8d7fSLinus Torvalds OSD_OpenRaw, /* Open other types of OSD windows */ 120*d5ae8d7fSLinus Torvalds } OSD_Command; 121*d5ae8d7fSLinus Torvalds 122*d5ae8d7fSLinus Torvalds typedef struct osd_cmd_s { 123*d5ae8d7fSLinus Torvalds OSD_Command cmd; 124*d5ae8d7fSLinus Torvalds int x0; 125*d5ae8d7fSLinus Torvalds int y0; 126*d5ae8d7fSLinus Torvalds int x1; 127*d5ae8d7fSLinus Torvalds int y1; 128*d5ae8d7fSLinus Torvalds int color; 129*d5ae8d7fSLinus Torvalds void __user *data; 130*d5ae8d7fSLinus Torvalds } osd_cmd_t; 131*d5ae8d7fSLinus Torvalds 132*d5ae8d7fSLinus Torvalds /* OSD_OpenRaw: set 'color' to desired window type */ 133*d5ae8d7fSLinus Torvalds typedef enum { 134*d5ae8d7fSLinus Torvalds OSD_BITMAP1, /* 1 bit bitmap */ 135*d5ae8d7fSLinus Torvalds OSD_BITMAP2, /* 2 bit bitmap */ 136*d5ae8d7fSLinus Torvalds OSD_BITMAP4, /* 4 bit bitmap */ 137*d5ae8d7fSLinus Torvalds OSD_BITMAP8, /* 8 bit bitmap */ 138*d5ae8d7fSLinus Torvalds OSD_BITMAP1HR, /* 1 Bit bitmap half resolution */ 139*d5ae8d7fSLinus Torvalds OSD_BITMAP2HR, /* 2 bit bitmap half resolution */ 140*d5ae8d7fSLinus Torvalds OSD_BITMAP4HR, /* 4 bit bitmap half resolution */ 141*d5ae8d7fSLinus Torvalds OSD_BITMAP8HR, /* 8 bit bitmap half resolution */ 142*d5ae8d7fSLinus Torvalds OSD_YCRCB422, /* 4:2:2 YCRCB Graphic Display */ 143*d5ae8d7fSLinus Torvalds OSD_YCRCB444, /* 4:4:4 YCRCB Graphic Display */ 144*d5ae8d7fSLinus Torvalds OSD_YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */ 145*d5ae8d7fSLinus Torvalds OSD_VIDEOTSIZE, /* True Size Normal MPEG Video Display */ 146*d5ae8d7fSLinus Torvalds OSD_VIDEOHSIZE, /* MPEG Video Display Half Resolution */ 147*d5ae8d7fSLinus Torvalds OSD_VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */ 148*d5ae8d7fSLinus Torvalds OSD_VIDEODSIZE, /* MPEG Video Display Double Resolution */ 149*d5ae8d7fSLinus Torvalds OSD_VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */ 150*d5ae8d7fSLinus Torvalds OSD_VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/ 151*d5ae8d7fSLinus Torvalds OSD_VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */ 152*d5ae8d7fSLinus Torvalds OSD_VIDEONSIZE, /* Full Size MPEG Video Display */ 153*d5ae8d7fSLinus Torvalds OSD_CURSOR /* Cursor */ 154*d5ae8d7fSLinus Torvalds } osd_raw_window_t; 155*d5ae8d7fSLinus Torvalds 156*d5ae8d7fSLinus Torvalds typedef struct osd_cap_s { 157*d5ae8d7fSLinus Torvalds int cmd; 158*d5ae8d7fSLinus Torvalds #define OSD_CAP_MEMSIZE 1 /* memory size */ 159*d5ae8d7fSLinus Torvalds long val; 160*d5ae8d7fSLinus Torvalds } osd_cap_t; 161*d5ae8d7fSLinus Torvalds 162*d5ae8d7fSLinus Torvalds 163*d5ae8d7fSLinus Torvalds #define OSD_SEND_CMD _IOW('o', 160, osd_cmd_t) 164*d5ae8d7fSLinus Torvalds #define OSD_GET_CAPABILITY _IOR('o', 161, osd_cap_t) 165*d5ae8d7fSLinus Torvalds 166*d5ae8d7fSLinus Torvalds #endif 167