From 7f22ec8cc768ba1dcbfe8272a002d7a7189e797d Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 30 Sep 2025 03:19:58 +0900 Subject: [PATCH] quality preset change --- video_encoder/encoder_tav.c | 18 +++++++++--------- video_encoder/exponential_numeric_system.ods | Bin 0 -> 15026 bytes 2 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 video_encoder/exponential_numeric_system.ods diff --git a/video_encoder/encoder_tav.c b/video_encoder/encoder_tav.c index 08ba6b7..d617627 100644 --- a/video_encoder/encoder_tav.c +++ b/video_encoder/encoder_tav.c @@ -183,10 +183,10 @@ static const int QLUT[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 // Quality level to quantisation mapping for different channels // the values are indices to the QLUT -static const int QUALITY_Y[] = {59, 41, 24, 11, 5, 1}; // 60, 42, 25, 12, 6, 2 +static const int QUALITY_Y[] = {79, 47, 23, 11, 5, 2}; // 96, 48, 24, 12, 6, 3 static const int QUALITY_CO[] = {123, 108, 91, 76, 59, 29}; // 240, 180, 120, 90, 60, 30 -static const int QUALITY_CG[] = {132, 119, 100, 87, 68, 37}; // 296, 224, 148, 112, 74, 38 -static const int QUALITY_ALPHA[] = {59, 41, 24, 11, 5, 1}; +static const int QUALITY_CG[] = {132, 130, 127, 122, 109, 83}; // 296, 280, 256, 236, 184, 104 +static const int QUALITY_ALPHA[] = {79, 47, 23, 11, 5, 2}; // 96, 48, 24, 12, 6, 3 // psychovisual tuning parameters static const float ANISOTROPY_MULT[] = {2.0f, 1.8f, 1.6f, 1.4f, 1.2f, 1.0f}; @@ -407,17 +407,17 @@ static void show_usage(const char *program_name) { printf("%d: %d kbps\t", i, MP2_RATE_TABLE[i]); } printf("\n\nQuantiser Value by Quality:\n"); - printf(" Y (Luma): "); + printf(" Y - "); for (int i = 0; i < 6; i++) { - printf("%d: Q %d \t", i, QUALITY_Y[i]); + printf("%d: Q %d%s(→%d) \t", i, QUALITY_Y[i], QUALITY_Y[i] < 10 ? " " : QUALITY_Y[i] < 100 ? " " : "", QLUT[QUALITY_Y[i]]); } - printf("\n Co (Chroma): "); + printf("\n Co - "); for (int i = 0; i < 6; i++) { - printf("%d: Q %d \t", i, QUALITY_CO[i]); + printf("%d: Q %d%s(→%d) \t", i, QUALITY_CO[i], QUALITY_CO[i] < 10 ? " " : QUALITY_CO[i] < 100 ? " " : "", QLUT[QUALITY_CO[i]]); } - printf("\n Cg (Chroma): "); + printf("\n Cg - "); for (int i = 0; i < 6; i++) { - printf("%d: Q %d \t", i, QUALITY_CG[i]); + printf("%d: Q %d%s(→%d) \t", i, QUALITY_CG[i], QUALITY_CG[i] < 10 ? " " : QUALITY_CG[i] < 100 ? " " : "", QLUT[QUALITY_CG[i]]); } printf("\n\nVideo Size Keywords:"); printf("\n -s cif: equal to 352x288"); diff --git a/video_encoder/exponential_numeric_system.ods b/video_encoder/exponential_numeric_system.ods new file mode 100644 index 0000000000000000000000000000000000000000..d89d1bbea42ab0e2f64a7b4a83c23ae729f6da36 GIT binary patch literal 15026 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 J!Oiu={XbqP=Q98R literal 0 HcmV?d00001