summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2023-09-28 22:43:23 +0200
committerPaul B Mahol <onemda@gmail.com>2023-09-28 22:46:56 +0200
commit0aa75a85e6cf6698784ddf8138059399dd89c2b7 (patch)
tree1b1b4d9d031e78e5efeef025d6f95db9f619a9eb /libavfilter
parent086c28090177b5255770fdf57af4978d64c20762 (diff)
avfilter/vf_zscale: fix adding >8 bit alpha plane
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/vf_zscale.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/libavfilter/vf_zscale.c b/libavfilter/vf_zscale.c
index b6f040980c..788870ffaf 100644
--- a/libavfilter/vf_zscale.c
+++ b/libavfilter/vf_zscale.c
@@ -901,14 +901,22 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
int x, y;
if (odesc->flags & AV_PIX_FMT_FLAG_FLOAT) {
for (y = 0; y < out->height; y++) {
+ const ptrdiff_t row = y * out->linesize[3];
for (x = 0; x < out->width; x++) {
- AV_WN32(out->data[3] + x * odesc->comp[3].step + y * out->linesize[3],
+ AV_WN32(out->data[3] + x * odesc->comp[3].step + row,
av_float2int(1.0f));
}
}
- } else {
+ } else if (s->dst_format.depth == 8) {
for (y = 0; y < outlink->h; y++)
memset(out->data[3] + y * out->linesize[3], 0xff, outlink->w);
+ } else {
+ const uint16_t max = (1 << s->dst_format.depth) - 1;
+ for (y = 0; y < outlink->h; y++) {
+ const ptrdiff_t row = y * out->linesize[3];
+ for (x = 0; x < out->width; x++)
+ AV_WN16(out->data[3] + x * odesc->comp[3].step + row, max);
+ }
}
}
} else {