avfilter/vf_maskedminmax: refactor slice function
This commit is contained in:
		
							parent
							
								
									105234ce80
								
							
						
					
					
						commit
						b7dc07c07c
					
				@ -85,39 +85,24 @@ static const enum AVPixelFormat pix_fmts[] = {
 | 
			
		||||
    AV_PIX_FMT_NONE
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void maskedmin8(const uint8_t *src, uint8_t *dst, const uint8_t *f1, const uint8_t *f2, int w)
 | 
			
		||||
{
 | 
			
		||||
    for (int x = 0; x < w; x++)
 | 
			
		||||
        dst[x] = FFABS(src[x] - f2[x]) < FFABS(src[x] - f1[x]) ? f2[x] : f1[x];
 | 
			
		||||
#define MASKED(n, type, op)                                \
 | 
			
		||||
static void masked##n(const uint8_t *ssrc, uint8_t *ddst,  \
 | 
			
		||||
                      const uint8_t *ff1,                  \
 | 
			
		||||
                      const uint8_t *ff2, int w)           \
 | 
			
		||||
{                                                          \
 | 
			
		||||
    const type *src = (const type *)ssrc;                  \
 | 
			
		||||
    const type *f1 = (const type *)ff1;                    \
 | 
			
		||||
    const type *f2 = (const type *)ff2;                    \
 | 
			
		||||
    type *dst = (type *)ddst;                              \
 | 
			
		||||
                                                           \
 | 
			
		||||
    for (int x = 0; x < w; x++)                            \
 | 
			
		||||
        dst[x] = FFABS(src[x] - f2[x]) op FFABS(src[x] - f1[x]) ? f2[x] : f1[x]; \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void maskedmax8(const uint8_t *src, uint8_t *dst, const uint8_t *f1, const uint8_t *f2, int w)
 | 
			
		||||
{
 | 
			
		||||
    for (int x = 0; x < w; x++)
 | 
			
		||||
        dst[x] = FFABS(src[x] - f2[x]) > FFABS(src[x] - f1[x]) ? f2[x] : f1[x];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void maskedmin16(const uint8_t *ssrc, uint8_t *ddst, const uint8_t *ff1, const uint8_t *ff2, int w)
 | 
			
		||||
{
 | 
			
		||||
    const uint16_t *src = (const uint16_t *)ssrc;
 | 
			
		||||
    const uint16_t *f1 = (const uint16_t *)ff1;
 | 
			
		||||
    const uint16_t *f2 = (const uint16_t *)ff2;
 | 
			
		||||
    uint16_t *dst = (uint16_t *)ddst;
 | 
			
		||||
 | 
			
		||||
    for (int x = 0; x < w; x++)
 | 
			
		||||
        dst[x] = FFABS(src[x] - f2[x]) < FFABS(src[x] - f1[x]) ? f2[x] : f1[x];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void maskedmax16(const uint8_t *ssrc, uint8_t *ddst, const uint8_t *ff1, const uint8_t *ff2, int w)
 | 
			
		||||
{
 | 
			
		||||
    const uint16_t *src = (const uint16_t *)ssrc;
 | 
			
		||||
    const uint16_t *f1 = (const uint16_t *)ff1;
 | 
			
		||||
    const uint16_t *f2 = (const uint16_t *)ff2;
 | 
			
		||||
    uint16_t *dst = (uint16_t *)ddst;
 | 
			
		||||
 | 
			
		||||
    for (int x = 0; x < w; x++)
 | 
			
		||||
        dst[x] = FFABS(src[x] - f2[x]) > FFABS(src[x] - f1[x]) ? f2[x] : f1[x];
 | 
			
		||||
}
 | 
			
		||||
MASKED(min8,  uint8_t,  <)
 | 
			
		||||
MASKED(max8,  uint8_t,  >)
 | 
			
		||||
MASKED(min16, uint16_t, <)
 | 
			
		||||
MASKED(max16, uint16_t, >)
 | 
			
		||||
 | 
			
		||||
static int config_input(AVFilterLink *inlink)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user