Unified · Split
| @@ -206,11 +206,12 @@ static int query_formats(const AVFilterContext *ctx, · 205 unmodified lines | |||
| 206 | AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA444P10, | 206 | AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA444P10, |
| 207 | AV_PIX_FMT_YUVA444P12, AV_PIX_FMT_YUVA422P12, | 207 | AV_PIX_FMT_YUVA444P12, AV_PIX_FMT_YUVA422P12, |
| 208 | AV_PIX_FMT_YUVA420P16, AV_PIX_FMT_YUVA422P16, AV_PIX_FMT_YUVA444P16, | 208 | 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, | ||
| 209 | AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP10, | 210 | AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP10, |
| 210 | AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16, | 211 | AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16, |
| 211 | AV_PIX_FMT_GBRAP, AV_PIX_FMT_GBRAP10, AV_PIX_FMT_GBRAP12, AV_PIX_FMT_GBRAP14, AV_PIX_FMT_GBRAP16, | 212 | 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_GRAYF16, AV_PIX_FMT_GBRPF16, AV_PIX_FMT_GBRAPF16, |
| 213 | AV_PIX_FMT_GBRPF32, AV_PIX_FMT_GBRAPF32, | 214 | AV_PIX_FMT_GRAYF32, AV_PIX_FMT_GBRPF32, AV_PIX_FMT_GBRAPF32, |
| 214 | AV_PIX_FMT_NONE | 215 | AV_PIX_FMT_NONE |
| 215 | }; | 216 | }; |
| 216 | int ret; | 217 | int ret; |
| @@ -585,7 +586,8 @@ static void format_init(zimg_image_format *format, AVFrame *frame, const AVPixFm · 368 unmodified lines | |||
| 585 | format->depth = desc->comp[0].depth; | 586 | format->depth = desc->comp[0].depth; |
| 586 | format->pixel_type = (desc->flags & AV_PIX_FMT_FLAG_FLOAT) ? (desc->comp[0].depth > 16 ? ZIMG_PIXEL_FLOAT : ZIMG_PIXEL_HALF) | 587 | format->pixel_type = (desc->flags & AV_PIX_FMT_FLAG_FLOAT) ? (desc->comp[0].depth > 16 ? ZIMG_PIXEL_FLOAT : ZIMG_PIXEL_HALF) |
| 587 | : (desc->comp[0].depth > 8 ? ZIMG_PIXEL_WORD : ZIMG_PIXEL_BYTE); | 588 | : (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); | ||
| 589 | format->matrix_coefficients = (desc->flags & AV_PIX_FMT_FLAG_RGB) ? ZIMG_MATRIX_RGB : colorspace == -1 ? convert_matrix(frame->colorspace) : colorspace; | 591 | format->matrix_coefficients = (desc->flags & AV_PIX_FMT_FLAG_RGB) ? ZIMG_MATRIX_RGB : colorspace == -1 ? convert_matrix(frame->colorspace) : colorspace; |
| 590 | format->color_primaries = primaries == -1 ? convert_primaries(frame->color_primaries) : primaries; | 592 | format->color_primaries = primaries == -1 ? convert_primaries(frame->color_primaries) : primaries; |
| 591 | format->transfer_characteristics = transfer == -1 ? convert_trc(frame->color_trc) : transfer; | 593 | 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 | |||
| 738 | 740 | ||
| 739 | p = td->desc->comp[i].plane; | 741 | p = td->desc->comp[i].plane; |
| 740 | 742 | ||
| 743 | if (i < td->desc->nb_components) { | ||
| 741 | src_buf.plane[i].data = td->in->data[p]; | 744 | src_buf.plane[i].data = td->in->data[p]; |
| 742 | src_buf.plane[i].stride = td->in->linesize[p]; | 745 | src_buf.plane[i].stride = td->in->linesize[p]; |
| 743 | src_buf.plane[i].mask = -1; | 746 | src_buf.plane[i].mask = -1; |
| 747 | } | ||
| 744 | 748 | ||
| 745 | p = td->odesc->comp[i].plane; | 749 | p = td->odesc->comp[i].plane; |
| 750 | if (i < td->odesc->nb_components) { | ||
| 746 | dst_buf.plane[i].data = td->out->data[p] + td->out->linesize[p] * (out_slice_start >> vsamp); | 751 | dst_buf.plane[i].data = td->out->data[p] + td->out->linesize[p] * (out_slice_start >> vsamp); |
| 747 | dst_buf.plane[i].stride = td->out->linesize[p]; | 752 | dst_buf.plane[i].stride = td->out->linesize[p]; |
| 748 | dst_buf.plane[i].mask = -1; | 753 | dst_buf.plane[i].mask = -1; |
| 754 | } | ||
| 749 | } | 755 | } |
| 750 | if (!s->graph[job_nr]) | 756 | if (!s->graph[job_nr]) |
| 751 | return AVERROR(EINVAL); | 757 | return AVERROR(EINVAL); |