Commit 8f66a2da authored by Paul B Mahol's avatar Paul B Mahol

avfilter/vf_vectorscope: always flip output vertically

Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent 65efcaeb
...@@ -911,7 +911,7 @@ static void draw_htext(AVFrame *out, int x, int y, float o1, float o2, const cha ...@@ -911,7 +911,7 @@ static void draw_htext(AVFrame *out, int x, int y, float o1, float o2, const cha
int v = color[plane]; int v = color[plane];
uint8_t *p = out->data[plane] + y * out->linesize[plane] + (x + i * 8); uint8_t *p = out->data[plane] + y * out->linesize[plane] + (x + i * 8);
for (char_y = 0; char_y < font_height; char_y++) { for (char_y = font_height - 1; char_y >= 0; char_y--) {
for (mask = 0x80; mask; mask >>= 1) { for (mask = 0x80; mask; mask >>= 1) {
if (font[txt[i] * font_height + char_y] & mask) if (font[txt[i] * font_height + char_y] & mask)
p[0] = p[0] * o2 + v * o1; p[0] = p[0] * o2 + v * o1;
...@@ -937,7 +937,7 @@ static void draw_htext16(AVFrame *out, int x, int y, float o1, float o2, const c ...@@ -937,7 +937,7 @@ static void draw_htext16(AVFrame *out, int x, int y, float o1, float o2, const c
int v = color[plane]; int v = color[plane];
uint16_t *p = (uint16_t *)(out->data[plane] + y * out->linesize[plane]) + (x + i * 8); uint16_t *p = (uint16_t *)(out->data[plane] + y * out->linesize[plane]) + (x + i * 8);
for (char_y = 0; char_y < font_height; char_y++) { for (char_y = font_height - 1; char_y >= 0; char_y--) {
for (mask = 0x80; mask; mask >>= 1) { for (mask = 0x80; mask; mask >>= 1) {
if (font[txt[i] * font_height + char_y] & mask) if (font[txt[i] * font_height + char_y] & mask)
p[0] = p[0] * o2 + v * o1; p[0] = p[0] * o2 + v * o1;
...@@ -1207,6 +1207,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) ...@@ -1207,6 +1207,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
VectorscopeContext *s = ctx->priv; VectorscopeContext *s = ctx->priv;
AVFilterLink *outlink = ctx->outputs[0]; AVFilterLink *outlink = ctx->outputs[0];
AVFrame *out; AVFrame *out;
int plane;
if (s->colorspace) { if (s->colorspace) {
s->cs = (s->depth - 8) * 2 + s->colorspace - 1; s->cs = (s->depth - 8) * 2 + s->colorspace - 1;
...@@ -1232,6 +1233,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) ...@@ -1232,6 +1233,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
s->vectorscope(s, in, out, s->pd); s->vectorscope(s, in, out, s->pd);
s->graticulef(s, out, s->x, s->y, s->pd, s->cs); s->graticulef(s, out, s->x, s->y, s->pd, s->cs);
for (plane = 0; plane < 4; plane++) {
if (out->data[plane]) {
out->data[plane] += (s->size - 1) * out->linesize[plane];
out->linesize[plane] = -out->linesize[plane];
}
}
av_frame_free(&in); av_frame_free(&in);
return ff_filter_frame(outlink, out); return ff_filter_frame(outlink, out);
} }
......
#tb 0: 1/25 #tb 0: 1/25
0, 0, 0, 1, 196608, 0x1890aa30 0, 0, 0, 1, 196608, 0xf6e3aa30
0, 1, 1, 1, 196608, 0xa490acf9 0, 1, 1, 1, 196608, 0x5584acf9
0, 2, 2, 1, 196608, 0x404a775d 0, 2, 2, 1, 196608, 0xa862775d
#tb 0: 1/25 #tb 0: 1/25
0, 0, 0, 1, 196608, 0x9bfcfae5 0, 0, 0, 1, 196608, 0x5e62fae5
0, 1, 1, 1, 196608, 0x1ac6fcbf 0, 1, 1, 1, 196608, 0x4c27fcbf
0, 2, 2, 1, 196608, 0x31cb1088 0, 2, 2, 1, 196608, 0xb7531088
#tb 0: 1/25 #tb 0: 1/25
0, 0, 0, 1, 196608, 0x6e698770 0, 0, 0, 1, 196608, 0x83df8770
0, 1, 1, 1, 196608, 0x374d74a7 0, 1, 1, 1, 196608, 0xa6a674a7
0, 2, 2, 1, 196608, 0x3d817143 0, 2, 2, 1, 196608, 0x11757143
#tb 0: 1/25 #tb 0: 1/25
0, 0, 0, 1, 196608, 0x4d2e53c4 0, 0, 0, 1, 196608, 0x326953c4
0, 1, 1, 1, 196608, 0x795e1dcc 0, 1, 1, 1, 196608, 0x870e1dcc
0, 2, 2, 1, 196608, 0xe4268800 0, 2, 2, 1, 196608, 0x87cb8800
#tb 0: 1/25 #tb 0: 1/25
0, 0, 0, 1, 196608, 0x8e4171e2 0, 0, 0, 1, 196608, 0x79ba71e2
0, 1, 1, 1, 196608, 0xf3d371e2 0, 1, 1, 1, 196608, 0x909271e2
0, 2, 2, 1, 196608, 0xb9cb71e2 0, 2, 2, 1, 196608, 0x143971e2
#tb 0: 1/25 #tb 0: 1/25
0, 0, 0, 1, 196608, 0xa0939af1 0, 0, 0, 1, 196608, 0xa2899af1
0, 1, 1, 1, 196608, 0x43699af1 0, 1, 1, 1, 196608, 0x26409af1
0, 2, 2, 1, 196608, 0x69a19af1 0, 2, 2, 1, 196608, 0xf5209af1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment