2802
|
1 /*
|
|
2 Only a sample!
|
|
3 */
|
2790
|
4
|
|
5 #include "config.h"
|
|
6
|
|
7 #ifdef USE_TV
|
2802
|
8
|
|
9 #include <stdio.h>
|
2830
|
10 #include "../libvo/img_format.h"
|
2790
|
11 #include "tv.h"
|
|
12
|
2802
|
13 /* information about this file */
|
2790
|
14 static tvi_info_t info = {
|
|
15 "NULL-TV",
|
|
16 "dummy",
|
|
17 "alex",
|
2802
|
18 NULL
|
2790
|
19 };
|
|
20
|
2802
|
21 /* private data's */
|
2790
|
22 typedef struct {
|
2802
|
23 int width;
|
|
24 int height;
|
2790
|
25 } priv_t;
|
|
26
|
|
27 #include "tvi_def.h"
|
|
28
|
2802
|
29 /* handler creator - entry point ! */
|
2790
|
30 tvi_handle_t *tvi_init_dummy(char *device)
|
|
31 {
|
2837
|
32 return(new_handle());
|
2790
|
33 }
|
|
34
|
2802
|
35 /* initialisation */
|
3815
|
36 static int init(priv_t *priv)
|
2802
|
37 {
|
3375
|
38 priv->width = 320;
|
|
39 priv->height = 200;
|
2837
|
40 return(1);
|
2802
|
41 }
|
|
42
|
|
43 /* that's the real start, we'got the format parameters (checked with control) */
|
|
44 static int start(priv_t *priv)
|
2790
|
45 {
|
2837
|
46 return(1);
|
2790
|
47 }
|
|
48
|
2802
|
49 static int uninit(priv_t *priv)
|
2790
|
50 {
|
3815
|
51 return(1);
|
2790
|
52 }
|
|
53
|
|
54 static int control(priv_t *priv, int cmd, void *arg)
|
|
55 {
|
2802
|
56 switch(cmd)
|
|
57 {
|
|
58 case TVI_CONTROL_IS_VIDEO:
|
|
59 return(TVI_CONTROL_TRUE);
|
|
60 case TVI_CONTROL_VID_GET_FORMAT:
|
7319
|
61 // (int)*(void **)arg = IMGFMT_YV12;
|
|
62 *(int *)arg = IMGFMT_YV12;
|
2802
|
63 return(TVI_CONTROL_TRUE);
|
2815
|
64 case TVI_CONTROL_VID_SET_FORMAT:
|
|
65 {
|
7319
|
66 // int req_fmt = (int)*(void **)arg;
|
|
67 int req_fmt = *(int *)arg;
|
2815
|
68 if (req_fmt != IMGFMT_YV12)
|
|
69 return(TVI_CONTROL_FALSE);
|
|
70 return(TVI_CONTROL_TRUE);
|
|
71 }
|
2802
|
72 case TVI_CONTROL_VID_SET_WIDTH:
|
|
73 priv->width = (int)*(void **)arg;
|
|
74 return(TVI_CONTROL_TRUE);
|
3375
|
75 case TVI_CONTROL_VID_GET_WIDTH:
|
|
76 (int)*(void **)arg = priv->width;
|
|
77 return(TVI_CONTROL_TRUE);
|
2802
|
78 case TVI_CONTROL_VID_SET_HEIGHT:
|
|
79 priv->height = (int)*(void **)arg;
|
|
80 return(TVI_CONTROL_TRUE);
|
3375
|
81 case TVI_CONTROL_VID_GET_HEIGHT:
|
|
82 (int)*(void **)arg = priv->height;
|
|
83 return(TVI_CONTROL_TRUE);
|
2802
|
84 case TVI_CONTROL_VID_CHK_WIDTH:
|
|
85 case TVI_CONTROL_VID_CHK_HEIGHT:
|
|
86 return(TVI_CONTROL_TRUE);
|
|
87 }
|
2790
|
88 return(TVI_CONTROL_UNKNOWN);
|
|
89 }
|
|
90
|
5572
|
91 #ifdef HAVE_TV_BSDBT848
|
|
92 static double grabimmediate_video_frame(priv_t *priv, char *buffer, int len)
|
|
93 {
|
|
94 memset(buffer, 0xCC, len);
|
|
95 return(1);
|
|
96 }
|
|
97 #endif
|
|
98
|
|
99 static double grab_video_frame(priv_t *priv, char *buffer, int len)
|
2790
|
100 {
|
2802
|
101 memset(buffer, 0x42, len);
|
3815
|
102 return(1);
|
2790
|
103 }
|
|
104
|
|
105 static int get_video_framesize(priv_t *priv)
|
|
106 {
|
2802
|
107 /* YV12 */
|
2837
|
108 return(priv->width*priv->height*12/8);
|
2790
|
109 }
|
|
110
|
5572
|
111 static double grab_audio_frame(priv_t *priv, char *buffer, int len)
|
2790
|
112 {
|
2802
|
113 memset(buffer, 0x42, len);
|
3815
|
114 return(1);
|
2790
|
115 }
|
|
116
|
|
117 static int get_audio_framesize(priv_t *priv)
|
|
118 {
|
2837
|
119 return(1);
|
2790
|
120 }
|
|
121
|
|
122 #endif /* USE_TV */
|