mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-08 23:42:28 +00:00
videocrop: Add support for GBR* video formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/515>
This commit is contained in:
parent
e31cbce4d5
commit
7276b0f9d1
3 changed files with 79 additions and 55 deletions
|
@ -15,7 +15,9 @@
|
|||
"I420_10BE, A420_10BE, Y444_10BE, A444_10BE, I422_10BE, A422_10BE, " \
|
||||
"I420_10LE, A420_10LE, Y444_10LE, A444_10LE, I422_10LE, A422_10LE, " \
|
||||
"I420_12BE, Y444_12BE, I422_12BE, " \
|
||||
"I420_12LE, Y444_12LE, I422_12LE"
|
||||
"I420_12LE, Y444_12LE, I422_12LE, " \
|
||||
"GBR, GBR_10BE, GBR_10LE, GBR_12BE, GBR_12LE, " \
|
||||
"GBRA, GBRA_10BE, GBRA_10LE, GBRA_12BE, GBRA_12LE"
|
||||
#define VIDEO_CROP_FORMATS_SEMI_PLANAR "NV12, NV21"
|
||||
|
||||
/* aspectratiocrop uses videocrop. sync caps changes between both */
|
||||
|
|
|
@ -806,11 +806,22 @@ gst_video_crop_set_info (GstVideoFilter * vfilter, GstCaps * in,
|
|||
if (!crop->raw_caps)
|
||||
goto beach;
|
||||
|
||||
if (GST_VIDEO_INFO_IS_RGB (in_info)
|
||||
|| GST_VIDEO_INFO_IS_GRAY (in_info)) {
|
||||
crop->packing = VIDEO_CROP_PIXEL_FORMAT_PACKED_SIMPLE;
|
||||
} else {
|
||||
switch (GST_VIDEO_INFO_FORMAT (in_info)) {
|
||||
case GST_VIDEO_FORMAT_RGB:
|
||||
case GST_VIDEO_FORMAT_BGR:
|
||||
case GST_VIDEO_FORMAT_RGB16:
|
||||
case GST_VIDEO_FORMAT_RGB15:
|
||||
case GST_VIDEO_FORMAT_RGBx:
|
||||
case GST_VIDEO_FORMAT_xRGB:
|
||||
case GST_VIDEO_FORMAT_BGRx:
|
||||
case GST_VIDEO_FORMAT_xBGR:
|
||||
case GST_VIDEO_FORMAT_RGBA:
|
||||
case GST_VIDEO_FORMAT_ARGB:
|
||||
case GST_VIDEO_FORMAT_BGRA:
|
||||
case GST_VIDEO_FORMAT_ABGR:
|
||||
case GST_VIDEO_FORMAT_GRAY8:
|
||||
case GST_VIDEO_FORMAT_GRAY16_LE:
|
||||
case GST_VIDEO_FORMAT_GRAY16_BE:
|
||||
case GST_VIDEO_FORMAT_AYUV:
|
||||
crop->packing = VIDEO_CROP_PIXEL_FORMAT_PACKED_SIMPLE;
|
||||
break;
|
||||
|
@ -849,6 +860,16 @@ gst_video_crop_set_info (GstVideoFilter * vfilter, GstCaps * in,
|
|||
case GST_VIDEO_FORMAT_A422_10LE:
|
||||
case GST_VIDEO_FORMAT_I422_12BE:
|
||||
case GST_VIDEO_FORMAT_I422_12LE:
|
||||
case GST_VIDEO_FORMAT_GBR:
|
||||
case GST_VIDEO_FORMAT_GBR_10BE:
|
||||
case GST_VIDEO_FORMAT_GBR_10LE:
|
||||
case GST_VIDEO_FORMAT_GBR_12BE:
|
||||
case GST_VIDEO_FORMAT_GBR_12LE:
|
||||
case GST_VIDEO_FORMAT_GBRA:
|
||||
case GST_VIDEO_FORMAT_GBRA_10BE:
|
||||
case GST_VIDEO_FORMAT_GBRA_10LE:
|
||||
case GST_VIDEO_FORMAT_GBRA_12BE:
|
||||
case GST_VIDEO_FORMAT_GBRA_12LE:
|
||||
case GST_VIDEO_FORMAT_Y41B:
|
||||
crop->packing = VIDEO_CROP_PIXEL_FORMAT_PLANAR;
|
||||
break;
|
||||
|
@ -859,7 +880,6 @@ gst_video_crop_set_info (GstVideoFilter * vfilter, GstCaps * in,
|
|||
default:
|
||||
goto unknown_format;
|
||||
}
|
||||
}
|
||||
|
||||
beach:
|
||||
crop->in_info = *in_info;
|
||||
|
|
|
@ -43,7 +43,9 @@ G_BEGIN_DECLS
|
|||
* I420_10BE, A420_10BE, Y444_10BE, A444_10BE, I422_10BE, A422_10BE,
|
||||
* I420_10LE, A420_10LE, Y444_10LE, A444_10LE, I422_10LE, A422_10LE,
|
||||
* I420_12BE, Y444_12BE, I422_12BE,
|
||||
* I420_12LE, Y444_12LE, I422_12LE */
|
||||
* I420_12LE, Y444_12LE, I422_12LE,
|
||||
* GBR, GBR_10BE, GBR_10LE, GBR_12BE, GBR_12LE,
|
||||
* GBRA, GBRA_10BE, GBRA_10LE, GBRA_12BE, GBRA_12LE */
|
||||
VIDEO_CROP_PIXEL_FORMAT_PLANAR,
|
||||
/* NV12, NV21 */
|
||||
VIDEO_CROP_PIXEL_FORMAT_SEMI_PLANAR
|
||||
|
|
Loading…
Reference in a new issue