@@ -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 *
9621042arv_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
9811063ArvPixelFormat
@@ -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