Updated nuvexport patch

Share

To get nuvexport working with MythTV User Jobs as a transcoder, I needed to further modify my nuvexport patch to handle the fact that there is no controlling terminal for user jobs. Here is the new patch:

    Index: export/ffmpeg.pm
    ===================================================================
    --- export/ffmpeg.pm    (revision 242)
    +++ export/ffmpeg.pm    (working copy)
    @@ -70,11 +70,11 @@
         # Audio only?
             $self->{'audioonly'} = $audioonly;
         # Gather the supported codecs
    -        my $data      = `$ffmpeg -formats 2>/dev/null`;
    +        my $data      = `$ffmpeg -formats 2>&1`;
             my ($formats) = $data =~ /(?:^|\n\s*)File\sformats:\s*\n(.+?\n)\s*\n/s;
             my ($codecs)  = $data =~ /(?:^|\n\s*)Codecs:\s*\n(.+?\n)\s*\n/s;
             if ($formats) {
    -            while ($formats =~ /^\s(..)\s(\S+)\s*$/mg) {
    +            while ($formats =~ /^\s(.{2})\s(\S+).*$/mg) {
                     $self->formats'}{$2} = $1;
                 }
             }
    @@ -286,7 +286,7 @@
             push @tmpfiles, "/tmp/fifodir_$$", "/tmp/fifodir_$$/audout", "/tmp/fifodir_$$/vidout";
    
         # Execute ffmpeg
    -        print "Starting ffmpeg.\n" unless ($DEBUG);
    +        print "Starting ffmpeg: $ffmpeg\n" unless ($DEBUG);
             ($ffmpeg_pid, $ffmpeg_h) = fork_command("$ffmpeg 2>&1");
             $children{$ffmpeg_pid} = 'ffmpeg' if ($ffmpeg_pid);
    
    Index: export/ffmpeg/PSP.pm
    ===================================================================
    --- export/ffmpeg/PSP.pm        (revision 242)
    +++ export/ffmpeg/PSP.pm        (working copy)
    @@ -170,7 +170,8 @@
             $self->{'ffmpeg_xtra'}  = ' -b ' . $self->{'v_bitrate'}
                                      .' -bufsize 65535'
                                      .' -ab 32 -acodec aac'
    -                                 ." -f psp -title $safe_title";
    +                                 ." -f psp -title $safe_title"
    +                                 .' -ar 24000';
         # Execute the parent method
             $self->SUPER::export($episode, '.MP4');
    
    Index: nuv_export/shared_utils.pm
    ===================================================================
    --- nuv_export/shared_utils.pm  (revision 242)
    +++ nuv_export/shared_utils.pm  (working copy)
    @@ -66,7 +66,11 @@
             $termios->getattr;
             $OSPEED = $termios->getospeed;
         };
    -    our $terminal = Term::Cap->Tgetent({OSPEED=>OSPEED});
    +
    +    my $terminal = Null; # This is the controlling terminal
    +    eval {
    +        $terminal = Term::Cap->Tgetent({OSPEED=>$OSPEED});
    +    };
    
     # Gather info about how many cpu's this machine has
         if (-e '/proc/cpuinfo') {
    @@ -85,7 +89,16 @@
    
     # Clear the screen
         sub clear {
    -        print $DEBUG ? "\n" : $terminal->Tputs('cl');
    +        print $terminal;
    +        if ($DEBUG) {
    +            print "\n";
    +        }
    +        elsif ($terminal ne Null ) {
    +            $terminal->Tputs('cl');
    +        }
    +        else {
    +            print "\n";
    +        }
         }
    
     # Byte swap a 32-bit number from little-endian to big-endian
    Index: nuv_export/ui.pm
    ===================================================================
    --- nuv_export/ui.pm    (revision 242)
    +++ nuv_export/ui.pm    (working copy)
    @@ -380,6 +380,7 @@
                 $count++;
                 $query .= (' ' x (3 - length($count)))."$count. ".$exporter->{'name'};
                 $query .= ' (disabled)' unless ($exporter->{'enabled'});
    +            $query .= "\n\t\tErrors: @{$exporter->{'errors'}}\n" unless ($exporter->{'enabled'});
                 $query .= "\n";
             }
             $query .= "\n  q. Quit\n\nChoose a function: ";
    

You can download the patch from here.

Update: Isn’t it always the way? Once I had the patch posted I bothered to get a new SVN version, and noticed that some of my patches had been included there. Here’s a new version of the nuvexport patch which will cleanly apply:

    Index: export/ffmpeg.pm
    ===================================================================
    --- export/ffmpeg.pm	(revision 271)
    +++ export/ffmpeg.pm	(working copy)
    @@ -300,7 +300,7 @@
                 $children{$cat_pid} = 'audio dump' if ($cat_pid);
             }
         # Execute ffmpeg
    -        print "Starting ffmpeg.\n" unless ($DEBUG);
    +        print "Starting ffmpeg: $ffmpeg\n" unless ($DEBUG);
             ($ffmpeg_pid, $ffmpeg_h) = fork_command("$ffmpeg 2>&1");
             $children{$ffmpeg_pid} = 'ffmpeg' if ($ffmpeg_pid);
    
    Index: export/ffmpeg/PSP.pm
    ===================================================================
    --- export/ffmpeg/PSP.pm	(revision 271)
    +++ export/ffmpeg/PSP.pm	(working copy)
    @@ -170,7 +170,8 @@
             $self->ffmpeg_xtra'}  = ' -b ' . $self->{'v_bitrate'}
                                      .' -bufsize 65535'
                                      .' -ab 32 -acodec aac'
    -                                 ." -f psp -title $safe_title";
    +                                 ." -f psp -title $safe_title"
    +                                 .' -ar 24000';
         # Execute the parent method
             $self->SUPER::export($episode, '.MP4');
    
    Index: nuv_export/shared_utils.pm
    ===================================================================
    --- nuv_export/shared_utils.pm	(revision 271)
    +++ nuv_export/shared_utils.pm	(working copy)
    @@ -66,7 +66,11 @@
             $termios->getattr;
             $OSPEED = $termios->getospeed;
         };
    -    our $terminal = Term::Cap->Tgetent({OSPEED=li>$OSPEED});
    +
    +    my $terminal = Null; # This is the controlling terminal
    +    eval {
    +        $terminal = Term::Cap->Tgetent({OSPEED=>$OSPEED});
    +    };
    
     # Gather info about how many cpu's this machine has
         if (-e '/proc/cpuinfo') {
    @@ -85,7 +89,15 @@
    
     # Clear the screen
         sub clear {
    -        print $DEBUG ? "\n" : $terminal->Tputs('cl');
    +        if ($DEBUG) {
    +            print "\n";
    +        }
    +        elsif ($terminal ne Null ) {
    +            $terminal->Tputs('cl');
    +        }
    +        else {
    +            print "\n";
    +        }
         }
    
     # Byte swap a 32-bit number from little-endian to big-endian
    Index: nuv_export/ui.pm
    ===================================================================
    --- nuv_export/ui.pm	(revision 271)
    +++ nuv_export/ui.pm	(working copy)
    @@ -380,6 +380,7 @@
                 $count++;
                 $query .= (' ' x (3 - length($count)))."$count. ".$exporter->{'name'};
                 $query .= ' (disabled)' unless ($exporter->{'enabled'});
    +            $query .= "\n\t\tErrors: @{$exporter->{'errors'}}\n" unless ($exporter->{'enabled'});
                 $query .= "\n";
             }
             $query .= "\n  q. Quit\n\nChoose a function: ";
    

You can download the patch as well.

Share

The What-If-Microsoft-Did-The-iPod-Box video done by Microsoft

Share

Microsoft spokesman Tom Pilla on Tuesday confirmed with iPod Observer that his company initiated the creation of the iPod packaging parody video that was first reported last month. “It was an internal-only video clip commissioned by our packaging [team] to humorously highlight the challenges we have faced RE: packaging and to educate marketers here about the pitfalls of packaging/branding,” he said via e-mail.

I originally mentioned the video here, but that version of the video has gone away, and you can now find the video here.

Share