X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=test%2Ftest.c;h=cff30ef4b76ac25e28dd411a363e1a83676bec31;hb=4b72a63eb61a01275493c4bfb51ba02152d1c5e1;hp=22ed1f124fc1ddc5ce37c8f1d3193764a5e4f1d0;hpb=57e162228955b8ce8828a86a11226bb10a30806d;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/test/test.c b/test/test.c index 22ed1f12..cff30ef4 100644 --- a/test/test.c +++ b/test/test.c @@ -126,6 +126,7 @@ static int64_t stop_at_pts = 0; static int stop_at_frame = 0; static char * stop_at_string = NULL; static char * stop_at_token = NULL; +static uint64_t min_title_duration = 900000LL; /* Exit cleanly on Ctrl-C */ static volatile int die = 0; @@ -241,7 +242,7 @@ int main( int argc, char ** argv ) titleindex = 0; } - hb_scan( h, input, titleindex, preview_count, store_previews ); + hb_scan( h, input, titleindex, preview_count, store_previews, min_title_duration ); /* Wait... */ while( !die ) @@ -388,11 +389,11 @@ static void PrintTitleInfo( hb_title_t * title ) } else if ( title->type == HB_DVD_TYPE ) { - fprintf( stderr, " + vts %d, ttn %d, cells %d->%d (%d blocks)\n", + fprintf( stderr, " + vts %d, ttn %d, cells %d->%d (%"PRIu64" blocks)\n", title->vts, title->ttn, title->cell_start, title->cell_end, title->block_count ); } - if (dvdnav) + if (title->angle_count > 1) fprintf( stderr, " + angle(s) %d\n", title->angle_count ); fprintf( stderr, " + duration: %02d:%02d:%02d\n", title->hours, title->minutes, title->seconds ); @@ -408,7 +409,7 @@ static void PrintTitleInfo( hb_title_t * title ) for( i = 0; i < hb_list_count( title->list_chapter ); i++ ) { chapter = hb_list_item( title->list_chapter, i ); - fprintf( stderr, " + %d: cells %d->%d, %d blocks, duration " + fprintf( stderr, " + %d: cells %d->%d, %"PRIu64" blocks, duration " "%02d:%02d:%02d\n", chapter->index, chapter->cell_start, chapter->cell_end, chapter->block_count, chapter->hours, chapter->minutes, @@ -626,7 +627,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48,Auto"); + arates = strdup("Auto,Auto"); } if( !dynamic_range_compression ) { @@ -637,8 +638,12 @@ static int HandleEvents( hb_handle_t * h ) { x264opts = strdup("cabac=0:ref=2:me=umh:bframes=0:8x8dct=0:trellis=0:subme=6"); } - anamorphic_mode = 2; + if( !anamorphic_mode ) + { + anamorphic_mode = 2; + } job->chapter_markers = 1; + } if (!strcmp(preset_name, "iPod")) @@ -668,7 +673,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48"); + arates = strdup("Auto"); } if( !dynamic_range_compression ) { @@ -680,6 +685,7 @@ static int HandleEvents( hb_handle_t * h ) x264opts = strdup("level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subme=6:8x8dct=0:trellis=0"); } job->chapter_markers = 1; + } if (!strcmp(preset_name, "iPhone & iPod Touch")) @@ -708,7 +714,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48"); + arates = strdup("Auto"); } if( !dynamic_range_compression ) { @@ -720,6 +726,51 @@ static int HandleEvents( hb_handle_t * h ) x264opts = strdup("cabac=0:ref=2:me=umh:bframes=0:subme=6:8x8dct=0:trellis=0"); } job->chapter_markers = 1; + + } + + if (!strcmp(preset_name, "iPad")) + { + if( !mux ) + { + mux = HB_MUX_MP4; + } + job->largeFileSize = 1; + vcodec = HB_VCODEC_X264; + job->vquality = 20.0; + job->vrate_base = 900900; + job->cfr = 2; + if( !atracks ) + { + atracks = strdup("1"); + } + if( !acodecs ) + { + acodecs = strdup("faac"); + } + if( !abitrates ) + { + abitrates = strdup("160"); + } + if( !mixdowns ) + { + mixdowns = strdup("dpl2"); + } + if( !arates ) + { + arates = strdup("Auto"); + } + if( !dynamic_range_compression ) + { + dynamic_range_compression = strdup("0.0"); + } + maxWidth = 1024; + if( !anamorphic_mode ) + { + anamorphic_mode = 2; + } + job->chapter_markers = 1; + } if (!strcmp(preset_name, "AppleTV")) @@ -749,7 +800,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48,Auto"); + arates = strdup("Auto,Auto"); } if( !dynamic_range_compression ) { @@ -758,10 +809,14 @@ static int HandleEvents( hb_handle_t * h ) maxWidth = 960; if( !x264opts ) { - x264opts = strdup("cabac=0:ref=2:me=umh:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500"); + x264opts = strdup("cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500"); + } + if( !anamorphic_mode ) + { + anamorphic_mode = 2; } - anamorphic_mode = 2; job->chapter_markers = 1; + } if (!strcmp(preset_name, "Normal")) @@ -790,7 +845,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48"); + arates = strdup("Auto"); } if( !dynamic_range_compression ) { @@ -800,8 +855,12 @@ static int HandleEvents( hb_handle_t * h ) { x264opts = strdup("ref=2:bframes=2:subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0"); } - anamorphic_mode = 1; + if( !anamorphic_mode ) + { + anamorphic_mode = 1; + } job->chapter_markers = 1; + } if (!strcmp(preset_name, "High Profile")) @@ -830,7 +889,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48,Auto"); + arates = strdup("Auto,Auto"); } if( !dynamic_range_compression ) { @@ -842,8 +901,12 @@ static int HandleEvents( hb_handle_t * h ) } detelecine = 1; decomb = 1; - anamorphic_mode = 2; + if( !anamorphic_mode ) + { + anamorphic_mode = 2; + } job->chapter_markers = 1; + } if (!strcmp(preset_name, "Classic")) @@ -871,12 +934,13 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48"); + arates = strdup("Auto"); } if( !dynamic_range_compression ) { dynamic_range_compression = strdup("0.0"); } + } if (!strcmp(preset_name, "AppleTV Legacy")) @@ -906,7 +970,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48,Auto"); + arates = strdup("Auto,Auto"); } if( !dynamic_range_compression ) { @@ -914,10 +978,14 @@ static int HandleEvents( hb_handle_t * h ) } if( !x264opts ) { - x264opts = strdup("ref=1:subme=5:me=umh:no-fast-pskip=1:cabac=0:weightb=0:8x8dct=0:trellis=0"); + x264opts = strdup("ref=1:b-pyramid=none:subme=5:me=umh:no-fast-pskip=1:cabac=0:weightb=0:8x8dct=0:trellis=0"); + } + if( !anamorphic_mode ) + { + anamorphic_mode = 1; } - anamorphic_mode = 1; job->chapter_markers = 1; + } if (!strcmp(preset_name, "iPhone Legacy")) @@ -947,7 +1015,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48"); + arates = strdup("Auto"); } if( !dynamic_range_compression ) { @@ -959,6 +1027,7 @@ static int HandleEvents( hb_handle_t * h ) x264opts = strdup("level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:bframes=0:subme=6:8x8dct=0:trellis=0"); } job->chapter_markers = 1; + } if (!strcmp(preset_name, "iPod Legacy")) @@ -988,7 +1057,7 @@ static int HandleEvents( hb_handle_t * h ) } if( !arates ) { - arates = strdup("48"); + arates = strdup("Auto"); } if( !dynamic_range_compression ) { @@ -1000,7 +1069,9 @@ static int HandleEvents( hb_handle_t * h ) x264opts = strdup("level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subme=6:8x8dct=0:trellis=0"); } job->chapter_markers = 1; + } + } if ( chapter_markers ) @@ -1742,11 +1813,11 @@ static int HandleEvents( hb_handle_t * h ) } force = test_sub_list( subforce, "scan", pos ); - if ( !burn && mux == HB_MUX_MKV ) + if ( !burn ) { job->select_subtitle_config.dest = PASSTHRUSUB; } - else if ( burn ) + else { if ( sub_burned ) { @@ -1754,14 +1825,9 @@ static int HandleEvents( hb_handle_t * h ) } sub_burned = 1; } - if ( !( !burn && mux == HB_MUX_MP4 ) ) - { - job->select_subtitle_config.force = force; - job->select_subtitle_config.default_track = def; - subtitle_scan = 1; - } else { - fprintf( stderr, "Warning: Subtitle Scan for MP4 requires the '--subtitle-burn' option to be selected\n"); - } + job->select_subtitle_config.force = force; + job->select_subtitle_config.default_track = def; + subtitle_scan = 1; } else { @@ -1792,18 +1858,10 @@ static int HandleEvents( hb_handle_t * h ) force = test_sub_list(subforce, token, pos); - if ( !burn && mux == HB_MUX_MKV && - subtitle->format == PICTURESUB) + if ( !burn && subtitle->format == PICTURESUB) { sub_config.dest = PASSTHRUSUB; } - else if (!burn && mux == HB_MUX_MP4 && - subtitle->format == PICTURESUB) - { - // Skip any non-burned vobsubs when output is mp4 - fprintf( stderr, "Warning: Skipping subtitle track %d, can't pass-through VOBSUBs in an MP4 container,\nadd '--subtitle-burn %d' to the command line\n", track+1, track+1 ); - continue; - } else if ( burn && subtitle->format == PICTURESUB ) { // Only allow one subtitle to be burned into video @@ -2247,7 +2305,7 @@ static void ShowHelp() " -x, --x264opts Specify advanced x264 options in the\n" " same style as mencoder:\n" " option1=value1:option2=value2\n" - " -q, --quality Set video quality (0.0..1.0)\n" + " -q, --quality Set video quality\n" " -S, --size Set target size\n" " -b, --vb Set video bitrate (default: 1000)\n" " -2, --two-pass Use two-pass mode\n" @@ -2441,35 +2499,38 @@ static void ShowPresets() { printf("\n< Apple\n"); - printf("\n + Universal: -e x264 -q 20.0 -a 1,1 -E faac,ac3 -B 160,160 -6 dpl2,auto -R 48,Auto -D 0.0,0.0 -f mp4 -X 720 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:bframes=0:8x8dct=0:trellis=0:subme=6\n"); + printf("\n + Universal: -e x264 -q 20.0 -a 1,1 -E faac,ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -X 720 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:bframes=0:8x8dct=0:trellis=0:subme=6\n"); + + printf("\n + iPod: -e x264 -b 700 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 320 -m -x level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subme=6:8x8dct=0:trellis=0\n"); - printf("\n + iPod: -e x264 -b 700 -a 1 -E faac -B 160 -6 dpl2 -R 48 -D 0.0 -f mp4 -I -X 320 -m -x level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subme=6:8x8dct=0:trellis=0\n"); + printf("\n + iPhone & iPod Touch: -e x264 -q 20.0 -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 480 -m -x cabac=0:ref=2:me=umh:bframes=0:subme=6:8x8dct=0:trellis=0\n"); - printf("\n + iPhone & iPod Touch: -e x264 -q 20.0 -a 1 -E faac -B 128 -6 dpl2 -R 48 -D 0.0 -f mp4 -X 480 -m -x cabac=0:ref=2:me=umh:bframes=0:subme=6:8x8dct=0:trellis=0\n"); + printf("\n + iPad: -e x264 -q 20.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 1024 --loose-anamorphic -m\n"); - printf("\n + AppleTV: -e x264 -q 20.0 -a 1,1 -E faac,ac3 -B 160,160 -6 dpl2,auto -R 48,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500\n"); + printf("\n + AppleTV: -e x264 -q 20.0 -a 1,1 -E faac,ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic -m -x cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500\n"); printf("\n>\n"); printf("\n< Regular\n"); - printf("\n + Normal: -e x264 -q 20.0 -a 1 -E faac -B 160 -6 dpl2 -R 48 -D 0.0 -f mp4 --strict-anamorphic -m -x ref=2:bframes=2:subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0\n"); + printf("\n + Normal: -e x264 -q 20.0 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 --strict-anamorphic -m -x ref=2:bframes=2:subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0\n"); - printf("\n + High Profile: -e x264 -q 20.0 -a 1,1 -E faac,ac3 -B 160,160 -6 dpl2,auto -R 48,Auto -D 0.0,0.0 -f mp4 --detelecine --decomb --loose-anamorphic -m -x b-adapt=2:rc-lookahead=50\n"); + printf("\n + High Profile: -e x264 -q 20.0 -a 1,1 -E faac,ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 --detelecine --decomb --loose-anamorphic -m -x b-adapt=2:rc-lookahead=50\n"); printf("\n>\n"); printf("\n< Legacy\n"); - printf("\n + Classic: -b 1000 -a 1 -E faac -B 160 -6 dpl2 -R 48 -D 0.0 -f mp4\n"); + printf("\n + Classic: -b 1000 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4\n"); - printf("\n + AppleTV Legacy: -e x264 -b 2500 -a 1,1 -E faac,ac3 -B 160,160 -6 dpl2,auto -R 48,Auto -D 0.0,0.0 -f mp4 -4 --strict-anamorphic -m -x ref=1:subme=5:me=umh:no-fast-pskip=1:cabac=0:weightb=0:8x8dct=0:trellis=0\n"); + printf("\n + AppleTV Legacy: -e x264 -b 2500 -a 1,1 -E faac,ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 --strict-anamorphic -m -x ref=1:b-pyramid=none:subme=5:me=umh:no-fast-pskip=1:cabac=0:weightb=0:8x8dct=0:trellis=0\n"); - printf("\n + iPhone Legacy: -e x264 -b 960 -a 1 -E faac -B 128 -6 dpl2 -R 48 -D 0.0 -f mp4 -I -X 480 -m -x level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:bframes=0:subme=6:8x8dct=0:trellis=0\n"); + printf("\n + iPhone Legacy: -e x264 -b 960 -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 480 -m -x level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:bframes=0:subme=6:8x8dct=0:trellis=0\n"); - printf("\n + iPod Legacy: -e x264 -b 1500 -a 1 -E faac -B 160 -6 dpl2 -R 48 -D 0.0 -f mp4 -I -X 640 -m -x level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subme=6:8x8dct=0:trellis=0\n"); + printf("\n + iPod Legacy: -e x264 -b 1500 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 640 -m -x level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subme=6:8x8dct=0:trellis=0\n"); printf("\n>\n"); + } static char * hb_strndup( char * str, int len ) @@ -2547,6 +2608,7 @@ static int ParseOptions( int argc, char ** argv ) #define ROTATE_FILTER 275 #define SCAN_ONLY 276 #define MAIN_FEATURE 277 + #define MIN_DURATION 278 for( ;; ) { @@ -2566,6 +2628,7 @@ static int ParseOptions( int argc, char ** argv ) { "ipod-atom", no_argument, NULL, 'I' }, { "title", required_argument, NULL, 't' }, + { "min-duration",required_argument, NULL, MIN_DURATION }, { "scan", no_argument, NULL, SCAN_ONLY }, { "main-feature",no_argument, NULL, MAIN_FEATURE }, { "chapters", required_argument, NULL, 'c' }, @@ -2634,9 +2697,12 @@ static int ParseOptions( int argc, char ** argv ) int option_index = 0; int c; + int cur_optind; - c = getopt_long( argc, argv, - "hv::uC:f:4i:Io:t:Lc:m::M:a:A:6:s:UF::N:e:E:2dD:7895gOw:l:n:b:q:S:B:r:R:x:TY:X:Z:z", + cur_optind = optind; + c = getopt_long( argc, argv, + "hv::uC:f:4i:Io:t:c:m::M:a:A:6:s:UF::N:e:E:" + "2dD:7895gOw:l:n:b:q:S:B:r:R:x:TY:X:Z:z", long_options, &option_index ); if( c < 0 ) { @@ -3091,8 +3157,11 @@ static int ParseOptions( int argc, char ** argv ) else if( atoi( optarg ) == 709 ) color_matrix = 2; break; + case MIN_DURATION: + min_title_duration = strtol( optarg, NULL, 0 ); + break; default: - fprintf( stderr, "unknown option (%s)\n", argv[optind] ); + fprintf( stderr, "unknown option (%s)\n", argv[cur_optind] ); return -1; } }