--- amv.pl 2007/07/22 11:05:47 24 +++ amv.pl 2007/08/18 11:20:25 25 @@ -18,7 +18,10 @@ use File::Path; use Getopt::Long; -my $dump = 0; +my $dump_amv = 0; +my $dump_video = 0; +my $dump_jpeg = 0; +my $dump_audio = 0; my $debug = 0; my $verbose = 0; my $dump_dir = '/tmp/dump/'; @@ -28,7 +31,10 @@ my $jpegtran; GetOptions( - "dump!" => \$dump, + "dump-amv!" => \$dump_amv, + "dump-video!" => \$dump_video, + "dump-jpeg!" => \$dump_jpeg, + "dump-audio!" => \$dump_audio, "debug!" => \$debug, "dump-dir=s" => \$dump_dir, "no-jpeg-headers!" => \$no_jpeg_header, @@ -53,8 +59,6 @@ my $d; sub hex_dump { - return unless $dump; - my ( $bytes, $offset ) = @_; return unless $bytes; @@ -96,10 +100,13 @@ my $r_len = length($bytes); confess "read $r_len bytes, expected $len" if $len != $r_len; - hex_dump( $bytes ); + if ( $dump_amv ) { + print "## raw $len bytes\n"; + hex_dump( $bytes ); + } if ( $bytes eq 'AMV_END_' ) { - print "> end of file marker AMV_END_\n" if $dump; + print "> end of file marker AMV_END_\n" if $dump_video; $d->{eof}++; return; } @@ -139,7 +146,7 @@ $out .= chr($t); } - if ( $dump ) { + if ( $dump_video ) { print "## quantization table original\n"; hex_dump( $in ); print "## quantization table for $jpeg_q %\n"; @@ -353,7 +360,7 @@ 0, # Ah, Ai (not used) ); - if ( $dump ) { + if ( $dump_jpeg ) { print "## created JPEG header...\n"; hex_dump( $header, 0 ); } @@ -465,6 +472,11 @@ my $audio_frame = x( $len ); + if ( $dump_audio ) { + printf "#### dumping audio frame %d 0x%x bytes\n", length($audio_frame), length($audio_frame); + hex_dump( $audio_frame ); + } + # remove 8 bytes of something $audio_frame = substr( $audio_frame, 8 ); @@ -473,11 +485,6 @@ # $audio_frame = substr( $audio_frame, 0, -1 ); } - if ( $dump ) { - print "#### dumping audio frame ", length($audio_frame), " bytes\n"; - hex_dump( $audio_frame ); - } - # print $audio_fh mp3_frame; print $audio_fh $audio_frame || die "can't write audio frame in $apath: $!";