History

avfilter/vf_zscale: add support for grayscale formats

James Almer committed 1 year ago

Commit 0ce405a1 parent c3522711 file · +9 −3Browse files

Unified · Split

libavfilter/vf_zscale.c+9−3
@@ -206,11 +206,12 @@ static int query_formats(const AVFilterContext *ctx, · 205 unmodified lines
206206 AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA444P10,
207207 AV_PIX_FMT_YUVA444P12, AV_PIX_FMT_YUVA422P12,
208208 AV_PIX_FMT_YUVA420P16, AV_PIX_FMT_YUVA422P16, AV_PIX_FMT_YUVA444P16,
209+ AV_PIX_FMT_GRAY8, AV_PIX_FMT_GRAY9, AV_PIX_FMT_GRAY10,
209210 AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP10,
210211 AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16,
211212 AV_PIX_FMT_GBRAP, AV_PIX_FMT_GBRAP10, AV_PIX_FMT_GBRAP12, AV_PIX_FMT_GBRAP14, AV_PIX_FMT_GBRAP16,
212− AV_PIX_FMT_GBRPF16, AV_PIX_FMT_GBRAPF16,
213− AV_PIX_FMT_GBRPF32, AV_PIX_FMT_GBRAPF32,
213+ AV_PIX_FMT_GRAYF16, AV_PIX_FMT_GBRPF16, AV_PIX_FMT_GBRAPF16,
214+ AV_PIX_FMT_GRAYF32, AV_PIX_FMT_GBRPF32, AV_PIX_FMT_GBRAPF32,
214215 AV_PIX_FMT_NONE
215216 };
216217 int ret;
@@ -585,7 +586,8 @@ static void format_init(zimg_image_format *format, AVFrame *frame, const AVPixFm · 368 unmodified lines
585586 format->depth = desc->comp[0].depth;
586587 format->pixel_type = (desc->flags & AV_PIX_FMT_FLAG_FLOAT) ? (desc->comp[0].depth > 16 ? ZIMG_PIXEL_FLOAT : ZIMG_PIXEL_HALF)
587588 : (desc->comp[0].depth > 8 ? ZIMG_PIXEL_WORD : ZIMG_PIXEL_BYTE);
588− format->color_family = (desc->flags & AV_PIX_FMT_FLAG_RGB) ? ZIMG_COLOR_RGB : ZIMG_COLOR_YUV;
589+ format->color_family = (desc->flags & AV_PIX_FMT_FLAG_RGB) ? ZIMG_COLOR_RGB
590+ : (desc->nb_components > 1 ? ZIMG_COLOR_YUV : ZIMG_COLOR_GREY);
589591 format->matrix_coefficients = (desc->flags & AV_PIX_FMT_FLAG_RGB) ? ZIMG_MATRIX_RGB : colorspace == -1 ? convert_matrix(frame->colorspace) : colorspace;
590592 format->color_primaries = primaries == -1 ? convert_primaries(frame->color_primaries) : primaries;
591593 format->transfer_characteristics = transfer == -1 ? convert_trc(frame->color_trc) : transfer;
@@ -738,14 +740,18 @@ static int filter_slice(AVFilterContext *ctx, void *data, int job_nr, int n_jobs · 146 unmodified lines
738740
739741 p = td->desc->comp[i].plane;
740742
743+ if (i < td->desc->nb_components) {
741744 src_buf.plane[i].data = td->in->data[p];
742745 src_buf.plane[i].stride = td->in->linesize[p];
743746 src_buf.plane[i].mask = -1;
747+ }
744748
745749 p = td->odesc->comp[i].plane;
750+ if (i < td->odesc->nb_components) {
746751 dst_buf.plane[i].data = td->out->data[p] + td->out->linesize[p] * (out_slice_start >> vsamp);
747752 dst_buf.plane[i].stride = td->out->linesize[p];
748753 dst_buf.plane[i].mask = -1;
754+ }
749755 }
750756 if (!s->graph[job_nr])
751757 return AVERROR(EINVAL);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t