avfilter/avf_showspectrum: add 4th and 5th root scaler
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
		
							parent
							
								
									2b172cb625
								
							
						
					
					
						commit
						af018d802d
					
				@ -14640,6 +14640,10 @@ linear
 | 
				
			|||||||
square root, default
 | 
					square root, default
 | 
				
			||||||
@item cbrt
 | 
					@item cbrt
 | 
				
			||||||
cubic root
 | 
					cubic root
 | 
				
			||||||
 | 
					@item 4thrt
 | 
				
			||||||
 | 
					4th root
 | 
				
			||||||
 | 
					@item 5thrt
 | 
				
			||||||
 | 
					5th root
 | 
				
			||||||
@item log
 | 
					@item log
 | 
				
			||||||
logarithmic
 | 
					logarithmic
 | 
				
			||||||
@end table
 | 
					@end table
 | 
				
			||||||
@ -14764,6 +14768,10 @@ linear
 | 
				
			|||||||
square root, default
 | 
					square root, default
 | 
				
			||||||
@item cbrt
 | 
					@item cbrt
 | 
				
			||||||
cubic root
 | 
					cubic root
 | 
				
			||||||
 | 
					@item 4thrt
 | 
				
			||||||
 | 
					4th root
 | 
				
			||||||
 | 
					@item 5thrt
 | 
				
			||||||
 | 
					5th root
 | 
				
			||||||
@item log
 | 
					@item log
 | 
				
			||||||
logarithmic
 | 
					logarithmic
 | 
				
			||||||
@end table
 | 
					@end table
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,7 @@
 | 
				
			|||||||
#include "window_func.h"
 | 
					#include "window_func.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum DisplayMode  { COMBINED, SEPARATE, NB_MODES };
 | 
					enum DisplayMode  { COMBINED, SEPARATE, NB_MODES };
 | 
				
			||||||
enum DisplayScale { LINEAR, SQRT, CBRT, LOG, NB_SCALES };
 | 
					enum DisplayScale { LINEAR, SQRT, CBRT, LOG, FOURTHRT, FIFTHRT, NB_SCALES };
 | 
				
			||||||
enum ColorMode    { CHANNEL, INTENSITY, RAINBOW, MORELAND, NEBULAE, FIRE, FIERY, NB_CLMODES };
 | 
					enum ColorMode    { CHANNEL, INTENSITY, RAINBOW, MORELAND, NEBULAE, FIRE, FIERY, NB_CLMODES };
 | 
				
			||||||
enum SlideMode    { REPLACE, SCROLL, FULLFRAME, RSCROLL, NB_SLIDES };
 | 
					enum SlideMode    { REPLACE, SCROLL, FULLFRAME, RSCROLL, NB_SLIDES };
 | 
				
			||||||
enum Orientation  { VERTICAL, HORIZONTAL, NB_ORIENTATIONS };
 | 
					enum Orientation  { VERTICAL, HORIZONTAL, NB_ORIENTATIONS };
 | 
				
			||||||
@ -100,6 +100,8 @@ static const AVOption showspectrum_options[] = {
 | 
				
			|||||||
    { "scale", "set display scale", OFFSET(scale), AV_OPT_TYPE_INT, {.i64=SQRT}, LINEAR, NB_SCALES-1, FLAGS, "scale" },
 | 
					    { "scale", "set display scale", OFFSET(scale), AV_OPT_TYPE_INT, {.i64=SQRT}, LINEAR, NB_SCALES-1, FLAGS, "scale" },
 | 
				
			||||||
        { "sqrt", "square root", 0, AV_OPT_TYPE_CONST, {.i64=SQRT},   0, 0, FLAGS, "scale" },
 | 
					        { "sqrt", "square root", 0, AV_OPT_TYPE_CONST, {.i64=SQRT},   0, 0, FLAGS, "scale" },
 | 
				
			||||||
        { "cbrt", "cubic root",  0, AV_OPT_TYPE_CONST, {.i64=CBRT},   0, 0, FLAGS, "scale" },
 | 
					        { "cbrt", "cubic root",  0, AV_OPT_TYPE_CONST, {.i64=CBRT},   0, 0, FLAGS, "scale" },
 | 
				
			||||||
 | 
					        { "4thrt","4th root",    0, AV_OPT_TYPE_CONST, {.i64=FOURTHRT}, 0, 0, FLAGS, "scale" },
 | 
				
			||||||
 | 
					        { "5thrt","5th root",    0, AV_OPT_TYPE_CONST, {.i64=FIFTHRT},  0, 0, FLAGS, "scale" },
 | 
				
			||||||
        { "log",  "logarithmic", 0, AV_OPT_TYPE_CONST, {.i64=LOG},    0, 0, FLAGS, "scale" },
 | 
					        { "log",  "logarithmic", 0, AV_OPT_TYPE_CONST, {.i64=LOG},    0, 0, FLAGS, "scale" },
 | 
				
			||||||
        { "lin",  "linear",      0, AV_OPT_TYPE_CONST, {.i64=LINEAR}, 0, 0, FLAGS, "scale" },
 | 
					        { "lin",  "linear",      0, AV_OPT_TYPE_CONST, {.i64=LINEAR}, 0, 0, FLAGS, "scale" },
 | 
				
			||||||
    { "saturation", "color saturation multiplier", OFFSET(saturation), AV_OPT_TYPE_FLOAT, {.dbl = 1}, -10, 10, FLAGS },
 | 
					    { "saturation", "color saturation multiplier", OFFSET(saturation), AV_OPT_TYPE_FLOAT, {.dbl = 1}, -10, 10, FLAGS },
 | 
				
			||||||
@ -568,6 +570,12 @@ static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples)
 | 
				
			|||||||
            case CBRT:
 | 
					            case CBRT:
 | 
				
			||||||
                a = cbrt(a);
 | 
					                a = cbrt(a);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					            case FOURTHRT:
 | 
				
			||||||
 | 
					                a = pow(a, 0.25);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case FIFTHRT:
 | 
				
			||||||
 | 
					                a = pow(a, 0.20);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
            case LOG:
 | 
					            case LOG:
 | 
				
			||||||
                a = 1 + log10(FFMAX(FFMIN(1, a), 1e-6)) / 5; // zero = -120dBFS
 | 
					                a = 1 + log10(FFMAX(FFMIN(1, a), 1e-6)) / 5; // zero = -120dBFS
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
@ -778,6 +786,8 @@ static const AVOption showspectrumpic_options[] = {
 | 
				
			|||||||
    { "scale", "set display scale", OFFSET(scale), AV_OPT_TYPE_INT, {.i64=LOG}, 0, NB_SCALES-1, FLAGS, "scale" },
 | 
					    { "scale", "set display scale", OFFSET(scale), AV_OPT_TYPE_INT, {.i64=LOG}, 0, NB_SCALES-1, FLAGS, "scale" },
 | 
				
			||||||
        { "sqrt", "square root", 0, AV_OPT_TYPE_CONST, {.i64=SQRT},   0, 0, FLAGS, "scale" },
 | 
					        { "sqrt", "square root", 0, AV_OPT_TYPE_CONST, {.i64=SQRT},   0, 0, FLAGS, "scale" },
 | 
				
			||||||
        { "cbrt", "cubic root",  0, AV_OPT_TYPE_CONST, {.i64=CBRT},   0, 0, FLAGS, "scale" },
 | 
					        { "cbrt", "cubic root",  0, AV_OPT_TYPE_CONST, {.i64=CBRT},   0, 0, FLAGS, "scale" },
 | 
				
			||||||
 | 
					        { "4thrt","4th root",    0, AV_OPT_TYPE_CONST, {.i64=FOURTHRT}, 0, 0, FLAGS, "scale" },
 | 
				
			||||||
 | 
					        { "5thrt","5th root",    0, AV_OPT_TYPE_CONST, {.i64=FIFTHRT},  0, 0, FLAGS, "scale" },
 | 
				
			||||||
        { "log",  "logarithmic", 0, AV_OPT_TYPE_CONST, {.i64=LOG},    0, 0, FLAGS, "scale" },
 | 
					        { "log",  "logarithmic", 0, AV_OPT_TYPE_CONST, {.i64=LOG},    0, 0, FLAGS, "scale" },
 | 
				
			||||||
        { "lin",  "linear",      0, AV_OPT_TYPE_CONST, {.i64=LINEAR}, 0, 0, FLAGS, "scale" },
 | 
					        { "lin",  "linear",      0, AV_OPT_TYPE_CONST, {.i64=LINEAR}, 0, 0, FLAGS, "scale" },
 | 
				
			||||||
    { "saturation", "color saturation multiplier", OFFSET(saturation), AV_OPT_TYPE_FLOAT, {.dbl = 1}, -10, 10, FLAGS },
 | 
					    { "saturation", "color saturation multiplier", OFFSET(saturation), AV_OPT_TYPE_FLOAT, {.dbl = 1}, -10, 10, FLAGS },
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user