mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-11-01 04:53:04 +08:00 
			
		
		
		
	avfilter/vf_vectorscope: support more formats for color4 mode in common case
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
		| @@ -43,6 +43,7 @@ typedef struct VectorscopeContext { | ||||
|     const uint8_t *bg_color; | ||||
|     int planewidth[4]; | ||||
|     int planeheight[4]; | ||||
|     int hsub, vsub; | ||||
|     int x, y, pd; | ||||
|     int is_yuv; | ||||
|     int envelope; | ||||
| @@ -117,8 +118,7 @@ static int query_formats(AVFilterContext *ctx) | ||||
|     if (!ctx->inputs[0]->out_formats) { | ||||
|         const enum AVPixelFormat *in_pix_fmts; | ||||
|  | ||||
|         if (((s->x == 1 && s->y == 2) || (s->x == 2 && s->y == 1)) && | ||||
|             (s->mode != COLOR4)) | ||||
|         if ((s->x == 1 && s->y == 2) || (s->x == 2 && s->y == 1)) | ||||
|             in_pix_fmts = in2_pix_fmts; | ||||
|         else | ||||
|             in_pix_fmts = in1_pix_fmts; | ||||
| @@ -173,6 +173,8 @@ static int config_input(AVFilterLink *inlink) | ||||
|         s->bg_color = black_yuva_color; | ||||
|     } | ||||
|  | ||||
|     s->hsub = desc->log2_chroma_w; | ||||
|     s->vsub = desc->log2_chroma_h; | ||||
|     s->planeheight[1] = s->planeheight[2] = FF_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h); | ||||
|     s->planeheight[0] = s->planeheight[3] = inlink->h; | ||||
|     s->planewidth[1]  = s->planewidth[2]  = FF_CEIL_RSHIFT(inlink->w, desc->log2_chroma_w); | ||||
| @@ -266,6 +268,8 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd | ||||
|     const uint8_t *spx = src[px]; | ||||
|     const uint8_t *spy = src[py]; | ||||
|     const uint8_t *spd = src[pd]; | ||||
|     const int hsub = s->hsub; | ||||
|     const int vsub = s->vsub; | ||||
|     uint8_t **dst = out->data; | ||||
|     uint8_t *dpx = dst[px]; | ||||
|     uint8_t *dpy = dst[py]; | ||||
| @@ -361,13 +365,13 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd | ||||
|         } | ||||
|         break; | ||||
|     case COLOR4: | ||||
|         for (i = 0; i < h; i++) { | ||||
|             const int iwx = i * slinesizex; | ||||
|             const int iwy = i * slinesizey; | ||||
|         for (i = 0; i < in->height; i++) { | ||||
|             const int iwx = (i >> vsub) * slinesizex; | ||||
|             const int iwy = (i >> vsub) * slinesizey; | ||||
|             const int iwd = i * slinesized; | ||||
|             for (j = 0; j < w; j++) { | ||||
|                 const int x = spx[iwx + j]; | ||||
|                 const int y = spy[iwy + j]; | ||||
|             for (j = 0; j < in->width; j++) { | ||||
|                 const int x = spx[iwx + (j >> hsub)]; | ||||
|                 const int y = spy[iwy + (j >> hsub)]; | ||||
|                 const int pos = y * dlinesize + x; | ||||
|  | ||||
|                 dpd[pos] = FFMAX(spd[iwd + j], dpd[pos]); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #tb 0: 1/25 | ||||
| 0,          0,          0,        1,   196608, 0xb6d22af1 | ||||
| 0,          1,          1,        1,   196608, 0xd7c6f971 | ||||
| 0,          2,          2,        1,   196608, 0xfe729faa | ||||
| 0,          0,          0,        1,   196608, 0x4d2e53c4 | ||||
| 0,          1,          1,        1,   196608, 0x795e1dcc | ||||
| 0,          2,          2,        1,   196608, 0xe4268800 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Paul B Mahol
					Paul B Mahol