gstreamer_tag_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gobject_sys as gobject;
17use gstreamer_sys as gst;
18
19#[cfg(unix)]
20#[allow(unused_imports)]
21use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
22#[allow(unused_imports)]
23use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
24#[allow(unused_imports)]
25use std::ffi::{
26    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
27};
28
29#[allow(unused_imports)]
30use glib::{gboolean, gconstpointer, gpointer, GType};
31
32// Enums
33pub type GstTagDemuxResult = c_int;
34pub const GST_TAG_DEMUX_RESULT_BROKEN_TAG: GstTagDemuxResult = 0;
35pub const GST_TAG_DEMUX_RESULT_AGAIN: GstTagDemuxResult = 1;
36pub const GST_TAG_DEMUX_RESULT_OK: GstTagDemuxResult = 2;
37
38pub type GstTagImageType = c_int;
39pub const GST_TAG_IMAGE_TYPE_NONE: GstTagImageType = -1;
40pub const GST_TAG_IMAGE_TYPE_UNDEFINED: GstTagImageType = 0;
41pub const GST_TAG_IMAGE_TYPE_FRONT_COVER: GstTagImageType = 1;
42pub const GST_TAG_IMAGE_TYPE_BACK_COVER: GstTagImageType = 2;
43pub const GST_TAG_IMAGE_TYPE_LEAFLET_PAGE: GstTagImageType = 3;
44pub const GST_TAG_IMAGE_TYPE_MEDIUM: GstTagImageType = 4;
45pub const GST_TAG_IMAGE_TYPE_LEAD_ARTIST: GstTagImageType = 5;
46pub const GST_TAG_IMAGE_TYPE_ARTIST: GstTagImageType = 6;
47pub const GST_TAG_IMAGE_TYPE_CONDUCTOR: GstTagImageType = 7;
48pub const GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA: GstTagImageType = 8;
49pub const GST_TAG_IMAGE_TYPE_COMPOSER: GstTagImageType = 9;
50pub const GST_TAG_IMAGE_TYPE_LYRICIST: GstTagImageType = 10;
51pub const GST_TAG_IMAGE_TYPE_RECORDING_LOCATION: GstTagImageType = 11;
52pub const GST_TAG_IMAGE_TYPE_DURING_RECORDING: GstTagImageType = 12;
53pub const GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE: GstTagImageType = 13;
54pub const GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE: GstTagImageType = 14;
55pub const GST_TAG_IMAGE_TYPE_FISH: GstTagImageType = 15;
56pub const GST_TAG_IMAGE_TYPE_ILLUSTRATION: GstTagImageType = 16;
57pub const GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO: GstTagImageType = 17;
58pub const GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO: GstTagImageType = 18;
59
60// Constants
61pub const GST_TAG_ACOUSTID_FINGERPRINT: &[u8] = b"chromaprint-fingerprint\0";
62pub const GST_TAG_ACOUSTID_ID: &[u8] = b"acoustid-id\0";
63pub const GST_TAG_CAPTURING_CONTRAST: &[u8] = b"capturing-contrast\0";
64pub const GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO: &[u8] = b"capturing-digital-zoom-ratio\0";
65pub const GST_TAG_CAPTURING_EXPOSURE_COMPENSATION: &[u8] = b"capturing-exposure-compensation\0";
66pub const GST_TAG_CAPTURING_EXPOSURE_MODE: &[u8] = b"capturing-exposure-mode\0";
67pub const GST_TAG_CAPTURING_EXPOSURE_PROGRAM: &[u8] = b"capturing-exposure-program\0";
68pub const GST_TAG_CAPTURING_FLASH_FIRED: &[u8] = b"capturing-flash-fired\0";
69pub const GST_TAG_CAPTURING_FLASH_MODE: &[u8] = b"capturing-flash-mode\0";
70pub const GST_TAG_CAPTURING_FOCAL_LENGTH: &[u8] = b"capturing-focal-length\0";
71pub const GST_TAG_CAPTURING_FOCAL_LENGTH_35_MM: &[u8] = b"capturing-focal-length-35mm\0";
72pub const GST_TAG_CAPTURING_FOCAL_RATIO: &[u8] = b"capturing-focal-ratio\0";
73pub const GST_TAG_CAPTURING_GAIN_ADJUSTMENT: &[u8] = b"capturing-gain-adjustment\0";
74pub const GST_TAG_CAPTURING_ISO_SPEED: &[u8] = b"capturing-iso-speed\0";
75pub const GST_TAG_CAPTURING_LIGHT_SOURCE: &[u8] = b"capturing-light-source\0";
76pub const GST_TAG_CAPTURING_METERING_MODE: &[u8] = b"capturing-metering-mode\0";
77pub const GST_TAG_CAPTURING_SATURATION: &[u8] = b"capturing-saturation\0";
78pub const GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE: &[u8] = b"capturing-scene-capture-type\0";
79pub const GST_TAG_CAPTURING_SHARPNESS: &[u8] = b"capturing-sharpness\0";
80pub const GST_TAG_CAPTURING_SHUTTER_SPEED: &[u8] = b"capturing-shutter-speed\0";
81pub const GST_TAG_CAPTURING_SOURCE: &[u8] = b"capturing-source\0";
82pub const GST_TAG_CAPTURING_WHITE_BALANCE: &[u8] = b"capturing-white-balance\0";
83pub const GST_TAG_CDDA_CDDB_DISCID: &[u8] = b"discid\0";
84pub const GST_TAG_CDDA_CDDB_DISCID_FULL: &[u8] = b"discid-full\0";
85pub const GST_TAG_CDDA_MUSICBRAINZ_DISCID: &[u8] = b"musicbrainz-discid\0";
86pub const GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL: &[u8] = b"musicbrainz-discid-full\0";
87pub const GST_TAG_CMML_CLIP: &[u8] = b"cmml-clip\0";
88pub const GST_TAG_CMML_HEAD: &[u8] = b"cmml-head\0";
89pub const GST_TAG_CMML_STREAM: &[u8] = b"cmml-stream\0";
90pub const GST_TAG_ID3V2_HEADER_SIZE: c_int = 10;
91pub const GST_TAG_IMAGE_HORIZONTAL_PPI: &[u8] = b"image-horizontal-ppi\0";
92pub const GST_TAG_IMAGE_VERTICAL_PPI: &[u8] = b"image-vertical-ppi\0";
93pub const GST_TAG_MUSICAL_KEY: &[u8] = b"musical-key\0";
94pub const GST_TAG_MUSICBRAINZ_ALBUMARTISTID: &[u8] = b"musicbrainz-albumartistid\0";
95pub const GST_TAG_MUSICBRAINZ_ALBUMID: &[u8] = b"musicbrainz-albumid\0";
96pub const GST_TAG_MUSICBRAINZ_ARTISTID: &[u8] = b"musicbrainz-artistid\0";
97pub const GST_TAG_MUSICBRAINZ_RELEASEGROUPID: &[u8] = b"musicbrainz-releasegroupid\0";
98pub const GST_TAG_MUSICBRAINZ_RELEASETRACKID: &[u8] = b"musicbrainz-releasetrackid\0";
99pub const GST_TAG_MUSICBRAINZ_TRACKID: &[u8] = b"musicbrainz-trackid\0";
100pub const GST_TAG_MUSICBRAINZ_TRMID: &[u8] = b"musicbrainz-trmid\0";
101
102// Flags
103pub type GstTagLicenseFlags = c_uint;
104pub const GST_TAG_LICENSE_PERMITS_REPRODUCTION: GstTagLicenseFlags = 1;
105pub const GST_TAG_LICENSE_PERMITS_DISTRIBUTION: GstTagLicenseFlags = 2;
106pub const GST_TAG_LICENSE_PERMITS_DERIVATIVE_WORKS: GstTagLicenseFlags = 4;
107pub const GST_TAG_LICENSE_PERMITS_SHARING: GstTagLicenseFlags = 8;
108pub const GST_TAG_LICENSE_REQUIRES_NOTICE: GstTagLicenseFlags = 256;
109pub const GST_TAG_LICENSE_REQUIRES_ATTRIBUTION: GstTagLicenseFlags = 512;
110pub const GST_TAG_LICENSE_REQUIRES_SHARE_ALIKE: GstTagLicenseFlags = 1024;
111pub const GST_TAG_LICENSE_REQUIRES_SOURCE_CODE: GstTagLicenseFlags = 2048;
112pub const GST_TAG_LICENSE_REQUIRES_COPYLEFT: GstTagLicenseFlags = 4096;
113pub const GST_TAG_LICENSE_REQUIRES_LESSER_COPYLEFT: GstTagLicenseFlags = 8192;
114pub const GST_TAG_LICENSE_PROHIBITS_COMMERCIAL_USE: GstTagLicenseFlags = 65536;
115pub const GST_TAG_LICENSE_PROHIBITS_HIGH_INCOME_NATION_USE: GstTagLicenseFlags = 131072;
116pub const GST_TAG_LICENSE_CREATIVE_COMMONS_LICENSE: GstTagLicenseFlags = 16777216;
117pub const GST_TAG_LICENSE_FREE_SOFTWARE_FOUNDATION_LICENSE: GstTagLicenseFlags = 33554432;
118
119// Records
120#[derive(Copy, Clone)]
121#[repr(C)]
122pub struct GstTagDemuxClass {
123    pub parent_class: gst::GstElementClass,
124    pub min_start_size: c_uint,
125    pub min_end_size: c_uint,
126    pub identify_tag: Option<
127        unsafe extern "C" fn(
128            *mut GstTagDemux,
129            *mut gst::GstBuffer,
130            gboolean,
131            *mut c_uint,
132        ) -> gboolean,
133    >,
134    pub parse_tag: Option<
135        unsafe extern "C" fn(
136            *mut GstTagDemux,
137            *mut gst::GstBuffer,
138            gboolean,
139            *mut c_uint,
140            *mut *mut gst::GstTagList,
141        ) -> GstTagDemuxResult,
142    >,
143    pub merge_tags: Option<
144        unsafe extern "C" fn(
145            *mut GstTagDemux,
146            *const gst::GstTagList,
147            *const gst::GstTagList,
148        ) -> *mut gst::GstTagList,
149    >,
150    pub reserved: [gpointer; 4],
151}
152
153impl ::std::fmt::Debug for GstTagDemuxClass {
154    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
155        f.debug_struct(&format!("GstTagDemuxClass @ {self:p}"))
156            .field("parent_class", &self.parent_class)
157            .field("min_start_size", &self.min_start_size)
158            .field("min_end_size", &self.min_end_size)
159            .field("identify_tag", &self.identify_tag)
160            .field("parse_tag", &self.parse_tag)
161            .field("merge_tags", &self.merge_tags)
162            .finish()
163    }
164}
165
166#[repr(C)]
167#[allow(dead_code)]
168pub struct _GstTagDemuxPrivate {
169    _data: [u8; 0],
170    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
171}
172
173pub type GstTagDemuxPrivate = _GstTagDemuxPrivate;
174
175#[derive(Copy, Clone)]
176#[repr(C)]
177pub struct GstTagMuxClass {
178    pub parent_class: gst::GstElementClass,
179    pub render_start_tag:
180        Option<unsafe extern "C" fn(*mut GstTagMux, *const gst::GstTagList) -> *mut gst::GstBuffer>,
181    pub render_end_tag:
182        Option<unsafe extern "C" fn(*mut GstTagMux, *const gst::GstTagList) -> *mut gst::GstBuffer>,
183    pub _gst_reserved: [gpointer; 4],
184}
185
186impl ::std::fmt::Debug for GstTagMuxClass {
187    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
188        f.debug_struct(&format!("GstTagMuxClass @ {self:p}"))
189            .field("parent_class", &self.parent_class)
190            .field("render_start_tag", &self.render_start_tag)
191            .field("render_end_tag", &self.render_end_tag)
192            .finish()
193    }
194}
195
196#[repr(C)]
197#[allow(dead_code)]
198pub struct _GstTagMuxPrivate {
199    _data: [u8; 0],
200    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
201}
202
203pub type GstTagMuxPrivate = _GstTagMuxPrivate;
204
205#[derive(Copy, Clone)]
206#[repr(C)]
207pub struct GstTagXmpWriterInterface {
208    pub parent: gobject::GTypeInterface,
209}
210
211impl ::std::fmt::Debug for GstTagXmpWriterInterface {
212    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
213        f.debug_struct(&format!("GstTagXmpWriterInterface @ {self:p}"))
214            .field("parent", &self.parent)
215            .finish()
216    }
217}
218
219// Classes
220#[derive(Copy, Clone)]
221#[repr(C)]
222pub struct GstTagDemux {
223    pub element: gst::GstElement,
224    pub priv_: *mut GstTagDemuxPrivate,
225    pub reserved: [gpointer; 4],
226}
227
228impl ::std::fmt::Debug for GstTagDemux {
229    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
230        f.debug_struct(&format!("GstTagDemux @ {self:p}"))
231            .field("element", &self.element)
232            .finish()
233    }
234}
235
236#[derive(Copy, Clone)]
237#[repr(C)]
238pub struct GstTagMux {
239    pub element: gst::GstElement,
240    pub priv_: *mut GstTagMuxPrivate,
241    pub _gst_reserved: [gpointer; 4],
242}
243
244impl ::std::fmt::Debug for GstTagMux {
245    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
246        f.debug_struct(&format!("GstTagMux @ {self:p}"))
247            .field("element", &self.element)
248            .finish()
249    }
250}
251
252// Interfaces
253#[repr(C)]
254#[allow(dead_code)]
255pub struct GstTagXmpWriter {
256    _data: [u8; 0],
257    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
258}
259
260impl ::std::fmt::Debug for GstTagXmpWriter {
261    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
262        write!(f, "GstTagXmpWriter @ {self:p}")
263    }
264}
265
266extern "C" {
267
268    //=========================================================================
269    // GstTagDemuxResult
270    //=========================================================================
271    pub fn gst_tag_demux_result_get_type() -> GType;
272
273    //=========================================================================
274    // GstTagImageType
275    //=========================================================================
276    pub fn gst_tag_image_type_get_type() -> GType;
277
278    //=========================================================================
279    // GstTagLicenseFlags
280    //=========================================================================
281    pub fn gst_tag_license_flags_get_type() -> GType;
282
283    //=========================================================================
284    // GstTagDemux
285    //=========================================================================
286    pub fn gst_tag_demux_get_type() -> GType;
287
288    //=========================================================================
289    // GstTagMux
290    //=========================================================================
291    pub fn gst_tag_mux_get_type() -> GType;
292
293    //=========================================================================
294    // GstTagXmpWriter
295    //=========================================================================
296    pub fn gst_tag_xmp_writer_get_type() -> GType;
297    pub fn gst_tag_xmp_writer_add_all_schemas(config: *mut GstTagXmpWriter);
298    pub fn gst_tag_xmp_writer_add_schema(config: *mut GstTagXmpWriter, schema: *const c_char);
299    pub fn gst_tag_xmp_writer_has_schema(
300        config: *mut GstTagXmpWriter,
301        schema: *const c_char,
302    ) -> gboolean;
303    pub fn gst_tag_xmp_writer_remove_all_schemas(config: *mut GstTagXmpWriter);
304    pub fn gst_tag_xmp_writer_remove_schema(config: *mut GstTagXmpWriter, schema: *const c_char);
305    pub fn gst_tag_xmp_writer_tag_list_to_xmp_buffer(
306        config: *mut GstTagXmpWriter,
307        taglist: *const gst::GstTagList,
308        read_only: gboolean,
309    ) -> *mut gst::GstBuffer;
310
311    //=========================================================================
312    // Other functions
313    //=========================================================================
314    pub fn gst_tag_check_language_code(lang_code: *const c_char) -> gboolean;
315    pub fn gst_tag_freeform_string_to_utf8(
316        data: *const c_char,
317        size: c_int,
318        env_vars: *mut *const c_char,
319    ) -> *mut c_char;
320    pub fn gst_tag_from_id3_tag(id3_tag: *const c_char) -> *const c_char;
321    pub fn gst_tag_from_id3_user_tag(
322        type_: *const c_char,
323        id3_user_tag: *const c_char,
324    ) -> *const c_char;
325    pub fn gst_tag_from_vorbis_tag(vorbis_tag: *const c_char) -> *const c_char;
326    pub fn gst_tag_get_id3v2_tag_size(buffer: *mut gst::GstBuffer) -> c_uint;
327    pub fn gst_tag_get_language_code_iso_639_1(lang_code: *const c_char) -> *const c_char;
328    pub fn gst_tag_get_language_code_iso_639_2B(lang_code: *const c_char) -> *const c_char;
329    pub fn gst_tag_get_language_code_iso_639_2T(lang_code: *const c_char) -> *const c_char;
330    pub fn gst_tag_get_language_codes() -> *mut *mut c_char;
331    pub fn gst_tag_get_language_name(language_code: *const c_char) -> *const c_char;
332    pub fn gst_tag_get_license_description(license_ref: *const c_char) -> *const c_char;
333    pub fn gst_tag_get_license_flags(license_ref: *const c_char) -> GstTagLicenseFlags;
334    pub fn gst_tag_get_license_jurisdiction(license_ref: *const c_char) -> *const c_char;
335    pub fn gst_tag_get_license_nick(license_ref: *const c_char) -> *const c_char;
336    pub fn gst_tag_get_license_title(license_ref: *const c_char) -> *const c_char;
337    pub fn gst_tag_get_license_version(license_ref: *const c_char) -> *const c_char;
338    pub fn gst_tag_get_licenses() -> *mut *mut c_char;
339    pub fn gst_tag_id3_genre_count() -> c_uint;
340    pub fn gst_tag_id3_genre_get(id: c_uint) -> *const c_char;
341    pub fn gst_tag_image_data_to_image_sample(
342        image_data: *const u8,
343        image_data_len: c_uint,
344        image_type: GstTagImageType,
345    ) -> *mut gst::GstSample;
346    pub fn gst_tag_list_add_id3_image(
347        tag_list: *mut gst::GstTagList,
348        image_data: *const u8,
349        image_data_len: c_uint,
350        id3_picture_type: c_uint,
351    ) -> gboolean;
352    pub fn gst_tag_list_from_exif_buffer(
353        buffer: *mut gst::GstBuffer,
354        byte_order: c_int,
355        base_offset: u32,
356    ) -> *mut gst::GstTagList;
357    pub fn gst_tag_list_from_exif_buffer_with_tiff_header(
358        buffer: *mut gst::GstBuffer,
359    ) -> *mut gst::GstTagList;
360    pub fn gst_tag_list_from_id3v2_tag(buffer: *mut gst::GstBuffer) -> *mut gst::GstTagList;
361    pub fn gst_tag_list_from_vorbiscomment(
362        data: *const u8,
363        size: size_t,
364        id_data: *const u8,
365        id_data_length: c_uint,
366        vendor_string: *mut *mut c_char,
367    ) -> *mut gst::GstTagList;
368    pub fn gst_tag_list_from_vorbiscomment_buffer(
369        buffer: *mut gst::GstBuffer,
370        id_data: *const u8,
371        id_data_length: c_uint,
372        vendor_string: *mut *mut c_char,
373    ) -> *mut gst::GstTagList;
374    pub fn gst_tag_list_from_xmp_buffer(buffer: *mut gst::GstBuffer) -> *mut gst::GstTagList;
375    pub fn gst_tag_list_new_from_id3v1(data: *const [u8; 128]) -> *mut gst::GstTagList;
376    pub fn gst_tag_list_to_exif_buffer(
377        taglist: *const gst::GstTagList,
378        byte_order: c_int,
379        base_offset: u32,
380    ) -> *mut gst::GstBuffer;
381    pub fn gst_tag_list_to_exif_buffer_with_tiff_header(
382        taglist: *const gst::GstTagList,
383    ) -> *mut gst::GstBuffer;
384    pub fn gst_tag_list_to_vorbiscomment_buffer(
385        list: *const gst::GstTagList,
386        id_data: *const u8,
387        id_data_length: c_uint,
388        vendor_string: *const c_char,
389    ) -> *mut gst::GstBuffer;
390    pub fn gst_tag_list_to_xmp_buffer(
391        list: *const gst::GstTagList,
392        read_only: gboolean,
393        schemas: *mut *const c_char,
394    ) -> *mut gst::GstBuffer;
395    pub fn gst_tag_parse_extended_comment(
396        ext_comment: *const c_char,
397        key: *mut *mut c_char,
398        lang: *mut *mut c_char,
399        value: *mut *mut c_char,
400        fail_if_no_key: gboolean,
401    ) -> gboolean;
402    pub fn gst_tag_register_musicbrainz_tags();
403    pub fn gst_tag_to_id3_tag(gst_tag: *const c_char) -> *const c_char;
404    pub fn gst_tag_to_vorbis_comments(
405        list: *const gst::GstTagList,
406        tag: *const c_char,
407    ) -> *mut glib::GList;
408    pub fn gst_tag_to_vorbis_tag(gst_tag: *const c_char) -> *const c_char;
409    pub fn gst_tag_xmp_list_schemas() -> *mut *const c_char;
410    pub fn gst_vorbis_tag_add(list: *mut gst::GstTagList, tag: *const c_char, value: *const c_char);
411
412}