From cbdaa90b7250681925a3048c4e60ca72457f46ba Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 20 Oct 2009 16:13:42 +0200 Subject: [PATCH] calculate slide just based on current video time --- bin/mplayer.pl | 17 ++++++++++++----- lib/HTML5TV/Slides.pm | 18 +++++++++--------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/bin/mplayer.pl b/bin/mplayer.pl index 5e51751..89836cd 100755 --- a/bin/mplayer.pl +++ b/bin/mplayer.pl @@ -599,17 +599,24 @@ sub move_subtitle { load_movie; -my $slides = HTML5TV::Slides->new; +my $slides = HTML5TV::Slides->new( + sub { + my $t = shift; + my $nr; + foreach my $s ( @subtitles ) { + $nr = $1 if $s->[2] =~ m{\[(\d+)\]} && $s->[0] < $t; + } + warn "# $t $nr\n"; + return $nr; + } +); print $to_mplayer "get_property $_\n" foreach grep { ! $prop->{$_} } ( qw/metadata video_codec video_bitrate width height fps length/ ); while ( 1 ) { my @fd_selected = $select->can_read(1); - current_subtitle( sub { - my ($nr,$pos) = @_; - $slides->show( $nr, $pos ); - } ) if ! @fd_selected; + $slides->show( time_pos ) if ! @fd_selected; foreach my $fileno ( @fd_selected ) { diff --git a/lib/HTML5TV/Slides.pm b/lib/HTML5TV/Slides.pm index a62661c..675707a 100644 --- a/lib/HTML5TV/Slides.pm +++ b/lib/HTML5TV/Slides.pm @@ -11,21 +11,21 @@ use Data::Dump qw/dump/; sub new { my $class = shift; + my $current_slide = shift || die "need current slide coderef!"; my $self = { last_nr => -42, + current_slide => $current_slide, }; bless $self, $class; } -sub show { - my ( $self, $nr ) = @_; - - if ( $self->{last_nr} == $nr ) { - $self->{app}->sync if $self->{app}; - return; - } +sub current_slide { + my $self = shift; + $self->{current_slide}->( shift ); +} - $self->{last_nr} = $nr; +sub show { + my ( $self, $t ) = @_; my @subtitles = sort { @@ -56,7 +56,7 @@ sub show { -y => $y, ); - my $pos = $nr + $i - 5; + my $pos = $self->current_slide($t) + $i - 5; if ( $pos < 0 ) { -- 2.20.1