ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Video-Capture-V4l/VBI/VBI.xs
(Generate patch)

Comparing Video-Capture-V4l/VBI/VBI.xs (file contents):
Revision 1.5 by root, Tue Nov 1 13:59:42 2005 UTC vs.
Revision 1.6 by root, Tue Nov 1 16:10:29 2005 UTC

269 269
270 /* correct the single bit error */ 270 /* correct the single bit error */
271 return d ^ (1 << (31 - 16*E + 8*D + 4*C + 2*B + A)); 271 return d ^ (1 << (31 - 16*E + 8*D + 4*C + 2*B + A));
272} 272}
273 273
274static unsigned char 274#define rev(byte) (invtab [(u8)(byte)])
275rev (unsigned char x)
276{
277 return ((x>>7)&1)<<0 |
278 ((x>>6)&1)<<1 |
279 ((x>>5)&1)<<2 |
280 ((x>>4)&1)<<3 |
281 ((x>>3)&1)<<4 |
282 ((x>>2)&1)<<5 |
283 ((x>>1)&1)<<6 |
284 ((x>>0)&1)<<7;
285}
286 275
287static SV * 276static SV *
288decode_vps (u8 *data) 277decode_vps (u8 *data)
289{ 278{
290 AV *av = newAV (); 279 AV *av = newAV ();
291 280
281 char name = rev (data[3]);
282
292 av_push (av, newSViv (VBI_VPS)); 283 av_push (av, newSViv (VBI_VPS));
293 av_push (av, newSVpvn (data+3, 1)); 284 av_push (av, newSVpvn (&name, 1));
294 av_push (av, newSViv (data[4] & 3)); /* "unknown", "stereo ", "mono ", "dual " */ 285 av_push (av, newSViv (data[4] & 3)); /* "unknown", "stereo ", "mono ", "dual " */
295 /* ch, day, mon, hour, min */ 286 /* ch, day, mon, hour, min */
296 av_push (av, newSViv (rev (data[ 4]) <<12 & 0xf000 287 av_push (av, newSViv (data[ 4] <<12 & 0xf000
297 | rev (data[10]) & 0x00c0 288 | data[10] & 0x00c0
298 | rev (data[12]) <<10 & 0x0c00 289 | data[12] <<10 & 0x0c00
299 | rev (data[13]) << 2 & 0x0300 290 | data[13] << 2 & 0x0300
300 | rev (data[13]) & 0x003f)); 291 | data[13] & 0x003f));
301 av_push (av, newSViv (rev (data[10]) >> 1 & 31)); 292 av_push (av, newSViv (rev (data[10]) >> 1 & 31));
302 av_push (av, newSViv (rev (data[10]) << 3 & 8 | rev (data[11]) >> 5)); 293 av_push (av, newSViv (rev (data[10]) << 3 & 8 | rev (data[11]) >> 5));
303 av_push (av, newSViv (rev (data[11]) & 31)); 294 av_push (av, newSViv (rev (data[11]) & 31));
304 av_push (av, newSViv (rev (data[12]) >> 2)); 295 av_push (av, newSViv (rev (data[12]) >> 2));
305 av_push (av, newSViv (rev (data[14]))); 296 av_push (av, newSViv (rev (data[14])));
1249 PUSHs (sv_2mortal (sv)); 1240 PUSHs (sv_2mortal (sv));
1250 } 1241 }
1251} 1242}
1252 1243
1253SV * 1244SV *
1254decode_vps(void *data) 1245decode_vps(char *data)
1255 1246
1256SV * 1247SV *
1257decode_vt(void *data) 1248decode_vt(char *data)
1258 1249
1259void 1250void
1260decode_vtpage(data) 1251decode_vtpage(data)
1261 SV * data 1252 SV * data
1262 PPCODE: 1253 PPCODE:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines