Skip to content

Commit 863c178

Browse files
kohtalaEmmanuelP
authored andcommitted
gst: Add 10/12/14/16-bit caps
GStreamer 1.24 added support into bayer2rgb.
1 parent e2b5166 commit 863c178

2 files changed

Lines changed: 106 additions & 10 deletions

File tree

src/arvenums.h

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,11 @@ typedef guint32 ArvPixelFormat;
126126
#define ARV_PIXEL_FORMAT_MONO_8_SIGNED ((ArvPixelFormat) 0x01080002u)
127127

128128
#define ARV_PIXEL_FORMAT_MONO_10 ((ArvPixelFormat) 0x01100003u)
129+
#define ARV_PIXEL_FORMAT_MONO_10P ((ArvPixelFormat) 0x010a0046u)
129130
#define ARV_PIXEL_FORMAT_MONO_10_PACKED ((ArvPixelFormat) 0x010c0004u)
130131

131132
#define ARV_PIXEL_FORMAT_MONO_12 ((ArvPixelFormat) 0x01100005u)
133+
#define ARV_PIXEL_FORMAT_MONO_12P ((ArvPixelFormat) 0x010c0047u)
132134
#define ARV_PIXEL_FORMAT_MONO_12_PACKED ((ArvPixelFormat) 0x010c0006u)
133135

134136
#define ARV_PIXEL_FORMAT_MONO_14 ((ArvPixelFormat) 0x01100025u)
@@ -150,11 +152,17 @@ typedef guint32 ArvPixelFormat;
150152
#define ARV_PIXEL_FORMAT_BAYER_GB_12 ((ArvPixelFormat) 0x01100012u)
151153
#define ARV_PIXEL_FORMAT_BAYER_BG_12 ((ArvPixelFormat) 0x01100013u)
152154

155+
#define ARV_PIXEL_FORMAT_BAYER_GR_14 ((ArvPixelFormat) 0x01100109u)
156+
#define ARV_PIXEL_FORMAT_BAYER_RG_14 ((ArvPixelFormat) 0x0110010au)
157+
#define ARV_PIXEL_FORMAT_BAYER_GB_14 ((ArvPixelFormat) 0x0110010bu)
158+
#define ARV_PIXEL_FORMAT_BAYER_BG_14 ((ArvPixelFormat) 0x0110010cu)
159+
153160
#define ARV_PIXEL_FORMAT_BAYER_GR_16 ((ArvPixelFormat) 0x0110002eu)
154161
#define ARV_PIXEL_FORMAT_BAYER_RG_16 ((ArvPixelFormat) 0x0110002fu)
155162
#define ARV_PIXEL_FORMAT_BAYER_GB_16 ((ArvPixelFormat) 0x01100030u)
156163
#define ARV_PIXEL_FORMAT_BAYER_BG_16 ((ArvPixelFormat) 0x01100031u)
157164

165+
/* PFNC */
158166
#define ARV_PIXEL_FORMAT_BAYER_BG_10P ((ArvPixelFormat) 0x010a0052u)
159167
#define ARV_PIXEL_FORMAT_BAYER_GB_10P ((ArvPixelFormat) 0x010a0054u)
160168
#define ARV_PIXEL_FORMAT_BAYER_GR_10P ((ArvPixelFormat) 0x010a0056u)
@@ -165,16 +173,22 @@ typedef guint32 ArvPixelFormat;
165173
#define ARV_PIXEL_FORMAT_BAYER_GR_12P ((ArvPixelFormat) 0x010c0057u)
166174
#define ARV_PIXEL_FORMAT_BAYER_RG_12P ((ArvPixelFormat) 0x010c0059u)
167175

168-
#define ARV_PIXEL_FORMAT_BAYER_GR_12_PACKED ((ArvPixelFormat) 0x010c002au)
169-
#define ARV_PIXEL_FORMAT_BAYER_RG_12_PACKED ((ArvPixelFormat) 0x010c002bu)
170-
#define ARV_PIXEL_FORMAT_BAYER_GB_12_PACKED ((ArvPixelFormat) 0x010c002cu)
171-
#define ARV_PIXEL_FORMAT_BAYER_BG_12_PACKED ((ArvPixelFormat) 0x010c002du)
176+
#define ARV_PIXEL_FORMAT_BAYER_GR_14P ((ArvPixelFormat) 0x010e0105u)
177+
#define ARV_PIXEL_FORMAT_BAYER_RG_14P ((ArvPixelFormat) 0x010e0106u)
178+
#define ARV_PIXEL_FORMAT_BAYER_GB_14P ((ArvPixelFormat) 0x010e0107u)
179+
#define ARV_PIXEL_FORMAT_BAYER_BG_14P ((ArvPixelFormat) 0x010e0108u)
172180

181+
/* GigE Vision 2.0 */
173182
#define ARV_PIXEL_FORMAT_BAYER_GR_10_PACKED ((ArvPixelFormat) 0x010c0026u)
174183
#define ARV_PIXEL_FORMAT_BAYER_RG_10_PACKED ((ArvPixelFormat) 0x010c0027u)
175184
#define ARV_PIXEL_FORMAT_BAYER_GB_10_PACKED ((ArvPixelFormat) 0x010c0028u)
176185
#define ARV_PIXEL_FORMAT_BAYER_BG_10_PACKED ((ArvPixelFormat) 0x010c0029u)
177186

187+
#define ARV_PIXEL_FORMAT_BAYER_GR_12_PACKED ((ArvPixelFormat) 0x010c002au)
188+
#define ARV_PIXEL_FORMAT_BAYER_RG_12_PACKED ((ArvPixelFormat) 0x010c002bu)
189+
#define ARV_PIXEL_FORMAT_BAYER_GB_12_PACKED ((ArvPixelFormat) 0x010c002cu)
190+
#define ARV_PIXEL_FORMAT_BAYER_BG_12_PACKED ((ArvPixelFormat) 0x010c002du)
191+
178192
#define ARV_PIXEL_FORMAT_COORD3D_ABC_8 ((ArvPixelFormat) 0x021800B2u)
179193
#define ARV_PIXEL_FORMAT_COORD3D_ABC_8_PLANAR ((ArvPixelFormat) 0x021800B3u)
180194
#define ARV_PIXEL_FORMAT_COORD3D_ABC_10P ((ArvPixelFormat) 0x021E00DBu)

src/arvmisc.c

Lines changed: 88 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -720,9 +720,89 @@ ArvGstCapsInfos arv_gst_caps_infos[] = {
720720
"video/x-raw-bayer, format=(string)bggr, bpp=(int)8, depth=(int)8",
721721
"video/x-raw-bayer", 8, 8, ARV_MAKE_FOURCC ('b','g','g','r')
722722
},
723+
{
724+
ARV_PIXEL_FORMAT_BAYER_GR_10,
725+
"video/x-bayer, format=(string)grbg10le",
726+
"video/x-bayer", "grbg10le",
727+
},
728+
{
729+
ARV_PIXEL_FORMAT_BAYER_RG_10,
730+
"video/x-bayer, format=(string)rggb10le",
731+
"video/x-bayer", "rggb10le",
732+
},
733+
{
734+
ARV_PIXEL_FORMAT_BAYER_GB_10,
735+
"video/x-bayer, format=(string)gbrg10le",
736+
"video/x-bayer", "gbrg10le",
737+
},
738+
{
739+
ARV_PIXEL_FORMAT_BAYER_BG_10,
740+
"video/x-bayer, format=(string)bggr10le",
741+
"video/x-bayer", "bggr10le",
742+
},
743+
{
744+
ARV_PIXEL_FORMAT_BAYER_GR_12,
745+
"video/x-bayer, format=(string)grbg12le",
746+
"video/x-bayer", "grbg12le",
747+
},
748+
{
749+
ARV_PIXEL_FORMAT_BAYER_RG_12,
750+
"video/x-bayer, format=(string)rggb12le",
751+
"video/x-bayer", "rggb12le",
752+
},
753+
{
754+
ARV_PIXEL_FORMAT_BAYER_GB_12,
755+
"video/x-bayer, format=(string)gbrg12le",
756+
"video/x-bayer", "gbrg12le",
757+
},
758+
{
759+
ARV_PIXEL_FORMAT_BAYER_BG_12,
760+
"video/x-bayer, format=(string)bggr12le",
761+
"video/x-bayer", "bggr12le",
762+
},
763+
{
764+
ARV_PIXEL_FORMAT_BAYER_GR_14,
765+
"video/x-bayer, format=(string)grbg14le",
766+
"video/x-bayer", "grbg14le",
767+
},
768+
{
769+
ARV_PIXEL_FORMAT_BAYER_RG_14,
770+
"video/x-bayer, format=(string)rggb14le",
771+
"video/x-bayer", "rggb14le",
772+
},
773+
{
774+
ARV_PIXEL_FORMAT_BAYER_GB_14,
775+
"video/x-bayer, format=(string)gbrg14le",
776+
"video/x-bayer", "gbrg14le",
777+
},
778+
{
779+
ARV_PIXEL_FORMAT_BAYER_BG_14,
780+
"video/x-bayer, format=(string)bggr14le",
781+
"video/x-bayer", "bggr14le",
782+
},
783+
{
784+
ARV_PIXEL_FORMAT_BAYER_GR_16,
785+
"video/x-bayer, format=(string)grbg16le",
786+
"video/x-bayer", "grbg16le",
787+
},
788+
{
789+
ARV_PIXEL_FORMAT_BAYER_RG_16,
790+
"video/x-bayer, format=(string)rggb16le",
791+
"video/x-bayer", "rggb16le",
792+
},
793+
{
794+
ARV_PIXEL_FORMAT_BAYER_GB_16,
795+
"video/x-bayer, format=(string)gbrg16le",
796+
"video/x-bayer", "gbrg16le",
797+
},
798+
{
799+
ARV_PIXEL_FORMAT_BAYER_BG_16,
800+
"video/x-bayer, format=(string)bggr16le",
801+
"video/x-bayer", "bggr16le",
802+
},
723803

724-
/* Non 8bit bayer formats are not supported by gstreamer bayer plugin.
725-
* This feature is discussed in bug https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/86 .*/
804+
/* The packed non 8bit bayer formats are not supported by gstreamer bayer plugin.
805+
* They were discussed in bug https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/86, but not implemented. */
726806

727807
{
728808
ARV_PIXEL_FORMAT_YUV_422_PACKED,
@@ -962,20 +1042,22 @@ const char *
9621042
arv_pixel_format_to_gst_0_10_caps_string (ArvPixelFormat pixel_format)
9631043
{
9641044
int i;
1045+
const char *caps_string;
9651046

9661047
for (i = 0; i < G_N_ELEMENTS (arv_gst_caps_infos); i++)
9671048
if (arv_gst_caps_infos[i].pixel_format == pixel_format)
9681049
break;
9691050

970-
if (i == G_N_ELEMENTS (arv_gst_caps_infos)) {
1051+
if (i == G_N_ELEMENTS (arv_gst_caps_infos) || arv_gst_caps_infos[i].gst_0_10_caps_string == NULL) {
9711052
arv_warning_misc ("[PixelFormat::to_gst_0_10_caps_string] 0x%08x not found", pixel_format);
9721053
return NULL;
9731054
}
9741055

1056+
caps_string = arv_gst_caps_infos[i].gst_0_10_caps_string;
9751057
arv_debug_misc ("[PixelFormat::to_gst_0_10_caps_string] 0x%08x -> %s",
976-
pixel_format, arv_gst_caps_infos[i].gst_0_10_caps_string);
1058+
pixel_format, caps_string);
9771059

978-
return arv_gst_caps_infos[i].gst_0_10_caps_string;
1060+
return caps_string;
9791061
}
9801062

9811063
ArvPixelFormat
@@ -986,7 +1068,7 @@ arv_pixel_format_from_gst_0_10_caps (const char *name, int bpp, int depth, guint
9861068
g_return_val_if_fail (name != NULL, 0);
9871069

9881070
for (i = 0; i < G_N_ELEMENTS (arv_gst_caps_infos); i++) {
989-
if (strcmp (name, arv_gst_caps_infos[i].name_0_10) != 0)
1071+
if (g_strcmp0 (name, arv_gst_caps_infos[i].name_0_10) != 0)
9901072
continue;
9911073

9921074
if (strcmp (name, "video/x-raw-yuv") == 0 &&

0 commit comments

Comments
 (0)