cvdvtypes.h
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:10k
源码类别:

DVD

开发平台:

Unix_Linux

  1.        /////////////////////////////////////////////////
  2.       //                                             //
  3.      //  Convergence Digital Video Decoder Card     //
  4.     //  External Definitions for the Char-Driver   //
  5.    //  Copyright (c) 1999 Christian Wolff /       //
  6.   //  convergence integrated media GmbH Berlin   //
  7.  //                                             //
  8. /////////////////////////////////////////////////
  9. // As of 1999-11-09
  10. #ifndef _CVDVTYPE_H_
  11. #define _CVDVTYPE_H_
  12. // our ioctl number: _IOC_TYPE() is 0xA2 (162) and the range of _IOC_NR() is 0x00 to 0x0F.
  13. // submitted 99/10/15 to mec@shout.net
  14. #define CVDV_IOCTL_MAGIC 0xA2
  15. // command numbers _IOC_NR() for ioctl
  16. typedef enum {
  17.   IOCTL_DRAW=0x01,
  18.   IOCTL_DECODER=0x02
  19. } IOCTL_Command;
  20. // supported Videosystems
  21. // everything but PAL and NTSC is untested and probably won't work.
  22. typedef enum {
  23.   NTSC=1, // NTSC 29.97 fps
  24.   NTSC60, // NTSC 30 fps
  25.   PAL,    // PAL-B, D, G, H, I, 25 fps
  26.   PALM,   // PAL-M 29.97 fps
  27.   PALM60, // PAL-M 30 fps
  28.   PALN,   // PAL-N 25 fps
  29.   PALNc,  // PAL-Nc 25 fps
  30.   PAL60   // PAL 30 fps (doesn't work, yet...)
  31. } videosystem;
  32. typedef enum {
  33.   stream_none=0,  // unknown
  34.   stream_ES,
  35.   stream_PES,
  36.   stream_PS,
  37.   stream_DVD
  38. } stream_type;
  39. typedef enum {
  40.   audio_disable=-1,
  41.   audio_none=0,  // unknown
  42.   audio_MPEG,
  43.   audio_MPEG_EXT,
  44.   audio_LPCM,
  45.   audio_AC3,
  46.   audio_DTS,
  47.   audio_SDDS
  48. } audio_type;
  49. typedef enum {
  50.   // All functions return -2 on "not open"
  51.   OSD_Close=1,    // ()
  52.   // Disables OSD and releases the buffers
  53.   // returns 0 on success
  54.   OSD_Open,       // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0))
  55.   // Opens OSD with this size and bit depth
  56.   // returns 0 on success, -1 on DRAM allocation error, -2 on "already open"
  57.   OSD_Show,       // ()
  58.   // enables OSD mode
  59.   // returns 0 on success
  60.   OSD_Hide,       // ()
  61.   // disables OSD mode
  62.   // returns 0 on success
  63.   OSD_Clear,      // ()
  64.   // Sets all pixel to color 0
  65.   // returns 0 on success
  66.   OSD_Fill,       // (color)
  67.   // Sets all pixel to color <col>
  68.   // returns 0 on success
  69.   OSD_SetColor,   // (color,R{x0},G{y0},B{x1},opacity{y1})
  70.   // set palette entry <num> to <r,g,b>, <mix> and <trans> apply
  71.   // R,G,B: 0..255
  72.   // R=Red, G=Green, B=Blue
  73.   // opacity=0:      pixel opacity 0% (only video pixel shows)
  74.   // opacity=1..254: pixel opacity as specified in header
  75.   // opacity=255:    pixel opacity 100% (only OSD pixel shows)
  76.   // returns 0 on success, -1 on error
  77.   OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data)
  78.   // Set a number of entries in the palette
  79.   // sets the entries "firstcolor" through "lastcolor" from the array "data"
  80.   // data has 4 byte for each color:
  81.   // R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel
  82.   OSD_SetTrans,   // (transparency{color})
  83.   // Sets transparency of mixed pixel (0..15)
  84.   // returns 0 on success
  85.   OSD_SetPixel,   // (x0,y0,color)
  86.   // sets pixel <x>,<y> to color number <col>
  87.   // returns 0 on success, -1 on error
  88.   OSD_GetPixel,   // (x0,y0)
  89.   // returns color number of pixel <x>,<y>,  or -1
  90.   OSD_SetRow,     // (x0,y0,x1,data)
  91.   // fills pixels x0,y through  x1,y with the content of data[]
  92.   // returns 0 on success, -1 on clipping all pixel (no pixel drawn)
  93.   OSD_SetBlock,   // (x0,y0,x1,y1,increment{color},data)
  94.   // fills pixels x0,y0 through  x1,y1 with the content of data[]
  95.   // inc contains the width of one line in the data block,
  96.   // inc<=0 uses blockwidth as linewidth
  97.   // returns 0 on success, -1 on clipping all pixel
  98.   OSD_FillRow,    // (x0,y0,x1,color)
  99.   // fills pixels x0,y through  x1,y with the color <col>
  100.   // returns 0 on success, -1 on clipping all pixel
  101.   OSD_FillBlock,  // (x0,y0,x1,y1,color)
  102.   // fills pixels x0,y0 through  x1,y1 with the color <col>
  103.   // returns 0 on success, -1 on clipping all pixel
  104.   OSD_Line,       // (x0,y0,x1,y1,color)
  105.   // draw a line from x0,y0 to x1,y1 with the color <col>
  106.   // returns 0 on success
  107.   OSD_Query,      // (x0,y0,x1,y1,xasp{color}}), yasp=11
  108.   // fills parameters with the picture dimensions and the pixel aspect ratio
  109.   // returns 0 on success
  110.   OSD_Test        // ()
  111.   // draws a test picture. for debugging purposes only
  112.   // returns 0 on success
  113. // TODO: remove "test" in final version
  114. } OSD_Command;
  115. struct drawcmd {
  116.   OSD_Command cmd;
  117.   int x0;
  118.   int y0;
  119.   int x1;
  120.   int y1;
  121.   int color;
  122.   void *data;
  123. };
  124. typedef enum {
  125.   Decoder_Pause,       // pause{param1}  0=run 1=pause 2=toggle
  126.   Decoder_Still_Put,   // (width{param1}, height{param2}, luma{data1}, chroma{data2})
  127.     // show still picture of specified size
  128.     // width;    width of the image
  129.     // height;   height of the image
  130.     // luma;     Y values, one byte per pixel, width*height bytes
  131.     // chroma;   4:2:0 U and V values, interlaced, one byte each U, one byte each V, width*height/2 bytes
  132.   Decoder_Still_Get,   // (width{param1}, height{param2}, luma{data1}, chroma{data2})
  133.     // grab current showing image
  134.     // width and height will be set to current picture size
  135.     // if luma and croma are NULL, only width and height will be reported
  136.     // otherwise the pixel data is filled in there, same format as Still_put
  137.   Decoder_Set_Videosystem,  // (videosystem{param1})
  138.     // videosystem: see enum {} videosystem;
  139.   Decoder_Set_Streamtype,  // (streamtype{param1})
  140.     // streamtype: according to enum {} stream_type;
  141.     // This has to be set BEFORE you send data to the device
  142.     // 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)
  143.   Decoder_Set_Audiotype,   // (audiotype{param1})
  144.     // audiotype: see enum {} audio_type, +16 for IEC956 on S/PDIF out
  145.   Decoder_Set_VideoStreamID,        // (video stream ID {param1})
  146.     // video stream ID: MPEG ID 0..15 of video stream to display (E0..EF), -1 for any/auto
  147.   Decoder_Set_AudioStreamID,        // (audio stream ID {param1}, audio extension stream ID {param2})
  148.     // audio stream ID: MPEG ID 0..31 of audio stream to display (C0..DF), -1 for any/auto
  149.     // audio extension stream ID: MPEG ID 0..31 of audio extension stream (C0..DF), -1 for none
  150.   Decoder_CSS,            // Passes CSS information to and from the decoder
  151.     // action{param1},
  152.     // data block{data1} MSB first
  153.     // execute 1 to 4 once for each disc, then 5 to 8 for each title
  154.     // returns 0 on success, <0 on error
  155.     //   -1: timeout reading data from card
  156.     //   -2: data pointer not initialized
  157.     //   -3: invalid action number
  158.     // action=0 -> disable and bypass CSS
  159.     // Disk key:
  160.     // action=1 -> retreive drive challenge (10 byte) from card
  161.     // action=2 -> post drive response (5 byte) to card
  162.     // action=3 -> post card challenge (10 byte) and retreive card response (5 byte)
  163.     // action=4 -> post disk key (2048 byte) into the card
  164.     // Title key:
  165.     // action=5 -> retreive title challenge (10 byte) from card
  166.     // action=6 -> post title response (5 byte) to card
  167.     // action=7 -> post card challenge (10 byte) and retreive card response (5 byte)
  168.     // action=8 -> post encrypted title key (5 byte) into the card
  169.   Decoder_Highlight,      // post SPU Highlight information,
  170.     // active{param1}
  171.     //   1=show highlight, 0=hide highlight
  172.     // color information(SL_COLI or AC_COLI){data1[4]} MSB first 
  173.     //   bits:  descr.
  174.     //   31-28  Emphasis pixel-2 color
  175.     //   27-24  Emphasis pixel-1 color
  176.     //   23-20  Pattern pixel color
  177.     //   19-16  Background pixel color
  178.     //   15-12  Emphasis pixel-2 contrast
  179.     //   11- 8  Emphasis pixel-1 contrast
  180.     //    7- 4  Pattern pixel contrast
  181.     //    3- 0  Background pixel contrast
  182.     // button position(BTN_POSI){data2[6]} MSB first
  183.     //   bits:  descr.
  184.     //   47-46  button color number
  185.     //   45-36  start x
  186.     //   33-24  end x
  187.     //   23-22  auto action mode
  188.     //   21-12  start y
  189.     //    9- 0  end y
  190.   Decoder_SPU,            // Activate SPU decoding and select SPU stream ID
  191.     // stream{param1}
  192.     // active{param2}
  193.   Decoder_SPU_Palette,    // post SPU Palette information
  194.     // length{param1}
  195.     // palette{data1}
  196.   Decoder_GetNavi,        // Retreives CSS-decrypted navigational information from the stream.
  197.     // data1 will be filled with PCI or DSI pack (private stream 2 stream_id), 
  198.     // and the length of data1 (1024 or 0) will be returned
  199.   Decoder_SetKaraoke,     // Vocal1{param1}, Vocal2{param2}, Melody{param3} 
  200.     // if Vocal1 or Vocal2 are non-zero, they get mixed into left and right at 70% each
  201.     // if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and
  202.     // Vocal2 into the right channel at 100% each.
  203.     // if Melody is non-zero, the melody channel gets mixed into left and right
  204.   Decoder_Set_Videoattribute,  // Set the video parameters
  205.     // attribute{param1} (2 byte V_ATR)
  206.     //   bits: descr.
  207.     //   15-14 Video compression mode (0=MPEG-1, 1=MPEG-2)
  208.     //   13-12 TV system (0=525/60, 1=625/50)
  209.     //   11-10 Aspect ratio (0=4:3, 3=16:9)
  210.     //    9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-scan, 2=only letterbox)
  211.     //    7    line 21-1 data present in GOP (1=yes, 0=no)
  212.     //    6    line 21-2 data present in GOP (1=yes, 0=no)
  213.     //    5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/576, 3=352x240/288)
  214.     //    2    source letterboxed (1=yes, 0=no)
  215.     //    0    film/camera mode (0=camera, 1=film (625/50 only))
  216.   Decoder_Set_Audioattribute,  // Set the audio parameters
  217.     // attribute{param1} (2 most significan bytes of A_ATR (bit 63 through 48))
  218.     //   bits: descr.
  219.     //   15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, 7=SDDS)
  220.     //   12    multichannel extension
  221.     //   11-10 audio type (0=not spec, 1=language included)
  222.     //    9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround)
  223.     //    7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, 1=20bit, 2=24bit)
  224.     //    5- 4 Sample frequency fs (0=48kHz, 1=96kHz)
  225.     //    2- 0 number of audio channels (n+1 channels)
  226.   Decoder_WriteBlock      // Post one block of data, e.g. one DVD sector of 2048 byte, into the decoder queue
  227.     // sectordata{data1}
  228.     // length{param1}
  229.     // is_initial_block{param2}
  230.     // set_SCR{param3}
  231. } Decoder_Command;
  232. struct decodercmd {
  233.   Decoder_Command cmd;
  234.   int param1;
  235.   int param2;
  236.   int param3;
  237.   int param4;
  238.   int param5;
  239.   void *data1;
  240.   void *data2;
  241. };
  242. #endif  // _CVDVTYPE_H_