#ifndef TVV_H #define TVV_H #include #include #include #include #include #include #include #include #include #include #define TVV_SHMKEY 0x00001001 #define FOURCC_YV12 0x32315659 #define FOURCC_YUY2 0x32595559 #define FOURCC_RGB 0x3 #if DEBUG #define DMSG(...) printf(__VA_ARGS__) #else #define DMSG(...) #endif struct vinfo { struct saa_video_spec vi_svs; int vi_vfmt; enum SWAPBYTES vi_vfmt_swapbytes; int vi_dfd; struct saa_status *vi_dsts; char *vi_dname; int vi_src_width; int vi_src_height; uint8_t vi_flag_on; }; struct ainfo { int ai_ocs_initflag; enum OCS ai_ocs; int ai_dfd; struct saa_status *ai_dsts; char *ai_dname; }; struct dgainfo { int dga_flags; int dga_ppl; int dga_bypp; void *dga_base; char dga_mode; XtWorkProcId dga_wproc_id; }; struct xvinfo { XShmSegmentInfo xv_xshminfo; GC xv_gc; int xv_shmid; XvPortID xv_port; XvImage *xv_img; int xv_img_height; int xv_framesz; uint32_t xv_fourcc; uint32_t xv_mbuf_ctr; char xv_multibuf; char xv_nodshm; char xv_mode; uint8_t *xv_shmaddr; uint8_t *xv_mmapaddr; }; struct CI_A { Window win; uint32_t x, y, w, h; }; struct clipinfo { struct CI_A ci_a; int32_t ci_skip; uint32_t ci_ox, ci_oy, ci_ow, ci_oh; }; struct xinfo { XtAppContext xi_app; Widget xi_win; short xi_scr_width; short xi_scr_height; short xi_win_width; short xi_win_height; short xi_win_xpos; short xi_win_ypos; char xi_win_resetpending; char xi_win_mapped; struct dgainfo *xi_dgainfo; struct xvinfo *xi_xvinfo; Window xi_wm_parent; uint32_t xi_clist_sz; uint32_t xi_clist_count; struct clipinfo *xi_clist; uint32_t xi_set_clist_count; struct clipinfo xi_set_clist[SAA_MAX_CLIPS]; }; int xgetwinattr_errorhandler(Display *d, XErrorEvent *e); #endif