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 (26 years, 4 months ago) by pcg
Branch: MAIN
CVS Tags: rel-0_9, rel-0_902, HEAD
Log Message:
Initial check-in

File Contents

# User Rev Content
1 pcg 1.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