📄 cvdvtypes.h
字号:
/* cvdvtypes.h Copyright (C) Christian Wolff for convergence integrated media. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/ ///////////////////////////////////////////////// // // // Convergence Digital Video Decoder Card // // External Definitions for the Char-Driver // // Copyright (c) 1999 Christian Wolff / // // convergence integrated media GmbH Berlin // // ///////////////////////////////////////////////////// As of 1999-11-09#ifndef _CVDVTYPE_H_#define _CVDVTYPE_H_// our ioctl number: _IOC_TYPE() is 0xA2 (162) and the range of _IOC_NR() is 0x00 to 0x0F.// submitted 99/10/15 to mec@shout.net#define CVDV_IOCTL_MAGIC 0xA2// command numbers _IOC_NR() for ioctltypedef enum { IOCTL_DRAW = 0x01, IOCTL_DECODER = 0x02} IOCTL_Command;// supported Videosystems// everything but PAL and NTSC is untested and probably won't work.typedef enum { NTSC = 1, // NTSC 29.97 fps NTSC60, // NTSC 30 fps PAL, // PAL-B, D, G, H, I, 25 fps PALM, // PAL-M 29.97 fps PALM60, // PAL-M 30 fps PALN, // PAL-N 25 fps PALNc, // PAL-Nc 25 fps PAL60 // PAL 30 fps (doesn't work, yet...)} videosystem;typedef enum { stream_none = 0, // unknown stream_ES, stream_PES, stream_PS, stream_DVD} stream_type;typedef enum { audio_disable = -1, audio_none = 0, // unknown audio_MPEG, audio_MPEG_EXT, audio_LPCM, audio_AC3, audio_DTS, audio_SDDS} audio_type;#if 0typedef enum { // All functions return -2 on "not open" OSD_Close = 1, // () // Disables OSD and releases the buffers // returns 0 on success OSD_Open, // (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" OSD_Show, // () // enables OSD mode // returns 0 on success OSD_Hide, // () // disables OSD mode // returns 0 on success OSD_Clear, // () // Sets all pixel to color 0 // returns 0 on success OSD_Fill, // (color) // Sets all pixel to color <col> // returns 0 on success OSD_SetColor, // (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 OSD_SetPalette, // (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 OSD_SetTrans, // (transparency{color}) // Sets transparency of mixed pixel (0..15) // returns 0 on success OSD_SetPixel, // (x0,y0,color) // sets pixel <x>,<y> to color number <col> // returns 0 on success, -1 on error OSD_GetPixel, // (x0,y0) // returns color number of pixel <x>,<y>, or -1 OSD_SetRow, // (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) OSD_SetBlock, // (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 blockwidth as linewidth // returns 0 on success, -1 on clipping all pixel OSD_FillRow, // (x0,y0,x1,color) // fills pixels x0,y through x1,y with the color <col> // returns 0 on success, -1 on clipping all pixel OSD_FillBlock, // (x0,y0,x1,y1,color) // fills pixels x0,y0 through x1,y1 with the color <col> // returns 0 on success, -1 on clipping all pixel OSD_Line, // (x0,y0,x1,y1,color) // draw a line from x0,y0 to x1,y1 with the color <col> // returns 0 on success OSD_Query, // (x0,y0,x1,y1,xasp{color}}), yasp=11 // fills parameters with the picture dimensions and the pixel aspect ratio // returns 0 on success OSD_Test // () // draws a test picture. for debugging purposes only // returns 0 on success// TODO: remove "test" in final version} OSD_Command;struct drawcmd { OSD_Command cmd; int x0; int y0; int x1; int y1; int color; void *data;};#endiftypedef enum { Decoder_Pause, // pause{param1} 0=run 1=pause 2=toggle Decoder_Still_Put, // (width{param1}, height{param2}, luma{data1}, chroma{data2}) // show still picture of specified size // width; width of the image // height; height of the image // luma; Y values, one byte per pixel, width*height bytes // chroma; 4:2:0 U and V values, interlaced, one byte each U, one byte each V, width*height/2 bytes Decoder_Still_Get, // (width{param1}, height{param2}, luma{data1}, chroma{data2}) // grab current showing image // width and height will be set to current picture size // if luma and croma are NULL, only width and height will be reported // otherwise the pixel data is filled in there, same format as Still_put Decoder_Set_Videosystem, // (videosystem{param1}) // videosystem: see enum {} videosystem; Decoder_Set_Streamtype, // (streamtype{param1}) // streamtype: according to enum {} stream_type; // This has to be set BEFORE you send data to the device // For ES and PES streams, Audio has to go into the first device (e.g.minor 0) and video into the second (e.g.minor 16) Decoder_Set_Audiotype, // (audiotype{param1}) // audiotype: see enum {} audio_type, +16 for IEC956 on S/PDIF out Decoder_Set_VideoStreamID, // (video stream ID {param1}) // video stream ID: MPEG ID 0..15 of video stream to display (E0..EF), -1 for any/auto Decoder_Set_AudioStreamID, // (audio stream ID {param1}, audio extension stream ID {param2}) // audio stream ID: MPEG ID 0..31 of audio stream to display (C0..DF), -1 for any/auto // audio extension stream ID: MPEG ID 0..31 of audio extension stream (C0..DF), -1 for none Decoder_CSS, // Passes CSS information to and from the decoder // action{param1}, // data block{data1} MSB first // execute 1 to 4 once for each disc, then 5 to 8 for each title // returns 0 on success, <0 on error // -1: timeout reading data from card // -2: data pointer not initialized // -3: invalid action number // action=0 -> disable and bypass CSS // Disk key: // action=1 -> retreive drive challenge (10 byte) from card // action=2 -> post drive response (5 byte) to card // action=3 -> post card challenge (10 byte) and retreive card response (5 byte) // action=4 -> post disk key (2048 byte) into the card // Title key: // action=5 -> retreive title challenge (10 byte) from card // action=6 -> post title response (5 byte) to card // action=7 -> post card challenge (10 byte) and retreive card response (5 byte) // action=8 -> post encrypted title key (5 byte) into the card Decoder_Highlight, // post SPU Highlight information, // active{param1} // 1=show highlight, 0=hide highlight // color information(SL_COLI or AC_COLI){data1[4]} MSB first // bits: descr. // 31-28 Emphasis pixel-2 color // 27-24 Emphasis pixel-1 color // 23-20 Pattern pixel color // 19-16 Background pixel color // 15-12 Emphasis pixel-2 contrast // 11- 8 Emphasis pixel-1 contrast // 7- 4 Pattern pixel contrast // 3- 0 Background pixel contrast // button position(BTN_POSI){data2[6]} MSB first // bits: descr. // 47-46 button color number // 45-36 start x // 33-24 end x // 23-22 auto action mode // 21-12 start y // 9- 0 end y Decoder_SPU, // Activate SPU decoding and select SPU stream ID // stream{param1} // active{param2} Decoder_SPU_Palette, // post SPU Palette information // length{param1} // palette{data1} Decoder_GetNavi, // Retreives CSS-decrypted navigational information from the stream. // data1 will be filled with PCI or DSI pack (private stream 2 stream_id), // and the length of data1 (1024 or 0) will be returned Decoder_SetKaraoke, // Vocal1{param1}, Vocal2{param2}, Melody{param3} // if Vocal1 or Vocal2 are non-zero, they get mixed into left and right at 70% each // if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and // Vocal2 into the right channel at 100% each. // if Melody is non-zero, the melody channel gets mixed into left and right Decoder_Set_Videoattribute, // Set the video parameters // attribute{param1} (2 byte V_ATR) // bits: descr. // 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) // 13-12 TV system (0=525/60, 1=625/50) // 11-10 Aspect ratio (0=4:3, 3=16:9) // 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-scan, 2=only letterbox) // 7 line 21-1 data present in GOP (1=yes, 0=no) // 6 line 21-2 data present in GOP (1=yes, 0=no) // 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/576, 3=352x240/288) // 2 source letterboxed (1=yes, 0=no) // 0 film/camera mode (0=camera, 1=film (625/50 only)) Decoder_Set_Audioattribute, // Set the audio parameters // attribute{param1} (2 most significan bytes of A_ATR (bit 63 through 48)) // bits: descr. // 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, 7=SDDS) // 12 multichannel extension // 11-10 audio type (0=not spec, 1=language included) // 9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) // 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, 1=20bit, 2=24bit) // 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) // 2- 0 number of audio channels (n+1 channels) Decoder_WriteBlock, // Post one block of data, e.g. one DVD sector of 2048 byte, into the decoder queue // sectordata{data1} // length{param1} // is_initial_block{param2} // set_SCR{param3} /* Decoder_FFWD, // ffwd{param1} 0=normal 1=ffwd 2=toggle Decoder_Slow // slow{param1} 0=normal 1=slow 2=toggle */} Decoder_Command;struct decodercmd { Decoder_Command cmd; int param1; int param2; int param3; int param4; int param5; void *data1; void *data2;};#endif // _CVDVTYPE_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -