ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Video-Capture-V4l/examples/vbi
Revision: 1.1
Committed: Fri May 5 20:21:53 2000 UTC (24 years, 2 months ago) by pcg
Branch: MAIN
CVS Tags: rel-0_9, rel-0_902, HEAD
Log Message:
Initial check-in

File Contents

# Content
1 #!/usr/bin/perl
2
3 use Video::Capture::V4l;
4 use Video::Capture::VBI;
5
6 package Decoder;
7
8 use Video::Capture::VBI;
9
10 # derive from videotext-decoder
11 use base 'Video::Capture::VBI::VT';
12
13 # just display the page
14 sub enter_page {
15 my($self,$page)=@_;
16 my $sub = $page->{ctrl} & VTX_SUB;
17
18 #return unless $page->{page}>=0x110 && $page->{page}<=0x134;
19 #return unless $page->{page}==0x150;
20 my $x = join ("", map { $_ ne "" ? "*" : "-" } @{$page->{packet}});
21 printf "Teletext page %02x / %04x ($x)\n", $page->{page}, $sub;
22 #return unless $page->{page} == 0x1df;
23
24 # now print the page
25 for ($y=0; $y<25; $y++)
26 {
27 my $x = $page->{packet}[$y];
28 print $x ? decode_ansi decode_vtpage $x : "","\n";
29 }
30 }
31
32 sub enter_packet {
33 my $packet = $_;
34 }
35
36 package main;
37
38 $vbi = new Video::Capture::V4l::VBI or die;
39
40 # the next line is optional (it enables buffering)
41 $vbi->backlog(25); # max. 1 second backlog (~900kB)
42
43 $inp_fd = fileno STDIN;
44 $vbi_fd = $vbi->fileno;
45
46 $vt = new Decoder;
47
48 print "Capturing VBI block. Make sure you have tuned in to a channel!\n";
49
50 for(;;) {
51 my $r="";
52 vec($r,$inp_fd,1)=1;
53 vec($r,$vbi_fd,1)=1;
54 select $r,undef,undef,0.04;
55 $vt->feed(decode_field $vbi->field, VBI_VT) while $vbi->queued;
56 if (vec($r,$inp_fd,1)) {
57 #print "HI\n";
58 #sleep 5;
59 }
60 }
61