forked from mirrors/gstreamer-rs
Add GstApp bindings
This commit is contained in:
parent
92b40d02a4
commit
6401bef067
7 changed files with 2129 additions and 0 deletions
|
@ -7,4 +7,5 @@ members = [
|
||||||
"gstreamer-audio-sys",
|
"gstreamer-audio-sys",
|
||||||
"gstreamer-video-sys",
|
"gstreamer-video-sys",
|
||||||
"gstreamer-pbutils-sys",
|
"gstreamer-pbutils-sys",
|
||||||
|
"gstreamer-app-sys",
|
||||||
]
|
]
|
||||||
|
|
14
Gir_GstApp.toml
Normal file
14
Gir_GstApp.toml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[options]
|
||||||
|
girs_dir = "gir-files"
|
||||||
|
library = "GstApp"
|
||||||
|
version = "1.0"
|
||||||
|
min_cfg_version = "1.0"
|
||||||
|
target_path = "gstreamer-app-sys"
|
||||||
|
work_mode = "sys"
|
||||||
|
|
||||||
|
external_libraries = [
|
||||||
|
"GLib",
|
||||||
|
"GObject",
|
||||||
|
"Gst",
|
||||||
|
"GstBase",
|
||||||
|
]
|
1824
gir-files/GstApp-1.0.gir
Normal file
1824
gir-files/GstApp-1.0.gir
Normal file
File diff suppressed because it is too large
Load diff
48
gstreamer-app-sys/Cargo.toml
Normal file
48
gstreamer-app-sys/Cargo.toml
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
[build-dependencies]
|
||||||
|
pkg-config = "0.3.7"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
bitflags = "0.8"
|
||||||
|
glib-sys = "0.3"
|
||||||
|
gobject-sys = "0.3"
|
||||||
|
libc = "0.2"
|
||||||
|
|
||||||
|
[dependencies.gstreamer-sys]
|
||||||
|
path = "../gstreamer-sys"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[dependencies.gstreamer-base-sys]
|
||||||
|
path = "../gstreamer-base-sys"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
v1_0_10 = []
|
||||||
|
v1_10 = ["v1_8"]
|
||||||
|
v1_12 = ["v1_10"]
|
||||||
|
v1_2 = ["v1_0_10"]
|
||||||
|
v1_2_3 = ["v1_2"]
|
||||||
|
v1_4 = ["v1_2_3"]
|
||||||
|
v1_6 = ["v1_4"]
|
||||||
|
v1_8 = ["v1_6"]
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
name = "gstreamer_app_sys"
|
||||||
|
|
||||||
|
[package]
|
||||||
|
build = "build.rs"
|
||||||
|
links = "gstapp-1.0"
|
||||||
|
name = "gstreamer-app-sys"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Sebastian Dröge <sebastian@centricular.com>"]
|
||||||
|
description = "FFI bindings to libgstapp-1.0"
|
||||||
|
homepage = "https://gstreamer.freedesktop.org"
|
||||||
|
keywords = ["ffi", "gstreamer", "gnome", "multimedia"]
|
||||||
|
repository = "https://github.com/sdroege/gstreamer-sys"
|
||||||
|
license = "MIT"
|
||||||
|
|
||||||
|
include = [
|
||||||
|
"src/*.rs",
|
||||||
|
"Cargo.toml",
|
||||||
|
"build.rs",
|
||||||
|
"LICENSE",
|
||||||
|
]
|
23
gstreamer-app-sys/LICENSE
Normal file
23
gstreamer-app-sys/LICENSE
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2017 Sebastian Dröge <sebastian@centricular.com>.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
|
66
gstreamer-app-sys/build.rs
Normal file
66
gstreamer-app-sys/build.rs
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
extern crate pkg_config;
|
||||||
|
|
||||||
|
use pkg_config::{Config, Error};
|
||||||
|
use std::env;
|
||||||
|
use std::io::prelude::*;
|
||||||
|
use std::io;
|
||||||
|
use std::process;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
if let Err(s) = find() {
|
||||||
|
let _ = writeln!(io::stderr(), "{}", s);
|
||||||
|
process::exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find() -> Result<(), Error> {
|
||||||
|
let package_name = "gstreamer-app-1.0";
|
||||||
|
let shared_libs = ["gstapp-1.0"];
|
||||||
|
let version = if cfg!(feature = "v1_12") {
|
||||||
|
"1.12"
|
||||||
|
} else if cfg!(feature = "v1_10") {
|
||||||
|
"1.10"
|
||||||
|
} else if cfg!(feature = "v1_6") {
|
||||||
|
"1.6"
|
||||||
|
} else {
|
||||||
|
"1.0"
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Ok(lib_dir) = env::var("GTK_LIB_DIR") {
|
||||||
|
for lib_ in shared_libs.iter() {
|
||||||
|
println!("cargo:rustc-link-lib=dylib={}", lib_);
|
||||||
|
}
|
||||||
|
println!("cargo:rustc-link-search=native={}", lib_dir);
|
||||||
|
return Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
let target = env::var("TARGET").unwrap();
|
||||||
|
let hardcode_shared_libs = target.contains("windows");
|
||||||
|
|
||||||
|
let mut config = Config::new();
|
||||||
|
config.atleast_version(version);
|
||||||
|
if hardcode_shared_libs {
|
||||||
|
config.cargo_metadata(false);
|
||||||
|
}
|
||||||
|
match config.probe(package_name) {
|
||||||
|
Ok(library) => {
|
||||||
|
if hardcode_shared_libs {
|
||||||
|
for lib_ in shared_libs.iter() {
|
||||||
|
println!("cargo:rustc-link-lib=dylib={}", lib_);
|
||||||
|
}
|
||||||
|
for path in library.link_paths.iter() {
|
||||||
|
println!("cargo:rustc-link-search=native={}", path.to_str().unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Err(Error::EnvNoPkgConfig(_)) | Err(Error::Command { .. }) => {
|
||||||
|
for lib_ in shared_libs.iter() {
|
||||||
|
println!("cargo:rustc-link-lib=dylib={}", lib_);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Err(err) => Err(err),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
153
gstreamer-app-sys/src/lib.rs
Normal file
153
gstreamer-app-sys/src/lib.rs
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
// This file was generated by gir (038b513) from gir-files (???)
|
||||||
|
// DO NOT EDIT
|
||||||
|
|
||||||
|
#![allow(non_camel_case_types, non_upper_case_globals)]
|
||||||
|
|
||||||
|
extern crate libc;
|
||||||
|
#[macro_use] extern crate bitflags;
|
||||||
|
extern crate glib_sys as glib;
|
||||||
|
extern crate gobject_sys as gobject;
|
||||||
|
extern crate gstreamer_sys as gst;
|
||||||
|
extern crate gstreamer_base_sys as gst_base;
|
||||||
|
|
||||||
|
#[allow(unused_imports)]
|
||||||
|
use libc::{c_int, c_char, c_uchar, c_float, c_uint, c_double,
|
||||||
|
c_short, c_ushort, c_long, c_ulong,
|
||||||
|
c_void, size_t, ssize_t, intptr_t, uintptr_t, time_t, FILE};
|
||||||
|
|
||||||
|
#[allow(unused_imports)]
|
||||||
|
use glib::{gboolean, gconstpointer, gpointer, GType, Volatile};
|
||||||
|
|
||||||
|
// Enums
|
||||||
|
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||||
|
#[repr(C)]
|
||||||
|
pub enum GstAppStreamType {
|
||||||
|
Stream = 0,
|
||||||
|
Seekable = 1,
|
||||||
|
RandomAccess = 2,
|
||||||
|
}
|
||||||
|
pub const GST_APP_STREAM_TYPE_STREAM: GstAppStreamType = GstAppStreamType::Stream;
|
||||||
|
pub const GST_APP_STREAM_TYPE_SEEKABLE: GstAppStreamType = GstAppStreamType::Seekable;
|
||||||
|
pub const GST_APP_STREAM_TYPE_RANDOM_ACCESS: GstAppStreamType = GstAppStreamType::RandomAccess;
|
||||||
|
|
||||||
|
// Records
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct GstAppSinkCallbacks {
|
||||||
|
pub eos: Option<unsafe extern "C" fn(*mut GstAppSink, gpointer)>,
|
||||||
|
pub new_preroll: Option<unsafe extern "C" fn(*mut GstAppSink, gpointer) -> gst::GstFlowReturn>,
|
||||||
|
pub new_sample: Option<unsafe extern "C" fn(*mut GstAppSink, gpointer) -> gst::GstFlowReturn>,
|
||||||
|
pub _gst_reserved: [gpointer; 4],
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct GstAppSinkClass {
|
||||||
|
pub basesink_class: gst_base::GstBaseSinkClass,
|
||||||
|
pub eos: Option<unsafe extern "C" fn(*mut GstAppSink)>,
|
||||||
|
pub new_preroll: Option<unsafe extern "C" fn(*mut GstAppSink) -> gst::GstFlowReturn>,
|
||||||
|
pub new_sample: Option<unsafe extern "C" fn(*mut GstAppSink) -> gst::GstFlowReturn>,
|
||||||
|
pub pull_preroll: Option<unsafe extern "C" fn(*mut GstAppSink) -> *mut gst::GstSample>,
|
||||||
|
pub pull_sample: Option<unsafe extern "C" fn(*mut GstAppSink) -> *mut gst::GstSample>,
|
||||||
|
pub try_pull_preroll: Option<unsafe extern "C" fn(*mut GstAppSink, gst::GstClockTime) -> *mut gst::GstSample>,
|
||||||
|
pub try_pull_sample: Option<unsafe extern "C" fn(*mut GstAppSink, gst::GstClockTime) -> *mut gst::GstSample>,
|
||||||
|
pub _gst_reserved: [gpointer; 2],
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct GstAppSinkPrivate(c_void);
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct GstAppSrcCallbacks {
|
||||||
|
pub need_data: Option<unsafe extern "C" fn(*mut GstAppSrc, c_uint, gpointer)>,
|
||||||
|
pub enough_data: Option<unsafe extern "C" fn(*mut GstAppSrc, gpointer)>,
|
||||||
|
pub seek_data: Option<unsafe extern "C" fn(*mut GstAppSrc, u64, gpointer) -> gboolean>,
|
||||||
|
pub _gst_reserved: [gpointer; 4],
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct GstAppSrcClass {
|
||||||
|
pub basesrc_class: gst_base::GstBaseSrcClass,
|
||||||
|
pub need_data: Option<unsafe extern "C" fn(*mut GstAppSrc, c_uint)>,
|
||||||
|
pub enough_data: Option<unsafe extern "C" fn(*mut GstAppSrc)>,
|
||||||
|
pub seek_data: Option<unsafe extern "C" fn(*mut GstAppSrc, u64) -> gboolean>,
|
||||||
|
pub push_buffer: Option<unsafe extern "C" fn(*mut GstAppSrc, *mut gst::GstBuffer) -> gst::GstFlowReturn>,
|
||||||
|
pub end_of_stream: Option<unsafe extern "C" fn(*mut GstAppSrc) -> gst::GstFlowReturn>,
|
||||||
|
pub push_sample: Option<unsafe extern "C" fn(*mut GstAppSrc, *mut gst::GstSample) -> gst::GstFlowReturn>,
|
||||||
|
pub _gst_reserved: [gpointer; 3],
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct GstAppSrcPrivate(c_void);
|
||||||
|
|
||||||
|
// Classes
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct GstAppSink {
|
||||||
|
pub basesink: gst_base::GstBaseSink,
|
||||||
|
pub priv_: *mut GstAppSinkPrivate,
|
||||||
|
pub _gst_reserved: [gpointer; 4],
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct GstAppSrc {
|
||||||
|
pub basesrc: gst_base::GstBaseSrc,
|
||||||
|
pub priv_: *mut GstAppSrcPrivate,
|
||||||
|
pub _gst_reserved: [gpointer; 4],
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
//=========================================================================
|
||||||
|
// GstAppSink
|
||||||
|
//=========================================================================
|
||||||
|
pub fn gst_app_sink_get_type() -> GType;
|
||||||
|
#[cfg(feature = "v1_12")]
|
||||||
|
pub fn gst_app_sink_get_buffer_list_support(appsink: *mut GstAppSink) -> gboolean;
|
||||||
|
pub fn gst_app_sink_get_caps(appsink: *mut GstAppSink) -> *mut gst::GstCaps;
|
||||||
|
pub fn gst_app_sink_get_drop(appsink: *mut GstAppSink) -> gboolean;
|
||||||
|
pub fn gst_app_sink_get_emit_signals(appsink: *mut GstAppSink) -> gboolean;
|
||||||
|
pub fn gst_app_sink_get_max_buffers(appsink: *mut GstAppSink) -> c_uint;
|
||||||
|
pub fn gst_app_sink_get_wait_on_eos(appsink: *mut GstAppSink) -> gboolean;
|
||||||
|
pub fn gst_app_sink_is_eos(appsink: *mut GstAppSink) -> gboolean;
|
||||||
|
pub fn gst_app_sink_pull_preroll(appsink: *mut GstAppSink) -> *mut gst::GstSample;
|
||||||
|
pub fn gst_app_sink_pull_sample(appsink: *mut GstAppSink) -> *mut gst::GstSample;
|
||||||
|
#[cfg(feature = "v1_12")]
|
||||||
|
pub fn gst_app_sink_set_buffer_list_support(appsink: *mut GstAppSink, enable_lists: gboolean);
|
||||||
|
pub fn gst_app_sink_set_callbacks(appsink: *mut GstAppSink, callbacks: *mut GstAppSinkCallbacks, user_data: gpointer, notify: glib::GDestroyNotify);
|
||||||
|
pub fn gst_app_sink_set_caps(appsink: *mut GstAppSink, caps: *const gst::GstCaps);
|
||||||
|
pub fn gst_app_sink_set_drop(appsink: *mut GstAppSink, drop: gboolean);
|
||||||
|
pub fn gst_app_sink_set_emit_signals(appsink: *mut GstAppSink, emit: gboolean);
|
||||||
|
pub fn gst_app_sink_set_max_buffers(appsink: *mut GstAppSink, max: c_uint);
|
||||||
|
pub fn gst_app_sink_set_wait_on_eos(appsink: *mut GstAppSink, wait: gboolean);
|
||||||
|
#[cfg(feature = "v1_10")]
|
||||||
|
pub fn gst_app_sink_try_pull_preroll(appsink: *mut GstAppSink, timeout: gst::GstClockTime) -> *mut gst::GstSample;
|
||||||
|
#[cfg(feature = "v1_10")]
|
||||||
|
pub fn gst_app_sink_try_pull_sample(appsink: *mut GstAppSink, timeout: gst::GstClockTime) -> *mut gst::GstSample;
|
||||||
|
|
||||||
|
//=========================================================================
|
||||||
|
// GstAppSrc
|
||||||
|
//=========================================================================
|
||||||
|
pub fn gst_app_src_get_type() -> GType;
|
||||||
|
pub fn gst_app_src_end_of_stream(appsrc: *mut GstAppSrc) -> gst::GstFlowReturn;
|
||||||
|
pub fn gst_app_src_get_caps(appsrc: *mut GstAppSrc) -> *mut gst::GstCaps;
|
||||||
|
#[cfg(feature = "v1_2")]
|
||||||
|
pub fn gst_app_src_get_current_level_bytes(appsrc: *mut GstAppSrc) -> u64;
|
||||||
|
#[cfg(feature = "v1_10")]
|
||||||
|
pub fn gst_app_src_get_duration(appsrc: *mut GstAppSrc) -> gst::GstClockTime;
|
||||||
|
pub fn gst_app_src_get_emit_signals(appsrc: *mut GstAppSrc) -> gboolean;
|
||||||
|
pub fn gst_app_src_get_latency(appsrc: *mut GstAppSrc, min: *mut u64, max: *mut u64);
|
||||||
|
pub fn gst_app_src_get_max_bytes(appsrc: *mut GstAppSrc) -> u64;
|
||||||
|
pub fn gst_app_src_get_size(appsrc: *mut GstAppSrc) -> i64;
|
||||||
|
pub fn gst_app_src_get_stream_type(appsrc: *mut GstAppSrc) -> GstAppStreamType;
|
||||||
|
pub fn gst_app_src_push_buffer(appsrc: *mut GstAppSrc, buffer: *mut gst::GstBuffer) -> gst::GstFlowReturn;
|
||||||
|
#[cfg(feature = "v1_6")]
|
||||||
|
pub fn gst_app_src_push_sample(appsrc: *mut GstAppSrc, sample: *mut gst::GstSample) -> gst::GstFlowReturn;
|
||||||
|
pub fn gst_app_src_set_callbacks(appsrc: *mut GstAppSrc, callbacks: *mut GstAppSrcCallbacks, user_data: gpointer, notify: glib::GDestroyNotify);
|
||||||
|
pub fn gst_app_src_set_caps(appsrc: *mut GstAppSrc, caps: *const gst::GstCaps);
|
||||||
|
#[cfg(feature = "v1_10")]
|
||||||
|
pub fn gst_app_src_set_duration(appsrc: *mut GstAppSrc, duration: gst::GstClockTime);
|
||||||
|
pub fn gst_app_src_set_emit_signals(appsrc: *mut GstAppSrc, emit: gboolean);
|
||||||
|
pub fn gst_app_src_set_latency(appsrc: *mut GstAppSrc, min: u64, max: u64);
|
||||||
|
pub fn gst_app_src_set_max_bytes(appsrc: *mut GstAppSrc, max: u64);
|
||||||
|
pub fn gst_app_src_set_size(appsrc: *mut GstAppSrc, size: i64);
|
||||||
|
pub fn gst_app_src_set_stream_type(appsrc: *mut GstAppSrc, type_: GstAppStreamType);
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue