--- margi2/cardbase.h 2001/01/31 14:19:02 1.5 +++ margi2/cardbase.h 2001/03/06 23:39:26 1.6 @@ -40,6 +40,30 @@ #include #include +#include + + +#include "dvbdev.h" +#ifdef __DVB_PACK__ +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#include +#endif + +#include "dvb_demux.h" +#include "dmxdev.h" // List of pci cards in the system @@ -50,7 +74,14 @@ #define MEDDEVNAME "convergence DVD" #define LONGDEVNAME "convergence DVD Video Decoder" #define LOGNAME "convdvd" -#define NBBUF 16 +#define NBBUF 8 + + +#define VID_PAN_SCAN_PREF 0x01 /* Pan and Scan Display preferred */ +#define VID_VERT_COMP_PREF 0x02 /* Vertical compression display preferred */ +#define VID_VC_AND_PS_PREF 0x03 /* PanScan and vertical Compression if allowed */ +#define VID_CENTRE_CUT_PREF 0x05 /* PanScan with zero vector */ + // Character device definitions // char dev name @@ -239,9 +270,20 @@ typedef struct PTSRecord { u32 PTS[MAX_PTS]; } PTSStorage; +#define DVB_DEVS_MAX 8 + +typedef struct dvb_devs_s { + int num; + int tab[DVB_DEVS_MAX]; + int max_users[DVB_DEVS_MAX]; + int max_writers[DVB_DEVS_MAX]; +} dvb_devs_t; + struct cvdv_cards { + struct video_device video; + struct dvb_device dvb_dev; + struct cvdv_cards *next; - // struct video_device video; void *margi; struct bus_operations *bus; u_char scl; @@ -303,7 +345,7 @@ struct cvdv_cards { int AuxFifoLayer; // " " " " " int AudioInitialized; // Is the Audio set up? int AudioOldMode; // remainder of the previous mode while trickmodes, or -1 - int open[MINORNUM]; // is the 64017 initialized and the video out active? + int open; // is the 64017 initialized and the video out active? int closing; // 1 if char device closed, but DMA still running int startingV; // 1 if card is waiting for the Video ES buffer to fill up, to start the decoder int startingA; // 1 if card is waiting for the Audio ES buffer to fill up, to start the decoder @@ -361,6 +403,21 @@ struct cvdv_cards { u8 highlight[10]; // content of registers 1C0 thru 1C0, to be written after next BAV int. int highlight_valid; // if 1 int do_flush; // if 1, send flush packet after last transfer done + int hasZV; +#ifdef NOINT + struct timer_list timer; + spinlock_t timelock; +#endif + dvb_devs_t *dvb_devs; + int users[DVB_DEVS_MAX]; + int writers[DVB_DEVS_MAX]; + + dmxdev_t dmxdev; + boolean video_blank; + struct videoStatus videostate; + struct audioStatus audiostate; + int dvb_registered; + }; extern u8 FlushPacket[32];