annotate stream/tvi_dummy.c @ 21881:a10888bc9758

Fix invalid read for gifs with a palette for less than 256 colors
author reimar
date Sat, 13 Jan 2007 11:06:40 +0000
parents ac69ba536915
children 6cabac4d35b5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
1 /*
09d5c9834580 tv update
alex
parents: 2790
diff changeset
2 Only a sample!
09d5c9834580 tv update
alex
parents: 2790
diff changeset
3 */
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
4
98769cea155c added tv subsystem
alex
parents:
diff changeset
5 #include "config.h"
98769cea155c added tv subsystem
alex
parents:
diff changeset
6
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
7 #include <stdio.h>
19431
ac69ba536915 Explicitly include libmpcodecs/img_format.h and libvo/fastmemcpy.h.
diego
parents: 19271
diff changeset
8 #include "libmpcodecs/img_format.h"
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
9 #include "tv.h"
98769cea155c added tv subsystem
alex
parents:
diff changeset
10
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
11 /* information about this file */
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
12 static tvi_info_t info = {
98769cea155c added tv subsystem
alex
parents:
diff changeset
13 "NULL-TV",
98769cea155c added tv subsystem
alex
parents:
diff changeset
14 "dummy",
98769cea155c added tv subsystem
alex
parents:
diff changeset
15 "alex",
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
16 NULL
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
17 };
98769cea155c added tv subsystem
alex
parents:
diff changeset
18
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
19 /* private data's */
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
20 typedef struct {
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
21 int width;
09d5c9834580 tv update
alex
parents: 2790
diff changeset
22 int height;
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
23 } priv_t;
98769cea155c added tv subsystem
alex
parents:
diff changeset
24
98769cea155c added tv subsystem
alex
parents:
diff changeset
25 #include "tvi_def.h"
98769cea155c added tv subsystem
alex
parents:
diff changeset
26
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
27 /* handler creator - entry point ! */
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
28 tvi_handle_t *tvi_init_dummy(char *device)
98769cea155c added tv subsystem
alex
parents:
diff changeset
29 {
2837
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
30 return(new_handle());
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
31 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
32
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
33 /* initialisation */
3815
622a9ade4517 updated
alex
parents: 3375
diff changeset
34 static int init(priv_t *priv)
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
35 {
3375
5fb624943c90 default size 320x200
alex
parents: 2837
diff changeset
36 priv->width = 320;
5fb624943c90 default size 320x200
alex
parents: 2837
diff changeset
37 priv->height = 200;
2837
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
38 return(1);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
39 }
09d5c9834580 tv update
alex
parents: 2790
diff changeset
40
09d5c9834580 tv update
alex
parents: 2790
diff changeset
41 /* that's the real start, we'got the format parameters (checked with control) */
09d5c9834580 tv update
alex
parents: 2790
diff changeset
42 static int start(priv_t *priv)
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
43 {
2837
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
44 return(1);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
45 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
46
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
47 static int uninit(priv_t *priv)
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
48 {
3815
622a9ade4517 updated
alex
parents: 3375
diff changeset
49 return(1);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
50 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
51
98769cea155c added tv subsystem
alex
parents:
diff changeset
52 static int control(priv_t *priv, int cmd, void *arg)
98769cea155c added tv subsystem
alex
parents:
diff changeset
53 {
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
54 switch(cmd)
09d5c9834580 tv update
alex
parents: 2790
diff changeset
55 {
09d5c9834580 tv update
alex
parents: 2790
diff changeset
56 case TVI_CONTROL_IS_VIDEO:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
57 return(TVI_CONTROL_TRUE);
09d5c9834580 tv update
alex
parents: 2790
diff changeset
58 case TVI_CONTROL_VID_GET_FORMAT:
12375
48a655d09522 and more and more stupidity
rfelker
parents: 9094
diff changeset
59 // *(int *)arg = IMGFMT_YV12;
7319
20acd78d1239 fixed get_format/set_format
alex
parents: 5572
diff changeset
60 *(int *)arg = IMGFMT_YV12;
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
61 return(TVI_CONTROL_TRUE);
2815
alex
parents: 2802
diff changeset
62 case TVI_CONTROL_VID_SET_FORMAT:
alex
parents: 2802
diff changeset
63 {
12375
48a655d09522 and more and more stupidity
rfelker
parents: 9094
diff changeset
64 // int req_fmt = *(int *)arg;
7319
20acd78d1239 fixed get_format/set_format
alex
parents: 5572
diff changeset
65 int req_fmt = *(int *)arg;
2815
alex
parents: 2802
diff changeset
66 if (req_fmt != IMGFMT_YV12)
alex
parents: 2802
diff changeset
67 return(TVI_CONTROL_FALSE);
alex
parents: 2802
diff changeset
68 return(TVI_CONTROL_TRUE);
alex
parents: 2802
diff changeset
69 }
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
70 case TVI_CONTROL_VID_SET_WIDTH:
12375
48a655d09522 and more and more stupidity
rfelker
parents: 9094
diff changeset
71 priv->width = *(int *)arg;
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
72 return(TVI_CONTROL_TRUE);
3375
5fb624943c90 default size 320x200
alex
parents: 2837
diff changeset
73 case TVI_CONTROL_VID_GET_WIDTH:
12375
48a655d09522 and more and more stupidity
rfelker
parents: 9094
diff changeset
74 *(int *)arg = priv->width;
3375
5fb624943c90 default size 320x200
alex
parents: 2837
diff changeset
75 return(TVI_CONTROL_TRUE);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
76 case TVI_CONTROL_VID_SET_HEIGHT:
12375
48a655d09522 and more and more stupidity
rfelker
parents: 9094
diff changeset
77 priv->height = *(int *)arg;
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
78 return(TVI_CONTROL_TRUE);
3375
5fb624943c90 default size 320x200
alex
parents: 2837
diff changeset
79 case TVI_CONTROL_VID_GET_HEIGHT:
12375
48a655d09522 and more and more stupidity
rfelker
parents: 9094
diff changeset
80 *(int *)arg = priv->height;
3375
5fb624943c90 default size 320x200
alex
parents: 2837
diff changeset
81 return(TVI_CONTROL_TRUE);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
82 case TVI_CONTROL_VID_CHK_WIDTH:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
83 case TVI_CONTROL_VID_CHK_HEIGHT:
09d5c9834580 tv update
alex
parents: 2790
diff changeset
84 return(TVI_CONTROL_TRUE);
9094
84012782d313 added TVI_CONTROL_TUN_SET_NORM
gabucino
parents: 7319
diff changeset
85 case TVI_CONTROL_TUN_SET_NORM:
84012782d313 added TVI_CONTROL_TUN_SET_NORM
gabucino
parents: 7319
diff changeset
86 return(TVI_CONTROL_TRUE);
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
87 }
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
88 return(TVI_CONTROL_UNKNOWN);
98769cea155c added tv subsystem
alex
parents:
diff changeset
89 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
90
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
91 #ifdef HAVE_TV_BSDBT848
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
92 static double grabimmediate_video_frame(priv_t *priv, char *buffer, int len)
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
93 {
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
94 memset(buffer, 0xCC, len);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
95 return(1);
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
96 }
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
97 #endif
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
98
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
99 static double grab_video_frame(priv_t *priv, char *buffer, int len)
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
100 {
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
101 memset(buffer, 0x42, len);
3815
622a9ade4517 updated
alex
parents: 3375
diff changeset
102 return(1);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
103 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
104
98769cea155c added tv subsystem
alex
parents:
diff changeset
105 static int get_video_framesize(priv_t *priv)
98769cea155c added tv subsystem
alex
parents:
diff changeset
106 {
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
107 /* YV12 */
2837
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
108 return(priv->width*priv->height*12/8);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
109 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
110
5572
8cd761968f35 BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents: 3815
diff changeset
111 static double grab_audio_frame(priv_t *priv, char *buffer, int len)
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
112 {
2802
09d5c9834580 tv update
alex
parents: 2790
diff changeset
113 memset(buffer, 0x42, len);
3815
622a9ade4517 updated
alex
parents: 3375
diff changeset
114 return(1);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
115 }
98769cea155c added tv subsystem
alex
parents:
diff changeset
116
98769cea155c added tv subsystem
alex
parents:
diff changeset
117 static int get_audio_framesize(priv_t *priv)
98769cea155c added tv subsystem
alex
parents:
diff changeset
118 {
2837
c63562f5f56f tuning worx (can set frequency)
alex
parents: 2830
diff changeset
119 return(1);
2790
98769cea155c added tv subsystem
alex
parents:
diff changeset
120 }