[mythtv] nuvexport problem with dvb files with fix!

George Styles george at ripnet.co.uk
Sun Nov 14 11:15:02 UTC 2004


Actually, this works a lot better if you keep doubling the amount, rather 
than adding a bit. Changed patch is:


Index: cvs/nuvexport/mythtv/nuvinfo.pm
===================================================================
RCS file: /var/lib/mythcvs/nuvexport/mythtv/nuvinfo.pm,v
retrieving revision 1.2
diff -u -r1.2 nuvinfo.pm
--- cvs/nuvexport/mythtv/nuvinfo.pm     29 Sep 2004 21:17:58 -0000      1.2
+++ cvs/nuvexport/mythtv/nuvinfo.pm     14 Nov 2004 10:47:59 -0000
@@ -125,11 +125,25 @@
         $info{'video_type'} = 'MPEG';
     # Grab tcprobe info
         if ($program =~ /tcprobe$/) {
-            my $data = `$program -i '$file' 2>/dev/null`;
+            $info{'width'}=0;
+            my $amount=1;
+            my $data;
+            my $gotit = 0;
+            while (!$gotit) {
+                $data = `$program -H $amount -i '$file' 2>/dev/null`;
+                if ($data =~ (/frame\s+rate/)) {
+                    $gotit = 1;
+                }
+                $amount *= 2;
+                # Sensible maximium
+                if ($amount > 2000) {
+                  die "Failed to read info from file using tcprobe\n\n";
+                }
+            }
             ($info{'width'}, $info{'height'}) = $data =~
/frame\s+size:\s+-g\s+(\d+)x(\d+)\b/m;
             ($info{'fps'})                  = $data =~
/frame\s+rate:\s+-f\s+(\d+(?:\.\d+)?)\b/m;
             ($info{'audio_sample_rate'}, $info{'audio_bits_per_sample'},
-             $info{'audio_channels'}) = $data =~
/audio\s+track:.+?-e\s+(\d+),(\d+),(\d+)\b/m;
+            $info{'audio_channels'}) = $data =~
/audio\s+track:.+?-e\s+(\d+),(\d+),(\d+)\b/m;
             if ($data =~ m/MPEG\s+(system|program)/i) {
                 $info{'mpeg_stream_type'}  = "\L$1";
             }



----- Original Message ----- 
From: "George Styles" <george at ripnet.co.uk>
To: "Development of mythtv" <mythtv-dev at mythtv.org>
Sent: Sunday, November 14, 2004 10:50 AM
Subject: Re: [mythtv] nuvexport problem with dvb files with fix!


> OK, here it is with cvs diff -u (also attached)
>
> (As a side note, imho even full perl programs are not 'easy to read', let
> alone patches containing snippets. Obviously a long way for me to go until 
> I
> am comptent with perl!)
>
> ps. Are there ANY docs about command line options for nuvexport except the
> source itself? if not, do you want me to write some up on a wiki somewhere
> as I work them out?
>
> thanks
>
> g
>
> Index: cvs/nuvexport/mythtv/nuvinfo.pm
> ===================================================================
> RCS file: /var/lib/mythcvs/nuvexport/mythtv/nuvinfo.pm,v
> retrieving revision 1.2
> diff -u -r1.2 nuvinfo.pm
> --- cvs/nuvexport/mythtv/nuvinfo.pm     29 Sep 2004 21:17:58 -0000 
> 1.2
> +++ cvs/nuvexport/mythtv/nuvinfo.pm     14 Nov 2004 10:47:59 -0000
> @@ -125,11 +125,25 @@
>         $info{'video_type'} = 'MPEG';
>     # Grab tcprobe info
>         if ($program =~ /tcprobe$/) {
> -            my $data = `$program -i '$file' 2>/dev/null`;
> +            $info{'width'}=0;
> +            my $amount=10;
> +            my $data;
> +            my $gotit = 0;
> +            while (!$gotit) {
> +                $data = `$program -H $amount -i '$file' 2>/dev/null`;
> +                if ($data =~ (/frame\s+rate/)) {
> +                    $gotit = 1;
> +                }
> +                $amount += 25;
> +                # Sensible maximium
> +                if ($amount > 2000) {
> +                  die "Failed to read info from file using tcprobe\n\n";
> +                }
> +            }
>             ($info{'width'}, $info{'height'}) = $data =~
> /frame\s+size:\s+-g\s+(\d+)x(\d+)\b/m;
>             ($info{'fps'})                  = $data =~
> /frame\s+rate:\s+-f\s+(\d+(?:\.\d+)?)\b/m;
>             ($info{'audio_sample_rate'}, $info{'audio_bits_per_sample'},
> -             $info{'audio_channels'}) = $data =~
> /audio\s+track:.+?-e\s+(\d+),(\d+),(\d+)\b/m;
> +            $info{'audio_channels'}) = $data =~
> /audio\s+track:.+?-e\s+(\d+),(\d+),(\d+)\b/m;
>             if ($data =~ m/MPEG\s+(system|program)/i) {
>                 $info{'mpeg_stream_type'}  = "\L$1";
>             }
>
>
> thanks
>
> George
>
> ----- Original Message ----- 
> From: "Chris Petersen" <lists at forevermore.net>
> To: "Development of mythtv" <mythtv-dev at mythtv.org>
> Sent: Sunday, November 14, 2004 6:52 AM
> Subject: Re: [mythtv] nuvexport problem with dvb files with fix!
>
>
>>> (This is my first patch - if ive done it wrong, can someone let me know
>>> please?)
>>
>> Please recreate this with "diff -u" or "cvs diff -u"  (the -u option
>> creates a format that's a bit easier to read.
>>
>> -Chris
>>
>>> I have found (and fixed) a 'bug' in nuvexport when it is used with some
>>> (but not all) of the files produced by my Nova-T card. It seems that
>>> sometimes the mpeg info is buried a little further into the file than
>>> tcprobe looks.
>>>
>>> When I run nuvinfo on the affected files, it fails to read the width,
>>> height or fps of the file, giving errors about Use of uninitialized 
>>> value
>>> in concatenation (.) or string at /usr/local/bin/nuvinfo line 23.
>>>
>>> This seems to be because tcprobe fails to find any info in the file:
>>>
>>> (OUTPUT FROM tcprobe)
>>>
>>>  tcprobe -i 25728_20041113174700_20041113210000.nuv
>>> [tcprobe] MPEG packetized elementary stream (PES)
>>> [tcprobe] summary for 25728_20041113174700_20041113210000.nuv, (*) = not
>>> default, 0 = not detected
>>>       audio track: -a 0 [0] -e 48000,16,2 [48000,16,2] -n 0x50 [0x2000]
>>> (*)
>>>                    PTS=26671.7783, bitrate=192 kbps
>>> detected (7) presentation unit(s) (SCR reset)
>>>
>>> running with -H 100 seems to fix it. (this causes it to parse the first
>>> 100 megs, instead of a little bit). Therefore, what is needed is for
>>> nuvinfo to keep looping round with greater and greater values of -H 
>>> until
>>> it either finds the info, or hits a maximium (which I have made 2gigs).
>>>
>>> The patch is as follows: (also attached as a text file)
>>>
>>> Index: cvs/nuvexport/mythtv/nuvinfo.pm
>>> ===================================================================
>>> RCS file: /var/lib/mythcvs/nuvexport/mythtv/nuvinfo.pm,v
>>> retrieving revision 1.2
>>> diff -r1.2 nuvinfo.pm
>>> 128c128,142
>>> <             my $data = `$program -i '$file' 2>/dev/null`;
>>> ---
>>>
>>>>            $info{'width'}=0;
>>>>            my $amount=10;
>>>>            my $data;
>>>>            my $gotit = 0;
>>>>            while (!$gotit) {
>>>>                $data = `$program -H $amount -i '$file' 2>/dev/null`;
>>>>                if ($data =~ (/frame\s+rate/)) {
>>>>                    $gotit = 1;
>>>>                }
>>>>                $amount += 25;
>>>>                # Sensible maximium
>>>>                if ($amount > 2000) {
>>>>                  die "Failed to read info from file using tcprobe\n\n";
>>>>                }
>>>>            }
>>>
>>> 132c146
>>> <              $info{'audio_channels'}) = $data =~
>>> /audio\s+track:.+?-e\s+(\d+),(\d+),(\d+)\b/m;
>>> ---
>>>
>>>>            $info{'audio_channels'}) = $data =~
>>>> /audio\s+track:.+?-e\s+(\d+),(\d+),(\d+)\b/m;
>>>
>>>
>>>
>>> Could we patch the file nuvinfo.pm to have a larger value for -H please?
>>>
>>> thanks
>>>
>>> g
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> Index: cvs/nuvexport/mythtv/nuvinfo.pm
>>> ===================================================================
>>> RCS file: /var/lib/mythcvs/nuvexport/mythtv/nuvinfo.pm,v
>>> retrieving revision 1.2
>>> diff -r1.2 nuvinfo.pm
>>> 128c128,142
>>> <             my $data = `$program -i '$file' 2>/dev/null`;
>>> ---
>>>
>>>>            $info{'width'}=0;
>>>>            my $amount=10;
>>>>            my $data;
>>>>            my $gotit = 0;
>>>>            while (!$gotit) {
>>>>                $data = `$program -H $amount -i '$file' 2>/dev/null`;
>>>>                if ($data =~ (/frame\s+rate/)) {
>>>>                    $gotit = 1;
>>>>                }
>>>>                $amount += 25;
>>>>                # Sensible maximium
>>>>                if ($amount > 2000) {
>>>>                  die "Failed to read info from file using tcprobe\n\n";
>>>>                }
>>>>            }
>>>
>>> 132c146
>>> <              $info{'audio_channels'}) = $data =~
>>> /audio\s+track:.+?-e\s+(\d+),(\d+),(\d+)\b/m;
>>> ---
>>>
>>>>            $info{'audio_channels'}) = $data =~
>>>> /audio\s+track:.+?-e\s+(\d+),(\d+),(\d+)\b/m;
>>>>
>>>>
>>>>------------------------------------------------------------------------
>>>>
>>>>_______________________________________________
>>>>mythtv-dev mailing list
>>>>mythtv-dev at mythtv.org
>>>>http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
>> _______________________________________________
>> mythtv-dev mailing list
>> mythtv-dev at mythtv.org
>> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
>


--------------------------------------------------------------------------------


_______________________________________________
mythtv-dev mailing list
mythtv-dev at mythtv.org
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev



More information about the mythtv-dev mailing list