videoconvert: add more ffmpeg format mappings

This commit is contained in:
Wim Taymans 2024-11-05 10:40:14 +01:00
parent 1b5c244ee0
commit c0fcc9b83f

View file

@ -662,19 +662,167 @@ static int impl_node_set_param(void *object, uint32_t id, uint32_t flags,
static enum AVPixelFormat format_to_pix_fmt(uint32_t format)
{
switch (format) {
case SPA_VIDEO_FORMAT_YUY2:
return AV_PIX_FMT_YUYV422;
case SPA_VIDEO_FORMAT_I420:
return AV_PIX_FMT_YUV420P;
case SPA_VIDEO_FORMAT_YV12:
break;
case SPA_VIDEO_FORMAT_YUY2:
return AV_PIX_FMT_YUYV422;
case SPA_VIDEO_FORMAT_UYVY:
return AV_PIX_FMT_UYVY422;
case SPA_VIDEO_FORMAT_YVYU:
return AV_PIX_FMT_YVYU422;
case SPA_VIDEO_FORMAT_AYUV:
break;
case SPA_VIDEO_FORMAT_RGBx:
return AV_PIX_FMT_RGB0;
case SPA_VIDEO_FORMAT_BGRx:
return AV_PIX_FMT_BGR0;
case SPA_VIDEO_FORMAT_xRGB:
return AV_PIX_FMT_0RGB;
case SPA_VIDEO_FORMAT_xBGR:
return AV_PIX_FMT_0BGR;
case SPA_VIDEO_FORMAT_RGBA:
return AV_PIX_FMT_RGBA;
case SPA_VIDEO_FORMAT_BGRA:
return AV_PIX_FMT_BGRA;
case SPA_VIDEO_FORMAT_ARGB:
return AV_PIX_FMT_ARGB;
case SPA_VIDEO_FORMAT_ABGR:
return AV_PIX_FMT_ABGR;
case SPA_VIDEO_FORMAT_RGB:
return AV_PIX_FMT_RGB24;
case SPA_VIDEO_FORMAT_BGR:
return AV_PIX_FMT_BGR24;
case SPA_VIDEO_FORMAT_Y41B:
return AV_PIX_FMT_YUV411P;
case SPA_VIDEO_FORMAT_Y42B:
return AV_PIX_FMT_YUV422P;
case SPA_VIDEO_FORMAT_YVYU:
return AV_PIX_FMT_YVYU422;
case SPA_VIDEO_FORMAT_Y444:
return AV_PIX_FMT_YUV444P;
case SPA_VIDEO_FORMAT_v210:
case SPA_VIDEO_FORMAT_v216:
break;
case SPA_VIDEO_FORMAT_NV12:
return AV_PIX_FMT_NV12;
case SPA_VIDEO_FORMAT_NV21:
return AV_PIX_FMT_NV21;
case SPA_VIDEO_FORMAT_GRAY8:
return AV_PIX_FMT_GRAY8;
case SPA_VIDEO_FORMAT_GRAY16_BE:
return AV_PIX_FMT_GRAY16BE;
case SPA_VIDEO_FORMAT_GRAY16_LE:
return AV_PIX_FMT_GRAY16LE;
case SPA_VIDEO_FORMAT_v308:
break;
case SPA_VIDEO_FORMAT_RGB16:
return AV_PIX_FMT_RGB565;
case SPA_VIDEO_FORMAT_BGR16:
break;
case SPA_VIDEO_FORMAT_RGB15:
return AV_PIX_FMT_RGB555;
case SPA_VIDEO_FORMAT_BGR15:
case SPA_VIDEO_FORMAT_UYVP:
break;
case SPA_VIDEO_FORMAT_A420:
return AV_PIX_FMT_YUVA420P;
case SPA_VIDEO_FORMAT_RGB8P:
return AV_PIX_FMT_PAL8;
case SPA_VIDEO_FORMAT_YUV9:
return AV_PIX_FMT_YUV410P;
case SPA_VIDEO_FORMAT_YVU9:
case SPA_VIDEO_FORMAT_IYU1:
case SPA_VIDEO_FORMAT_ARGB64:
case SPA_VIDEO_FORMAT_AYUV64:
case SPA_VIDEO_FORMAT_r210:
break;
case SPA_VIDEO_FORMAT_I420_10BE:
return AV_PIX_FMT_YUV420P10BE;
case SPA_VIDEO_FORMAT_I420_10LE:
return AV_PIX_FMT_YUV420P10LE;
case SPA_VIDEO_FORMAT_I422_10BE:
return AV_PIX_FMT_YUV422P10BE;
case SPA_VIDEO_FORMAT_I422_10LE:
return AV_PIX_FMT_YUV422P10LE;
case SPA_VIDEO_FORMAT_Y444_10BE:
return AV_PIX_FMT_YUV444P10BE;
case SPA_VIDEO_FORMAT_Y444_10LE:
return AV_PIX_FMT_YUV444P10LE;
case SPA_VIDEO_FORMAT_GBR:
return AV_PIX_FMT_GBRP;
case SPA_VIDEO_FORMAT_GBR_10BE:
return AV_PIX_FMT_GBRP10BE;
case SPA_VIDEO_FORMAT_GBR_10LE:
return AV_PIX_FMT_GBRP10LE;
case SPA_VIDEO_FORMAT_NV16:
case SPA_VIDEO_FORMAT_NV24:
case SPA_VIDEO_FORMAT_NV12_64Z32:
break;
case SPA_VIDEO_FORMAT_A420_10BE:
return AV_PIX_FMT_YUVA420P10BE;
case SPA_VIDEO_FORMAT_A420_10LE:
return AV_PIX_FMT_YUVA420P10LE;
case SPA_VIDEO_FORMAT_A422_10BE:
return AV_PIX_FMT_YUVA422P10BE;
case SPA_VIDEO_FORMAT_A422_10LE:
return AV_PIX_FMT_YUVA422P10LE;
case SPA_VIDEO_FORMAT_A444_10BE:
return AV_PIX_FMT_YUVA444P10BE;
case SPA_VIDEO_FORMAT_A444_10LE:
return AV_PIX_FMT_YUVA444P10LE;
case SPA_VIDEO_FORMAT_NV61:
case SPA_VIDEO_FORMAT_P010_10BE:
case SPA_VIDEO_FORMAT_P010_10LE:
case SPA_VIDEO_FORMAT_IYU2:
case SPA_VIDEO_FORMAT_VYUY:
break;
case SPA_VIDEO_FORMAT_GBRA:
return AV_PIX_FMT_GBRAP;
case SPA_VIDEO_FORMAT_GBRA_10BE:
return AV_PIX_FMT_GBRAP10BE;
case SPA_VIDEO_FORMAT_GBRA_10LE:
return AV_PIX_FMT_GBRAP10LE;
case SPA_VIDEO_FORMAT_GBR_12BE:
return AV_PIX_FMT_GBRP12BE;
case SPA_VIDEO_FORMAT_GBR_12LE:
return AV_PIX_FMT_GBRP12LE;
case SPA_VIDEO_FORMAT_GBRA_12BE:
return AV_PIX_FMT_GBRAP12BE;
case SPA_VIDEO_FORMAT_GBRA_12LE:
return AV_PIX_FMT_GBRAP12LE;
case SPA_VIDEO_FORMAT_I420_12BE:
return AV_PIX_FMT_YUV420P12BE;
case SPA_VIDEO_FORMAT_I420_12LE:
return AV_PIX_FMT_YUV420P12LE;
case SPA_VIDEO_FORMAT_I422_12BE:
return AV_PIX_FMT_YUV422P12BE;
case SPA_VIDEO_FORMAT_I422_12LE:
return AV_PIX_FMT_YUV422P12LE;
case SPA_VIDEO_FORMAT_Y444_12BE:
return AV_PIX_FMT_YUV444P12BE;
case SPA_VIDEO_FORMAT_Y444_12LE:
return AV_PIX_FMT_YUV444P12LE;
case SPA_VIDEO_FORMAT_RGBA_F16:
case SPA_VIDEO_FORMAT_RGBA_F32:
break;
case SPA_VIDEO_FORMAT_xRGB_210LE:
return AV_PIX_FMT_X2RGB10LE;
case SPA_VIDEO_FORMAT_xBGR_210LE:
return AV_PIX_FMT_X2BGR10LE;
case SPA_VIDEO_FORMAT_RGBx_102LE:
case SPA_VIDEO_FORMAT_BGRx_102LE:
case SPA_VIDEO_FORMAT_ARGB_210LE:
case SPA_VIDEO_FORMAT_ABGR_210LE:
case SPA_VIDEO_FORMAT_RGBA_102LE:
case SPA_VIDEO_FORMAT_BGRA_102LE:
break;
default:
return AV_PIX_FMT_NONE;
break;
}
return AV_PIX_FMT_NONE;
}
static int get_format(struct dir *dir, int *width, int *height, uint32_t *format)