1 /* 2 * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com> 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20 #ifndef __GST_VTUTIL_H__ 21 #define __GST_VTUTIL_H__ 22 23 #include <glib.h> 24 #include <gst/gst.h> 25 #include <CoreFoundation/CoreFoundation.h> 26 #include <CoreMedia/CoreMedia.h> 27 28 /* Some formats such as Apple ProRes have separate codec type mappings for all 29 * variants / profiles, and we don't want to instantiate separate elements for 30 * each variant, so we use a dummy type for details->format_id */ 31 #define GST_kCMVideoCodecType_Some_AppleProRes 1 32 33 // kCVPixelFormatType_64RGBALE is only available for 11.3 +. 34 // See https://developer.apple.com/documentation/corevideo/1563591-pixel_format_identifiers/kcvpixelformattype_64rgbale 35 #if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < 110300 36 #define kCVPixelFormatType_64RGBALE 'l64r' 37 #endif 38 #define GST_VTUTIL_HAVE_64ARGBALE __builtin_available(macOS 11.3, *) 39 40 G_BEGIN_DECLS 41 42 gchar * gst_vtutil_object_to_string (CFTypeRef obj); 43 gchar * gst_vtutil_string_to_utf8 (CFStringRef s); 44 void gst_vtutil_dict_set_i32 (CFMutableDictionaryRef dict, 45 CFStringRef key, gint32 value); 46 void gst_vtutil_dict_set_string (CFMutableDictionaryRef dict, 47 CFStringRef key, const gchar * value); 48 void gst_vtutil_dict_set_boolean (CFMutableDictionaryRef dict, 49 CFStringRef key, gboolean value); 50 void gst_vtutil_dict_set_data (CFMutableDictionaryRef dict, 51 CFStringRef key, guint8 * value, guint64 length); 52 void gst_vtutil_dict_set_object (CFMutableDictionaryRef dict, 53 CFStringRef key, CFTypeRef * value); 54 55 CMVideoCodecType gst_vtutil_codec_type_from_prores_variant (const char * variant); 56 const char * gst_vtutil_codec_type_to_prores_variant (CMVideoCodecType codec_type); 57 58 GstCaps * gst_vtutil_caps_append_video_format (GstCaps * caps, 59 const char * vfmt); 60 61 G_END_DECLS 62 63 #endif /* __GST_VTUTIL_H__ */ 64