Linux-DVB-DVBT-Advert
view release on metacpan or search on metacpan
lib/Linux/DVB/DVBT/Advert.pm view on Meta::CPAN
close $fh ;
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# FRAME HASH
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Each frame HASH entry, along with specific information, stores the relationship with it's
# previous entry
#
# numframes=n
# | |----------->|
# |<--------------------|
# _............ gap _...........
# | | : | | :
# ___________| |___________:_____________________| |__________:____
# ^ ^
# frame=f frame_end
#
#
#-----------------------------------------------------------------------------
# Set the gap counts - the distance each frame is from it's previous frame
#
# numframes=n' numframes=n
# |------------>| |----------->|
# |<--------------------|
# _............ gap _...........
# | | : | | :
# ___________| |___________:_____________________| |__________:____
# ^ ^ ^
# frame=f' frame_end=e' frame=f
#
#
# | f' ..... e' | e'+1 ......... f-1 |
# |------------>|
# n'=e'-f'+1 |
# |<--------------------|
# gap = (f-1) - (e'+1) + 1
#
#
#
# For frame f:
#
# gap = f - e' - 1
#
sub calc_gap
{
my ($frame, $prev_frame_end) = @_ ;
return $frame - $prev_frame_end - 1 ;
}
#-----------------------------------------------------------------------------
#
sub update_gap
{
my ($frames_aref) = @_ ;
my $prev_frame_end = -1 ;
foreach my $href (@$frames_aref)
{
my $frame = $href->{'frame'} ;
$href->{'gap'} = calc_gap($frame, $prev_frame_end) ;
$prev_frame_end = $href->{'frame_end'} ;
}
}
#-----------------------------------------------------------------------------
# Return the number of frames for this frame entry
#
# numframes=n' numframes=n
# |------------>| |----------->|
# _............ _...........
# | | : | | :
# ___________| |___________:_____________________| |__________:____
# frame=f' frame_end=e' frame=f frame_end=e
#
# For frame f:
#
# numframes: n = e - f + 1
#
sub numframes
{
my ($frame_href) = @_ ;
return $frame_href->{frame_end} - $frame_href->{frame} + 1 ;
}
#-----------------------------------------------------------------------------
# Set the type based on section length
sub _prog_type
{
my ($duration, $settings_href) = @_;
# could be either
my $type = "advert/prog" ;
if ($duration <= $settings_href->{'max_advert'})
{
$type = "advert" ;
print "_prog_type=$type : $duration <= $settings_href->{'max_advert'}\n" if $DEBUG >= 2 ;
}
elsif ($duration >= $settings_href->{'min_program'})
{
$type = "program" ;
print "_prog_type=$type : $duration >= $settings_href->{'min_program'}\n" if $DEBUG >= 2 ;
}
return $type ;
}
#---------------------------------------------------------------------------------
# Ensure each cut is of a valid length
sub validate_cutlist
( run in 4.667 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )