diff options
author | jstebbins <[email protected]> | 2014-07-21 15:01:13 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2014-07-21 15:01:13 +0000 |
commit | 0b297972d7bdd4448f29db4e06a1d68af74bfab9 (patch) | |
tree | 332d13f3b4ff89da18d996dc03a26d17ca18b90a /test/test.c | |
parent | 8eba50b3ff98e419cad4cc1753877292c82b21dd (diff) |
LinGui/CLI/libhb: add nlmeans denoise filter to lingui
Move nlmeans preset&tune parsing from cli to libhb
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6239 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'test/test.c')
-rw-r--r-- | test/test.c | 200 |
1 files changed, 18 insertions, 182 deletions
diff --git a/test/test.c b/test/test.c index b0c5b6010..0c3b0ab74 100644 --- a/test/test.c +++ b/test/test.c @@ -3327,7 +3327,7 @@ if (hb_qsv_available()) " specify a constant framerate (--rate 29.97)\n" " <L:R:T:B:SB:MP:FD> (default 1:1:4:4:0:0:-1)\n" " -8, --denoise Denoise video with hqdn3d filter\n" - " <weak/medium/strong> or omitted (default settings)\n" + " <ultralight/light/medium/strong> or omitted (default settings)\n" " or\n" " <SL:SCb:SCr:TL:TCb:TCr>\n" " (default: 4:3:3:6:4.5:4.5)\n" @@ -3970,22 +3970,8 @@ static int ParseOptions( int argc, char ** argv ) case '8': if( optarg != NULL ) { - if (!( strcmp( optarg, "weak" ) )) - { - denoise_opt = "2:1:1:2:3:3"; - } - else if (!( strcmp( optarg, "medium" ) )) - { - denoise_opt = "3:2:2:2:3:3"; - } - else if (!( strcmp( optarg, "strong" ) )) - { - denoise_opt = "7:7:7:5:5:5"; - } - else - { - denoise_opt = strdup( optarg ); - } + free(denoise_opt); + denoise_opt = strdup( optarg ); } denoise = 1; break; @@ -4307,179 +4293,29 @@ static int ParseOptions( int argc, char ** argv ) } - /* NL-means presets (--nlmeans) and tunes (--nlmeans-tune) - * - * Presets adjust strength: - * ultralight - visually transparent - * light - * medium - * strong - * - * Tunes adjust settings to the specified content type: - * none - * film - most content, live action - * grain - like film but preserves luma grain - * highmotion - like film but avoids color smearing with stronger settings - * animation - cel animation such as cartoons, anime - */ - if (nlmeans == 1 && nlmeans_opt != NULL) + if (nlmeans) { - if (!strcmp(nlmeans_opt, "ultralight") || - !strcmp(nlmeans_opt, "light") || - !strcmp(nlmeans_opt, "medium") || - !strcmp(nlmeans_opt, "strong")) + if (nlmeans_opt == NULL && nlmeans_tune_opt != NULL) { - char opt[1024]; - double strength[2], - origin_tune[2]; - int patch_size[2], - range[2], - frames[2], - prefilter[2]; - - if (nlmeans_tune_opt == NULL || !strcmp(nlmeans_tune_opt, "none")) - { - strength[0] = strength[1] = 6; - origin_tune[0] = origin_tune[1] = 1; - patch_size[0] = patch_size[1] = 7; - range[0] = range[1] = 3; - frames[0] = frames[1] = 2; - prefilter[0] = prefilter[1] = 0; - if (!strcmp(nlmeans_opt, "ultralight")) - { - strength[0] = strength[1] = 1.5; - } - else if (!strcmp(nlmeans_opt, "light")) - { - strength[0] = strength[1] = 3; - } - else if (!strcmp(nlmeans_opt, "strong")) - { - strength[0] = strength[1] = 10; - } - } - else if (!strcmp(nlmeans_tune_opt, "film")) - { - strength[0] = 6; strength[1] = 8; - origin_tune[0] = origin_tune[1] = 0.8; - patch_size[0] = patch_size[1] = 7; - range[0] = range[1] = 3; - frames[0] = frames[1] = 2; - prefilter[0] = prefilter[1] = 0; - if (!strcmp(nlmeans_opt, "ultralight")) - { - strength[0] = 1.5; strength[1] = 2.4; - origin_tune[0] = 0.9; origin_tune[1] = 0.9; - } - else if (!strcmp(nlmeans_opt, "light")) - { - strength[0] = 3; strength[1] = 4; - origin_tune[0] = 0.9; origin_tune[1] = 0.9; - } - else if (!strcmp(nlmeans_opt, "strong")) - { - strength[0] = 8; strength[1] = 10; - origin_tune[0] = 0.6; origin_tune[1] = 0.6; - } - } - else if (!strcmp(nlmeans_tune_opt, "grain")) - { - strength[0] = 0; strength[1] = 6; - origin_tune[0] = origin_tune[1] = 0.8; - patch_size[0] = patch_size[1] = 7; - range[0] = range[1] = 3; - frames[0] = frames[1] = 2; - prefilter[0] = prefilter[1] = 0; - if (!strcmp(nlmeans_opt, "ultralight")) - { - strength[0] = 0; strength[1] = 2.4; - origin_tune[0] = 0.9; origin_tune[1] = 0.9; - } - else if (!strcmp(nlmeans_opt, "light")) - { - strength[0] = 0; strength[1] = 3.5; - origin_tune[0] = 0.9; origin_tune[1] = 0.9; - } - else if (!strcmp(nlmeans_opt, "strong")) - { - strength[0] = 0; strength[1] = 8; - origin_tune[0] = 0.6; origin_tune[1] = 0.6; - } - } - else if (!strcmp(nlmeans_tune_opt, "highmotion")) - { - strength[0] = 6; strength[1] = 6; - origin_tune[0] = 0.8; origin_tune[1] = 0.7; - patch_size[0] = 7; patch_size[1] = 7; - range[0] = 3; range[1] = 5; - frames[0] = 2; frames[1] = 1; - prefilter[0] = 0; prefilter[1] = 0; - if (!strcmp(nlmeans_opt, "ultralight")) - { - strength[0] = 1.5; strength[1] = 2.4; - origin_tune[0] = 0.9; origin_tune[1] = 0.9; - } - else if (!strcmp(nlmeans_opt, "light")) - { - strength[0] = 3; strength[1] = 3.25; - origin_tune[0] = 0.9; origin_tune[1] = 0.8; - } - else if (!strcmp(nlmeans_opt, "strong")) - { - strength[0] = 8; strength[1] = 6.75; - origin_tune[0] = 0.6; origin_tune[1] = 0.5; - } - } - else if (!strcmp(nlmeans_tune_opt, "animation")) - { - strength[0] = 5; strength[1] = 4; - origin_tune[0] = origin_tune[1] = 0.15; - patch_size[0] = patch_size[1] = 5; - range[0] = range[1] = 7; - frames[0] = frames[1] = 4; - prefilter[0] = prefilter[1] = 0; - if (!strcmp(nlmeans_opt, "ultralight")) - { - strength[0] = 2.5; strength[1] = 2; - frames[0] = 2; frames[1] = 2; - } - else if (!strcmp(nlmeans_opt, "light")) - { - strength[0] = 3; strength[1] = 2.25; - frames[0] = 3; frames[1] = 3; - } - else if (!strcmp(nlmeans_opt, "strong")) - { - strength[0] = 10; strength[1] = 8; - } - } - else - { - fprintf(stderr, "Unrecognized nlmeans tune (%s).\n", nlmeans_tune_opt); - return -1; - } - - sprintf(opt, "%lf:%lf:%d:%d:%d:%d:%lf:%lf:%d:%d:%d:%d", - strength[0], origin_tune[0], patch_size[0], range[0], frames[0], prefilter[0], - strength[1], origin_tune[1], patch_size[1], range[1], frames[1], prefilter[1]); - - free(nlmeans_opt); - nlmeans_opt = strdup(opt); - + fprintf(stdout, "Default nlmeans parameters specified; ignoring nlmeans tune (%s).\n", nlmeans_tune_opt); } - else + + char *opt = hb_generate_filter_settings(HB_FILTER_NLMEANS, + nlmeans_opt, nlmeans_tune_opt); + if (opt != NULL) { - if (nlmeans_tune_opt != NULL) - { - fprintf(stdout, "Custom nlmeans parameters specified; ignoring nlmeans tune (%s).\n", nlmeans_tune_opt); - } + free(nlmeans_opt); + nlmeans_opt = opt; } } - else if (nlmeans == 1 && nlmeans_opt == NULL) + if (denoise) { - if (nlmeans_tune_opt != NULL) + char *opt = hb_generate_filter_settings(HB_FILTER_DENOISE, + denoise_opt, NULL); + if (opt != NULL) { - fprintf(stdout, "Default nlmeans parameters specified; ignoring nlmeans tune (%s).\n", nlmeans_tune_opt); + free(denoise_opt); + denoise_opt = opt; } } |