6.2.3.3. DVB OSD Device¶
Attention
Do not use in new drivers! See: General Notes
The DVB OSD device controls the OnScreen-Display of the AV7110 based
DVB-cards with hardware MPEG2 decoder. It can be accessed through
/dev/dvb/adapter?/osd0.
Data types and ioctl definitions can be accessed by including
linux/dvb/osd.h in your application.
The OSD is not a frame-buffer like on many other cards. It is a kind of canvas one can draw on. The color-depth is limited depending on the memory size installed. An appropriate palette of colors has to be set up. The installed memory size can be identified with the OSD_GET_CAPABILITY ioctl.
6.2.3.3.1. OSD Data Types¶
6.2.3.3.1.1. OSD_Command¶
6.2.3.3.1.1.1. Synopsis¶
typedef enum {
    /* All functions return -2 on "not open" */
    OSD_Close = 1,
    OSD_Open,
    OSD_Show,
    OSD_Hide,
    OSD_Clear,
    OSD_Fill,
    OSD_SetColor,
    OSD_SetPalette,
    OSD_SetTrans,
    OSD_SetPixel,
    OSD_GetPixel,
    OSD_SetRow,
    OSD_SetBlock,
    OSD_FillRow,
    OSD_FillBlock,
    OSD_Line,
    OSD_Query,
    OSD_Test,
    OSD_Text,
    OSD_SetWindow,
    OSD_MoveWindow,
    OSD_OpenRaw,
} OSD_Command;
6.2.3.3.1.1.2. Commands¶
Note
All functions return -2 on “not open”
Command  | 
Used variables of  
struct osd_cmd_t.Usage{variable} if alternative use. 
 | 
Description  | 
||
|---|---|---|---|---|
  | 
Disables OSD and releases the buffers. 
Returns 0 on success. 
 | 
|||
  | 
x0,y0,x1,y1, 
BitPerPixel[2/4/8]{color&0x0F}, 
mix[0..15]{color&0xF0} 
 | 
Opens OSD with this size and bit depth 
Returns 0 on success, 
-1 on DRAM allocation error, 
-2 on “already open”. 
 | 
||
  | 
Enables OSD mode. 
Returns 0 on success. 
 | 
|||
  | 
Disables OSD mode. 
Returns 0 on success. 
 | 
|||
  | 
Sets all pixel to color 0. 
Returns 0 on success. 
 | 
|||
  | 
color  | 
Sets all pixel to color <color>. 
Returns 0 on success. 
 | 
||
  | 
color, 
R{x0},G{y0},B{x1}, 
opacity{y1} 
 | 
Set palette entry <num> to <r,g,b>, <mix> and <trans> apply 
R,G,B: 0..255 
R=Red, G=Green, B=Blue 
opacity=0:      pixel opacity 0% (only video pixel shows) 
opacity=1..254: pixel opacity as specified in header 
opacity=255:    pixel opacity 100% (only OSD pixel shows) 
Returns 0 on success, -1 on error. 
 | 
||
  | 
firstcolor{color}, 
lastcolor{x0},data 
 | 
Set a number of entries in the palette. 
Sets the entries “firstcolor” through “lastcolor” from the
array “data”. 
Data has 4 byte for each color: 
R,G,B, and a opacity value: 0->transparent, 1..254->mix,
255->pixel 
 | 
||
  | 
transparency{color}  | 
Sets transparency of mixed pixel (0..15). 
Returns 0 on success. 
 | 
||
  | 
x0,y0,color  | 
Sets pixel <x>,<y> to color number <color>. 
Returns 0 on success, -1 on error. 
 | 
||
  | 
x0,y0  | 
Returns color number of pixel <x>,<y>,  or -1. 
Command currently not supported by the AV7110! 
 | 
||
  | 
x0,y0,x1,data  | 
Fills pixels x0,y through  x1,y with the content of data[]. 
Returns 0 on success, -1 on clipping all pixel (no pixel
drawn). 
 | 
||
  | 
x0,y0,x1,y1, 
increment{color}, 
data 
 | 
Fills pixels x0,y0 through  x1,y1 with the content of data[]. 
Inc contains the width of one line in the data block, 
inc<=0 uses block width as line width. 
Returns 0 on success, -1 on clipping all pixel. 
 | 
||
  | 
x0,y0,x1,color  | 
Fills pixels x0,y through  x1,y with the color <color>. 
Returns 0 on success, -1 on clipping all pixel. 
 | 
||
  | 
x0,y0,x1,y1,color  | 
Fills pixels x0,y0 through  x1,y1 with the color <color>. 
Returns 0 on success, -1 on clipping all pixel. 
 | 
||
  | 
x0,y0,x1,y1,color  | 
Draw a line from x0,y0 to x1,y1 with the color <color>. 
Returns 0 on success. 
 | 
||
  | 
x0,y0,x1,y1, 
xasp{color}; yasp=11 
 | 
Fills parameters with the picture dimensions and the pixel
aspect ratio. 
Returns 0 on success. 
Command currently not supported by the AV7110! 
 | 
||
  | 
Draws a test picture. 
For debugging purposes only. 
Returns 0 on success. 
 | 
|||
  | 
x0,y0,size,color,text  | 
Draws a text at position x0,y0 with the color <color>.  | 
||
  | 
x0  | 
Set window with number 0<x0<8 as current.  | 
||
  | 
x0,y0  | 
Move current window to (x0, y0).  | 
||
  | 
x0,y0,x1,y1, 
osd_raw_window_t {color} 
 | 
Open other types of OSD windows.  | 
||
6.2.3.3.1.1.3. Description¶
The OSD_Command data type is used with the OSD_SEND_CMD ioctl to
tell the driver which OSD_Command to execute.
6.2.3.3.1.2. osd_cmd_t¶
6.2.3.3.1.2.1. Synopsis¶
typedef struct osd_cmd_s {
    OSD_Command cmd;
    int x0;
    int y0;
    int x1;
    int y1;
    int color;
    void __user *data;
} osd_cmd_t;
6.2.3.3.1.2.2. Variables¶
  | 
OSD_Command to be executed.  | 
  | 
First horizontal position.  | 
  | 
First vertical position.  | 
  | 
Second horizontal position.  | 
  | 
Second vertical position.  | 
  | 
Number of the color in the palette.  | 
  | 
Command specific Data.  | 
6.2.3.3.1.2.3. Description¶
The osd_cmd_t data type is used with the OSD_SEND_CMD ioctl.
It contains the data for the OSD_Command and the OSD_Command itself.
The structure has to be passed to the driver and the components may be
modified by it.
6.2.3.3.1.3. osd_raw_window_t¶
6.2.3.3.1.3.1. Synopsis¶
typedef enum {
    OSD_BITMAP1,
    OSD_BITMAP2,
    OSD_BITMAP4,
    OSD_BITMAP8,
    OSD_BITMAP1HR,
    OSD_BITMAP2HR,
    OSD_BITMAP4HR,
    OSD_BITMAP8HR,
    OSD_YCRCB422,
    OSD_YCRCB444,
    OSD_YCRCB444HR,
    OSD_VIDEOTSIZE,
    OSD_VIDEOHSIZE,
    OSD_VIDEOQSIZE,
    OSD_VIDEODSIZE,
    OSD_VIDEOTHSIZE,
    OSD_VIDEOTQSIZE,
    OSD_VIDEOTDSIZE,
    OSD_VIDEONSIZE,
    OSD_CURSOR
} osd_raw_window_t;
6.2.3.3.1.3.2. Constants¶
  | 
1 bit bitmap  | 
|
  | 
2 bit bitmap  | 
|
  | 
4 bit bitmap  | 
|
  | 
8 bit bitmap  | 
|
  | 
1 Bit bitmap half resolution  | 
|
  | 
2 Bit bitmap half resolution  | 
|
  | 
4 Bit bitmap half resolution  | 
|
  | 
8 Bit bitmap half resolution  | 
|
  | 
4:2:2 YCRCB Graphic Display  | 
|
  | 
4:4:4 YCRCB Graphic Display  | 
|
  | 
4:4:4 YCRCB graphic half resolution  | 
|
  | 
True Size Normal MPEG Video Display  | 
|
  | 
MPEG Video Display Half Resolution  | 
|
  | 
MPEG Video Display Quarter Resolution  | 
|
  | 
MPEG Video Display Double Resolution  | 
|
  | 
True Size MPEG Video Display Half Resolution  | 
|
  | 
True Size MPEG Video Display Quarter Resolution  | 
|
  | 
True Size MPEG Video Display Double Resolution  | 
|
  | 
Full Size MPEG Video Display  | 
|
  | 
Cursor  | 
|
6.2.3.3.1.3.3. Description¶
The osd_raw_window_t data type is used with the OSD_Command
OSD_OpenRaw to tell the driver which type of OSD to open.
6.2.3.3.1.4. osd_cap_t¶
6.2.3.3.1.4.1. Synopsis¶
typedef struct osd_cap_s {
    int  cmd;
#define OSD_CAP_MEMSIZE         1
    long val;
} osd_cap_t;
6.2.3.3.1.4.2. Variables¶
  | 
Capability to query.  | 
  | 
Used to store the Data.  | 
6.2.3.3.1.4.3. Supported capabilities¶
  | 
Memory size installed on the card.  | 
6.2.3.3.1.4.4. Description¶
This structure of data used with the OSD_GET_CAPABILITY call.
6.2.3.3.2. OSD Function Calls¶
6.2.3.3.2.1. OSD_SEND_CMD¶
6.2.3.3.2.1.1. Synopsis¶
- 
OSD_SEND_CMD¶
 
int ioctl(int fd, int request = OSD_SEND_CMD, enum osd_cmd_t *cmd)
6.2.3.3.2.1.2. Arguments¶
  | 
File descriptor returned by a previous call to open().  | 
|
  | 
Pointer to the location of the structure osd_cmd_t for this command.  | 
|
6.2.3.3.2.1.3. Description¶
Attention
Do not use in new drivers! See: General Notes
This ioctl sends the OSD_Command to the card.
6.2.3.3.2.1.4. Return Value¶
On success 0 is returned, on error -1 and the errno variable is set
appropriately. The generic error codes are described at the
Generic Error Codes chapter.
  | 
Command is out of range.  | 
6.2.3.3.2.2. OSD_GET_CAPABILITY¶
6.2.3.3.2.2.1. Synopsis¶
- 
OSD_GET_CAPABILITY¶
 
int ioctl(int fd, int request = OSD_GET_CAPABILITY,
struct osd_cap_t *cap)
6.2.3.3.2.2.2. Arguments¶
  | 
File descriptor returned by a previous call to open().  | 
|
  | 
Equals   | 
|
  | 
Pointer to the location of the structure osd_cap_t for this command.  | 
|
6.2.3.3.2.2.3. Description¶
Attention
Do not use in new drivers! See: General Notes
This ioctl is used to get the capabilities of the OSD of the AV7110 based DVB-decoder-card in use.
Note
The structure osd_cap_t has to be setup by the user and passed to the driver.
6.2.3.3.2.2.4. Return Value¶
On success 0 is returned, on error -1 and the errno variable is set
appropriately. The generic error codes are described at the
Generic Error Codes chapter.
  | 
Unsupported capability.  | 
6.2.3.3.2.3. open()¶
6.2.3.3.2.3.1. Synopsis¶
#include <fcntl.h>
- 
int open(const char *deviceName, int flags)¶
 
6.2.3.3.2.3.2. Arguments¶
  | 
Name of specific OSD device.  | 
|
   | 
A bit-wise OR of the following flags:  | 
|
  | 
read-only access  | 
|
  | 
read/write access  | 
|
  | 
Open in non-blocking mode 
(blocking mode is the default) 
 | 
|
6.2.3.3.2.3.3. Description¶
This system call opens a named OSD device (e.g.
/dev/dvb/adapter?/osd0) for subsequent use.
6.2.3.3.2.3.4. Return Value¶
  | 
Device driver not loaded/available.  | 
  | 
Internal error.  | 
  | 
Device or resource busy.  | 
  | 
Invalid argument.  | 
6.2.3.3.2.4. close()¶
6.2.3.3.2.4.1. Synopsis¶
- 
int close(int fd)¶
 
6.2.3.3.2.4.2. Arguments¶
  | 
File descriptor returned by a previous call to open() .  | 
|
6.2.3.3.2.4.3. Description¶
This system call closes a previously opened OSD device.
6.2.3.3.2.4.4. Return Value¶
  | 
fd is not a valid open file descriptor.  |