Video-Capture-V4l
view release on metacpan or search on metacpan
TYPE_MONOCHROME
TYPE_OVERLAY
TYPE_SCALES
TYPE_SUBCAPTURE
TYPE_TELETEXT
TYPE_TUNER
);
# shit
sub VBI_MAXLINES (){ 32 }
sub VBI_BPL (){ 2048 }
sub VBI_BPF (){ VBI_BPL * VBI_MAXLINES }
bootstrap Video::Capture::V4l $VERSION;
sub new(;$) {
my $class = shift;
my $device = shift || "/dev/video0";
my $self = bless { device => $device }, $class;
$self->{handle} = local *{$device};
sysopen $self->{handle},$device,O_RDWR or return;
$self->{fd} = fileno ($self->{handle});
$self->{capability} = _capabilities_new ($self->{fd});
$self->{picture} = _picture_new ($self->{fd});
$self->{capability}->get
&& $self->{picture}->get ? $self : ();
}
sub capability($) { shift->{capability} }
sub picture($) { shift->{picture} }
sub channel($$) {
my $c = _channel_new ($_[0]->{fd});
$c->channel ($_[1]);
$c->get ? $c : ();
}
sub tuner($$) {
my $c = _tuner_new ($_[0]->{fd});
$c->tuner ($_[1]);
$c->get ? $c : ();
}
sub audio($$) {
my $c = _audio_new ($_[0]->{fd});
$c->audio ($_[1]);
$c->get ? $c : ();
}
sub freq($;$) {
_freq (shift->{fd},@_);
}
package Video::Capture::V4l::Capability;
sub capture ($){ shift->type & &Video::Capture::V4l::TYPE_CAPTURE }
sub tuner ($){ shift->type & &Video::Capture::V4l::TYPE_TUNER }
sub teletext ($){ shift->type & &Video::Capture::V4l::TYPE_TELETEXT }
sub overlay ($){ shift->type & &Video::Capture::V4l::TYPE_OVERLAY }
sub chromakey ($){ shift->type & &Video::Capture::V4l::TYPE_CHROMAKEY }
sub clipping ($){ shift->type & &Video::Capture::V4l::TYPE_CLIPPING }
sub frameram ($){ shift->type & &Video::Capture::V4l::TYPE_FRAMERAM }
sub scales ($){ shift->type & &Video::Capture::V4l::TYPE_SCALES }
sub monochrome($){ shift->type & &Video::Capture::V4l::TYPE_MONOCHROME}
sub subcapture($){ shift->type & &Video::Capture::V4l::TYPE_SUBCAPTURE}
package Video::Capture::V4l::Channel;
sub tuner ($){ shift->flags & &Video::Capture::V4l::VC_TUNER }
sub audio ($){ shift->flags & &Video::Capture::V4l::VC_AUDIO }
sub tv ($){ shift->type & &Video::Capture::V4l::TYPE_TV }
sub camera ($){ shift->type & &Video::Capture::V4l::TYPE_CAMERA }
package Video::Capture::V4l::Tuner;
sub pal ($){ shift->flags & &Video::Capture::V4l::TUNER_PAL }
sub ntsc ($){ shift->flags & &Video::Capture::V4l::TUNER_NTSC }
sub secam ($){ shift->flags & &Video::Capture::V4l::TUNER_SECAM }
sub low ($){ shift->flags & &Video::Capture::V4l::TUNER_LOW }
sub norm ($){ shift->flags & &Video::Capture::V4l::TUNER_NORM }
sub stereo_on ($){ shift->flags & &Video::Capture::V4l::TUNER_STEREO_ON}
sub rds_on ($){ shift->flags & &Video::Capture::V4l::TUNER_RDS_ON }
sub mbs_on ($){ shift->flags & &Video::Capture::V4l::TUNER_MBS_ON }
package Video::Capture::V4l::Audio;
sub mute ($){ shift->flags & &Video::Capture::V4l::AUDIO_MUTE }
sub mutatble ($){ shift->flags & &Video::Capture::V4l::AUDIO_MUTABLE }
sub volume ($){ shift->flags & &Video::Capture::V4l::AUDIO_VOLUME }
sub bass ($){ shift->flags & &Video::Capture::V4l::AUDIO_BASS }
sub treble ($){ shift->flags & &Video::Capture::V4l::AUDIO_TREBLE }
package Video::Capture::V4l::VBI;
use Fcntl;
sub new(;$) {
my $class = shift;
my $device = shift || "/dev/vbi0";
my $self = bless { device => $device }, $class;
$self->{handle} = local *{$device};
sysopen $self->{handle},$device,O_RDWR or return;
$self->{fd} = fileno ($self->{handle});
$self
}
sub fileno($) {
$_[0]->{fd}
}
1;
__END__
=head1 NAME
Video::Capture::V4l - Perl interface to the Video4linux framegrabber interface.
( run in 1.436 second using v1.01-cache-2.11-cpan-97f6503c9c8 )