rendered paste bodyIndex: test/test.c===================================================================--- test/test.c (revision 1041)+++ test/test.c (working copy)@@ -67,6 +67,8 @@ static int turbo_opts_enabled = 0; static char * turbo_opts = "ref=1:subme=1:me=dia:analyse=none:trellis=0:no-fast-pskip=0:8x8dct=0"; static int largeFileSize = 0;+static int preset = 0;+static char * preset_name = 0; /* Exit cleanly on Ctrl-C */ static volatile int die = 0;@@ -75,6 +77,8 @@ /* Utils */ static void ShowCommands(); static void ShowHelp();+static void ShowPresets();+ static int ParseOptions( int argc, char ** argv ); static int CheckOptions( int argc, char ** argv ); static int HandleEvents( hb_handle_t * h );@@ -223,6 +227,7 @@ if (native_language ) free (native_language ); if( x264opts ) free (x264opts ); if( x264opts2 ) free (x264opts2 );+ if (preset_name) free (preset_name); fprintf( stderr, "HandBrake has exited.\n" ); @@ -391,6 +396,245 @@ job->chapter_end ); } + if (preset)+ {+ hb_log("+ Using preset: %s", preset_name);+ + if (!strcmp(presetname, "Animation"))+ {+ mux = HB_MUX_MKV;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 1000;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ x264opts = strdup("ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=5:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2");+ job->chapter_markers = 1;+ job->deinterlace = 1;+ pixelratio = 1;+ twoPass = 1;+ turbo_opts_enabled = 1;+ }++ if (!strcmp(presetname, "AppleTV"))+ {+ mux = HB_MUX_MP4;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 2500;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ x264opts = strdup("bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:trellis=2:cabac=0");+ job->chapter_markers = 1;+ pixelratio = 1;+ }++ if (!strcmp(presetname, "Bedlam"))+ {+ mux = HB_MUX_MKV;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 1800;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_AC3;+ x264opts = strdup("ref=16:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=7:me-range=64:analyse=all:8x8dct:trellis=2:no-fast-pskip:no-dct-decimate:filter=-2,-1");+ job->chapter_markers = 1;+ pixelratio = 1;+ twoPass = 1;+ turbo_opts_enabled = 1;+ }++ if (!strcmp(presetname, "Blind"))+ {+ mux = HB_MUX_MP4;+ job->vbitrate = 512;+ job->abitrate = 128;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ job->width = 512;+ job->chapter_markers = 1;+ }++ if (!strcmp(presetname, "Broke"))+ {+ mux = HB_MUX_MP4;+ vcodec = HB_VCODEC_X264;+ size = 695;+ job->abitrate = 128;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ job->width = 640;+ x264opts = strdup("ref=3:mixed-refs:bframes=6:bime:weightb:b-rdo:b-pyramid:direct=auto:me=umh:subme=6:trellis=1:analyse=all:8x8dct:no-fast-pskip");+ job->chapter_markers = 1;+ twoPass = 1;+ turbo_opts_enabled = 1;+ }++ if (!strcmp(presetname, "Classic"))+ {+ mux = HB_MUX_MP4;+ job->vbitrate = 1000;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ }++ if (!strcmp(presetname, "Constant Quality Rate"))+ {+ mux = HB_MUX_MKV;+ vcodec = HB_VCODEC_X264;+ job->vquality = 0.64709997177124023;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_AC3;+ x264opts = strdup("ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:subme=6:trellis=1:analyse=all:8x8dct:me=umh");+ job->chapter_markers = 1;+ pixelratio = 1;+ }++ if (!strcmp(presetname, "Deux Six Quatre"))+ {+ mux = HB_MUX_MKV;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 1600;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_AC3;+ x264opts = strdup("ref=5:mixed-refs:bframes=3:bime:weightb:b-rdo:b-pyramid:me=umh:subme=7:trellis=1:analyse=all:8x8dct:no-fast-pskip");+ job->chapter_markers = 1;+ pixelratio = 1;+ twoPass = 1;+ turbo_opts_enabled = 1;+ }++ if (!strcmp(presetname, "Film"))+ {+ mux = HB_MUX_MKV;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 2000;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_AC3;+ x264opts = strdup("ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:no-fast-pskip");+ job->chapter_markers = 1;+ pixelratio = 1;+ twoPass = 1;+ turbo_opts_enabled = 1;+ }++ if (!strcmp(presetname, "iPhone"))+ {+ mux = HB_MUX_MP4;+ vcodec = HB_VCODEC_X264;+ job->h264_level = 30;+ job->vbitrate = 960;+ job->abitrate = 128;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ job->width = 480;+ x264opts = strdup("cabac=0:ref=1:analyse=all:me=umh:subme=6:no-fast-pskip=1:trellis=1");+ job->chapter_markers = 1;+ }++ if (!strcmp(presetname, "iPod High-Rez"))+ {+ mux = HB_MUX_MP4;+ vcodec = HB_VCODEC_X264;+ job->h264_level = 30;+ job->vbitrate = 1500;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ job->width = 640;+ x264opts = strdup("keyint=300:keyint-min=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1");+ job->chapter_markers = 1;+ }++ if (!strcmp(presetname, "iPod Low-Rez"))+ {+ mux = HB_MUX_MP4;+ vcodec = HB_VCODEC_X264;+ job->h264_level = 30;+ job->vbitrate = 700;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ job->width = 320;+ x264opts = strdup("keyint=300:keyint-min=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1");+ job->chapter_markers = 1;+ }++ if (!strcmp(presetname, "Normal"))+ {+ mux = HB_MUX_MP4;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 1500;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ x264opts = strdup("ref=2:bframes=2:subme=5:me=umh");+ job->chapter_markers = 1;+ pixelratio = 1;+ twoPass = 1;+ turbo_opts_enabled = 1;+ }++ if (!strcmp(presetname, "PS3"))+ {+ mux = HB_MUX_MP4;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 2500;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ x264opts = strdup("level=41:subme=5:me=umh");+ job->chapter_markers = 1;+ pixelratio = 1;+ }++ if (!strcmp(presetname, "PSP"))+ {+ mux = HB_MUX_MP4;+ job->vbitrate = 1024;+ job->abitrate = 128;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ job->width = 368;+ job->height = 208;+ job->chapter_markers = 1;+ }++ if (!strcmp(presetname, "QuickTime"))+ {+ mux = HB_MUX_MP4;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 2000;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ x264opts = strdup("ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:subme=5:analyse=all:8x8dct:trellis=1:no-fast-pskip");+ job->chapter_markers = 1;+ pixelratio = 1;+ twoPass = 1;+ turbo_opts_enabled = 1;+ }++ if (!strcmp(presetname, "Television"))+ {+ mux = HB_MUX_MKV;+ vcodec = HB_VCODEC_X264;+ job->vbitrate = 1300;+ job->abitrate = 160;+ job->arate = 48000;+ acodec = HB_ACODEC_FAAC;+ x264opts = strdup("ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip");+ job->chapter_markers = 1;+ job->deinterlace = 1;+ twoPass = 1;+ turbo_opts_enabled = 1;+ }+ }+ if ( chapter_markers ) { job->chapter_markers = chapter_markers;@@ -694,6 +938,7 @@ tmp_x264opts = malloc(size * sizeof(char)); if( x264opts ) {+ x264opts2 = strdup(x264opts); snprintf( tmp_x264opts, size, "%s:%s", x264opts, turbo_opts ); free( x264opts );@@ -939,6 +1184,47 @@ } /****************************************************************************+ * ShowPresets:+ ****************************************************************************/+static void ShowPresets()+{+ printf("\n+ Animation: -e x264 -b 1000 -B 160 -R 48 -E faac -f mkv -m -d -p -2 -T -x ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=5:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2\n");++ printf("\n+ AppleTV: -e x264 -b 2500 -B 160 -R 48 -E faac -f mp4 -m -p -x bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:trellis=2:cabac=0\n");++ printf("\n+ Bedlam: -e x264 -b 1800 -B 160 -R 48 -E ac3 -f mkv -m -p -2 -T -x ref=16:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=7:me-range=64:analyse=all:8x8dct:trellis=2:no-fast-pskip:no-dct-decimate:filter=-2,-1\n");++ printf("\n+ Blind: -b 512 -B 128 -R 48 -E faac -f mp4 -w 512 -m\n");++ printf("\n+ Broke: -e x264 -S 695 -B 128 -R 48 -E faac -f mp4 -w 640 -m -2 -T -x ref=3:mixed-refs:bframes=6:bime:weightb:b-rdo:b-pyramid:direct=auto:me=umh:subme=6:trellis=1:analyse=all:8x8dct:no-fast-pskip\n");++ printf("\n+ Classic: -b 1000 -B 160 -R 48 -E faac -f mp4\n");++ printf("\n+ Constant Quality Rate: -e x264 -q 0.64709997177124023 -B 160 -R 48 -E ac3 -f mkv -m -p -x ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:subme=6:trellis=1:analyse=all:8x8dct:me=umh\n");++ printf("\n+ Deux Six Quatre: -e x264 -b 1600 -B 160 -R 48 -E ac3 -f mkv -m -p -2 -T -x ref=5:mixed-refs:bframes=3:bime:weightb:b-rdo:b-pyramid:me=umh:subme=7:trellis=1:analyse=all:8x8dct:no-fast-pskip\n");++ printf("\n+ Film: -e x264 -b 2000 -B 160 -R 48 -E ac3 -f mkv -m -p -2 -T -x ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:no-fast-pskip\n");++ printf("\n+ iPhone: -e x264b30 -b 960 -B 128 -R 48 -E faac -f mp4 -w 480 -m -x cabac=0:ref=1:analyse=all:me=umh:subme=6:no-fast-pskip=1:trellis=1\n");++ printf("\n+ iPod High-Rez: -e x264b30 -b 1500 -B 160 -R 48 -E faac -f mp4 -w 640 -m -x keyint=300:keyint-min=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1\n");++ printf("\n+ iPod Low-Rez: -e x264b30 -b 700 -B 160 -R 48 -E faac -f mp4 -w 320 -m -x keyint=300:keyint-min=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1\n");++ printf("\n+ Normal: -e x264 -b 1500 -B 160 -R 48 -E faac -f mp4 -m -p -2 -T -x ref=2:bframes=2:subme=5:me=umh\n");++ printf("\n+ PS3: -e x264 -b 2500 -B 160 -R 48 -E faac -f mp4 -m -p -x level=41:subme=5:me=umh\n");++ printf("\n+ PSP: -b 1024 -B 128 -R 48 -E faac -f mp4 -w 368 -l 208 -m\n");++ printf("\n+ QuickTime: -e x264 -b 2000 -B 160 -R 48 -E faac -f mp4 -m -p -2 -T -x ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:subme=5:analyse=all:8x8dct:trellis=1:no-fast-pskip\n");++ printf("\n+ Television: -e x264 -b 1300 -B 160 -R 48 -E faac -f mkv -m -d -2 -T -x ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip\n");+ +}++/**************************************************************************** * ParseOptions: ****************************************************************************/ static int ParseOptions( int argc, char ** argv )@@ -991,9 +1277,10 @@ { "crf", no_argument, NULL, 'Q' }, { "x264opts", required_argument, NULL, 'x' }, { "turbo", no_argument, NULL, 'T' },- { "maxHeight", required_argument, NULL, 'Y' }, { "maxWidth", required_argument, NULL, 'X' },+ { "preset", required_argument, NULL, 'Z' },+ { "preset-list", no_argument, NULL, 'z' }, { 0, 0, 0, 0 } };@@ -1002,7 +1289,7 @@ int c; c = getopt_long( argc, argv,- "hvuC:f:4i:o:t:Lc:ma:6:s:UFN:e:E:2d789gpP::w:l:n:b:q:S:B:r:R:Qx:TY:X:",+ "hvuC:f:4i:o:t:Lc:ma:6:s:UFN:e:E:2d789gpP::w:l:n:b:q:S:B:r:R:Qx:TY:X:Z:z", long_options, &option_index ); if( c < 0 ) {@@ -1023,7 +1310,15 @@ case 'C': cpu = atoi( optarg ); break;-+ + case 'Z':+ preset = 1;+ preset_name = strdup(optarg);+ break;+ case 'z':+ ShowPresets();+ exit ( 0 );+ case 'f': format = strdup( optarg ); break;@@ -1304,7 +1599,6 @@ break; case 'x': x264opts = strdup( optarg );- x264opts2 = strdup( optarg ); break; case 'T': turbo_opts_enabled = 1;