[gnome-sound-recorder/wip/cdavis/typescript: 2/8] Initial port to TypeScript
- From: Christopher Davis <christopherdavis src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-sound-recorder/wip/cdavis/typescript: 2/8] Initial port to TypeScript
- Date: Thu, 11 Aug 2022 23:42:59 +0000 (UTC)
commit 439ba70480f5e216e1cce02c3bb3e2e4469eb3f7
Author: Christopher Davis <christopherdavis gnome org>
Date: Mon Aug 8 03:10:53 2022 -0400
Initial port to TypeScript
Move from checked JavaScript to TypeScript. For now this
uses the regular TypeScript settings.
NOTE: The flatpak manifest does not work yet. Please use
`toolbox` or your host OS to build and test.
docs.json | 15 +
src/{application.js => application.ts} | 19 +-
src/{main.js => main.ts} | 2 +-
src/meson.build | 14 +-
src/{recorder.js => recorder.ts} | 63 +-
src/{recorderWidget.js => recorderWidget.ts} | 108 +-
src/{recording.js => recording.ts} | 76 +-
src/{recordingList.js => recordingList.ts} | 44 +-
...cordingListWidget.js => recordingListWidget.ts} | 46 +-
src/{row.js => row.ts} | 147 +-
src/{utils.js => utils.ts} | 10 +-
src/{waveform.js => waveform.ts} | 51 +-
src/{window.js => window.ts} | 111 +-
tsconfig.json | 4 +-
types/ambient.d.ts | 23 +
types/gmodule.d.ts | 52 +
types/graphene.d.ts | 722 ++++++
types/gsk.d.ts | 1008 ++++++++
types/gstaudio.d.ts | 1 +
types/gstbase.d.ts | 1106 +++++++++
types/gstvideo.d.ts | 2520 ++++++++++++++++++++
21 files changed, 5814 insertions(+), 328 deletions(-)
---
diff --git a/docs.json b/docs.json
index 1e0ddbf..aa58fb7 100644
--- a/docs.json
+++ b/docs.json
@@ -16,9 +16,18 @@
"Gio": [
"2.0"
],
+ "GModule": [
+ "2.0"
+ ],
"Gdk": [
"4.0"
],
+ "Graphene": [
+ "1.0"
+ ],
+ "Gsk": [
+ "4.0"
+ ],
"Gtk": [
"4.0"
],
@@ -28,6 +37,9 @@
"Gst": [
"1.0"
],
+ "GstBase": [
+ "1.0"
+ ],
"GstAudio": [
"1.0"
],
@@ -37,6 +49,9 @@
"GstPbutils": [
"1.0"
],
+ "GstVideo": [
+ "1.0"
+ ],
"HarfBuzz": [
"0.0"
],
diff --git a/src/application.js b/src/application.ts
similarity index 95%
rename from src/application.js
rename to src/application.ts
index 6e73102..99a05cd 100644
--- a/src/application.js
+++ b/src/application.ts
@@ -26,15 +26,18 @@ import GLib from 'gi://GLib';
import GObject from 'gi://GObject';
import Gst from 'gi://Gst';
import Gtk from 'gi://Gtk?version=4.0';
+import { AboutWindow } from 'types/adw.js';
export const RecordingsDir = Gio.file_new_for_path(GLib.build_filenamev([GLib.get_user_data_dir(),
pkg.name]));
export const CacheDir = Gio.file_new_for_path(GLib.build_filenamev([GLib.get_user_cache_dir(), pkg.name]));
export const Settings = new Gio.Settings({ schema: pkg.name });
-import { Window } from './window.js';
+import { Window, WindowClass } from './window.js';
export const Application = GObject.registerClass(class Application extends Adw.Application {
- _init() {
+ private window: WindowClass;
+
+ _init(): void {
super._init({ application_id: pkg.name, resource_base_path: '/org/gnome/SoundRecorder/' });
GLib.set_application_name(_('Sound Recorder'));
GLib.setenv('PULSE_PROP_media.role', 'production', true);
@@ -45,7 +48,6 @@ export const Application = GObject.registerClass(class Application extends Adw.A
this.connect('handle-local-options', (app, options) => {
if (options.contains('version')) {
- // @ts-expect-error
print(pkg.version);
/* quit the invoked process after printing the version number
* leaving the running instance unaffected
@@ -56,7 +58,7 @@ export const Application = GObject.registerClass(class Application extends Adw.A
});
}
- _initAppMenu() {
+ _initAppMenu(): void {
const profileAction = Settings.create_action('audio-profile');
this.add_action(profileAction);
@@ -91,11 +93,9 @@ export const Application = GObject.registerClass(class Application extends Adw.A
this.set_accels_for_action('recording.export', ['<Primary>s']);
}
- vfunc_startup() {
+ vfunc_startup(): void {
super.vfunc_startup();
- // @ts-expect-error
log('Sound Recorder (%s)'.format(pkg.name));
- // @ts-expect-error
log('Version: %s'.format(pkg.version));
Gst.init(null);
@@ -105,21 +105,20 @@ export const Application = GObject.registerClass(class Application extends Adw.A
RecordingsDir.make_directory_with_parents(null);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS))
- // @ts-expect-error
console.error(`Failed to create directory ${e}`);
}
this._initAppMenu();
}
- vfunc_activate() {
+ vfunc_activate(): void {
this.window = new Window({ application: this });
if (pkg.name.endsWith('Devel'))
this.window.add_css_class('devel');
this.window.show();
}
- _showAbout() {
+ _showAbout(): void {
let aboutDialog = new Adw.AboutWindow({
artists: [
'Reda Lazri <the red shortcut gmail com>',
diff --git a/src/main.js b/src/main.ts
similarity index 97%
rename from src/main.js
rename to src/main.ts
index 72dee8d..f01ff96 100644
--- a/src/main.js
+++ b/src/main.ts
@@ -28,6 +28,6 @@
import { Application } from './application.js';
-export function main(argv) {
+export function main(argv: string[]): number {
return new Application().run(argv);
}
diff --git a/src/meson.build b/src/meson.build
index f5a2bb2..df60098 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -14,6 +14,17 @@ app = configure_file(
configuration: app_conf
)
+tsc = find_program('tsc', required: true)
+tsc_out = meson.project_build_root() / 'tsc-out'
+
+typescript = custom_target(
+ 'typescript-compile',
+ build_by_default: true,
+ build_always_stale: true,
+ command: [ tsc, '--outDir', tsc_out ],
+ output: ['tsc-output'],
+)
+
source_res_conf = configuration_data()
source_res_conf.set('profile', profile)
src_res = gnome.compile_resources(
@@ -23,7 +34,8 @@ src_res = gnome.compile_resources(
output: '@BASENAME@',
configuration: source_res_conf
),
- source_dir: '.',
+ dependencies: typescript,
+ source_dir: tsc_out,
gresource_bundle: true,
install: true,
install_dir: sound_recorder_pkgdatadir
diff --git a/src/recorder.js b/src/recorder.ts
similarity index 87%
rename from src/recorder.js
rename to src/recorder.ts
index 36f5575..84d17e0 100644
--- a/src/recorder.js
+++ b/src/recorder.ts
@@ -20,11 +20,12 @@
import GLib from 'gi://GLib';
import GObject from 'gi://GObject';
+import Gio from 'gi://Gio';
import Gst from 'gi://Gst';
import GstPbutils from 'gi://GstPbutils';
import { RecordingsDir, Settings } from './application.js';
-import { Recording } from './recording.js';
+import { Recording, RecordingClass } from './recording.js';
// All supported encoding profiles.
export const EncodingProfiles = [
@@ -64,6 +65,8 @@ var AudioChannels = {
1: { name: 'mono', channels: 1 },
};
+export type RecorderClass = InstanceType<typeof Recorder>;
+
export const Recorder = GObject.registerClass({
Properties: {
'duration': GObject.ParamSpec.int(
@@ -78,11 +81,26 @@ export const Recorder = GObject.registerClass({
0.0, 1.0, 0.0),
},
}, class Recorder extends GObject.Object {
- _init() {
+ _peaks: number[];
+
+ _duration!: number;
+ _current_peak!: number;
+
+ pipeline: Gst.Pipeline;
+ level: Gst.Element;
+ ebin: Gst.Element;
+ filesink: Gst.Element;
+ recordBus: Gst.Bus;
+ handlerId: number;
+ file: Gio.File;
+ timeout: number;
+ _pipeState: Gst.State;
+
+ _init(): void {
this._peaks = [];
super._init({});
- let srcElement, audioConvert, caps;
+ let srcElement: Gst.Element, audioConvert: Gst.Element, caps: Gst.Caps;
try {
this.pipeline = new Gst.Pipeline({ name: 'pipe' });
srcElement = Gst.ElementFactory.make('pulsesrc', 'srcElement');
@@ -92,7 +110,6 @@ export const Recorder = GObject.registerClass({
this.ebin = Gst.ElementFactory.make('encodebin', 'ebin');
this.filesink = Gst.ElementFactory.make('filesink', 'filesink');
} catch (error) {
- // @ts-expect-error
log(`Not all elements could be created.\n${error}`);
}
@@ -103,7 +120,6 @@ export const Recorder = GObject.registerClass({
this.pipeline.add(this.ebin);
this.pipeline.add(this.filesink);
} catch (error) {
- // @ts-expect-error
log(`Not all elements could be addded.\n${error}`);
}
@@ -111,19 +127,18 @@ export const Recorder = GObject.registerClass({
audioConvert.link_filtered(this.level, caps);
}
- start() {
+ start(): void {
let index = 1;
do {
/* Translators: ""Recording %d"" is the default name assigned to a file created
by the application (for example, "Recording 1"). */
- // @ts-expect-error
this.file = RecordingsDir.get_child_for_display_name(_('Recording %d').format(index++));
} while (this.file.query_exists(null));
this.recordBus = this.pipeline.get_bus();
this.recordBus.add_signal_watch();
- this.handlerId = this.recordBus.connect('message', (_, message) => {
+ this.handlerId = this.recordBus.connect('message', (_, message: Gst.Message) => {
if (message !== null)
this._onMessageReceived(message);
});
@@ -144,16 +159,16 @@ export const Recorder = GObject.registerClass({
});
}
- pause() {
+ pause(): void {
this.state = Gst.State.PAUSED;
}
- resume() {
+ resume(): void {
if (this.state === Gst.State.PAUSED)
this.state = Gst.State.PLAYING;
}
- stop() {
+ stop(): RecordingClass {
this.state = Gst.State.NULL;
this.duration = 0;
if (this.timeout) {
@@ -178,23 +193,22 @@ export const Recorder = GObject.registerClass({
return null;
}
- _onMessageReceived(message) {
+ _onMessageReceived(message: Gst.Message): void {
switch (message.type) {
case Gst.MessageType.ELEMENT: {
if (GstPbutils.is_missing_plugin_message(message)) {
let detail = GstPbutils.missing_plugin_message_get_installer_detail(message);
let description = GstPbutils.missing_plugin_message_get_description(message);
- // @ts-expect-error
log(`Detail: ${detail}\nDescription: ${description}`);
break;
}
let s = message.get_structure();
if (s && s.has_name('level')) {
- const peakVal = s.get_value('peak');
+ const peakVal = s.get_value('peak') as unknown as GObject.ValueArray;
if (peakVal)
- this.current_peak = peakVal.get_nth(0);
+ this.current_peak = peakVal.get_nth(0) as number;
}
break;
}
@@ -203,22 +217,20 @@ export const Recorder = GObject.registerClass({
this.stop();
break;
case Gst.MessageType.WARNING:
- // @ts-expect-error
log(message.parse_warning()[0].toString());
break;
case Gst.MessageType.ERROR:
- // @ts-expect-error
log(message.parse_error().toString());
break;
}
}
- _getChannel() {
+ _getChannel(): number {
let channelIndex = Settings.get_enum('audio-channel');
return AudioChannels[channelIndex].channels;
}
- _getProfile() {
+ _getProfile(): GstPbutils.EncodingContainerProfile {
let profileIndex = Settings.get_enum('audio-profile');
const profile = EncodingProfiles[profileIndex];
@@ -233,17 +245,17 @@ export const Recorder = GObject.registerClass({
return containerProfile;
}
- get duration() {
+ get duration(): number {
return this._duration;
}
// eslint-disable-next-line camelcase
- get current_peak() {
+ get current_peak(): number {
return this._current_peak;
}
// eslint-disable-next-line camelcase
- set current_peak(peak) {
+ set current_peak(peak: number) {
if (peak > 0)
peak = 0;
@@ -252,21 +264,20 @@ export const Recorder = GObject.registerClass({
this.notify('current-peak');
}
- set duration(val) {
+ set duration(val: number) {
this._duration = val;
this.notify('duration');
}
- get state() {
+ get state(): Gst.State {
return this._pipeState;
}
- set state(s) {
+ set state(s: Gst.State) {
this._pipeState = s;
const ret = this.pipeline.set_state(this._pipeState);
if (ret === Gst.StateChangeReturn.FAILURE)
- // @ts-expect-error
log('Unable to update the recorder pipeline state');
}
diff --git a/src/recorderWidget.js b/src/recorderWidget.ts
similarity index 64%
rename from src/recorderWidget.js
rename to src/recorderWidget.ts
index f493595..dd3da79 100644
--- a/src/recorderWidget.js
+++ b/src/recorderWidget.ts
@@ -4,14 +4,17 @@ import GObject from 'gi://GObject';
import Gtk from 'gi://Gtk?version=4.0';
import { formatTime } from './utils.js';
-import { WaveForm, WaveType } from './waveform.js';
+import { WaveForm, WaveFormClass, WaveType } from './waveform.js';
+import { RecorderClass } from './recorder.js';
-var RecorderState = {
- RECORDING: 0,
- PAUSED: 1,
- STOPPED: 2,
+enum RecorderState {
+ Recording,
+ Paused,
+ Stopped,
};
+export type RecorderWidgetClass = InstanceType<typeof RecorderWidget>;
+
export const RecorderWidget = GObject.registerClass({
Template: 'resource:///org/gnome/SoundRecorder/ui/recorder.ui',
InternalChildren: [
@@ -26,25 +29,24 @@ export const RecorderWidget = GObject.registerClass({
'stopped': { param_types: [GObject.TYPE_OBJECT] },
},
}, class RecorderWidget extends Gtk.Box {
- // @ts-ignore
- /** @type {Gtk.Box} */ _recorderBox = this._recorderBox;
- // @ts-ignore
- /** @type {Gtk.Stack} */ _playbackStack = this._playbackStack;
- // @ts-ignore
- /** @type {Gtk.Label} */ _recorderTime = this._recorderTime;
- // @ts-ignore
- /** @type {Gtk.Button} */ _pauseBtn = this._pauseBtn;
- // @ts-ignore
- /** @type {Gtk.Button} */ _resumeBtn = this._resumeBtn;
-
- _init(recorder) {
+ _recorderBox!: Gtk.Box;
+ _playbackStack!: Gtk.Stack;
+ _recorderTime!: Gtk.Label;
+ _pauseBtn!: Gtk.Button;
+ _resumeBtn!: Gtk.Button;
+
+ recorder: RecorderClass;
+ waveform: WaveFormClass;
+ actionsGroup: Gio.SimpleActionGroup;
+
+ _init(recorder: RecorderClass): void {
super._init({});
this.recorder = recorder;
this.waveform = new WaveForm({
vexpand: true,
valign: Gtk.Align.FILL,
- }, WaveType.RECORDER);
+ }, WaveType.Recorder);
this._recorderBox.prepend(this.waveform);
this.recorder.bind_property('current-peak', this.waveform, 'peak', GObject.BindingFlags.SYNC_CREATE
| GObject.BindingFlags.DEFAULT);
@@ -74,31 +76,31 @@ export const RecorderWidget = GObject.registerClass({
startAction.bind_property('enabled', cancelAction, 'enabled', GObject.BindingFlags.INVERT_BOOLEAN);
}
- onPause() {
+ onPause(): void {
this._playbackStack.visible_child_name = 'recorder-start';
- this.state = RecorderState.PAUSED;
+ this.state = RecorderState.Paused;
this.recorder.pause();
this.emit('paused');
}
- onResume() {
+ onResume(): void {
this._playbackStack.visible_child_name = 'recorder-pause';
- this.state = RecorderState.RECORDING;
+ this.state = RecorderState.Recording;
this.recorder.resume();
this.emit('resumed');
}
- onStart() {
+ onStart(): void {
this._playbackStack.visible_child_name = 'recorder-pause';
- this.state = RecorderState.RECORDING;
+ this.state = RecorderState.Recording;
this.recorder.start();
this.emit('started');
}
- onCancel() {
+ onCancel(): void {
this.onPause();
let dialog = new Gtk.MessageDialog({
modal: true,
@@ -114,14 +116,12 @@ export const RecorderWidget = GObject.registerClass({
dialog.add_button(_('Delete'), Gtk.ResponseType.YES)
.add_css_class('destructive-action');
- // @ts-expect-error
- dialog.set_transient_for(Gio.Application.get_default().get_active_window());
- dialog.connect('response', (_, response) => {
+ dialog.set_transient_for(this.root as Gtk.Window);
+ dialog.connect('response', (_, response: number) => {
switch (response) {
case Gtk.ResponseType.YES: {
const recording = this.recorder.stop();
- this.state = RecorderState.STOPPED;
- this.waveform.destroy();
+ this.state = RecorderState.Stopped;
recording.delete();
this.emit('canceled');
@@ -138,45 +138,39 @@ export const RecorderWidget = GObject.registerClass({
dialog.show();
}
- onStop() {
- this.state = RecorderState.STOPPED;
+ onStop(): void {
+ this.state = RecorderState.Stopped;
const recording = this.recorder.stop();
this.waveform.destroy();
this.emit('stopped', recording);
}
- // @ts-ignore
- set state(recorderState) {
+ set state(recorderState: RecorderState) {
+ let pauseAction = this.actionsGroup.lookup('pause') as Gio.SimpleAction;
+ let resumeAction = this.actionsGroup.lookup('resume') as Gio.SimpleAction;
+ let startAction = this.actionsGroup.lookup('start') as Gio.SimpleAction;
+ let stopAction = this.actionsGroup.lookup('stop') as Gio.SimpleAction;
+
switch (recorderState) {
- case RecorderState.PAUSED:
- // @ts-expect-error
- this.actionsGroup.lookup('pause').enabled = false;
- // @ts-expect-error
- this.actionsGroup.lookup('resume').enabled = true;
+ case RecorderState.Paused:
+ pauseAction.enabled = false;
+ resumeAction.enabled = true;
this._resumeBtn.grab_focus();
this._recorderTime.add_css_class('paused');
break;
- case RecorderState.RECORDING:
- // @ts-expect-error
- this.actionsGroup.lookup('start').enabled = false;
- // @ts-expect-error
- this.actionsGroup.lookup('stop').enabled = true;
- // @ts-expect-error
- this.actionsGroup.lookup('resume').enabled = false;
- // @ts-expect-error
- this.actionsGroup.lookup('pause').enabled = true;
+ case RecorderState.Recording:
+ startAction.enabled = false;
+ stopAction.enabled = true;
+ resumeAction.enabled = false;
+ pauseAction.enabled = true;
this._pauseBtn.grab_focus();
this._recorderTime.remove_css_class('paused');
break;
- case RecorderState.STOPPED:
- // @ts-expect-error
- this.actionsGroup.lookup('start').enabled = true;
- // @ts-expect-error
- this.actionsGroup.lookup('stop').enabled = false;
- // @ts-expect-error
- this.actionsGroup.lookup('pause').enabled = false;
- // @ts-expect-error
- this.actionsGroup.lookup('resume').enabled = false;
+ case RecorderState.Stopped:
+ startAction.enabled = true;
+ stopAction.enabled = false;
+ pauseAction.enabled = false;
+ resumeAction.enabled = false;
break;
}
}
diff --git a/src/recording.js b/src/recording.ts
similarity index 77%
rename from src/recording.js
rename to src/recording.ts
index 91ec940..9df4ace 100644
--- a/src/recording.js
+++ b/src/recording.ts
@@ -5,9 +5,11 @@ import GObject from 'gi://GObject';
import Gst from 'gi://Gst';
import GstPbutils from 'gi://GstPbutils';
-import { CacheDir } from './application.js';
+import { CacheDir } from './application.js'
import { EncodingProfiles } from './recorder.js';
+export type RecordingClass = InstanceType<typeof Recording>;
+
export const Recording = GObject.registerClass({
Signals: {
'peaks-updated': {},
@@ -26,9 +28,19 @@ export const Recording = GObject.registerClass({
null),
},
}, class Recording extends GObject.Object {
- _init(file) {
+ _file: Gio.File;
+ _peaks: number[];
+ _loadedPeaks: number[];
+ _extension: string;
+ _timeModified: GLib.DateTime;
+ _timeCreated: GLib.DateTime;
+ _duration: number;
+
+ pipeline: Gst.Bin;
+
+ _init(file: Gio.File): void {
this._file = file;
- this._peaks = [];
+ this._peaks = []
this._loadedPeaks = [];
super._init({});
@@ -58,91 +70,88 @@ export const Recording = GObject.registerClass({
discoverer.discover_uri_async(this.uri);
}
- get name() {
+ get name(): string {
return this._file.get_basename();
}
- set name(filename) {
+ set name(filename: string) {
if (filename && filename !== this.name) {
this._file = this._file.set_display_name(filename, null);
this.notify('name');
}
}
- get extension() {
+ get extension(): string {
return this._extension;
}
- get timeModified() {
+ get timeModified(): GLib.DateTime {
return this._timeModified;
}
- get timeCreated() {
+ get timeCreated(): GLib.DateTime {
return this._timeCreated;
}
- get duration() {
+ get duration(): number {
if (this._duration)
return this._duration;
else
return 0;
}
- get file() {
+ get file(): Gio.File {
return this._file;
}
- get uri() {
+ get uri(): string {
return this._file.get_uri();
}
// eslint-disable-next-line camelcase
- set peaks(data) {
+ set peaks(data: number[]) {
if (data.length > 0) {
this._peaks = data;
this.emit('peaks-updated');
- // @ts-expect-error
- const buffer = new GLib.Bytes(JSON.stringify(data));
- this.waveformCache.replace_contents_bytes_async(buffer, null, false,
Gio.FileCreateFlags.REPLACE_DESTINATION, null, (obj, res) => {
+ let enc = new TextEncoder();
+ const buffer = new GLib.Bytes(enc.encode(JSON.stringify(data)));
+ this.waveformCache.replace_contents_bytes_async(buffer, null, false,
Gio.FileCreateFlags.REPLACE_DESTINATION, null, (obj: Gio.File, res: Gio.AsyncResult) => {
obj.replace_contents_finish(res);
});
}
}
// eslint-disable-next-line camelcase
- get peaks() {
+ get peaks(): number[] {
return this._peaks;
}
- delete() {
+ delete(): void {
this._file.trash_async(GLib.PRIORITY_HIGH, null, null);
this.waveformCache.trash_async(GLib.PRIORITY_DEFAULT, null, null);
}
- save(dest) {
- this.file.copy_async(dest,
- Gio.FileCreateFlags.NONE, GLib.PRIORITY_DEFAULT, null, null, (obj, res) => {
+ save(dest: Gio.File): void {
+ this.file.copy_async(dest, // @ts-expect-error
+ Gio.FileCreateFlags.NONE, GLib.PRIORITY_DEFAULT, null, null, (obj: Gio.File, res:
Gio.AsyncResult) => {
if (obj.copy_finish(res))
- // @ts-expect-error
log('Exporting file: done');
});
}
- get waveformCache() {
+ get waveformCache(): Gio.File {
return CacheDir.get_child(`${this.name}_data`);
}
- loadPeaks() {
+ loadPeaks(): void {
if (this.waveformCache.query_exists(null)) {
- this.waveformCache.load_bytes_async(null, (obj, res) => {
+ this.waveformCache.load_bytes_async(null, (obj: Gio.File, res: Gio.AsyncResult) => {
const bytes = obj.load_bytes_finish(res)[0];
try {
- // @ts-expect-error
let decoder = new TextDecoder('utf-8');
this._peaks = JSON.parse(decoder.decode(bytes.get_data()));
this.emit('peaks-updated');
} catch (error) {
- // @ts-expect-error
log(`Error reading waveform data file: ${this.name}_data`);
}
});
@@ -152,15 +161,13 @@ export const Recording = GObject.registerClass({
}
}
- generatePeaks() {
- this.pipeline = Gst.parse_launch('uridecodebin name=uridecodebin ! audioconvert !
audio/x-raw,channels=1 ! level name=level ! fakesink name=faked');
+ generatePeaks(): void {
+ this.pipeline = Gst.parse_launch('uridecodebin name=uridecodebin ! audioconvert !
audio/x-raw,channels=1 ! level name=level ! fakesink name=faked') as Gst.Bin;
- // @ts-expect-error
let uridecodebin = this.pipeline.get_by_name('uridecodebin');
uridecodebin.set_property('uri', this.uri);
- // @ts-expect-error
let fakesink = this.pipeline.get_by_name('faked');
fakesink.set_property('qos', false);
fakesink.set_property('sync', true);
@@ -169,17 +176,16 @@ export const Recording = GObject.registerClass({
this.pipeline.set_state(Gst.State.PLAYING);
bus.add_signal_watch();
- bus.connect('message', (_bus, message) => {
- let s;
+ bus.connect('message', (_bus: Gst.Bus, message: Gst.Message) => {
+ let s: Gst.Structure;
switch (message.type) {
case Gst.MessageType.ELEMENT:
s = message.get_structure();
if (s && s.has_name('level')) {
- const peakVal = s.get_value('peak');
+ const peakVal = s.get_value('peak') as unknown as GObject.ValueArray;
if (peakVal) {
- // @ts-expect-error
- const peak = peakVal.get_nth(0);
+ const peak = peakVal.get_nth(0) as number;
this._loadedPeaks.push(Math.pow(10, peak / 20));
}
}
diff --git a/src/recordingList.js b/src/recordingList.ts
similarity index 84%
rename from src/recordingList.js
rename to src/recordingList.ts
index d590782..5a3d614 100644
--- a/src/recordingList.js
+++ b/src/recordingList.ts
@@ -4,10 +4,17 @@ import GLib from 'gi://GLib';
import GObject from 'gi://GObject';
import { RecordingsDir } from './application.js';
-import { Recording } from './recording.js';
+import { Recording, RecordingClass } from './recording.js';
+
+export type RecordingListClass = InstanceType<typeof RecordingList>;
export const RecordingList = GObject.registerClass(class RecordingList extends Gio.ListStore {
- _init() {
+ _enumerator: Gio.FileEnumerator;
+
+ cancellable: Gio.Cancellable;
+ dirMonitor: Gio.FileMonitor;
+
+ _init(): void {
super._init({ });
this.cancellable = new Gio.Cancellable();
@@ -38,7 +45,7 @@ export const RecordingList = GObject.registerClass(class RecordingList extends G
this.copyOldFiles();
}
- copyOldFiles() {
+ copyOldFiles(): void {
// Necessary code to move old recordings into the new location for few releases
// FIXME: Remove by 3.40/3.42
const oldDir = Gio.file_new_for_path(GLib.build_filenamev([GLib.get_home_dir(), _('Recordings')]));
@@ -49,29 +56,26 @@ export const RecordingList = GObject.registerClass(class RecordingList extends G
const fileEnumerator = oldDir.enumerate_children('standard::name',
Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, this.cancellable);
let allCopied = true;
- const copyFiles = function (obj, res) {
+ const copyFiles = function (obj: Gio.FileEnumerator, res: Gio.AsyncResult) {
try {
const fileInfos = obj.next_files_finish(res);
if (fileInfos.length) {
- fileInfos.forEach(info => {
+ fileInfos.forEach((info: Gio.FileInfo) => {
const name = info.get_name();
const src = oldDir.get_child(name);
/* Translators: ""%s (Old)"" is the new name assigned to a file moved from
the old recordings location */
- // @ts-expect-error
const dest = RecordingsDir.get_child(_('%s (Old)').format(name));
// @ts-expect-error
- src.copy_async(dest, Gio.FileCopyFlags.OVERWRITE, GLib.PRIORITY_LOW,
this.cancellable, null, (objCopy, resCopy) => {
+ src.copy_async(dest, Gio.FileCopyFlags.OVERWRITE, GLib.PRIORITY_LOW,
this.cancellable, null, (objCopy: Gio.File, resCopy: Gio.AsyncResult) => {
try {
objCopy.copy_finish(resCopy);
objCopy.trash_async(GLib.PRIORITY_LOW, this.cancellable, null);
this.dirMonitor.emit_event(dest, src, Gio.FileMonitorEvent.MOVED_IN);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
- // @ts-expect-error
console.error(`Failed to copy recording ${name} to the new location`);
- // @ts-expect-error
log(e);
}
allCopied = false;
@@ -83,13 +87,11 @@ export const RecordingList = GObject.registerClass(class RecordingList extends G
} else {
fileEnumerator.close(this.cancellable);
if (allCopied) {
- oldDir.delete_async(GLib.PRIORITY_LOW, this.cancellable, (objDelete, resDelete) => {
+ oldDir.delete_async(GLib.PRIORITY_LOW, this.cancellable, (objDelete: Gio.File,
resDelete: Gio.AsyncResult) => {
try {
objDelete.delete_finish(resDelete);
} catch (e) {
- // @ts-expect-error
log('Failed to remove the old Recordings directory. Ignore if you\'re using
flatpak');
- // @ts-expect-error
log(e);
}
});
@@ -97,7 +99,6 @@ export const RecordingList = GObject.registerClass(class RecordingList extends G
}
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
- // @ts-expect-error
console.error(`Failed to copy old recordings ${e}`);
}
@@ -105,17 +106,16 @@ export const RecordingList = GObject.registerClass(class RecordingList extends G
fileEnumerator.next_files_async(5, GLib.PRIORITY_LOW, this.cancellable, copyFiles);
}
- _enumerateDirectory(obj, res) {
+ _enumerateDirectory(obj: Gio.File, res: Gio.AsyncResult): void {
this._enumerator = obj.enumerate_children_finish(res);
if (this._enumerator === null) {
- // @ts-expect-error
log('The contents of the Recordings directory were not indexed.');
return;
}
this._enumerator.next_files_async(5, GLib.PRIORITY_LOW, this.cancellable,
this._onNextFiles.bind(this));
}
- _onNextFiles(obj, res) {
+ _onNextFiles(obj: Gio.FileEnumerator, res: Gio.AsyncResult): void {
try {
let fileInfos = obj.next_files_finish(res);
if (fileInfos.length) {
@@ -130,27 +130,25 @@ export const RecordingList = GObject.registerClass(class RecordingList extends G
}
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
- // @ts-expect-error
console.error(`Failed to load recordings ${e}`);
}
}
- getIndex(file) {
+ getIndex(file: Gio.File): number {
for (let i = 0; i < this.get_n_items(); i++) {
- // @ts-expect-error
- if (this.get_item(i).uri === file.get_uri())
+ let item = this.get_item(i) as RecordingClass;
+ if (item.uri === file.get_uri())
return i;
}
return -1;
}
- sortedInsert(recording) {
+ sortedInsert(recording: RecordingClass): void {
let added = false;
for (let i = 0; i < this.get_n_items(); i++) {
- const curr = this.get_item(i);
- // @ts-expect-error
+ const curr = this.get_item(i) as RecordingClass;
if (curr.timeModified.difference(recording.timeModified) <= 0) {
this.insert(i, recording);
added = true;
diff --git a/src/recordingListWidget.js b/src/recordingListWidget.ts
similarity index 76%
rename from src/recordingListWidget.js
rename to src/recordingListWidget.ts
index 7166d8d..b8a40ac 100644
--- a/src/recordingListWidget.js
+++ b/src/recordingListWidget.ts
@@ -4,15 +4,24 @@ import GObject from 'gi://GObject'
import Gst from 'gi://Gst'
import GstPlayer from 'gi://GstPlayer'
import Gtk from 'gi://Gtk?version=4.0'
+import Gio from 'gi://Gio';
-import { Row, RowState } from './row.js';
+import { Row, RowClass, RowState } from './row.js';
+import { RecordingClass } from './recording.js';
+
+export type RecordingsListWidgetClass = InstanceType<typeof RecordingsListWidget>;
export const RecordingsListWidget = GObject.registerClass({
Signals: {
'row-deleted': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] },
},
}, class RecordingsListWidget extends Adw.Bin {
- _init(model, player) {
+ _player: GstPlayer.Player;
+ list: Gtk.ListBox;
+ activeRow: RowClass;
+ activePlayingRow: RowClass;
+
+ _init(model: Gio.ListModel, player: GstPlayer.Player): void {
super._init();
this.list = Gtk.ListBox.new();
this.list.valign = Gtk.Align.START;
@@ -26,21 +35,23 @@ export const RecordingsListWidget = GObject.registerClass({
this.set_child(this.list);
this._player = player;
- this._player.connect('state-changed', (_player, state) => {
+ this._player.connect('state-changed', (_player: GstPlayer.Player, state: GstPlayer.PlayerState) => {
if (state === GstPlayer.PlayerState.STOPPED && this.activePlayingRow) {
- this.activePlayingRow.state = RowState.PAUSED;
+ this.activePlayingRow.state = RowState.Paused;
this.activePlayingRow.waveform.position = 0.0;
} else if (state === GstPlayer.PlayerState.PLAYING) {
- this.activePlayingRow.state = RowState.PLAYING;
+ this.activePlayingRow.state = RowState.Playing;
}
});
- this._player.connect('position-updated', (_player, pos) => {
- const duration = this.activePlayingRow._recording.duration;
- this.activePlayingRow.waveform.position = pos / duration;
+ this._player.connect('position-updated', (_player: GstPlayer.Player, pos: number) => {
+ if (this.activePlayingRow) {
+ const duration = this.activePlayingRow._recording.duration;
+ this.activePlayingRow.waveform.position = pos / duration;
+ }
});
- this.list.bind_model(model, recording => {
+ this.list.bind_model(model, (recording: RecordingClass) => {
let row = new Row(recording);
row.waveform.connect('gesture-pressed', _ => {
@@ -50,7 +61,6 @@ export const RecordingsListWidget = GObject.registerClass({
this.activePlayingRow.waveform.position = 0.0;
this.activePlayingRow = row;
- // @ts-expect-error
this._player.set_uri(recording.uri);
}
});
@@ -59,16 +69,14 @@ export const RecordingsListWidget = GObject.registerClass({
this._player.seek(_position * row._recording.duration);
});
- row.connect('play', _row => {
+ row.connect('play', (_row: RowClass) => {
if (this.activePlayingRow) {
if (this.activePlayingRow !== _row) {
- this.activePlayingRow.state = RowState.PAUSED;
+ this.activePlayingRow.state = RowState.Paused;
this.activePlayingRow.waveform.position = 0.0;
- // @ts-expect-error
this._player.set_uri(recording.uri);
}
} else {
- // @ts-expect-error
this._player.set_uri(recording.uri);
}
@@ -76,16 +84,16 @@ export const RecordingsListWidget = GObject.registerClass({
this._player.play();
});
- row.connect('pause', _row => {
+ row.connect('pause', (_row: RowClass) => {
this._player.pause();
});
- row.connect('seek-backward', _row => {
+ row.connect('seek-backward', (_row: RowClass) => {
let position = this._player.position - 10 * Gst.SECOND;
position = position < 0 || position > _row._recording.duration ? 0 : position;
this._player.seek(position);
});
- row.connect('seek-forward', _row => {
+ row.connect('seek-forward', (_row: RowClass) => {
let position = this._player.position + 10 * Gst.SECOND;
position = position < 0 || position > _row._recording.duration ? 0 : position;
this._player.seek(position);
@@ -111,7 +119,7 @@ export const RecordingsListWidget = GObject.registerClass({
this.list.connect('row-activated', this.rowActivated.bind(this));
}
- rowActivated(list, row) {
+ rowActivated(_list: Gtk.ListBox, row: RowClass): void {
if (row.editMode && row.expanded || this.activeRow && this.activeRow.editMode &&
this.activeRow.expanded)
return;
@@ -125,7 +133,7 @@ export const RecordingsListWidget = GObject.registerClass({
this.activeRow = row;
}
- isolateAt(index, expanded) {
+ isolateAt(index: number, expanded: boolean): void {
const before = this.list.get_row_at_index(index - 1);
const current = this.list.get_row_at_index(index);
const after = this.list.get_row_at_index(index + 1);
diff --git a/src/row.js b/src/row.ts
similarity index 69%
rename from src/row.js
rename to src/row.ts
index 18e928a..4ab6cc1 100644
--- a/src/row.js
+++ b/src/row.ts
@@ -4,14 +4,17 @@ import Gio from 'gi://Gio'
import GObject from 'gi://GObject'
import Gtk from 'gi://Gtk?version=4.0'
+import { RecordingClass } from './recording.js';
import { displayDateTime, formatTime } from './utils.js';
-import { WaveForm, WaveType } from './waveform.js';
+import { WaveForm, WaveFormClass, WaveType } from './waveform.js';
-export const RowState = {
- PLAYING: 0,
- PAUSED: 1,
+export enum RowState {
+ Playing,
+ Paused,
};
+export type RowClass = InstanceType<typeof Row>;
+
export const Row = GObject.registerClass({
Template: 'resource:///org/gnome/SoundRecorder/ui/row.ui',
InternalChildren: [
@@ -34,34 +37,36 @@ export const Row = GObject.registerClass({
false),
},
}, class Row extends Gtk.ListBoxRow {
- // @ts-ignore
- /** @type {Gtk.Stack} */ _playbackStack = this._playbackStack;
- // @ts-ignore
- /** @type {Gtk.Stack} */ _mainStack = this._mainStack;
- // @ts-ignore
- /** @type {Gtk.Stack} */ _waveformStack = this._waveformStack;
- // @ts-ignore
- /** @type {Gtk.Stack} */ _rightStack = this._rightStack;
- // @ts-ignore
- /** @type {Gtk.Label} */ _name = this._name;
- // @ts-ignore
- /** @type {Gtk.Entry} */ _entry = this._entry;
- // @ts-ignore
- /** @type {Gtk.Label} */ _date = this._date;
- // @ts-ignore
- /** @type {Gtk.Label} */ _duration = this._duration;
- // @ts-ignore
- /** @type {Gtk.Revealer} */ _revealer = this._revealer;
- // @ts-ignore
- /** @type {Gtk.Box} */ _playbackControls = this._playbackControls;
- // @ts-ignore
- /** @type {Gtk.Button} */ _saveBtn = this._saveBtn;
- // @ts-ignore
- /** @type {Gtk.Button} */ _playBtn = this._playBtn;
- // @ts-ignore
- /** @type {Gtk.Button} */ _pauseBtn= this._pauseBtn;
-
- _init(recording) {
+ _playbackStack!: Gtk.Stack;
+ _mainStack!: Gtk.Stack;
+ _waveformStack!: Gtk.Stack;
+ _rightStack!: Gtk.Stack;
+ _name!: Gtk.Label;
+ _entry!: Gtk.Entry;
+ _date: Gtk.Label;
+ _duration: Gtk.Label;
+ _revealer: Gtk.Revealer;
+ _playbackControls: Gtk.Box;
+ _saveBtn: Gtk.Button;
+ _playBtn: Gtk.Button;
+ _pauseBtn: Gtk.Button;
+
+ _recording: RecordingClass;
+ _expanded: boolean;
+ _editMode: boolean;
+ _state: RowState;
+
+ waveform: WaveFormClass;
+ actionGroup: Gio.SimpleActionGroup;
+ exportDialog: Gtk.FileChooserNative;
+
+ saveRenameAction: Gio.SimpleAction;
+ renameAction: Gio.SimpleAction;
+ pauseAction: Gio.SimpleAction;
+ playAction: Gio.SimpleAction;
+ keyController: Gtk.EventControllerKey;
+
+ _init(recording: RecordingClass): void {
this._recording = recording;
this._expanded = false;
this._editMode = false;
@@ -71,7 +76,7 @@ export const Row = GObject.registerClass({
this.waveform = new WaveForm({
margin_top: 18,
height_request: 60,
- }, WaveType.PLAYER);
+ }, WaveType.Player);
this._waveformStack.add_named(this.waveform, 'wave');
if (this._recording._peaks.length > 0) {
@@ -81,10 +86,10 @@ export const Row = GObject.registerClass({
this._recording.loadPeaks();
}
- if (recording.timeCreated > 0)
- this._date.label = displayDateTime(recording.timeCreated);
- else
+ if (recording.timeModified !== null && !recording.timeModified.equal(recording.timeCreated))
this._date.label = displayDateTime(recording.timeModified);
+ else
+ this._date.label = displayDateTime(recording.timeCreated);
recording.bind_property('name', this._name, 'label', GObject.BindingFlags.SYNC_CREATE |
GObject.BindingFlags.DEFAULT);
recording.bind_property('name', this._entry, 'text', GObject.BindingFlags.SYNC_CREATE |
GObject.BindingFlags.DEFAULT);
@@ -94,11 +99,10 @@ export const Row = GObject.registerClass({
let exportAction = new Gio.SimpleAction({ name: 'export' });
exportAction.connect('activate', () => {
- // @ts-expect-error
- const window = Gio.Application.get_default().get_active_window();
+ const window = this.root as Gtk.Window;
this.exportDialog = Gtk.FileChooserNative.new(_('Export Recording'), window,
Gtk.FileChooserAction.SAVE, _('_Export'), _('_Cancel'));
this.exportDialog.set_current_name(`${this._recording.name}.${this._recording.extension}`);
- this.exportDialog.connect('response', (_dialog, response) => {
+ this.exportDialog.connect('response', (_dialog: Gtk.FileChooserNative, response: number) => {
if (response === Gtk.ResponseType.ACCEPT) {
const dest = this.exportDialog.get_file();
this._recording.save(dest);
@@ -115,26 +119,26 @@ export const Row = GObject.registerClass({
this.actionGroup.add_action(this.saveRenameAction);
this.renameAction = new Gio.SimpleAction({ name: 'rename', enabled: true });
- this.renameAction.connect('activate', action => {
+ this.renameAction.connect('activate', (action: Gio.SimpleAction) => {
this.editMode = true;
action.enabled = false;
});
this.renameAction.bind_property('enabled', this.saveRenameAction, 'enabled',
GObject.BindingFlags.INVERT_BOOLEAN);
this.actionGroup.add_action(this.renameAction);
- let pauseAction = new Gio.SimpleAction({ name: 'pause', enabled: false });
- pauseAction.connect('activate', () => {
+ this.pauseAction = new Gio.SimpleAction({ name: 'pause', enabled: false });
+ this.pauseAction.connect('activate', () => {
this.emit('pause');
- this.state = RowState.PAUSED;
+ this.state = RowState.Paused;
});
- this.actionGroup.add_action(pauseAction);
+ this.actionGroup.add_action(this.pauseAction);
- let playAction = new Gio.SimpleAction({ name: 'play', enabled: true });
- playAction.connect('activate', () => {
+ this.playAction = new Gio.SimpleAction({ name: 'play', enabled: true });
+ this.playAction.connect('activate', () => {
this.emit('play', this._recording.uri);
- this.state = RowState.PLAYING;
+ this.state = RowState.Playing;
});
- this.actionGroup.add_action(playAction);
+ this.actionGroup.add_action(this.playAction);
let deleteAction = new Gio.SimpleAction({ name: 'delete' });
deleteAction.connect('activate', () => {
@@ -143,8 +147,7 @@ export const Row = GObject.registerClass({
this.actionGroup.add_action(deleteAction);
let seekBackAction = new Gio.SimpleAction({ name: 'seek-backward' });
- seekBackAction.connect('activate', () => {
- this.emit('seek-backward');
+ seekBackAction.connect('activate', () => { _state: RowState;
});
this.actionGroup.add_action(seekBackAction);
@@ -157,12 +160,11 @@ export const Row = GObject.registerClass({
this.insert_action_group('recording', this.actionGroup);
this.waveform.connect('gesture-pressed', _ => {
- pauseAction.activate(null);
+ this.pauseAction.activate(null);
});
this.keyController = Gtk.EventControllerKey.new();
- // @ts-ignore
- this.keyController.connect('key-pressed', (controller, key, _code, _state) => {
+ this.keyController.connect('key-pressed', (_controller: Gtk.EventControllerKey, key: number, _code:
number, _state: Gdk.ModifierType) => {
this._entry.remove_css_class('error');
if (key === Gdk.KEY_Escape)
@@ -174,7 +176,7 @@ export const Row = GObject.registerClass({
this.saveRenameAction.activate(null);
});
- this._recording.connect('peaks-updated', _recording => {
+ this._recording.connect('peaks-updated', (_recording: RecordingClass) => {
this._waveformStack.visible_child_name = 'wave';
this.waveform.peaks = _recording.peaks;
});
@@ -194,7 +196,7 @@ export const Row = GObject.registerClass({
});
}
- onRenameRecording() {
+ onRenameRecording(): void {
try {
if (this._name.label !== this._entry.text)
this._recording.name = this._entry.text;
@@ -207,7 +209,7 @@ export const Row = GObject.registerClass({
}
}
- set editMode(state) {
+ set editMode(state: boolean) {
this._mainStack.visible_child_name = state ? 'edit' : 'display';
this._editMode = state;
@@ -223,49 +225,46 @@ export const Row = GObject.registerClass({
}
for (const action of this.actionGroup.list_actions()) {
- if (action !== 'save')
- // @ts-expect-error
- this.actionGroup.lookup(action).enabled = !state;
+ if (action !== 'save') {
+ let someAction = this.actionGroup.lookup(action) as Gio.SimpleAction;
+ someAction.enabled = !state;
+ }
}
}
- get editMode() {
+ get editMode(): boolean {
return this._editMode;
}
- set expanded(state) {
+ set expanded(state: boolean) {
this._expanded = state;
this.notify('expanded');
}
- get expanded() {
+ get expanded(): boolean {
return this._expanded;
}
- set state(rowState) {
+ set state(rowState: RowState) {
this._state = rowState;
switch (rowState) {
- case RowState.PLAYING:
- // @ts-expect-error
- this.actionGroup.lookup('play').enabled = false;
- // @ts-expect-error
- this.actionGroup.lookup('pause').enabled = true;
+ case RowState.Playing:
+ this.playAction.enabled = false;
+ this.pauseAction.enabled = true;
this._playbackStack.visible_child_name = 'pause';
this._pauseBtn.grab_focus();
break;
- case RowState.PAUSED:
- // @ts-expect-error
- this.actionGroup.lookup('play').enabled = true;
- // @ts-expect-error
- this.actionGroup.lookup('pause').enabled = false;
+ case RowState.Paused:
+ this.playAction.enabled = true;
+ this.pauseAction.enabled = false;
this._playbackStack.visible_child_name = 'play';
this._playBtn.grab_focus();
break;
}
}
- get state() {
+ get state(): RowState {
return this._state;
}
});
diff --git a/src/utils.js b/src/utils.ts
similarity index 89%
rename from src/utils.js
rename to src/utils.ts
index 468040a..3fb7d5a 100644
--- a/src/utils.js
+++ b/src/utils.ts
@@ -22,12 +22,10 @@ import Gettext from 'gettext'
import GLib from 'gi://GLib'
import Gst from 'gi://Gst'
-export const formatTime = nanoSeconds => {
- // @ts-expect-error
- const time = new Date(0, 0, 0, 0, 0, 0, parseInt(nanoSeconds / Gst.MSECOND));
+export const formatTime = (nanoSeconds: number) => {
+ const time = new Date(0, 0, 0, 0, 0, 0, nanoSeconds / Gst.MSECOND);
- // @ts-expect-error
- const miliseconds = parseInt(time.getMilliseconds() / 100).toString();
+ const miliseconds = (time.getMilliseconds() / 100).toString();
const seconds = time.getSeconds().toString().padStart(2, '0');
const minutes = time.getMinutes().toString().padStart(2, '0');
const hours = time.getHours().toString().padStart(2, '0');
@@ -36,7 +34,7 @@ export const formatTime = nanoSeconds => {
return `${hours} ∶ ${minutes} ∶ ${seconds} . <small>${miliseconds}</small>`;
};
-export const displayDateTime = time => {
+export const displayDateTime = (time: GLib.DateTime) => {
const DAY = 86400000000;
const now = GLib.DateTime.new_now_local();
const difference = now.difference(time);
diff --git a/src/waveform.js b/src/waveform.ts
similarity index 82%
rename from src/waveform.js
rename to src/waveform.ts
index c4976e5..e1cc860 100644
--- a/src/waveform.js
+++ b/src/waveform.ts
@@ -25,16 +25,20 @@
import Adw from 'gi://Adw';
import GObject from 'gi://GObject';
+import Gdk from 'gi://Gdk?version=4.0';
import Gtk from 'gi://Gtk?version=4.0';
-import * as Cairo from 'cairo';
+// @ts-expect-error
+import Cairo from 'cairo';
-export const WaveType = {
- RECORDER: 0,
- PLAYER: 1,
+export enum WaveType {
+ Recorder,
+ Player,
};
const GUTTER = 4;
+export type WaveFormClass = InstanceType<typeof WaveForm>;
+
export const WaveForm = GObject.registerClass({
Properties: {
'position': GObject.ParamSpec.float(
@@ -53,14 +57,23 @@ export const WaveForm = GObject.registerClass({
'gesture-pressed': {},
},
}, class WaveForm extends Gtk.DrawingArea {
- _init(params, type) {
+ _peaks: number[];
+ _position: number;
+ _dragGesture: Gtk.GestureDrag;
+ _hcId: number;
+ _lastX: number;
+
+ lastPosition: number;
+ waveType: WaveType;
+
+ _init(params, type: WaveType): void {
this._peaks = [];
this._position = 0;
this.lastPosition = 0;
this.waveType = type;
super._init(params);
- if (this.waveType === WaveType.PLAYER) {
+ if (this.waveType === WaveType.Player) {
this._dragGesture = Gtk.GestureDrag.new();
this._dragGesture.connect('drag-begin', this.dragBegin.bind(this));
this._dragGesture.connect('drag-update', this.dragUpdate.bind(this));
@@ -75,22 +88,22 @@ export const WaveForm = GObject.registerClass({
this.set_draw_func(this.drawFunc);
}
- dragBegin(gesture, _) {
+ dragBegin(gesture: Gtk.GestureDrag): void {
gesture.set_state(Gtk.EventSequenceState.CLAIMED);
this.emit('gesture-pressed');
}
- dragUpdate(_, offsetX) {
+ dragUpdate(_gesture: Gtk.GestureDrag, offsetX: number): void {
this._position = this._clamped(offsetX + this._lastX);
this.queue_draw();
}
- dragEnd() {
+ dragEnd(): void {
this._lastX = this._position;
this.emit('position-changed', this.position);
}
- drawFunc(da, ctx) {
+ drawFunc(da: WaveFormClass, ctx: Cairo.Context) {
const maxHeight = da.get_allocated_height();
const vertiCenter = maxHeight / 2;
const horizCenter = da.get_allocated_width() / 2;
@@ -102,7 +115,7 @@ export const WaveForm = GObject.registerClass({
const [_, rightColor] = styleContext.lookup_color('dimmed_color');
- const dividerName = da.waveType === WaveType.PLAYER ? 'accent_color' : 'destructive_color';
+ const dividerName = da.waveType === WaveType.Player ? 'accent_color' : 'destructive_color';
let [ok, dividerColor] = styleContext.lookup_color(dividerName);
if (!ok)
dividerColor = styleContext.get_color();
@@ -119,7 +132,7 @@ export const WaveForm = GObject.registerClass({
ctx.setLineWidth(1);
da._peaks.forEach(peak => {
- if (da.waveType === WaveType.PLAYER && pointer > horizCenter)
+ if (da.waveType === WaveType.Player && pointer > horizCenter)
da._setSourceRGBA(ctx, rightColor);
else
da._setSourceRGBA(ctx, leftColor);
@@ -128,7 +141,7 @@ export const WaveForm = GObject.registerClass({
ctx.lineTo(pointer, vertiCenter - peak * maxHeight);
ctx.stroke();
- if (da.waveType === WaveType.PLAYER)
+ if (da.waveType === WaveType.Player)
pointer += GUTTER;
else
pointer -= GUTTER;
@@ -143,23 +156,23 @@ export const WaveForm = GObject.registerClass({
this.queue_draw();
}
- set peaks(p) {
+ set peaks(p: number[]) {
this._peaks = p;
this.queue_draw();
}
- set position(pos) {
+ set position(pos: number) {
this._position = this._clamped(-pos * this._peaks.length * GUTTER);
this._lastX = this._position;
this.queue_draw();
this.notify('position');
}
- get position() {
+ get position(): number {
return -this._position / (this._peaks.length * GUTTER);
}
- _clamped(position) {
+ _clamped(position: number): number {
if (position > 0)
position = 0;
else if (position < -this._peaks.length * GUTTER)
@@ -168,11 +181,11 @@ export const WaveForm = GObject.registerClass({
return position;
}
- _setSourceRGBA(cr, rgba) {
+ _setSourceRGBA(cr: Cairo.Context, rgba: Gdk.RGBA): void {
cr.setSourceRGBA(rgba.red, rgba.green, rgba.blue, rgba.alpha);
}
- destroy() {
+ destroy(): void {
Adw.StyleManager.get_default().disconnect(this._hcId);
this._peaks.length = 0;
this.queue_draw();
diff --git a/src/window.js b/src/window.ts
similarity index 70%
rename from src/window.js
rename to src/window.ts
index e5df6b3..534581f 100644
--- a/src/window.js
+++ b/src/window.ts
@@ -18,8 +18,6 @@
*
*/
-/// <reference path="../types/soundrecorder.d.ts" />
-
import Adw from 'gi://Adw'
import Gio from 'gi://Gio'
import GLib from 'gi://GLib'
@@ -28,16 +26,20 @@ import Gst from 'gi://Gst'
import GstPlayer from 'gi://GstPlayer'
import Gtk from 'gi://Gtk?version=4.0'
-import { Recorder } from './recorder.js';
-import { RecordingList } from './recordingList.js';
-import { RecordingsListWidget } from './recordingListWidget.js';
-import { RecorderWidget } from './recorderWidget.js';
+import { Recorder, RecorderClass } from './recorder.js';
+import { RecordingList, RecordingListClass } from './recordingList.js';
+import { RecordingsListWidget, RecordingsListWidgetClass } from './recordingListWidget.js';
+import { RecorderWidget, RecorderWidgetClass } from './recorderWidget.js';
+import { RecordingClass } from './recording.js'
+import { RowClass } from './row.js'
+
+enum WindowState {
+ Empty,
+ List,
+ Recorder,
+}
-var WindowState = {
- EMPTY: 0,
- LIST: 1,
- RECORDER: 2,
-};
+export type WindowClass = InstanceType<typeof Window>;
export const Window = GObject.registerClass({
Template: 'resource:///org/gnome/SoundRecorder/ui/window.ui',
@@ -45,19 +47,26 @@ export const Window = GObject.registerClass({
'mainStack', 'emptyPage', 'column', 'headerRevealer', 'toastOverlay',
],
}, class Window extends Adw.ApplicationWindow {
- // We have to do this so that TypeScript knows that the field exists
- // @ts-ignore
- /** @type {Gtk.Stack} */ _mainStack = this._mainStack;
- // @ts-ignore
- /** @type {Adw.StatusPage} */ _emptyPage = this._emptyPage;
- // @ts-ignore
- /** @type {Adw.Clamp} */ _column = this._column;
- // @ts-ignore
- /** @type {Gtk.Revealer} */ _headerRevealer = this._headerRevealer;
- // @ts-ignore
- /** @type {Adw.ToastOverlay} */ _toastOverlay = this._toastOverlay;
-
- _init(params) {
+ _mainStack!: Gtk.Stack;
+ _emptyPage!: Adw.StatusPage;
+ _column!: Adw.Clamp;
+ _headerRevealer!: Gtk.Revealer;
+ _toastOverlay!: Adw.ToastOverlay;
+
+ recorder: RecorderClass;
+ recorderWidget: RecorderWidgetClass;
+ player: GstPlayer.Player;
+ _recordingList: RecordingListClass;
+ itemsSignalId: number;
+ _recordingListWidget: RecordingsListWidgetClass;
+
+ toastUndo: boolean;
+ undoSignalID: number;
+ undoAction: Gio.SimpleAction;
+
+ _state: WindowState;
+
+ _init(params): void {
super._init(Object.assign({
icon_name: pkg.name,
}, params));
@@ -73,24 +82,23 @@ export const Window = GObject.registerClass({
this._recordingList = new RecordingList();
this.itemsSignalId = this._recordingList.connect('items-changed', _ => {
- if (this.state !== WindowState.RECORDER) {
+ if (this.state !== WindowState.Recorder) {
if (this._recordingList.get_n_items() === 0)
- this.state = WindowState.EMPTY;
+ this.state = WindowState.Empty;
else
- this.state = WindowState.LIST;
+ this.state = WindowState.List;
}
});
this._recordingListWidget = new RecordingsListWidget(this._recordingList, this.player);
- this._recordingListWidget.connect('row-deleted', (_listBox, recording, index) => {
+ this._recordingListWidget.connect('row-deleted', (_listBox: Gtk.ListBox, recording: RecordingClass,
index: number) => {
this._recordingList.remove(index);
- // @ts-expect-error
this.sendNotification(_('"%s" deleted').format(recording.name), recording, index);
});
const builder = Gtk.Builder.new_from_resource('/org/gnome/SoundRecorder/gtk/help-overlay.ui');
- /** @type {Gtk.ShortcutsWindow} */const dialog = builder.get_object('help_overlay');
+ const dialog: Gtk.ShortcutsWindow = builder.get_object('help_overlay');
this.set_help_overlay(dialog);
this.toastUndo = false;
@@ -113,16 +121,14 @@ export const Window = GObject.registerClass({
this._emptyPage.icon_name = `${pkg.name}-symbolic`;
}
- vfunc_close_request() {
+ vfunc_close_request(): boolean {
this._recordingList.cancellable.cancel();
if (this.itemsSignalId)
this._recordingList.disconnect(this.itemsSignalId);
for (let i = 0; i < this._recordingList.get_n_items(); i++) {
- const recording = this._recordingList.get_item(i);
- // @ts-expect-error
+ const recording = this._recordingList.get_item(i) as RecordingClass;
if (recording.pipeline)
- // @ts-expect-error
recording.pipeline.set_state(Gst.State.NULL);
}
@@ -131,32 +137,31 @@ export const Window = GObject.registerClass({
return true;
}
- onRecorderStarted() {
+ onRecorderStarted(): void {
this.player.stop();
const activeRow = this._recordingListWidget.activeRow;
if (activeRow && activeRow.editMode)
activeRow.editMode = false;
- this.state = WindowState.RECORDER;
+ this.state = WindowState.Recorder;
}
- onRecorderCanceled() {
+ onRecorderCanceled(): void {
if (this._recordingList.get_n_items() === 0)
- this.state = WindowState.EMPTY;
+ this.state = WindowState.Empty;
else
- this.state = WindowState.LIST;
+ this.state = WindowState.List;
}
- // @ts-ignore
- onRecorderStopped(widget, recording) {
+ onRecorderStopped(_widget: RecorderWidgetClass, recording: RecordingClass): void {
this._recordingList.insert(0, recording);
- // @ts-expect-error
- this._recordingListWidget.list.get_row_at_index(0).editMode = true;
- this.state = WindowState.LIST;
+ let row = this._recordingListWidget.list.get_row_at_index(0) as RowClass;
+ row.editMode = true;
+ this.state = WindowState.List;
}
- sendNotification(message, recording, index) {
+ sendNotification(message: string, recording: RecordingClass, index: number): void {
const toast = Adw.Toast.new(message);
toast.connect('dismissed', () => {
if (!this.toastUndo)
@@ -178,22 +183,20 @@ export const Window = GObject.registerClass({
this._toastOverlay.add_toast(toast);
}
- set state(state) {
- let visibleChild;
- let isHeaderVisible;
+ set state(state: WindowState) {
+ let visibleChild: string;
+ let isHeaderVisible = true;
switch (state) {
- case WindowState.RECORDER:
+ case WindowState.Recorder:
visibleChild = 'recorder';
isHeaderVisible = false;
break;
- case WindowState.LIST:
+ case WindowState.List:
visibleChild = 'recordings';
- isHeaderVisible = true;
break;
- case WindowState.EMPTY:
+ case WindowState.Empty:
visibleChild = 'empty';
- isHeaderVisible = true;
break;
}
@@ -202,7 +205,7 @@ export const Window = GObject.registerClass({
this._state = state;
}
- get state() {
+ get state(): WindowState {
return this._state;
}
});
diff --git a/tsconfig.json b/tsconfig.json
index 0c9ffd4..101fdbd 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,9 +1,7 @@
{
"compilerOptions": {
- "allowJs": true,
- "checkJs": true,
"experimentalDecorators": true,
- "noEmit": true,
+ "strict": true,
"paths": {
"*": [
"*",
diff --git a/types/ambient.d.ts b/types/ambient.d.ts
index 29b03ff..ba0bd11 100644
--- a/types/ambient.d.ts
+++ b/types/ambient.d.ts
@@ -1,11 +1,20 @@
/// <reference path="./gtk.d.ts" />
declare function _(id: string): string;
+declare function print(args: string): void;
+declare function log(obj: object, others?: object[]): void;
+declare function log(msg: string, subsitutions?: any[]): void;
+
declare const pkg: {
version: string;
name: string;
};
+declare module console {
+ export function error(obj: object, others?: object[]): void;
+ export function error(msg: string, subsitutions?: any[]): void;
+}
+
declare module "gi://GObject" {
export * as default from "gobject";
}
@@ -41,4 +50,18 @@ declare module "gi://GstPbutils" {
}
declare module "gi://GstPlayer" {
export * as default from "gstplayer";
+}
+
+declare class TextDecoder {
+ constructor(format: string);
+ decode(buffer: ArrayBuffer): string;
+}
+declare class TextEncoder {
+ constructor();
+ encode(str: string): Uint8Array;
+}
+
+declare interface String {
+ format(...replacements: string[]): string;
+ format(...replacements: number[]): string;
}
\ No newline at end of file
diff --git a/types/gmodule.d.ts b/types/gmodule.d.ts
new file mode 100644
index 0000000..f300a2f
--- /dev/null
+++ b/types/gmodule.d.ts
@@ -0,0 +1,52 @@
+/**
+ * GModule 2.0
+ *
+ * Generated from 2.0
+ */
+
+import * as GLib from "glib";
+import * as GObject from "gobject";
+
+export function module_build_path(directory: string | null, module_name: string): string;
+export function module_error(): string;
+export function module_error_quark(): GLib.Quark;
+export function module_supported(): boolean;
+export type ModuleCheckInit = (module: Module) => string;
+export type ModuleUnload = (module: Module) => void;
+
+export class ModuleError extends GLib.Error {
+ static $gtype: GObject.GType<ModuleError>;
+
+ constructor(options: { message: string; code: number });
+ constructor(copy: ModuleError);
+
+ // Fields
+ static FAILED: number;
+ static CHECK_FAILED: number;
+}
+
+export namespace ModuleFlags {
+ export const $gtype: GObject.GType<ModuleFlags>;
+}
+
+export enum ModuleFlags {
+ LAZY = 1,
+ LOCAL = 2,
+ MASK = 3,
+}
+
+export class Module {
+ static $gtype: GObject.GType<Module>;
+
+ constructor(copy: Module);
+
+ // Members
+ close(): boolean;
+ make_resident(): void;
+ name(): string;
+ symbol(symbol_name: string): [boolean, any];
+ static build_path(directory: string | null, module_name: string): string;
+ static error(): string;
+ static error_quark(): GLib.Quark;
+ static supported(): boolean;
+}
diff --git a/types/graphene.d.ts b/types/graphene.d.ts
new file mode 100644
index 0000000..9ff6629
--- /dev/null
+++ b/types/graphene.d.ts
@@ -0,0 +1,722 @@
+/**
+ * Graphene 1.0
+ *
+ * Generated from 1.0
+ */
+
+import * as GObject from "gobject";
+
+export const PI: number;
+export const PI_2: number;
+export const VEC2_LEN: number;
+export const VEC3_LEN: number;
+export const VEC4_LEN: number;
+export function box_empty(): Box;
+export function box_infinite(): Box;
+export function box_minus_one(): Box;
+export function box_one(): Box;
+export function box_one_minus_one(): Box;
+export function box_zero(): Box;
+export function point3d_zero(): Point3D;
+export function point_zero(): Point;
+export function rect_alloc(): Rect;
+export function rect_zero(): Rect;
+export function size_zero(): Size;
+export function vec2_one(): Vec2;
+export function vec2_x_axis(): Vec2;
+export function vec2_y_axis(): Vec2;
+export function vec2_zero(): Vec2;
+export function vec3_one(): Vec3;
+export function vec3_x_axis(): Vec3;
+export function vec3_y_axis(): Vec3;
+export function vec3_z_axis(): Vec3;
+export function vec3_zero(): Vec3;
+export function vec4_one(): Vec4;
+export function vec4_w_axis(): Vec4;
+export function vec4_x_axis(): Vec4;
+export function vec4_y_axis(): Vec4;
+export function vec4_z_axis(): Vec4;
+export function vec4_zero(): Vec4;
+
+export namespace EulerOrder {
+ export const $gtype: GObject.GType<EulerOrder>;
+}
+
+export enum EulerOrder {
+ DEFAULT = -1,
+ XYZ = 0,
+ YZX = 1,
+ ZXY = 2,
+ XZY = 3,
+ YXZ = 4,
+ ZYX = 5,
+ SXYZ = 6,
+ SXYX = 7,
+ SXZY = 8,
+ SXZX = 9,
+ SYZX = 10,
+ SYZY = 11,
+ SYXZ = 12,
+ SYXY = 13,
+ SZXY = 14,
+ SZXZ = 15,
+ SZYX = 16,
+ SZYZ = 17,
+ RZYX = 18,
+ RXYX = 19,
+ RYZX = 20,
+ RXZX = 21,
+ RXZY = 22,
+ RYZY = 23,
+ RZXY = 24,
+ RYXY = 25,
+ RYXZ = 26,
+ RZXZ = 27,
+ RXYZ = 28,
+ RZYZ = 29,
+}
+
+export namespace RayIntersectionKind {
+ export const $gtype: GObject.GType<RayIntersectionKind>;
+}
+
+export enum RayIntersectionKind {
+ NONE = 0,
+ ENTER = 1,
+ LEAVE = 2,
+}
+
+export class Box {
+ static $gtype: GObject.GType<Box>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Box);
+
+ // Constructors
+ static alloc(): Box;
+
+ // Members
+ contains_box(b: Box): boolean;
+ contains_point(point: Point3D): boolean;
+ equal(b: Box): boolean;
+ expand(point: Point3D): Box;
+ expand_scalar(scalar: number): Box;
+ expand_vec3(vec: Vec3): Box;
+ free(): void;
+ get_bounding_sphere(): Sphere;
+ get_center(): Point3D;
+ get_depth(): number;
+ get_height(): number;
+ get_max(): Point3D;
+ get_min(): Point3D;
+ get_size(): Vec3;
+ get_vertices(): Vec3[];
+ get_width(): number;
+ init(min?: Point3D | null, max?: Point3D | null): Box;
+ init_from_box(src: Box): Box;
+ init_from_points(points: Point3D[]): Box;
+ init_from_vec3(min?: Vec3 | null, max?: Vec3 | null): Box;
+ init_from_vectors(vectors: Vec3[]): Box;
+ intersection(b: Box): [boolean, Box | null];
+ union(b: Box): Box;
+ static empty(): Box;
+ static infinite(): Box;
+ static minus_one(): Box;
+ static one(): Box;
+ static one_minus_one(): Box;
+ static zero(): Box;
+}
+
+export class Euler {
+ static $gtype: GObject.GType<Euler>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Euler);
+
+ // Constructors
+ static alloc(): Euler;
+
+ // Members
+ equal(b: Euler): boolean;
+ free(): void;
+ get_alpha(): number;
+ get_beta(): number;
+ get_gamma(): number;
+ get_order(): EulerOrder;
+ get_x(): number;
+ get_y(): number;
+ get_z(): number;
+ init(x: number, y: number, z: number): Euler;
+ init_from_euler(src?: Euler | null): Euler;
+ init_from_matrix(m: Matrix | null, order: EulerOrder): Euler;
+ init_from_quaternion(q: Quaternion | null, order: EulerOrder): Euler;
+ init_from_radians(x: number, y: number, z: number, order: EulerOrder): Euler;
+ init_from_vec3(v: Vec3 | null, order: EulerOrder): Euler;
+ init_with_order(x: number, y: number, z: number, order: EulerOrder): Euler;
+ reorder(order: EulerOrder): Euler;
+ to_matrix(): Matrix;
+ to_quaternion(): Quaternion;
+ to_vec3(): Vec3;
+}
+
+export class Frustum {
+ static $gtype: GObject.GType<Frustum>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Frustum);
+
+ // Constructors
+ static alloc(): Frustum;
+
+ // Members
+ contains_point(point: Point3D): boolean;
+ equal(b: Frustum): boolean;
+ free(): void;
+ get_planes(): Plane[];
+ init(p0: Plane, p1: Plane, p2: Plane, p3: Plane, p4: Plane, p5: Plane): Frustum;
+ init_from_frustum(src: Frustum): Frustum;
+ init_from_matrix(matrix: Matrix): Frustum;
+ intersects_box(box: Box): boolean;
+ intersects_sphere(sphere: Sphere): boolean;
+}
+
+export class Matrix {
+ static $gtype: GObject.GType<Matrix>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Matrix);
+
+ // Constructors
+ static alloc(): Matrix;
+
+ // Members
+ decompose(): [boolean, Vec3, Vec3, Quaternion, Vec3, Vec4];
+ determinant(): number;
+ equal(b: Matrix): boolean;
+ equal_fast(b: Matrix): boolean;
+ free(): void;
+ get_row(index_: number): Vec4;
+ get_value(row: number, col: number): number;
+ get_x_scale(): number;
+ get_x_translation(): number;
+ get_y_scale(): number;
+ get_y_translation(): number;
+ get_z_scale(): number;
+ get_z_translation(): number;
+ init_from_2d(xx: number, yx: number, xy: number, yy: number, x_0: number, y_0: number): Matrix;
+ init_from_float(v: number[]): Matrix;
+ init_from_matrix(src: Matrix): Matrix;
+ init_from_vec4(v0: Vec4, v1: Vec4, v2: Vec4, v3: Vec4): Matrix;
+ init_frustum(left: number, right: number, bottom: number, top: number, z_near: number, z_far: number):
Matrix;
+ init_identity(): Matrix;
+ init_look_at(eye: Vec3, center: Vec3, up: Vec3): Matrix;
+ init_ortho(left: number, right: number, top: number, bottom: number, z_near: number, z_far: number):
Matrix;
+ init_perspective(fovy: number, aspect: number, z_near: number, z_far: number): Matrix;
+ init_rotate(angle: number, axis: Vec3): Matrix;
+ init_scale(x: number, y: number, z: number): Matrix;
+ init_skew(x_skew: number, y_skew: number): Matrix;
+ init_translate(p: Point3D): Matrix;
+ interpolate(b: Matrix, factor: number): Matrix;
+ inverse(): [boolean, Matrix];
+ is_2d(): boolean;
+ is_backface_visible(): boolean;
+ is_identity(): boolean;
+ is_singular(): boolean;
+ multiply(b: Matrix): Matrix;
+ near(b: Matrix, epsilon: number): boolean;
+ normalize(): Matrix;
+ perspective(depth: number): Matrix;
+ print(): void;
+ project_point(p: Point): Point;
+ project_rect(r: Rect): Quad;
+ project_rect_bounds(r: Rect): Rect;
+ rotate(angle: number, axis: Vec3): void;
+ rotate_euler(e: Euler): void;
+ rotate_quaternion(q: Quaternion): void;
+ rotate_x(angle: number): void;
+ rotate_y(angle: number): void;
+ rotate_z(angle: number): void;
+ scale(factor_x: number, factor_y: number, factor_z: number): void;
+ skew_xy(factor: number): void;
+ skew_xz(factor: number): void;
+ skew_yz(factor: number): void;
+ to_2d(): [boolean, number, number, number, number, number, number];
+ to_float(): number[];
+ transform_bounds(r: Rect): Rect;
+ transform_box(b: Box): Box;
+ transform_point(p: Point): Point;
+ transform_point3d(p: Point3D): Point3D;
+ transform_ray(r: Ray): Ray;
+ transform_rect(r: Rect): Quad;
+ transform_sphere(s: Sphere): Sphere;
+ transform_vec3(v: Vec3): Vec3;
+ transform_vec4(v: Vec4): Vec4;
+ translate(pos: Point3D): void;
+ transpose(): Matrix;
+ unproject_point3d(modelview: Matrix, point: Point3D): Point3D;
+ untransform_bounds(r: Rect, bounds: Rect): Rect;
+ untransform_point(p: Point, bounds: Rect): [boolean, Point];
+}
+
+export class Plane {
+ static $gtype: GObject.GType<Plane>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Plane);
+
+ // Constructors
+ static alloc(): Plane;
+
+ // Members
+ distance(point: Point3D): number;
+ equal(b: Plane): boolean;
+ free(): void;
+ get_constant(): number;
+ get_normal(): Vec3;
+ init(normal: Vec3 | null, constant: number): Plane;
+ init_from_plane(src: Plane): Plane;
+ init_from_point(normal: Vec3, point: Point3D): Plane;
+ init_from_points(a: Point3D, b: Point3D, c: Point3D): Plane;
+ init_from_vec4(src: Vec4): Plane;
+ negate(): Plane;
+ normalize(): Plane;
+ transform(matrix: Matrix, normal_matrix: Matrix | null): Plane;
+}
+
+export class Point {
+ static $gtype: GObject.GType<Point>;
+
+ constructor();
+ constructor(
+ properties?: Partial<{
+ x?: number;
+ y?: number;
+ }>
+ );
+ constructor(copy: Point);
+
+ // Fields
+ x: number;
+ y: number;
+
+ // Constructors
+ static alloc(): Point;
+
+ // Members
+ distance(b: Point): [number, number, number];
+ equal(b: Point): boolean;
+ free(): void;
+ init(x: number, y: number): Point;
+ init_from_point(src: Point): Point;
+ init_from_vec2(src: Vec2): Point;
+ interpolate(b: Point, factor: number): Point;
+ near(b: Point, epsilon: number): boolean;
+ to_vec2(): Vec2;
+ static zero(): Point;
+}
+
+export class Point3D {
+ static $gtype: GObject.GType<Point3D>;
+
+ constructor();
+ constructor(
+ properties?: Partial<{
+ x?: number;
+ y?: number;
+ z?: number;
+ }>
+ );
+ constructor(copy: Point3D);
+
+ // Fields
+ x: number;
+ y: number;
+ z: number;
+
+ // Constructors
+ static alloc(): Point3D;
+
+ // Members
+ cross(b: Point3D): Point3D;
+ distance(b: Point3D): [number, Vec3 | null];
+ dot(b: Point3D): number;
+ equal(b: Point3D): boolean;
+ free(): void;
+ init(x: number, y: number, z: number): Point3D;
+ init_from_point(src: Point3D): Point3D;
+ init_from_vec3(v: Vec3): Point3D;
+ interpolate(b: Point3D, factor: number): Point3D;
+ length(): number;
+ near(b: Point3D, epsilon: number): boolean;
+ normalize(): Point3D;
+ normalize_viewport(viewport: Rect, z_near: number, z_far: number): Point3D;
+ scale(factor: number): Point3D;
+ to_vec3(): Vec3;
+ static zero(): Point3D;
+}
+
+export class Quad {
+ static $gtype: GObject.GType<Quad>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Quad);
+
+ // Constructors
+ static alloc(): Quad;
+
+ // Members
+ bounds(): Rect;
+ contains(p: Point): boolean;
+ free(): void;
+ get_point(index_: number): Point;
+ init(p1: Point, p2: Point, p3: Point, p4: Point): Quad;
+ init_from_points(points: Point[]): Quad;
+ init_from_rect(r: Rect): Quad;
+}
+
+export class Quaternion {
+ static $gtype: GObject.GType<Quaternion>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Quaternion);
+
+ // Constructors
+ static alloc(): Quaternion;
+
+ // Members
+ add(b: Quaternion): Quaternion;
+ dot(b: Quaternion): number;
+ equal(b: Quaternion): boolean;
+ free(): void;
+ init(x: number, y: number, z: number, w: number): Quaternion;
+ init_from_angle_vec3(angle: number, axis: Vec3): Quaternion;
+ init_from_angles(deg_x: number, deg_y: number, deg_z: number): Quaternion;
+ init_from_euler(e: Euler): Quaternion;
+ init_from_matrix(m: Matrix): Quaternion;
+ init_from_quaternion(src: Quaternion): Quaternion;
+ init_from_radians(rad_x: number, rad_y: number, rad_z: number): Quaternion;
+ init_from_vec4(src: Vec4): Quaternion;
+ init_identity(): Quaternion;
+ invert(): Quaternion;
+ multiply(b: Quaternion): Quaternion;
+ normalize(): Quaternion;
+ scale(factor: number): Quaternion;
+ slerp(b: Quaternion, factor: number): Quaternion;
+ to_angle_vec3(): [number, Vec3];
+ to_angles(): [number, number, number];
+ to_matrix(): Matrix;
+ to_radians(): [number, number, number];
+ to_vec4(): Vec4;
+}
+
+export class Ray {
+ static $gtype: GObject.GType<Ray>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Ray);
+
+ // Constructors
+ static alloc(): Ray;
+
+ // Members
+ equal(b: Ray): boolean;
+ free(): void;
+ get_closest_point_to_point(p: Point3D): Point3D;
+ get_direction(): Vec3;
+ get_distance_to_plane(p: Plane): number;
+ get_distance_to_point(p: Point3D): number;
+ get_origin(): Point3D;
+ get_position_at(t: number): Point3D;
+ init(origin?: Point3D | null, direction?: Vec3 | null): Ray;
+ init_from_ray(src: Ray): Ray;
+ init_from_vec3(origin?: Vec3 | null, direction?: Vec3 | null): Ray;
+ intersect_box(b: Box): [RayIntersectionKind, number];
+ intersect_sphere(s: Sphere): [RayIntersectionKind, number];
+ intersect_triangle(t: Triangle): [RayIntersectionKind, number];
+ intersects_box(b: Box): boolean;
+ intersects_sphere(s: Sphere): boolean;
+ intersects_triangle(t: Triangle): boolean;
+}
+
+export class Rect {
+ static $gtype: GObject.GType<Rect>;
+
+ constructor(
+ properties?: Partial<{
+ origin?: Point;
+ size?: Size;
+ }>
+ );
+ constructor(copy: Rect);
+
+ // Fields
+ origin: Point;
+ size: Size;
+
+ // Members
+ contains_point(p: Point): boolean;
+ contains_rect(b: Rect): boolean;
+ equal(b: Rect): boolean;
+ expand(p: Point): Rect;
+ free(): void;
+ get_area(): number;
+ get_bottom_left(): Point;
+ get_bottom_right(): Point;
+ get_center(): Point;
+ get_height(): number;
+ get_top_left(): Point;
+ get_top_right(): Point;
+ get_vertices(): Vec2[];
+ get_width(): number;
+ get_x(): number;
+ get_y(): number;
+ init(x: number, y: number, width: number, height: number): Rect;
+ init_from_rect(src: Rect): Rect;
+ inset(d_x: number, d_y: number): Rect;
+ inset_r(d_x: number, d_y: number): Rect;
+ interpolate(b: Rect, factor: number): Rect;
+ intersection(b: Rect): [boolean, Rect | null];
+ normalize(): Rect;
+ normalize_r(): Rect;
+ offset(d_x: number, d_y: number): Rect;
+ offset_r(d_x: number, d_y: number): Rect;
+ round(): Rect;
+ round_extents(): Rect;
+ round_to_pixel(): Rect;
+ scale(s_h: number, s_v: number): Rect;
+ union(b: Rect): Rect;
+ static alloc(): Rect;
+ static zero(): Rect;
+}
+
+export class Simd4F {
+ static $gtype: GObject.GType<Simd4F>;
+
+ constructor(copy: Simd4F);
+}
+
+export class Simd4X4F {
+ static $gtype: GObject.GType<Simd4X4F>;
+
+ constructor(copy: Simd4X4F);
+}
+
+export class Size {
+ static $gtype: GObject.GType<Size>;
+
+ constructor();
+ constructor(
+ properties?: Partial<{
+ width?: number;
+ height?: number;
+ }>
+ );
+ constructor(copy: Size);
+
+ // Fields
+ width: number;
+ height: number;
+
+ // Constructors
+ static alloc(): Size;
+
+ // Members
+ equal(b: Size): boolean;
+ free(): void;
+ init(width: number, height: number): Size;
+ init_from_size(src: Size): Size;
+ interpolate(b: Size, factor: number): Size;
+ scale(factor: number): Size;
+ static zero(): Size;
+}
+
+export class Sphere {
+ static $gtype: GObject.GType<Sphere>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Sphere);
+
+ // Constructors
+ static alloc(): Sphere;
+
+ // Members
+ contains_point(point: Point3D): boolean;
+ distance(point: Point3D): number;
+ equal(b: Sphere): boolean;
+ free(): void;
+ get_bounding_box(): Box;
+ get_center(): Point3D;
+ get_radius(): number;
+ init(center: Point3D | null, radius: number): Sphere;
+ init_from_points(points: Point3D[], center?: Point3D | null): Sphere;
+ init_from_vectors(vectors: Vec3[], center?: Point3D | null): Sphere;
+ is_empty(): boolean;
+ translate(point: Point3D): Sphere;
+}
+
+export class Triangle {
+ static $gtype: GObject.GType<Triangle>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Triangle);
+
+ // Constructors
+ static alloc(): Triangle;
+
+ // Members
+ contains_point(p: Point3D): boolean;
+ equal(b: Triangle): boolean;
+ free(): void;
+ get_area(): number;
+ get_barycoords(p: Point3D | null): [boolean, Vec2];
+ get_bounding_box(): Box;
+ get_midpoint(): Point3D;
+ get_normal(): Vec3;
+ get_plane(): Plane;
+ get_points(): [Point3D | null, Point3D | null, Point3D | null];
+ get_uv(p: Point3D | null, uv_a: Vec2, uv_b: Vec2, uv_c: Vec2): [boolean, Vec2];
+ get_vertices(): [Vec3 | null, Vec3 | null, Vec3 | null];
+ init_from_float(a: number[], b: number[], c: number[]): Triangle;
+ init_from_point3d(a?: Point3D | null, b?: Point3D | null, c?: Point3D | null): Triangle;
+ init_from_vec3(a?: Vec3 | null, b?: Vec3 | null, c?: Vec3 | null): Triangle;
+}
+
+export class Vec2 {
+ static $gtype: GObject.GType<Vec2>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Vec2);
+
+ // Constructors
+ static alloc(): Vec2;
+
+ // Members
+ add(b: Vec2): Vec2;
+ divide(b: Vec2): Vec2;
+ dot(b: Vec2): number;
+ equal(v2: Vec2): boolean;
+ free(): void;
+ get_x(): number;
+ get_y(): number;
+ init(x: number, y: number): Vec2;
+ init_from_float(src: number[]): Vec2;
+ init_from_vec2(src: Vec2): Vec2;
+ interpolate(v2: Vec2, factor: number): Vec2;
+ length(): number;
+ max(b: Vec2): Vec2;
+ min(b: Vec2): Vec2;
+ multiply(b: Vec2): Vec2;
+ near(v2: Vec2, epsilon: number): boolean;
+ negate(): Vec2;
+ normalize(): Vec2;
+ scale(factor: number): Vec2;
+ subtract(b: Vec2): Vec2;
+ to_float(): number[];
+ static one(): Vec2;
+ static x_axis(): Vec2;
+ static y_axis(): Vec2;
+ static zero(): Vec2;
+}
+
+export class Vec3 {
+ static $gtype: GObject.GType<Vec3>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Vec3);
+
+ // Constructors
+ static alloc(): Vec3;
+
+ // Members
+ add(b: Vec3): Vec3;
+ cross(b: Vec3): Vec3;
+ divide(b: Vec3): Vec3;
+ dot(b: Vec3): number;
+ equal(v2: Vec3): boolean;
+ free(): void;
+ get_x(): number;
+ get_xy(): Vec2;
+ get_xy0(): Vec3;
+ get_xyz0(): Vec4;
+ get_xyz1(): Vec4;
+ get_xyzw(w: number): Vec4;
+ get_y(): number;
+ get_z(): number;
+ init(x: number, y: number, z: number): Vec3;
+ init_from_float(src: number[]): Vec3;
+ init_from_vec3(src: Vec3): Vec3;
+ interpolate(v2: Vec3, factor: number): Vec3;
+ length(): number;
+ max(b: Vec3): Vec3;
+ min(b: Vec3): Vec3;
+ multiply(b: Vec3): Vec3;
+ near(v2: Vec3, epsilon: number): boolean;
+ negate(): Vec3;
+ normalize(): Vec3;
+ scale(factor: number): Vec3;
+ subtract(b: Vec3): Vec3;
+ to_float(): number[];
+ static one(): Vec3;
+ static x_axis(): Vec3;
+ static y_axis(): Vec3;
+ static z_axis(): Vec3;
+ static zero(): Vec3;
+}
+
+export class Vec4 {
+ static $gtype: GObject.GType<Vec4>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Vec4);
+
+ // Constructors
+ static alloc(): Vec4;
+
+ // Members
+ add(b: Vec4): Vec4;
+ divide(b: Vec4): Vec4;
+ dot(b: Vec4): number;
+ equal(v2: Vec4): boolean;
+ free(): void;
+ get_w(): number;
+ get_x(): number;
+ get_xy(): Vec2;
+ get_xyz(): Vec3;
+ get_y(): number;
+ get_z(): number;
+ init(x: number, y: number, z: number, w: number): Vec4;
+ init_from_float(src: number[]): Vec4;
+ init_from_vec2(src: Vec2, z: number, w: number): Vec4;
+ init_from_vec3(src: Vec3, w: number): Vec4;
+ init_from_vec4(src: Vec4): Vec4;
+ interpolate(v2: Vec4, factor: number): Vec4;
+ length(): number;
+ max(b: Vec4): Vec4;
+ min(b: Vec4): Vec4;
+ multiply(b: Vec4): Vec4;
+ near(v2: Vec4, epsilon: number): boolean;
+ negate(): Vec4;
+ normalize(): Vec4;
+ scale(factor: number): Vec4;
+ subtract(b: Vec4): Vec4;
+ to_float(): number[];
+ static one(): Vec4;
+ static w_axis(): Vec4;
+ static x_axis(): Vec4;
+ static y_axis(): Vec4;
+ static z_axis(): Vec4;
+ static zero(): Vec4;
+}
diff --git a/types/gsk.d.ts b/types/gsk.d.ts
new file mode 100644
index 0000000..7541d9d
--- /dev/null
+++ b/types/gsk.d.ts
@@ -0,0 +1,1008 @@
+/**
+ * Gsk 4.0
+ *
+ * Generated from 4.0
+ */
+
+import * as Gdk from "gdk";
+import * as GObject from "gobject";
+import * as Graphene from "graphene";
+import * as GLib from "glib";
+import * as cairo from "cairo";
+import * as Pango from "pango";
+
+export function serialization_error_quark(): GLib.Quark;
+export function transform_parse(string: string): [boolean, Transform];
+export function value_dup_render_node(value: GObject.Value | any): RenderNode | null;
+export function value_get_render_node(value: GObject.Value | any): RenderNode | null;
+export function value_set_render_node(value: GObject.Value | any, node: RenderNode): void;
+export function value_take_render_node(value: GObject.Value | any, node?: RenderNode | null): void;
+export type ParseErrorFunc = (start: ParseLocation, end: ParseLocation, error: GLib.Error) => void;
+
+export namespace BlendMode {
+ export const $gtype: GObject.GType<BlendMode>;
+}
+
+export enum BlendMode {
+ DEFAULT = 0,
+ MULTIPLY = 1,
+ SCREEN = 2,
+ OVERLAY = 3,
+ DARKEN = 4,
+ LIGHTEN = 5,
+ COLOR_DODGE = 6,
+ COLOR_BURN = 7,
+ HARD_LIGHT = 8,
+ SOFT_LIGHT = 9,
+ DIFFERENCE = 10,
+ EXCLUSION = 11,
+ COLOR = 12,
+ HUE = 13,
+ SATURATION = 14,
+ LUMINOSITY = 15,
+}
+
+export namespace Corner {
+ export const $gtype: GObject.GType<Corner>;
+}
+
+export enum Corner {
+ TOP_LEFT = 0,
+ TOP_RIGHT = 1,
+ BOTTOM_RIGHT = 2,
+ BOTTOM_LEFT = 3,
+}
+
+export namespace GLUniformType {
+ export const $gtype: GObject.GType<GLUniformType>;
+}
+
+export enum GLUniformType {
+ NONE = 0,
+ FLOAT = 1,
+ INT = 2,
+ UINT = 3,
+ BOOL = 4,
+ VEC2 = 5,
+ VEC3 = 6,
+ VEC4 = 7,
+}
+
+export namespace RenderNodeType {
+ export const $gtype: GObject.GType<RenderNodeType>;
+}
+
+export enum RenderNodeType {
+ NOT_A_RENDER_NODE = 0,
+ CONTAINER_NODE = 1,
+ CAIRO_NODE = 2,
+ COLOR_NODE = 3,
+ LINEAR_GRADIENT_NODE = 4,
+ REPEATING_LINEAR_GRADIENT_NODE = 5,
+ RADIAL_GRADIENT_NODE = 6,
+ REPEATING_RADIAL_GRADIENT_NODE = 7,
+ CONIC_GRADIENT_NODE = 8,
+ BORDER_NODE = 9,
+ TEXTURE_NODE = 10,
+ INSET_SHADOW_NODE = 11,
+ OUTSET_SHADOW_NODE = 12,
+ TRANSFORM_NODE = 13,
+ OPACITY_NODE = 14,
+ COLOR_MATRIX_NODE = 15,
+ REPEAT_NODE = 16,
+ CLIP_NODE = 17,
+ ROUNDED_CLIP_NODE = 18,
+ SHADOW_NODE = 19,
+ BLEND_NODE = 20,
+ CROSS_FADE_NODE = 21,
+ TEXT_NODE = 22,
+ BLUR_NODE = 23,
+ DEBUG_NODE = 24,
+ GL_SHADER_NODE = 25,
+}
+
+export namespace ScalingFilter {
+ export const $gtype: GObject.GType<ScalingFilter>;
+}
+
+export enum ScalingFilter {
+ LINEAR = 0,
+ NEAREST = 1,
+ TRILINEAR = 2,
+}
+
+export class SerializationError extends GLib.Error {
+ static $gtype: GObject.GType<SerializationError>;
+
+ constructor(options: { message: string; code: number });
+ constructor(copy: SerializationError);
+
+ // Fields
+ static UNSUPPORTED_FORMAT: number;
+ static UNSUPPORTED_VERSION: number;
+ static INVALID_DATA: number;
+
+ // Members
+ static quark(): GLib.Quark;
+}
+
+export namespace TransformCategory {
+ export const $gtype: GObject.GType<TransformCategory>;
+}
+
+export enum TransformCategory {
+ UNKNOWN = 0,
+ ANY = 1,
+ "3D" = 2,
+ "2D" = 3,
+ "2D_AFFINE" = 4,
+ "2D_TRANSLATE" = 5,
+ IDENTITY = 6,
+}
+export module BlendNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class BlendNode extends RenderNode {
+ static $gtype: GObject.GType<BlendNode>;
+
+ constructor(properties?: Partial<BlendNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<BlendNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](bottom: RenderNode, top: RenderNode, blend_mode: BlendMode): BlendNode;
+
+ // Members
+
+ get_blend_mode(): BlendMode;
+ get_bottom_child(): RenderNode;
+ get_top_child(): RenderNode;
+}
+export module BlurNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class BlurNode extends RenderNode {
+ static $gtype: GObject.GType<BlurNode>;
+
+ constructor(properties?: Partial<BlurNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<BlurNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](child: RenderNode, radius: number): BlurNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_radius(): number;
+}
+export module BorderNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class BorderNode extends RenderNode {
+ static $gtype: GObject.GType<BorderNode>;
+
+ constructor(properties?: Partial<BorderNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<BorderNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](outline: RoundedRect, border_width: number[], border_color: Gdk.RGBA[]): BorderNode;
+
+ // Members
+
+ get_colors(): Gdk.RGBA;
+ get_outline(): RoundedRect;
+ get_widths(): number[];
+}
+export module BroadwayRenderer {
+ export interface ConstructorProperties extends Renderer.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class BroadwayRenderer extends Renderer {
+ static $gtype: GObject.GType<BroadwayRenderer>;
+
+ constructor(properties?: Partial<BroadwayRenderer.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<BroadwayRenderer.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](): BroadwayRenderer;
+}
+export module CairoNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class CairoNode extends RenderNode {
+ static $gtype: GObject.GType<CairoNode>;
+
+ constructor(properties?: Partial<CairoNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<CairoNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](bounds: Graphene.Rect): CairoNode;
+
+ // Members
+
+ get_draw_context(): cairo.Context;
+ get_surface(): cairo.Surface;
+}
+export module CairoRenderer {
+ export interface ConstructorProperties extends Renderer.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class CairoRenderer extends Renderer {
+ static $gtype: GObject.GType<CairoRenderer>;
+
+ constructor(properties?: Partial<CairoRenderer.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<CairoRenderer.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](): CairoRenderer;
+}
+export module ClipNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class ClipNode extends RenderNode {
+ static $gtype: GObject.GType<ClipNode>;
+
+ constructor(properties?: Partial<ClipNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<ClipNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](child: RenderNode, clip: Graphene.Rect): ClipNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_clip(): Graphene.Rect;
+}
+export module ColorMatrixNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class ColorMatrixNode extends RenderNode {
+ static $gtype: GObject.GType<ColorMatrixNode>;
+
+ constructor(properties?: Partial<ColorMatrixNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<ColorMatrixNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](child: RenderNode, color_matrix: Graphene.Matrix, color_offset: Graphene.Vec4):
ColorMatrixNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_color_matrix(): Graphene.Matrix;
+ get_color_offset(): Graphene.Vec4;
+}
+export module ColorNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class ColorNode extends RenderNode {
+ static $gtype: GObject.GType<ColorNode>;
+
+ constructor(properties?: Partial<ColorNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<ColorNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](rgba: Gdk.RGBA, bounds: Graphene.Rect): ColorNode;
+
+ // Members
+
+ get_color(): Gdk.RGBA;
+}
+export module ConicGradientNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class ConicGradientNode extends RenderNode {
+ static $gtype: GObject.GType<ConicGradientNode>;
+
+ constructor(properties?: Partial<ConicGradientNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<ConicGradientNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](
+ bounds: Graphene.Rect,
+ center: Graphene.Point,
+ rotation: number,
+ color_stops: ColorStop[]
+ ): ConicGradientNode;
+
+ // Members
+
+ get_angle(): number;
+ get_center(): Graphene.Point;
+ get_color_stops(): ColorStop[];
+ get_n_color_stops(): number;
+ get_rotation(): number;
+}
+export module ContainerNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class ContainerNode extends RenderNode {
+ static $gtype: GObject.GType<ContainerNode>;
+
+ constructor(properties?: Partial<ContainerNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<ContainerNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](children: RenderNode[]): ContainerNode;
+
+ // Members
+
+ get_child(idx: number): RenderNode;
+ get_n_children(): number;
+}
+export module CrossFadeNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class CrossFadeNode extends RenderNode {
+ static $gtype: GObject.GType<CrossFadeNode>;
+
+ constructor(properties?: Partial<CrossFadeNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<CrossFadeNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](start: RenderNode, end: RenderNode, progress: number): CrossFadeNode;
+
+ // Members
+
+ get_end_child(): RenderNode;
+ get_progress(): number;
+ get_start_child(): RenderNode;
+}
+export module DebugNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class DebugNode extends RenderNode {
+ static $gtype: GObject.GType<DebugNode>;
+
+ constructor(properties?: Partial<DebugNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<DebugNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](child: RenderNode, message: string): DebugNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_message(): string;
+}
+export module GLRenderer {
+ export interface ConstructorProperties extends Renderer.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class GLRenderer extends Renderer {
+ static $gtype: GObject.GType<GLRenderer>;
+
+ constructor(properties?: Partial<GLRenderer.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<GLRenderer.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](): GLRenderer;
+}
+export module GLShader {
+ export interface ConstructorProperties extends GObject.Object.ConstructorProperties {
+ [key: string]: any;
+ resource: string;
+ source: GLib.Bytes;
+ }
+}
+export class GLShader extends GObject.Object {
+ static $gtype: GObject.GType<GLShader>;
+
+ constructor(properties?: Partial<GLShader.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<GLShader.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get resource(): string;
+ get source(): GLib.Bytes;
+
+ // Constructors
+
+ static new_from_bytes(sourcecode: GLib.Bytes | Uint8Array): GLShader;
+ static new_from_resource(resource_path: string): GLShader;
+
+ // Members
+
+ compile(renderer: Renderer): boolean;
+ find_uniform_by_name(name: string): number;
+ get_arg_bool(args: GLib.Bytes | Uint8Array, idx: number): boolean;
+ get_arg_float(args: GLib.Bytes | Uint8Array, idx: number): number;
+ get_arg_int(args: GLib.Bytes | Uint8Array, idx: number): number;
+ get_arg_uint(args: GLib.Bytes | Uint8Array, idx: number): number;
+ get_arg_vec2(args: GLib.Bytes | Uint8Array, idx: number, out_value: Graphene.Vec2): void;
+ get_arg_vec3(args: GLib.Bytes | Uint8Array, idx: number, out_value: Graphene.Vec3): void;
+ get_arg_vec4(args: GLib.Bytes | Uint8Array, idx: number, out_value: Graphene.Vec4): void;
+ get_args_size(): number;
+ get_n_textures(): number;
+ get_n_uniforms(): number;
+ get_resource(): string | null;
+ get_source(): GLib.Bytes;
+ get_uniform_name(idx: number): string;
+ get_uniform_offset(idx: number): number;
+ get_uniform_type(idx: number): GLUniformType;
+}
+export module GLShaderNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class GLShaderNode extends RenderNode {
+ static $gtype: GObject.GType<GLShaderNode>;
+
+ constructor(properties?: Partial<GLShaderNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<GLShaderNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](
+ shader: GLShader,
+ bounds: Graphene.Rect,
+ args: GLib.Bytes | Uint8Array,
+ children?: RenderNode[] | null
+ ): GLShaderNode;
+
+ // Members
+
+ get_args(): GLib.Bytes;
+ get_child(idx: number): RenderNode;
+ get_n_children(): number;
+ get_shader(): GLShader;
+}
+export module InsetShadowNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class InsetShadowNode extends RenderNode {
+ static $gtype: GObject.GType<InsetShadowNode>;
+
+ constructor(properties?: Partial<InsetShadowNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<InsetShadowNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](
+ outline: RoundedRect,
+ color: Gdk.RGBA,
+ dx: number,
+ dy: number,
+ spread: number,
+ blur_radius: number
+ ): InsetShadowNode;
+
+ // Members
+
+ get_blur_radius(): number;
+ get_color(): Gdk.RGBA;
+ get_dx(): number;
+ get_dy(): number;
+ get_outline(): RoundedRect;
+ get_spread(): number;
+}
+export module LinearGradientNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class LinearGradientNode extends RenderNode {
+ static $gtype: GObject.GType<LinearGradientNode>;
+
+ constructor(properties?: Partial<LinearGradientNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<LinearGradientNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](
+ bounds: Graphene.Rect,
+ start: Graphene.Point,
+ end: Graphene.Point,
+ color_stops: ColorStop[]
+ ): LinearGradientNode;
+
+ // Members
+
+ get_color_stops(): ColorStop[];
+ get_end(): Graphene.Point;
+ get_n_color_stops(): number;
+ get_start(): Graphene.Point;
+}
+export module NglRenderer {
+ export interface ConstructorProperties extends Renderer.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class NglRenderer extends Renderer {
+ static $gtype: GObject.GType<NglRenderer>;
+
+ constructor(properties?: Partial<NglRenderer.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<NglRenderer.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](): NglRenderer;
+}
+export module OpacityNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class OpacityNode extends RenderNode {
+ static $gtype: GObject.GType<OpacityNode>;
+
+ constructor(properties?: Partial<OpacityNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<OpacityNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](child: RenderNode, opacity: number): OpacityNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_opacity(): number;
+}
+export module OutsetShadowNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class OutsetShadowNode extends RenderNode {
+ static $gtype: GObject.GType<OutsetShadowNode>;
+
+ constructor(properties?: Partial<OutsetShadowNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<OutsetShadowNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](
+ outline: RoundedRect,
+ color: Gdk.RGBA,
+ dx: number,
+ dy: number,
+ spread: number,
+ blur_radius: number
+ ): OutsetShadowNode;
+
+ // Members
+
+ get_blur_radius(): number;
+ get_color(): Gdk.RGBA;
+ get_dx(): number;
+ get_dy(): number;
+ get_outline(): RoundedRect;
+ get_spread(): number;
+}
+export module RadialGradientNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class RadialGradientNode extends RenderNode {
+ static $gtype: GObject.GType<RadialGradientNode>;
+
+ constructor(properties?: Partial<RadialGradientNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<RadialGradientNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](
+ bounds: Graphene.Rect,
+ center: Graphene.Point,
+ hradius: number,
+ vradius: number,
+ start: number,
+ end: number,
+ color_stops: ColorStop[]
+ ): RadialGradientNode;
+
+ // Members
+
+ get_center(): Graphene.Point;
+ get_color_stops(): ColorStop[];
+ get_end(): number;
+ get_hradius(): number;
+ get_n_color_stops(): number;
+ get_start(): number;
+ get_vradius(): number;
+}
+export module RenderNode {
+ export interface ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export abstract class RenderNode {
+ static $gtype: GObject.GType<RenderNode>;
+
+ constructor(properties?: Partial<RenderNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<RenderNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Members
+
+ draw(cr: cairo.Context): void;
+ get_bounds(): Graphene.Rect;
+ get_node_type(): RenderNodeType;
+ ref(): RenderNode;
+ serialize(): GLib.Bytes;
+ unref(): void;
+ write_to_file(filename: string): boolean;
+ static deserialize(bytes: GLib.Bytes | Uint8Array): RenderNode | null;
+}
+export module Renderer {
+ export interface ConstructorProperties extends GObject.Object.ConstructorProperties {
+ [key: string]: any;
+ realized: boolean;
+ surface: Gdk.Surface;
+ }
+}
+export abstract class Renderer extends GObject.Object {
+ static $gtype: GObject.GType<Renderer>;
+
+ constructor(properties?: Partial<Renderer.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<Renderer.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get realized(): boolean;
+ get surface(): Gdk.Surface;
+
+ // Constructors
+
+ static new_for_surface(surface: Gdk.Surface): Renderer;
+
+ // Members
+
+ get_surface(): Gdk.Surface | null;
+ is_realized(): boolean;
+ realize(surface?: Gdk.Surface | null): boolean;
+ render(root: RenderNode, region?: cairo.Region | null): void;
+ render_texture(root: RenderNode, viewport?: Graphene.Rect | null): Gdk.Texture;
+ unrealize(): void;
+}
+export module RepeatNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class RepeatNode extends RenderNode {
+ static $gtype: GObject.GType<RepeatNode>;
+
+ constructor(properties?: Partial<RepeatNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<RepeatNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](bounds: Graphene.Rect, child: RenderNode, child_bounds?: Graphene.Rect | null):
RepeatNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_child_bounds(): Graphene.Rect;
+}
+export module RepeatingLinearGradientNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class RepeatingLinearGradientNode extends RenderNode {
+ static $gtype: GObject.GType<RepeatingLinearGradientNode>;
+
+ constructor(properties?: Partial<RepeatingLinearGradientNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<RepeatingLinearGradientNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](
+ bounds: Graphene.Rect,
+ start: Graphene.Point,
+ end: Graphene.Point,
+ color_stops: ColorStop[]
+ ): RepeatingLinearGradientNode;
+}
+export module RepeatingRadialGradientNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class RepeatingRadialGradientNode extends RenderNode {
+ static $gtype: GObject.GType<RepeatingRadialGradientNode>;
+
+ constructor(properties?: Partial<RepeatingRadialGradientNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<RepeatingRadialGradientNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](
+ bounds: Graphene.Rect,
+ center: Graphene.Point,
+ hradius: number,
+ vradius: number,
+ start: number,
+ end: number,
+ color_stops: ColorStop[]
+ ): RepeatingRadialGradientNode;
+}
+export module RoundedClipNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class RoundedClipNode extends RenderNode {
+ static $gtype: GObject.GType<RoundedClipNode>;
+
+ constructor(properties?: Partial<RoundedClipNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<RoundedClipNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](child: RenderNode, clip: RoundedRect): RoundedClipNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_clip(): RoundedRect;
+}
+export module ShadowNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class ShadowNode extends RenderNode {
+ static $gtype: GObject.GType<ShadowNode>;
+
+ constructor(properties?: Partial<ShadowNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<ShadowNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](child: RenderNode, shadows: Shadow[]): ShadowNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_n_shadows(): number;
+ get_shadow(i: number): Shadow;
+}
+export module TextNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class TextNode extends RenderNode {
+ static $gtype: GObject.GType<TextNode>;
+
+ constructor(properties?: Partial<TextNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<TextNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](font: Pango.Font, glyphs: Pango.GlyphString, color: Gdk.RGBA, offset: Graphene.Point):
TextNode;
+
+ // Members
+
+ get_color(): Gdk.RGBA;
+ get_font(): Pango.Font;
+ get_glyphs(): Pango.GlyphInfo[];
+ get_num_glyphs(): number;
+ get_offset(): Graphene.Point;
+ has_color_glyphs(): boolean;
+}
+export module TextureNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class TextureNode extends RenderNode {
+ static $gtype: GObject.GType<TextureNode>;
+
+ constructor(properties?: Partial<TextureNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<TextureNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](texture: Gdk.Texture, bounds: Graphene.Rect): TextureNode;
+
+ // Members
+
+ get_texture(): Gdk.Texture;
+}
+export module TransformNode {
+ export interface ConstructorProperties extends RenderNode.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class TransformNode extends RenderNode {
+ static $gtype: GObject.GType<TransformNode>;
+
+ constructor(properties?: Partial<TransformNode.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<TransformNode.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](child: RenderNode, transform: Transform): TransformNode;
+
+ // Members
+
+ get_child(): RenderNode;
+ get_transform(): Transform;
+}
+
+export class ColorStop {
+ static $gtype: GObject.GType<ColorStop>;
+
+ constructor(
+ properties?: Partial<{
+ offset?: number;
+ color?: Gdk.RGBA;
+ }>
+ );
+ constructor(copy: ColorStop);
+
+ // Fields
+ offset: number;
+ color: Gdk.RGBA;
+}
+
+export class ParseLocation {
+ static $gtype: GObject.GType<ParseLocation>;
+
+ constructor(
+ properties?: Partial<{
+ bytes?: number;
+ chars?: number;
+ lines?: number;
+ line_bytes?: number;
+ line_chars?: number;
+ }>
+ );
+ constructor(copy: ParseLocation);
+
+ // Fields
+ bytes: number;
+ chars: number;
+ lines: number;
+ line_bytes: number;
+ line_chars: number;
+}
+
+export class RoundedRect {
+ static $gtype: GObject.GType<RoundedRect>;
+
+ constructor(copy: RoundedRect);
+
+ // Fields
+ bounds: Graphene.Rect;
+ corner: Graphene.Size[];
+
+ // Members
+ contains_point(point: Graphene.Point): boolean;
+ contains_rect(rect: Graphene.Rect): boolean;
+ init(
+ bounds: Graphene.Rect,
+ top_left: Graphene.Size,
+ top_right: Graphene.Size,
+ bottom_right: Graphene.Size,
+ bottom_left: Graphene.Size
+ ): RoundedRect;
+ init_copy(src: RoundedRect): RoundedRect;
+ init_from_rect(bounds: Graphene.Rect, radius: number): RoundedRect;
+ intersects_rect(rect: Graphene.Rect): boolean;
+ is_rectilinear(): boolean;
+ normalize(): RoundedRect;
+ offset(dx: number, dy: number): RoundedRect;
+ shrink(top: number, right: number, bottom: number, left: number): RoundedRect;
+}
+
+export class ShaderArgsBuilder {
+ static $gtype: GObject.GType<ShaderArgsBuilder>;
+
+ constructor(shader: GLShader, initial_values?: GLib.Bytes | null);
+ constructor(copy: ShaderArgsBuilder);
+
+ // Constructors
+ static ["new"](shader: GLShader, initial_values?: GLib.Bytes | null): ShaderArgsBuilder;
+
+ // Members
+ ref(): ShaderArgsBuilder;
+ set_bool(idx: number, value: boolean): void;
+ set_float(idx: number, value: number): void;
+ set_int(idx: number, value: number): void;
+ set_uint(idx: number, value: number): void;
+ set_vec2(idx: number, value: Graphene.Vec2): void;
+ set_vec3(idx: number, value: Graphene.Vec3): void;
+ set_vec4(idx: number, value: Graphene.Vec4): void;
+ to_args(): GLib.Bytes;
+ unref(): void;
+}
+
+export class Shadow {
+ static $gtype: GObject.GType<Shadow>;
+
+ constructor(
+ properties?: Partial<{
+ color?: Gdk.RGBA;
+ dx?: number;
+ dy?: number;
+ radius?: number;
+ }>
+ );
+ constructor(copy: Shadow);
+
+ // Fields
+ color: Gdk.RGBA;
+ dx: number;
+ dy: number;
+ radius: number;
+}
+
+export class Transform {
+ static $gtype: GObject.GType<Transform>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: Transform);
+
+ // Constructors
+ static ["new"](): Transform;
+
+ // Members
+ equal(second?: Transform | null): boolean;
+ get_category(): TransformCategory;
+ invert(): Transform | null;
+ matrix(matrix: Graphene.Matrix): Transform;
+ perspective(depth: number): Transform;
+ print(string: GLib.String): void;
+ ref(): Transform | null;
+ rotate(angle: number): Transform | null;
+ rotate_3d(angle: number, axis: Graphene.Vec3): Transform | null;
+ scale(factor_x: number, factor_y: number): Transform | null;
+ scale_3d(factor_x: number, factor_y: number, factor_z: number): Transform | null;
+ skew(skew_x: number, skew_y: number): Transform | null;
+ to_2d(): [number, number, number, number, number, number];
+ to_2d_components(): [number, number, number, number, number, number, number];
+ to_affine(): [number, number, number, number];
+ to_matrix(): Graphene.Matrix;
+ to_string(): string;
+ to_translate(): [number, number];
+ transform(other?: Transform | null): Transform | null;
+ transform_bounds(rect: Graphene.Rect): Graphene.Rect;
+ transform_point(point: Graphene.Point): Graphene.Point;
+ translate(point: Graphene.Point): Transform | null;
+ translate_3d(point: Graphene.Point3D): Transform | null;
+ unref(): void;
+ static parse(string: string): [boolean, Transform];
+}
diff --git a/types/gstaudio.d.ts b/types/gstaudio.d.ts
index c9e92ac..e5d3aa2 100644
--- a/types/gstaudio.d.ts
+++ b/types/gstaudio.d.ts
@@ -1,3 +1,4 @@
+// @ts-nocheck
/**
* GstAudio 1.0
*
diff --git a/types/gstbase.d.ts b/types/gstbase.d.ts
new file mode 100644
index 0000000..81aac0c
--- /dev/null
+++ b/types/gstbase.d.ts
@@ -0,0 +1,1106 @@
+/**
+ * GstBase 1.0
+ *
+ * Generated from 1.0
+ */
+
+import * as Gst from "gst";
+import * as GLib from "glib";
+import * as GObject from "gobject";
+
+export const BASE_PARSE_FLAG_DRAINING: number;
+export const BASE_PARSE_FLAG_LOST_SYNC: number;
+export const BASE_TRANSFORM_SINK_NAME: string;
+export const BASE_TRANSFORM_SRC_NAME: string;
+export function type_find_helper(src: Gst.Pad, size: number): Gst.Caps | null;
+export function type_find_helper_for_buffer(
+ obj: Gst.Object | null,
+ buf: Gst.Buffer
+): [Gst.Caps | null, Gst.TypeFindProbability | null];
+export function type_find_helper_for_buffer_with_extension(
+ obj: Gst.Object | null,
+ buf: Gst.Buffer,
+ extension?: string | null
+): [Gst.Caps | null, Gst.TypeFindProbability | null];
+export function type_find_helper_for_data(
+ obj: Gst.Object | null,
+ data: Uint8Array | string
+): [Gst.Caps | null, Gst.TypeFindProbability | null];
+export function type_find_helper_for_data_with_extension(
+ obj: Gst.Object | null,
+ data: Uint8Array | string,
+ extension?: string | null
+): [Gst.Caps | null, Gst.TypeFindProbability | null];
+export function type_find_helper_for_extension(obj: Gst.Object | null, extension: string): Gst.Caps | null;
+export function type_find_helper_get_range(
+ obj: Gst.Object,
+ parent: Gst.Object | null,
+ func: TypeFindHelperGetRangeFunction,
+ size: number,
+ extension?: string | null
+): [Gst.Caps | null, Gst.TypeFindProbability | null];
+export function type_find_helper_get_range_full(
+ obj: Gst.Object,
+ parent: Gst.Object | null,
+ func: TypeFindHelperGetRangeFunction,
+ size: number,
+ extension: string | null
+): [Gst.FlowReturn, Gst.Caps, Gst.TypeFindProbability | null];
+export type CollectDataDestroyNotify = (data: CollectData) => void;
+export type CollectPadsBufferFunction = (pads: CollectPads, data: CollectData, buffer: Gst.Buffer) =>
Gst.FlowReturn;
+export type CollectPadsClipFunction = (pads: CollectPads, data: CollectData, inbuffer: Gst.Buffer) =>
Gst.FlowReturn;
+export type CollectPadsCompareFunction = (
+ pads: CollectPads,
+ data1: CollectData,
+ timestamp1: Gst.ClockTime,
+ data2: CollectData,
+ timestamp2: Gst.ClockTime
+) => number;
+export type CollectPadsEventFunction = (pads: CollectPads, pad: CollectData, event: Gst.Event) => boolean;
+export type CollectPadsFlushFunction = (pads: CollectPads) => void;
+export type CollectPadsFunction = (pads: CollectPads) => Gst.FlowReturn;
+export type CollectPadsQueryFunction = (pads: CollectPads, pad: CollectData, query: Gst.Query) => boolean;
+export type DataQueueEmptyCallback = (queue: DataQueue, checkdata?: any | null) => void;
+export type DataQueueFullCallback = (queue: DataQueue, checkdata?: any | null) => void;
+export type TypeFindHelperGetRangeFunction = (
+ obj: Gst.Object,
+ parent: Gst.Object | null,
+ offset: number,
+ length: number
+) => Gst.FlowReturn;
+
+export namespace AggregatorStartTimeSelection {
+ export const $gtype: GObject.GType<AggregatorStartTimeSelection>;
+}
+
+export enum AggregatorStartTimeSelection {
+ ZERO = 0,
+ FIRST = 1,
+ SET = 2,
+}
+
+export namespace BaseParseFrameFlags {
+ export const $gtype: GObject.GType<BaseParseFrameFlags>;
+}
+
+export enum BaseParseFrameFlags {
+ NONE = 0,
+ NEW_FRAME = 1,
+ NO_FRAME = 2,
+ CLIP = 4,
+ DROP = 8,
+ QUEUE = 16,
+}
+
+export namespace BaseSrcFlags {
+ export const $gtype: GObject.GType<BaseSrcFlags>;
+}
+
+export enum BaseSrcFlags {
+ STARTING = 16384,
+ STARTED = 32768,
+ LAST = 1048576,
+}
+
+export namespace CollectPadsStateFlags {
+ export const $gtype: GObject.GType<CollectPadsStateFlags>;
+}
+
+export enum CollectPadsStateFlags {
+ EOS = 1,
+ FLUSHING = 2,
+ NEW_SEGMENT = 4,
+ WAITING = 8,
+ LOCKED = 16,
+}
+export module Adapter {
+ export interface ConstructorProperties extends GObject.Object.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class Adapter extends GObject.Object {
+ static $gtype: GObject.GType<Adapter>;
+
+ constructor(properties?: Partial<Adapter.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<Adapter.ConstructorProperties>, ...args: any[]): void;
+
+ // Constructors
+
+ static ["new"](): Adapter;
+
+ // Members
+
+ available(): number;
+ available_fast(): number;
+ clear(): void;
+ copy(offset: number, size: number): GLib.Bytes;
+ distance_from_discont(): number;
+ dts_at_discont(): Gst.ClockTime;
+ flush(flush: number): void;
+ get_buffer(nbytes: number): Gst.Buffer | null;
+ get_buffer_fast(nbytes: number): Gst.Buffer | null;
+ get_buffer_list(nbytes: number): Gst.BufferList | null;
+ get_list(nbytes: number): Gst.Buffer[] | null;
+ map(): Uint8Array | null;
+ masked_scan_uint32(mask: number, pattern: number, offset: number, size: number): number;
+ masked_scan_uint32_peek(mask: number, pattern: number, offset: number, size: number): [number, number];
+ offset_at_discont(): number;
+ prev_dts(): [Gst.ClockTime, number];
+ prev_dts_at_offset(offset: number): [Gst.ClockTime, number];
+ prev_offset(): [number, number];
+ prev_pts(): [Gst.ClockTime, number];
+ prev_pts_at_offset(offset: number): [Gst.ClockTime, number];
+ pts_at_discont(): Gst.ClockTime;
+ push(buf: Gst.Buffer): void;
+ take(): Uint8Array | null;
+ take_buffer(nbytes: number): Gst.Buffer | null;
+ take_buffer_fast(nbytes: number): Gst.Buffer | null;
+ take_buffer_list(nbytes: number): Gst.BufferList | null;
+ take_list(nbytes: number): Gst.Buffer[] | null;
+ unmap(): void;
+}
+export module Aggregator {
+ export interface ConstructorProperties extends Gst.Element.ConstructorProperties {
+ [key: string]: any;
+ emit_signals: boolean;
+ emitSignals: boolean;
+ latency: number;
+ min_upstream_latency: number;
+ minUpstreamLatency: number;
+ start_time: number | any;
+ startTime: number;
+ start_time_selection: AggregatorStartTimeSelection;
+ startTimeSelection: AggregatorStartTimeSelection;
+ }
+}
+export abstract class Aggregator extends Gst.Element {
+ static $gtype: GObject.GType<Aggregator>;
+
+ constructor(properties?: Partial<Aggregator.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<Aggregator.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get emit_signals(): boolean;
+ set emit_signals(val: boolean);
+ get emitSignals(): boolean;
+ set emitSignals(val: boolean);
+ get latency(): number;
+ set latency(val: number);
+ get min_upstream_latency(): number;
+ set min_upstream_latency(val: number);
+ get minUpstreamLatency(): number;
+ set minUpstreamLatency(val: number);
+ // This accessor conflicts with a property, field, or function name in a parent class or interface.
+ // @ts-expect-error
+ get start_time(): number;
+ set start_time(val: number);
+ get startTime(): number;
+ set startTime(val: number);
+ get start_time_selection(): AggregatorStartTimeSelection;
+ set start_time_selection(val: AggregatorStartTimeSelection);
+ get startTimeSelection(): AggregatorStartTimeSelection;
+ set startTimeSelection(val: AggregatorStartTimeSelection);
+
+ // Fields
+ srcpad: Gst.Pad;
+
+ // Signals
+
+ connect(id: string, callback: (...args: any[]) => any): number;
+ connect_after(id: string, callback: (...args: any[]) => any): number;
+ emit(id: string, ...args: any[]): void;
+ connect(
+ signal: "samples-selected",
+ callback: (
+ _source: this,
+ segment: Gst.Segment,
+ pts: number,
+ dts: number,
+ duration: number,
+ info: Gst.Structure | null
+ ) => void
+ ): number;
+ connect_after(
+ signal: "samples-selected",
+ callback: (
+ _source: this,
+ segment: Gst.Segment,
+ pts: number,
+ dts: number,
+ duration: number,
+ info: Gst.Structure | null
+ ) => void
+ ): number;
+ emit(
+ signal: "samples-selected",
+ segment: Gst.Segment,
+ pts: number,
+ dts: number,
+ duration: number,
+ info: Gst.Structure | null
+ ): void;
+
+ // Members
+
+ finish_buffer(buffer: Gst.Buffer): Gst.FlowReturn;
+ finish_buffer_list(bufferlist: Gst.BufferList): Gst.FlowReturn;
+ get_allocator(): [Gst.Allocator | null, Gst.AllocationParams | null];
+ get_buffer_pool(): Gst.BufferPool | null;
+ get_ignore_inactive_pads(): boolean;
+ get_latency(): Gst.ClockTime;
+ negotiate(): boolean;
+ peek_next_sample(pad: AggregatorPad): Gst.Sample | null;
+ selected_samples(
+ pts: Gst.ClockTime,
+ dts: Gst.ClockTime,
+ duration: Gst.ClockTime,
+ info?: Gst.Structure | null
+ ): void;
+ set_ignore_inactive_pads(ignore: boolean): void;
+ set_latency(min_latency: Gst.ClockTime, max_latency: Gst.ClockTime): void;
+ set_src_caps(caps: Gst.Caps): void;
+ simple_get_next_time(): Gst.ClockTime;
+ update_segment(segment: Gst.Segment): void;
+ vfunc_aggregate(timeout: boolean): Gst.FlowReturn;
+ vfunc_clip(aggregator_pad: AggregatorPad, buf: Gst.Buffer): Gst.Buffer;
+ vfunc_decide_allocation(query: Gst.Query): boolean;
+ vfunc_finish_buffer(buffer: Gst.Buffer): Gst.FlowReturn;
+ vfunc_finish_buffer_list(bufferlist: Gst.BufferList): Gst.FlowReturn;
+ vfunc_fixate_src_caps(caps: Gst.Caps): Gst.Caps;
+ vfunc_flush(): Gst.FlowReturn;
+ vfunc_get_next_time(): Gst.ClockTime;
+ vfunc_negotiate(): boolean;
+ vfunc_negotiated_src_caps(caps: Gst.Caps): boolean;
+ vfunc_peek_next_sample(aggregator_pad: AggregatorPad): Gst.Sample | null;
+ vfunc_propose_allocation(pad: AggregatorPad, decide_query: Gst.Query, query: Gst.Query): boolean;
+ vfunc_sink_event(aggregator_pad: AggregatorPad, event: Gst.Event): boolean;
+ vfunc_sink_event_pre_queue(aggregator_pad: AggregatorPad, event: Gst.Event): Gst.FlowReturn;
+ vfunc_sink_query(aggregator_pad: AggregatorPad, query: Gst.Query): boolean;
+ vfunc_sink_query_pre_queue(aggregator_pad: AggregatorPad, query: Gst.Query): boolean;
+ vfunc_src_activate(mode: Gst.PadMode, active: boolean): boolean;
+ vfunc_src_event(event: Gst.Event): boolean;
+ vfunc_src_query(query: Gst.Query): boolean;
+ vfunc_start(): boolean;
+ vfunc_stop(): boolean;
+ vfunc_update_src_caps(caps: Gst.Caps): [Gst.FlowReturn, Gst.Caps | null];
+}
+export module AggregatorPad {
+ export interface ConstructorProperties extends Gst.Pad.ConstructorProperties {
+ [key: string]: any;
+ emit_signals: boolean;
+ emitSignals: boolean;
+ }
+}
+export class AggregatorPad extends Gst.Pad {
+ static $gtype: GObject.GType<AggregatorPad>;
+
+ constructor(properties?: Partial<AggregatorPad.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<AggregatorPad.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get emit_signals(): boolean;
+ set emit_signals(val: boolean);
+ get emitSignals(): boolean;
+ set emitSignals(val: boolean);
+
+ // Fields
+ segment: Gst.Segment;
+
+ // Signals
+
+ connect(id: string, callback: (...args: any[]) => any): number;
+ connect_after(id: string, callback: (...args: any[]) => any): number;
+ emit(id: string, ...args: any[]): void;
+ connect(signal: "buffer-consumed", callback: (_source: this, object: Gst.Buffer) => void): number;
+ connect_after(signal: "buffer-consumed", callback: (_source: this, object: Gst.Buffer) => void): number;
+ emit(signal: "buffer-consumed", object: Gst.Buffer): void;
+
+ // Members
+
+ drop_buffer(): boolean;
+ has_buffer(): boolean;
+ is_eos(): boolean;
+ is_inactive(): boolean;
+ peek_buffer(): Gst.Buffer | null;
+ pop_buffer(): Gst.Buffer | null;
+ vfunc_flush(aggregator: Aggregator): Gst.FlowReturn;
+ vfunc_skip_buffer(aggregator: Aggregator, buffer: Gst.Buffer): boolean;
+}
+export module BaseParse {
+ export interface ConstructorProperties extends Gst.Element.ConstructorProperties {
+ [key: string]: any;
+ disable_passthrough: boolean;
+ disablePassthrough: boolean;
+ }
+}
+export abstract class BaseParse extends Gst.Element {
+ static $gtype: GObject.GType<BaseParse>;
+
+ constructor(properties?: Partial<BaseParse.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<BaseParse.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get disable_passthrough(): boolean;
+ set disable_passthrough(val: boolean);
+ get disablePassthrough(): boolean;
+ set disablePassthrough(val: boolean);
+
+ // Fields
+ element: Gst.Element;
+ sinkpad: Gst.Pad;
+ srcpad: Gst.Pad;
+ flags: number;
+ segment: Gst.Segment;
+
+ // Members
+
+ add_index_entry(offset: number, ts: Gst.ClockTime, key: boolean, force: boolean): boolean;
+ convert_default(src_format: Gst.Format, src_value: number, dest_format: Gst.Format): [boolean, number];
+ drain(): void;
+ finish_frame(frame: BaseParseFrame, size: number): Gst.FlowReturn;
+ merge_tags(tags: Gst.TagList | null, mode: Gst.TagMergeMode): void;
+ push_frame(frame: BaseParseFrame): Gst.FlowReturn;
+ set_average_bitrate(bitrate: number): void;
+ set_duration(fmt: Gst.Format, duration: number, interval: number): void;
+ set_frame_rate(fps_num: number, fps_den: number, lead_in: number, lead_out: number): void;
+ set_has_timing_info(has_timing: boolean): void;
+ set_infer_ts(infer_ts: boolean): void;
+ set_latency(min_latency: Gst.ClockTime, max_latency: Gst.ClockTime): void;
+ set_min_frame_size(min_size: number): void;
+ set_passthrough(passthrough: boolean): void;
+ set_pts_interpolation(pts_interpolate: boolean): void;
+ set_syncable(syncable: boolean): void;
+ set_ts_at_offset(offset: number): void;
+ vfunc_convert(src_format: Gst.Format, src_value: number, dest_format: Gst.Format, dest_value: number):
boolean;
+ vfunc_detect(buffer: Gst.Buffer): Gst.FlowReturn;
+ vfunc_get_sink_caps(filter: Gst.Caps): Gst.Caps;
+ vfunc_handle_frame(frame: BaseParseFrame): [Gst.FlowReturn, number];
+ vfunc_pre_push_frame(frame: BaseParseFrame): Gst.FlowReturn;
+ vfunc_set_sink_caps(caps: Gst.Caps): boolean;
+ vfunc_sink_event(event: Gst.Event): boolean;
+ vfunc_sink_query(query: Gst.Query): boolean;
+ vfunc_src_event(event: Gst.Event): boolean;
+ vfunc_src_query(query: Gst.Query): boolean;
+ vfunc_start(): boolean;
+ vfunc_stop(): boolean;
+}
+export module BaseSink {
+ export interface ConstructorProperties extends Gst.Element.ConstructorProperties {
+ [key: string]: any;
+ async: boolean;
+ blocksize: number;
+ enable_last_sample: boolean;
+ enableLastSample: boolean;
+ last_sample: Gst.Sample;
+ lastSample: Gst.Sample;
+ max_bitrate: number;
+ maxBitrate: number;
+ max_lateness: number;
+ maxLateness: number;
+ processing_deadline: number;
+ processingDeadline: number;
+ qos: boolean;
+ render_delay: number;
+ renderDelay: number;
+ stats: Gst.Structure;
+ sync: boolean;
+ throttle_time: number;
+ throttleTime: number;
+ ts_offset: number;
+ tsOffset: number;
+ }
+}
+export abstract class BaseSink extends Gst.Element {
+ static $gtype: GObject.GType<BaseSink>;
+
+ constructor(properties?: Partial<BaseSink.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<BaseSink.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get async(): boolean;
+ set async(val: boolean);
+ get blocksize(): number;
+ set blocksize(val: number);
+ get enable_last_sample(): boolean;
+ set enable_last_sample(val: boolean);
+ get enableLastSample(): boolean;
+ set enableLastSample(val: boolean);
+ get last_sample(): Gst.Sample;
+ get lastSample(): Gst.Sample;
+ get max_bitrate(): number;
+ set max_bitrate(val: number);
+ get maxBitrate(): number;
+ set maxBitrate(val: number);
+ get max_lateness(): number;
+ set max_lateness(val: number);
+ get maxLateness(): number;
+ set maxLateness(val: number);
+ get processing_deadline(): number;
+ set processing_deadline(val: number);
+ get processingDeadline(): number;
+ set processingDeadline(val: number);
+ get qos(): boolean;
+ set qos(val: boolean);
+ get render_delay(): number;
+ set render_delay(val: number);
+ get renderDelay(): number;
+ set renderDelay(val: number);
+ get stats(): Gst.Structure;
+ get sync(): boolean;
+ set sync(val: boolean);
+ get throttle_time(): number;
+ set throttle_time(val: number);
+ get throttleTime(): number;
+ set throttleTime(val: number);
+ get ts_offset(): number;
+ set ts_offset(val: number);
+ get tsOffset(): number;
+ set tsOffset(val: number);
+
+ // Fields
+ element: Gst.Element;
+ sinkpad: Gst.Pad;
+ pad_mode: Gst.PadMode;
+ offset: number;
+ can_activate_pull: boolean;
+ can_activate_push: boolean;
+ preroll_lock: GLib.Mutex;
+ preroll_cond: GLib.Cond;
+ eos: boolean;
+ need_preroll: boolean;
+ have_preroll: boolean;
+ playing_async: boolean;
+ have_newsegment: boolean;
+ segment: Gst.Segment;
+
+ // Members
+
+ do_preroll(obj: Gst.MiniObject): Gst.FlowReturn;
+ get_blocksize(): number;
+ get_drop_out_of_segment(): boolean;
+ get_last_sample(): Gst.Sample | null;
+ get_latency(): Gst.ClockTime;
+ get_max_bitrate(): number;
+ get_max_lateness(): number;
+ get_processing_deadline(): Gst.ClockTime;
+ get_render_delay(): Gst.ClockTime;
+ get_stats(): Gst.Structure;
+ get_sync(): boolean;
+ get_throttle_time(): number;
+ get_ts_offset(): Gst.ClockTimeDiff;
+ is_async_enabled(): boolean;
+ is_last_sample_enabled(): boolean;
+ is_qos_enabled(): boolean;
+ query_latency(): [boolean, boolean, boolean, Gst.ClockTime | null, Gst.ClockTime | null];
+ set_async_enabled(enabled: boolean): void;
+ set_blocksize(blocksize: number): void;
+ set_drop_out_of_segment(drop_out_of_segment: boolean): void;
+ set_last_sample_enabled(enabled: boolean): void;
+ set_max_bitrate(max_bitrate: number): void;
+ set_max_lateness(max_lateness: number): void;
+ set_processing_deadline(processing_deadline: Gst.ClockTime): void;
+ set_qos_enabled(enabled: boolean): void;
+ set_render_delay(delay: Gst.ClockTime): void;
+ set_sync(sync: boolean): void;
+ set_throttle_time(throttle: number): void;
+ set_ts_offset(offset: Gst.ClockTimeDiff): void;
+ wait(time: Gst.ClockTime): [Gst.FlowReturn, Gst.ClockTimeDiff | null];
+ wait_clock(time: Gst.ClockTime): [Gst.ClockReturn, Gst.ClockTimeDiff | null];
+ wait_preroll(): Gst.FlowReturn;
+ vfunc_activate_pull(active: boolean): boolean;
+ vfunc_event(event: Gst.Event): boolean;
+ vfunc_fixate(caps: Gst.Caps): Gst.Caps;
+ vfunc_get_caps(filter: Gst.Caps): Gst.Caps;
+ vfunc_get_times(buffer: Gst.Buffer, start: Gst.ClockTime, end: Gst.ClockTime): void;
+ vfunc_prepare(buffer: Gst.Buffer): Gst.FlowReturn;
+ vfunc_prepare_list(buffer_list: Gst.BufferList): Gst.FlowReturn;
+ vfunc_preroll(buffer: Gst.Buffer): Gst.FlowReturn;
+ vfunc_propose_allocation(query: Gst.Query): boolean;
+ vfunc_query(query: Gst.Query): boolean;
+ vfunc_render(buffer: Gst.Buffer): Gst.FlowReturn;
+ vfunc_render_list(buffer_list: Gst.BufferList): Gst.FlowReturn;
+ vfunc_set_caps(caps: Gst.Caps): boolean;
+ vfunc_start(): boolean;
+ vfunc_stop(): boolean;
+ vfunc_unlock(): boolean;
+ vfunc_unlock_stop(): boolean;
+ vfunc_wait_event(event: Gst.Event): Gst.FlowReturn;
+}
+export module BaseSrc {
+ export interface ConstructorProperties extends Gst.Element.ConstructorProperties {
+ [key: string]: any;
+ blocksize: number;
+ do_timestamp: boolean;
+ doTimestamp: boolean;
+ num_buffers: number;
+ numBuffers: number;
+ typefind: boolean;
+ }
+}
+export abstract class BaseSrc extends Gst.Element {
+ static $gtype: GObject.GType<BaseSrc>;
+
+ constructor(properties?: Partial<BaseSrc.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<BaseSrc.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get blocksize(): number;
+ set blocksize(val: number);
+ get do_timestamp(): boolean;
+ set do_timestamp(val: boolean);
+ get doTimestamp(): boolean;
+ set doTimestamp(val: boolean);
+ get num_buffers(): number;
+ set num_buffers(val: number);
+ get numBuffers(): number;
+ set numBuffers(val: number);
+ get typefind(): boolean;
+ set typefind(val: boolean);
+
+ // Fields
+ element: Gst.Element;
+ srcpad: Gst.Pad;
+ live_lock: GLib.Mutex;
+ live_cond: GLib.Cond;
+ live_running: boolean;
+ can_activate_push: boolean;
+ random_access: boolean;
+ clock_id: Gst.ClockID;
+ segment: Gst.Segment;
+ need_newsegment: boolean;
+ num_buffers_left: number;
+ running: boolean;
+ pending_seek: Gst.Event;
+ priv: BaseSrcPrivate;
+
+ // Members
+
+ get_allocator(): [Gst.Allocator | null, Gst.AllocationParams | null];
+ get_blocksize(): number;
+ get_buffer_pool(): Gst.BufferPool | null;
+ get_do_timestamp(): boolean;
+ is_async(): boolean;
+ is_live(): boolean;
+ negotiate(): boolean;
+ new_seamless_segment(start: number, stop: number, time: number): boolean;
+ new_segment(segment: Gst.Segment): boolean;
+ query_latency(): [boolean, boolean, Gst.ClockTime | null, Gst.ClockTime | null];
+ set_async(async: boolean): void;
+ set_automatic_eos(automatic_eos: boolean): void;
+ set_blocksize(blocksize: number): void;
+ set_caps(caps: Gst.Caps): boolean;
+ set_do_timestamp(timestamp: boolean): void;
+ set_dynamic_size(dynamic: boolean): void;
+ set_format(format: Gst.Format): void;
+ set_live(live: boolean): void;
+ start_complete(ret: Gst.FlowReturn): void;
+ start_wait(): Gst.FlowReturn;
+ submit_buffer_list(buffer_list: Gst.BufferList): void;
+ wait_playing(): Gst.FlowReturn;
+ vfunc_alloc(offset: number, size: number): [Gst.FlowReturn, Gst.Buffer];
+ vfunc_create(offset: number, size: number, buf: Gst.Buffer): [Gst.FlowReturn, Gst.Buffer];
+ vfunc_decide_allocation(query: Gst.Query): boolean;
+ vfunc_do_seek(segment: Gst.Segment): boolean;
+ vfunc_event(event: Gst.Event): boolean;
+ vfunc_fill(offset: number, size: number, buf: Gst.Buffer): Gst.FlowReturn;
+ vfunc_fixate(caps: Gst.Caps): Gst.Caps;
+ vfunc_get_caps(filter?: Gst.Caps | null): Gst.Caps;
+ vfunc_get_size(): [boolean, number];
+ vfunc_get_times(buffer: Gst.Buffer): [Gst.ClockTime, Gst.ClockTime];
+ vfunc_is_seekable(): boolean;
+ vfunc_negotiate(): boolean;
+ vfunc_prepare_seek_segment(seek: Gst.Event, segment: Gst.Segment): boolean;
+ vfunc_query(query: Gst.Query): boolean;
+ vfunc_set_caps(caps: Gst.Caps): boolean;
+ vfunc_start(): boolean;
+ vfunc_stop(): boolean;
+ vfunc_unlock(): boolean;
+ vfunc_unlock_stop(): boolean;
+}
+export module BaseTransform {
+ export interface ConstructorProperties extends Gst.Element.ConstructorProperties {
+ [key: string]: any;
+ qos: boolean;
+ }
+}
+export abstract class BaseTransform extends Gst.Element {
+ static $gtype: GObject.GType<BaseTransform>;
+
+ constructor(properties?: Partial<BaseTransform.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<BaseTransform.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get qos(): boolean;
+ set qos(val: boolean);
+
+ // Fields
+ element: Gst.Element;
+ sinkpad: Gst.Pad;
+ srcpad: Gst.Pad;
+ have_segment: boolean;
+ segment: Gst.Segment;
+ queued_buf: Gst.Buffer;
+
+ // Members
+
+ get_allocator(): [Gst.Allocator | null, Gst.AllocationParams | null];
+ get_buffer_pool(): Gst.BufferPool | null;
+ is_in_place(): boolean;
+ is_passthrough(): boolean;
+ is_qos_enabled(): boolean;
+ reconfigure(): boolean;
+ reconfigure_sink(): void;
+ reconfigure_src(): void;
+ set_gap_aware(gap_aware: boolean): void;
+ set_in_place(in_place: boolean): void;
+ set_passthrough(passthrough: boolean): void;
+ set_prefer_passthrough(prefer_passthrough: boolean): void;
+ set_qos_enabled(enabled: boolean): void;
+ update_qos(proportion: number, diff: Gst.ClockTimeDiff, timestamp: Gst.ClockTime): void;
+ update_src_caps(updated_caps: Gst.Caps): boolean;
+ vfunc_accept_caps(direction: Gst.PadDirection, caps: Gst.Caps): boolean;
+ vfunc_before_transform(buffer: Gst.Buffer): void;
+ vfunc_copy_metadata(input: Gst.Buffer, outbuf: Gst.Buffer): boolean;
+ vfunc_decide_allocation(query: Gst.Query): boolean;
+ vfunc_filter_meta(query: Gst.Query, api: GObject.GType, params: Gst.Structure): boolean;
+ vfunc_fixate_caps(direction: Gst.PadDirection, caps: Gst.Caps, othercaps: Gst.Caps): Gst.Caps;
+ vfunc_generate_output(): [Gst.FlowReturn, Gst.Buffer];
+ vfunc_get_unit_size(caps: Gst.Caps): [boolean, number];
+ vfunc_prepare_output_buffer(input: Gst.Buffer): [Gst.FlowReturn, Gst.Buffer];
+ vfunc_propose_allocation(decide_query: Gst.Query, query: Gst.Query): boolean;
+ vfunc_query(direction: Gst.PadDirection, query: Gst.Query): boolean;
+ // Conflicted with Gst.Element.vfunc_query
+ vfunc_query(...args: never[]): any;
+ vfunc_set_caps(incaps: Gst.Caps, outcaps: Gst.Caps): boolean;
+ vfunc_sink_event(event: Gst.Event): boolean;
+ vfunc_src_event(event: Gst.Event): boolean;
+ vfunc_start(): boolean;
+ vfunc_stop(): boolean;
+ vfunc_submit_input_buffer(is_discont: boolean, input: Gst.Buffer): Gst.FlowReturn;
+ vfunc_transform(inbuf: Gst.Buffer, outbuf: Gst.Buffer): Gst.FlowReturn;
+ vfunc_transform_caps(direction: Gst.PadDirection, caps: Gst.Caps, filter: Gst.Caps): Gst.Caps;
+ vfunc_transform_ip(buf: Gst.Buffer): Gst.FlowReturn;
+ vfunc_transform_meta(outbuf: Gst.Buffer, meta: Gst.Meta, inbuf: Gst.Buffer): boolean;
+ vfunc_transform_size(
+ direction: Gst.PadDirection,
+ caps: Gst.Caps,
+ size: number,
+ othercaps: Gst.Caps
+ ): [boolean, number];
+}
+export module CollectPads {
+ export interface ConstructorProperties extends Gst.Object.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class CollectPads extends Gst.Object {
+ static $gtype: GObject.GType<CollectPads>;
+
+ constructor(properties?: Partial<CollectPads.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<CollectPads.ConstructorProperties>, ...args: any[]): void;
+
+ // Fields
+ object: Gst.Object;
+ data: CollectData[];
+
+ // Constructors
+
+ static ["new"](): CollectPads;
+
+ // Members
+
+ add_pad(pad: Gst.Pad, size: number, destroy_notify: CollectDataDestroyNotify, lock: boolean):
CollectData | null;
+ available(): number;
+ clip_running_time(cdata: CollectData, buf: Gst.Buffer, user_data?: any | null): [Gst.FlowReturn,
Gst.Buffer | null];
+ event_default(data: CollectData, event: Gst.Event, discard: boolean): boolean;
+ flush(data: CollectData, size: number): number;
+ peek(data: CollectData): Gst.Buffer | null;
+ pop(data: CollectData): Gst.Buffer | null;
+ query_default(data: CollectData, query: Gst.Query, discard: boolean): boolean;
+ read_buffer(data: CollectData, size: number): Gst.Buffer | null;
+ remove_pad(pad: Gst.Pad): boolean;
+ set_buffer_function(func: CollectPadsBufferFunction): void;
+ set_clip_function(clipfunc: CollectPadsClipFunction): void;
+ set_compare_function(func: CollectPadsCompareFunction): void;
+ set_event_function(func: CollectPadsEventFunction): void;
+ set_flush_function(func: CollectPadsFlushFunction): void;
+ set_flushing(flushing: boolean): void;
+ set_function(func: CollectPadsFunction): void;
+ set_query_function(func: CollectPadsQueryFunction): void;
+ set_waiting(data: CollectData, waiting: boolean): void;
+ src_event_default(pad: Gst.Pad, event: Gst.Event): boolean;
+ start(): void;
+ stop(): void;
+ take_buffer(data: CollectData, size: number): Gst.Buffer | null;
+}
+export module DataQueue {
+ export interface ConstructorProperties extends GObject.Object.ConstructorProperties {
+ [key: string]: any;
+ current_level_bytes: number;
+ currentLevelBytes: number;
+ current_level_time: number;
+ currentLevelTime: number;
+ current_level_visible: number;
+ currentLevelVisible: number;
+ }
+}
+export class DataQueue extends GObject.Object {
+ static $gtype: GObject.GType<DataQueue>;
+
+ constructor(properties?: Partial<DataQueue.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<DataQueue.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get current_level_bytes(): number;
+ get currentLevelBytes(): number;
+ get current_level_time(): number;
+ get currentLevelTime(): number;
+ get current_level_visible(): number;
+ get currentLevelVisible(): number;
+
+ // Fields
+ object: GObject.Object;
+
+ // Signals
+
+ connect(id: string, callback: (...args: any[]) => any): number;
+ connect_after(id: string, callback: (...args: any[]) => any): number;
+ emit(id: string, ...args: any[]): void;
+ connect(signal: "empty", callback: (_source: this) => void): number;
+ connect_after(signal: "empty", callback: (_source: this) => void): number;
+ emit(signal: "empty"): void;
+ connect(signal: "full", callback: (_source: this) => void): number;
+ connect_after(signal: "full", callback: (_source: this) => void): number;
+ emit(signal: "full"): void;
+
+ // Members
+
+ vfunc_empty(): void;
+ vfunc_full(): void;
+}
+export module PushSrc {
+ export interface ConstructorProperties extends BaseSrc.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class PushSrc extends BaseSrc {
+ static $gtype: GObject.GType<PushSrc>;
+
+ constructor(properties?: Partial<PushSrc.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<PushSrc.ConstructorProperties>, ...args: any[]): void;
+
+ // Members
+
+ vfunc_alloc(): [Gst.FlowReturn, Gst.Buffer];
+ vfunc_create(buf: Gst.Buffer): [Gst.FlowReturn, Gst.Buffer];
+ // Conflicted with GstBase.BaseSrc.vfunc_create
+ vfunc_create(...args: never[]): any;
+ vfunc_fill(buf: Gst.Buffer): Gst.FlowReturn;
+ // Conflicted with GstBase.BaseSrc.vfunc_fill
+ vfunc_fill(...args: never[]): any;
+}
+
+export class AggregatorPadPrivate {
+ static $gtype: GObject.GType<AggregatorPadPrivate>;
+
+ constructor(copy: AggregatorPadPrivate);
+}
+
+export class AggregatorPrivate {
+ static $gtype: GObject.GType<AggregatorPrivate>;
+
+ constructor(copy: AggregatorPrivate);
+}
+
+export class BaseParseFrame {
+ static $gtype: GObject.GType<BaseParseFrame>;
+
+ constructor(buffer: Gst.Buffer, flags: BaseParseFrameFlags, overhead: number);
+ constructor(copy: BaseParseFrame);
+
+ // Fields
+ buffer: Gst.Buffer;
+ out_buffer: Gst.Buffer;
+ flags: number;
+ offset: number;
+ overhead: number;
+
+ // Constructors
+ static ["new"](buffer: Gst.Buffer, flags: BaseParseFrameFlags, overhead: number): BaseParseFrame;
+
+ // Members
+ copy(): BaseParseFrame;
+ free(): void;
+ init(): void;
+}
+
+export class BaseParsePrivate {
+ static $gtype: GObject.GType<BaseParsePrivate>;
+
+ constructor(copy: BaseParsePrivate);
+}
+
+export class BaseSinkPrivate {
+ static $gtype: GObject.GType<BaseSinkPrivate>;
+
+ constructor(copy: BaseSinkPrivate);
+}
+
+export class BaseSrcPrivate {
+ static $gtype: GObject.GType<BaseSrcPrivate>;
+
+ constructor(copy: BaseSrcPrivate);
+}
+
+export class BaseTransformPrivate {
+ static $gtype: GObject.GType<BaseTransformPrivate>;
+
+ constructor(copy: BaseTransformPrivate);
+}
+
+export class BitReader {
+ static $gtype: GObject.GType<BitReader>;
+
+ constructor(copy: BitReader);
+
+ // Fields
+ data: Uint8Array;
+ size: number;
+ "byte": number;
+ bit: number;
+
+ // Members
+ free(): void;
+ get_bits_uint16(nbits: number): [boolean, number];
+ get_bits_uint32(nbits: number): [boolean, number];
+ get_bits_uint64(nbits: number): [boolean, number];
+ get_bits_uint8(nbits: number): [boolean, number];
+ get_pos(): number;
+ get_remaining(): number;
+ get_size(): number;
+ init(data: Uint8Array | string): void;
+ peek_bits_uint16(nbits: number): [boolean, number];
+ peek_bits_uint32(nbits: number): [boolean, number];
+ peek_bits_uint64(nbits: number): [boolean, number];
+ peek_bits_uint8(nbits: number): [boolean, number];
+ set_pos(pos: number): boolean;
+ skip(nbits: number): boolean;
+ skip_to_byte(): boolean;
+}
+
+export class BitWriter {
+ static $gtype: GObject.GType<BitWriter>;
+
+ constructor(
+ properties?: Partial<{
+ data?: number;
+ bit_size?: number;
+ }>
+ );
+ constructor(copy: BitWriter);
+
+ // Fields
+ data: number;
+ bit_size: number;
+
+ // Members
+ align_bytes(trailing_bit: number): boolean;
+ free(): void;
+ free_and_get_buffer(): Gst.Buffer;
+ free_and_get_data(): Uint8Array;
+ get_data(): Uint8Array;
+ get_remaining(): number;
+ get_size(): number;
+ put_bits_uint16(value: number, nbits: number): boolean;
+ put_bits_uint32(value: number, nbits: number): boolean;
+ put_bits_uint64(value: number, nbits: number): boolean;
+ put_bits_uint8(value: number, nbits: number): boolean;
+ put_bytes(data: Uint8Array | string, nbytes: number): boolean;
+ reset(): void;
+ reset_and_get_buffer(): Gst.Buffer;
+ reset_and_get_data(): Uint8Array;
+ set_pos(pos: number): boolean;
+}
+
+export class ByteReader {
+ static $gtype: GObject.GType<ByteReader>;
+
+ constructor(copy: ByteReader);
+
+ // Fields
+ data: Uint8Array;
+ size: number;
+ "byte": number;
+
+ // Members
+ dup_data(): [boolean, Uint8Array];
+ dup_string_utf16(): [boolean, number[]];
+ dup_string_utf32(): [boolean, number[]];
+ dup_string_utf8(): [boolean, string[]];
+ free(): void;
+ get_data(): [boolean, Uint8Array];
+ get_float32_be(): [boolean, number];
+ get_float32_le(): [boolean, number];
+ get_float64_be(): [boolean, number];
+ get_float64_le(): [boolean, number];
+ get_int16_be(): [boolean, number];
+ get_int16_le(): [boolean, number];
+ get_int24_be(): [boolean, number];
+ get_int24_le(): [boolean, number];
+ get_int32_be(): [boolean, number];
+ get_int32_le(): [boolean, number];
+ get_int64_be(): [boolean, number];
+ get_int64_le(): [boolean, number];
+ get_int8(): [boolean, number];
+ get_pos(): number;
+ get_remaining(): number;
+ get_size(): number;
+ get_string_utf8(): [boolean, string[]];
+ get_uint16_be(): [boolean, number];
+ get_uint16_le(): [boolean, number];
+ get_uint24_be(): [boolean, number];
+ get_uint24_le(): [boolean, number];
+ get_uint32_be(): [boolean, number];
+ get_uint32_le(): [boolean, number];
+ get_uint64_be(): [boolean, number];
+ get_uint64_le(): [boolean, number];
+ get_uint8(): [boolean, number];
+ init(data: Uint8Array | string): void;
+ masked_scan_uint32(mask: number, pattern: number, offset: number, size: number): number;
+ masked_scan_uint32_peek(mask: number, pattern: number, offset: number, size: number): [number, number];
+ peek_data(): [boolean, Uint8Array];
+ peek_float32_be(): [boolean, number];
+ peek_float32_le(): [boolean, number];
+ peek_float64_be(): [boolean, number];
+ peek_float64_le(): [boolean, number];
+ peek_int16_be(): [boolean, number];
+ peek_int16_le(): [boolean, number];
+ peek_int24_be(): [boolean, number];
+ peek_int24_le(): [boolean, number];
+ peek_int32_be(): [boolean, number];
+ peek_int32_le(): [boolean, number];
+ peek_int64_be(): [boolean, number];
+ peek_int64_le(): [boolean, number];
+ peek_int8(): [boolean, number];
+ peek_string_utf8(): [boolean, string[]];
+ peek_uint16_be(): [boolean, number];
+ peek_uint16_le(): [boolean, number];
+ peek_uint24_be(): [boolean, number];
+ peek_uint24_le(): [boolean, number];
+ peek_uint32_be(): [boolean, number];
+ peek_uint32_le(): [boolean, number];
+ peek_uint64_be(): [boolean, number];
+ peek_uint64_le(): [boolean, number];
+ peek_uint8(): [boolean, number];
+ set_pos(pos: number): boolean;
+ skip(nbytes: number): boolean;
+ skip_string_utf16(): boolean;
+ skip_string_utf32(): boolean;
+ skip_string_utf8(): boolean;
+}
+
+export class ByteWriter {
+ static $gtype: GObject.GType<ByteWriter>;
+
+ constructor(copy: ByteWriter);
+
+ // Fields
+ parent: ByteReader;
+ alloc_size: number;
+ fixed: boolean;
+ owned: boolean;
+
+ // Members
+ ensure_free_space(size: number): boolean;
+ fill(value: number, size: number): boolean;
+ free(): void;
+ free_and_get_buffer(): Gst.Buffer;
+ free_and_get_data(): number;
+ get_remaining(): number;
+ init(): void;
+ init_with_data(data: Uint8Array | string, initialized: boolean): void;
+ init_with_size(size: number, fixed: boolean): void;
+ put_buffer(buffer: Gst.Buffer, offset: number, size: number): boolean;
+ put_data(data: Uint8Array | string): boolean;
+ put_float32_be(val: number): boolean;
+ put_float32_le(val: number): boolean;
+ put_float64_be(val: number): boolean;
+ put_float64_le(val: number): boolean;
+ put_int16_be(val: number): boolean;
+ put_int16_le(val: number): boolean;
+ put_int24_be(val: number): boolean;
+ put_int24_le(val: number): boolean;
+ put_int32_be(val: number): boolean;
+ put_int32_le(val: number): boolean;
+ put_int64_be(val: number): boolean;
+ put_int64_le(val: number): boolean;
+ put_int8(val: number): boolean;
+ put_string_utf16(data: number[]): boolean;
+ put_string_utf32(data: number[]): boolean;
+ put_string_utf8(data: string): boolean;
+ put_uint16_be(val: number): boolean;
+ put_uint16_le(val: number): boolean;
+ put_uint24_be(val: number): boolean;
+ put_uint24_le(val: number): boolean;
+ put_uint32_be(val: number): boolean;
+ put_uint32_le(val: number): boolean;
+ put_uint64_be(val: number): boolean;
+ put_uint64_le(val: number): boolean;
+ put_uint8(val: number): boolean;
+ reset(): void;
+ reset_and_get_buffer(): Gst.Buffer;
+ reset_and_get_data(): Uint8Array;
+}
+
+export class CollectData {
+ static $gtype: GObject.GType<CollectData>;
+
+ constructor(copy: CollectData);
+
+ // Fields
+ collect: CollectPads;
+ pad: Gst.Pad;
+ buffer: Gst.Buffer;
+ pos: number;
+ segment: Gst.Segment;
+}
+
+export class CollectDataPrivate {
+ static $gtype: GObject.GType<CollectDataPrivate>;
+
+ constructor(copy: CollectDataPrivate);
+}
+
+export class CollectPadsPrivate {
+ static $gtype: GObject.GType<CollectPadsPrivate>;
+
+ constructor(copy: CollectPadsPrivate);
+}
+
+export class DataQueuePrivate {
+ static $gtype: GObject.GType<DataQueuePrivate>;
+
+ constructor(copy: DataQueuePrivate);
+}
+
+export class FlowCombiner {
+ static $gtype: GObject.GType<FlowCombiner>;
+
+ constructor();
+ constructor(properties?: Partial<{}>);
+ constructor(copy: FlowCombiner);
+
+ // Constructors
+ static ["new"](): FlowCombiner;
+
+ // Members
+ add_pad(pad: Gst.Pad): void;
+ clear(): void;
+ free(): void;
+ ref(): FlowCombiner;
+ remove_pad(pad: Gst.Pad): void;
+ reset(): void;
+ unref(): void;
+ update_flow(fret: Gst.FlowReturn): Gst.FlowReturn;
+ update_pad_flow(pad: Gst.Pad, fret: Gst.FlowReturn): Gst.FlowReturn;
+}
diff --git a/types/gstvideo.d.ts b/types/gstvideo.d.ts
new file mode 100644
index 0000000..d9110f1
--- /dev/null
+++ b/types/gstvideo.d.ts
@@ -0,0 +1,2520 @@
+/**
+ * GstVideo 1.0
+ *
+ * Generated from 1.0
+ */
+
+import * as GObject from "gobject";
+import * as GstBase from "gstbase";
+import * as Gst from "gst";
+import * as GLib from "glib";
+
+export const BUFFER_POOL_OPTION_VIDEO_AFFINE_TRANSFORMATION_META: string;
+export const BUFFER_POOL_OPTION_VIDEO_ALIGNMENT: string;
+export const BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META: string;
+export const BUFFER_POOL_OPTION_VIDEO_META: string;
+export const CAPS_FEATURE_FORMAT_INTERLACED: string;
+export const CAPS_FEATURE_META_GST_VIDEO_AFFINE_TRANSFORMATION_META: string;
+export const CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META: string;
+export const CAPS_FEATURE_META_GST_VIDEO_META: string;
+export const CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION: string;
+export const META_TAG_VIDEO_COLORSPACE_STR: string;
+export const META_TAG_VIDEO_ORIENTATION_STR: string;
+export const META_TAG_VIDEO_SIZE_STR: string;
+export const META_TAG_VIDEO_STR: string;
+export const VIDEO_COLORIMETRY_BT2020: string;
+export const VIDEO_COLORIMETRY_BT2020_10: string;
+export const VIDEO_COLORIMETRY_BT2100_HLG: string;
+export const VIDEO_COLORIMETRY_BT2100_PQ: string;
+export const VIDEO_COLORIMETRY_BT601: string;
+export const VIDEO_COLORIMETRY_BT709: string;
+export const VIDEO_COLORIMETRY_SMPTE240M: string;
+export const VIDEO_COLORIMETRY_SRGB: string;
+export const VIDEO_COMP_A: number;
+export const VIDEO_COMP_B: number;
+export const VIDEO_COMP_G: number;
+export const VIDEO_COMP_INDEX: number;
+export const VIDEO_COMP_PALETTE: number;
+export const VIDEO_COMP_R: number;
+export const VIDEO_COMP_U: number;
+export const VIDEO_COMP_V: number;
+export const VIDEO_COMP_Y: number;
+export const VIDEO_CONVERTER_OPT_ALPHA_MODE: string;
+export const VIDEO_CONVERTER_OPT_ALPHA_VALUE: string;
+export const VIDEO_CONVERTER_OPT_ASYNC_TASKS: string;
+export const VIDEO_CONVERTER_OPT_BORDER_ARGB: string;
+export const VIDEO_CONVERTER_OPT_CHROMA_MODE: string;
+export const VIDEO_CONVERTER_OPT_CHROMA_RESAMPLER_METHOD: string;
+export const VIDEO_CONVERTER_OPT_DEST_HEIGHT: string;
+export const VIDEO_CONVERTER_OPT_DEST_WIDTH: string;
+export const VIDEO_CONVERTER_OPT_DEST_X: string;
+export const VIDEO_CONVERTER_OPT_DEST_Y: string;
+export const VIDEO_CONVERTER_OPT_DITHER_METHOD: string;
+export const VIDEO_CONVERTER_OPT_DITHER_QUANTIZATION: string;
+export const VIDEO_CONVERTER_OPT_FILL_BORDER: string;
+export const VIDEO_CONVERTER_OPT_GAMMA_MODE: string;
+export const VIDEO_CONVERTER_OPT_MATRIX_MODE: string;
+export const VIDEO_CONVERTER_OPT_PRIMARIES_MODE: string;
+export const VIDEO_CONVERTER_OPT_RESAMPLER_METHOD: string;
+export const VIDEO_CONVERTER_OPT_RESAMPLER_TAPS: string;
+export const VIDEO_CONVERTER_OPT_SRC_HEIGHT: string;
+export const VIDEO_CONVERTER_OPT_SRC_WIDTH: string;
+export const VIDEO_CONVERTER_OPT_SRC_X: string;
+export const VIDEO_CONVERTER_OPT_SRC_Y: string;
+export const VIDEO_CONVERTER_OPT_THREADS: string;
+export const VIDEO_DECODER_MAX_ERRORS: number;
+export const VIDEO_DECODER_SINK_NAME: string;
+export const VIDEO_DECODER_SRC_NAME: string;
+export const VIDEO_ENCODER_SINK_NAME: string;
+export const VIDEO_ENCODER_SRC_NAME: string;
+export const VIDEO_FORMATS_ALL: string;
+export const VIDEO_FPS_RANGE: string;
+export const VIDEO_MAX_COMPONENTS: number;
+export const VIDEO_MAX_PLANES: number;
+export const VIDEO_RESAMPLER_OPT_CUBIC_B: string;
+export const VIDEO_RESAMPLER_OPT_CUBIC_C: string;
+export const VIDEO_RESAMPLER_OPT_ENVELOPE: string;
+export const VIDEO_RESAMPLER_OPT_MAX_TAPS: string;
+export const VIDEO_RESAMPLER_OPT_SHARPEN: string;
+export const VIDEO_RESAMPLER_OPT_SHARPNESS: string;
+export const VIDEO_SCALER_OPT_DITHER_METHOD: string;
+export const VIDEO_SIZE_RANGE: string;
+export const VIDEO_TILE_TYPE_MASK: number;
+export const VIDEO_TILE_TYPE_SHIFT: number;
+export const VIDEO_TILE_X_TILES_MASK: number;
+export const VIDEO_TILE_Y_TILES_SHIFT: number;
+export function buffer_add_video_afd_meta(
+ buffer: Gst.Buffer,
+ field: number,
+ spec: VideoAFDSpec,
+ afd: VideoAFDValue
+): VideoAFDMeta;
+export function buffer_add_video_affine_transformation_meta(buffer: Gst.Buffer):
VideoAffineTransformationMeta;
+export function buffer_add_video_bar_meta(
+ buffer: Gst.Buffer,
+ field: number,
+ is_letterbox: boolean,
+ bar_data1: number,
+ bar_data2: number
+): VideoBarMeta;
+export function buffer_add_video_caption_meta(
+ buffer: Gst.Buffer,
+ caption_type: VideoCaptionType,
+ data: Uint8Array | string
+): VideoCaptionMeta;
+export function buffer_add_video_codec_alpha_meta(buffer: Gst.Buffer, alpha_buffer: Gst.Buffer):
VideoCodecAlphaMeta;
+export function buffer_add_video_gl_texture_upload_meta(
+ buffer: Gst.Buffer,
+ texture_orientation: VideoGLTextureOrientation,
+ n_textures: number,
+ texture_type: VideoGLTextureType,
+ upload: VideoGLTextureUpload,
+ user_data_copy: GObject.BoxedCopyFunc,
+ user_data_free: GObject.BoxedFreeFunc
+): VideoGLTextureUploadMeta;
+export function buffer_add_video_meta(
+ buffer: Gst.Buffer,
+ flags: VideoFrameFlags,
+ format: VideoFormat,
+ width: number,
+ height: number
+): VideoMeta;
+export function buffer_add_video_meta_full(
+ buffer: Gst.Buffer,
+ flags: VideoFrameFlags,
+ format: VideoFormat,
+ width: number,
+ height: number,
+ n_planes: number,
+ offset: number[],
+ stride: number[]
+): VideoMeta;
+export function buffer_add_video_overlay_composition_meta(
+ buf: Gst.Buffer,
+ comp?: VideoOverlayComposition | null
+): VideoOverlayCompositionMeta;
+export function buffer_add_video_region_of_interest_meta(
+ buffer: Gst.Buffer,
+ roi_type: string,
+ x: number,
+ y: number,
+ w: number,
+ h: number
+): VideoRegionOfInterestMeta;
+export function buffer_add_video_region_of_interest_meta_id(
+ buffer: Gst.Buffer,
+ roi_type: GLib.Quark,
+ x: number,
+ y: number,
+ w: number,
+ h: number
+): VideoRegionOfInterestMeta;
+export function buffer_add_video_time_code_meta(buffer: Gst.Buffer, tc: VideoTimeCode): VideoTimeCodeMeta |
null;
+export function buffer_add_video_time_code_meta_full(
+ buffer: Gst.Buffer,
+ fps_n: number,
+ fps_d: number,
+ latest_daily_jam: GLib.DateTime,
+ flags: VideoTimeCodeFlags,
+ hours: number,
+ minutes: number,
+ seconds: number,
+ frames: number,
+ field_count: number
+): VideoTimeCodeMeta;
+export function buffer_get_video_meta(buffer: Gst.Buffer): VideoMeta;
+export function buffer_get_video_meta_id(buffer: Gst.Buffer, id: number): VideoMeta;
+export function buffer_get_video_region_of_interest_meta_id(buffer: Gst.Buffer, id: number):
VideoRegionOfInterestMeta;
+export function buffer_pool_config_get_video_alignment(config: Gst.Structure, align: VideoAlignment):
boolean;
+export function buffer_pool_config_set_video_alignment(config: Gst.Structure, align: VideoAlignment): void;
+export function is_video_overlay_prepare_window_handle_message(msg: Gst.Message): boolean;
+export function navigation_event_get_type(event: Gst.Event): NavigationEventType;
+export function navigation_event_parse_command(event: Gst.Event): [boolean, NavigationCommand | null];
+export function navigation_event_parse_key_event(event: Gst.Event): [boolean, string];
+export function navigation_event_parse_mouse_button_event(event: Gst.Event): [boolean, number, number,
number];
+export function navigation_event_parse_mouse_move_event(event: Gst.Event): [boolean, number, number];
+export function navigation_event_parse_mouse_scroll_event(event: Gst.Event): [boolean, number, number,
number, number];
+export function navigation_message_get_type(message: Gst.Message): NavigationMessageType;
+export function navigation_message_new_angles_changed(
+ src: Gst.Object,
+ cur_angle: number,
+ n_angles: number
+): Gst.Message;
+export function navigation_message_new_commands_changed(src: Gst.Object): Gst.Message;
+export function navigation_message_new_event(src: Gst.Object, event: Gst.Event): Gst.Message;
+export function navigation_message_new_mouse_over(src: Gst.Object, active: boolean): Gst.Message;
+export function navigation_message_parse_angles_changed(message: Gst.Message): [boolean, number, number];
+export function navigation_message_parse_event(message: Gst.Message): [boolean, Gst.Event | null];
+export function navigation_message_parse_mouse_over(message: Gst.Message): [boolean, boolean];
+export function navigation_query_get_type(query: Gst.Query): NavigationQueryType;
+export function navigation_query_new_angles(): Gst.Query;
+export function navigation_query_new_commands(): Gst.Query;
+export function navigation_query_parse_angles(query: Gst.Query): [boolean, number, number];
+export function navigation_query_parse_commands_length(query: Gst.Query): [boolean, number];
+export function navigation_query_parse_commands_nth(query: Gst.Query, nth: number): [boolean,
NavigationCommand | null];
+export function navigation_query_set_angles(query: Gst.Query, cur_angle: number, n_angles: number): void;
+export function navigation_query_set_commandsv(query: Gst.Query, cmds: NavigationCommand[]): void;
+export function video_afd_meta_api_get_type(): GObject.GType;
+export function video_afd_meta_get_info(): Gst.MetaInfo;
+export function video_affine_transformation_meta_api_get_type(): GObject.GType;
+export function video_affine_transformation_meta_get_info(): Gst.MetaInfo;
+export function video_bar_meta_api_get_type(): GObject.GType;
+export function video_bar_meta_get_info(): Gst.MetaInfo;
+export function video_blend(dest: VideoFrame, src: VideoFrame, x: number, y: number, global_alpha: number):
boolean;
+export function video_blend_scale_linear_RGBA(
+ src: VideoInfo,
+ src_buffer: Gst.Buffer,
+ dest_height: number,
+ dest_width: number
+): [VideoInfo, Gst.Buffer];
+export function video_calculate_display_ratio(
+ video_width: number,
+ video_height: number,
+ video_par_n: number,
+ video_par_d: number,
+ display_par_n: number,
+ display_par_d: number
+): [boolean, number, number];
+export function video_caption_meta_api_get_type(): GObject.GType;
+export function video_caption_meta_get_info(): Gst.MetaInfo;
+export function video_caption_type_from_caps(caps: Gst.Caps): VideoCaptionType;
+export function video_caption_type_to_caps(type: VideoCaptionType): Gst.Caps;
+export function video_center_rect(src: VideoRectangle, dst: VideoRectangle, scaling: boolean):
VideoRectangle;
+export function video_chroma_from_string(s: string): VideoChromaSite;
+export function video_chroma_resample(resample: VideoChromaResample, lines: any | null, width: number): void;
+export function video_chroma_site_from_string(s: string): VideoChromaSite;
+export function video_chroma_site_to_string(site: VideoChromaSite): string | null;
+export function video_chroma_to_string(site: VideoChromaSite): string;
+export function video_codec_alpha_meta_api_get_type(): GObject.GType;
+export function video_codec_alpha_meta_get_info(): Gst.MetaInfo;
+export function video_color_matrix_from_iso(value: number): VideoColorMatrix;
+export function video_color_matrix_get_Kr_Kb(matrix: VideoColorMatrix): [boolean, number, number];
+export function video_color_matrix_to_iso(matrix: VideoColorMatrix): number;
+export function video_color_primaries_from_iso(value: number): VideoColorPrimaries;
+export function video_color_primaries_get_info(primaries: VideoColorPrimaries): VideoColorPrimariesInfo;
+export function video_color_primaries_to_iso(primaries: VideoColorPrimaries): number;
+export function video_color_range_offsets(range: VideoColorRange, info: VideoFormatInfo): [number[],
number[]];
+export function video_color_transfer_decode(func: VideoTransferFunction, val: number): number;
+export function video_color_transfer_encode(func: VideoTransferFunction, val: number): number;
+export function video_convert_sample(sample: Gst.Sample, to_caps: Gst.Caps, timeout: Gst.ClockTime):
Gst.Sample;
+export function video_convert_sample_async(
+ sample: Gst.Sample,
+ to_caps: Gst.Caps,
+ timeout: Gst.ClockTime,
+ callback: VideoConvertSampleCallback
+): void;
+export function video_crop_meta_api_get_type(): GObject.GType;
+export function video_crop_meta_get_info(): Gst.MetaInfo;
+export function video_event_is_force_key_unit(event: Gst.Event): boolean;
+export function video_event_new_downstream_force_key_unit(
+ timestamp: Gst.ClockTime,
+ stream_time: Gst.ClockTime,
+ running_time: Gst.ClockTime,
+ all_headers: boolean,
+ count: number
+): Gst.Event;
+export function video_event_new_still_frame(in_still: boolean): Gst.Event;
+export function video_event_new_upstream_force_key_unit(
+ running_time: Gst.ClockTime,
+ all_headers: boolean,
+ count: number
+): Gst.Event;
+export function video_event_parse_downstream_force_key_unit(
+ event: Gst.Event
+): [boolean, Gst.ClockTime, Gst.ClockTime, Gst.ClockTime, boolean, number];
+export function video_event_parse_still_frame(event: Gst.Event): [boolean, boolean];
+export function video_event_parse_upstream_force_key_unit(event: Gst.Event): [boolean, Gst.ClockTime,
boolean, number];
+export function video_field_order_from_string(order: string): VideoFieldOrder;
+export function video_field_order_to_string(order: VideoFieldOrder): string;
+export function video_format_from_fourcc(fourcc: number): VideoFormat;
+export function video_format_from_masks(
+ depth: number,
+ bpp: number,
+ endianness: number,
+ red_mask: number,
+ green_mask: number,
+ blue_mask: number,
+ alpha_mask: number
+): VideoFormat;
+export function video_format_from_string(format: string): VideoFormat;
+export function video_format_get_info(format: VideoFormat): VideoFormatInfo;
+export function video_format_get_palette(format: VideoFormat): [any | null, number];
+export function video_format_to_fourcc(format: VideoFormat): number;
+export function video_format_to_string(format: VideoFormat): string;
+export function video_formats_raw(): VideoFormat[];
+export function video_frame_map(info: VideoInfo, buffer: Gst.Buffer, flags: Gst.MapFlags): [boolean,
VideoFrame];
+export function video_frame_map_id(
+ info: VideoInfo,
+ buffer: Gst.Buffer,
+ id: number,
+ flags: Gst.MapFlags
+): [boolean, VideoFrame];
+export function video_gl_texture_upload_meta_api_get_type(): GObject.GType;
+export function video_gl_texture_upload_meta_get_info(): Gst.MetaInfo;
+export function video_guess_framerate(duration: Gst.ClockTime): [boolean, number, number];
+export function video_info_from_caps(caps: Gst.Caps): [boolean, VideoInfo];
+export function video_info_init(): VideoInfo;
+export function video_interlace_mode_from_string(mode: string): VideoInterlaceMode;
+export function video_interlace_mode_to_string(mode: VideoInterlaceMode): string;
+export function video_make_raw_caps(formats?: VideoFormat[] | null): Gst.Caps;
+export function video_make_raw_caps_with_features(
+ formats?: VideoFormat[] | null,
+ features?: Gst.CapsFeatures | null
+): Gst.Caps;
+export function video_mastering_display_info_from_string(mastering: string): [boolean,
VideoMasteringDisplayInfo];
+export function video_meta_api_get_type(): GObject.GType;
+export function video_meta_get_info(): Gst.MetaInfo;
+export function video_meta_transform_scale_get_quark(): GLib.Quark;
+export function video_multiview_get_doubled_height_modes(): unknown;
+export function video_multiview_get_doubled_size_modes(): unknown;
+export function video_multiview_get_doubled_width_modes(): unknown;
+export function video_multiview_get_mono_modes(): unknown;
+export function video_multiview_get_unpacked_modes(): unknown;
+export function video_multiview_guess_half_aspect(
+ mv_mode: VideoMultiviewMode,
+ width: number,
+ height: number,
+ par_n: number,
+ par_d: number
+): boolean;
+export function video_multiview_mode_from_caps_string(caps_mview_mode: string): VideoMultiviewMode;
+export function video_multiview_mode_to_caps_string(mview_mode: VideoMultiviewMode): string;
+export function video_multiview_video_info_change_mode(
+ info: VideoInfo,
+ out_mview_mode: VideoMultiviewMode,
+ out_mview_flags: VideoMultiviewFlags
+): void;
+export function video_orientation_from_tag(taglist: Gst.TagList): [boolean, VideoOrientationMethod];
+export function video_overlay_composition_meta_api_get_type(): GObject.GType;
+export function video_overlay_composition_meta_get_info(): Gst.MetaInfo;
+export function video_overlay_install_properties(oclass: GObject.Object, last_prop_id: number): void;
+export function video_overlay_set_property(
+ object: GObject.Object,
+ last_prop_id: number,
+ property_id: number,
+ value: GObject.Value | any
+): boolean;
+export function video_region_of_interest_meta_api_get_type(): GObject.GType;
+export function video_region_of_interest_meta_get_info(): Gst.MetaInfo;
+export function video_tile_get_index(
+ mode: VideoTileMode,
+ x: number,
+ y: number,
+ x_tiles: number,
+ y_tiles: number
+): number;
+export function video_time_code_meta_api_get_type(): GObject.GType;
+export function video_time_code_meta_get_info(): Gst.MetaInfo;
+export function video_transfer_function_decode(func: VideoTransferFunction, val: number): number;
+export function video_transfer_function_encode(func: VideoTransferFunction, val: number): number;
+export function video_transfer_function_from_iso(value: number): VideoTransferFunction;
+export function video_transfer_function_is_equivalent(
+ from_func: VideoTransferFunction,
+ from_bpp: number,
+ to_func: VideoTransferFunction,
+ to_bpp: number
+): boolean;
+export function video_transfer_function_to_iso(func: VideoTransferFunction): number;
+export type VideoAffineTransformationGetMatrix = (meta: VideoAffineTransformationMeta, matrix: number) =>
boolean;
+export type VideoConvertSampleCallback = (sample: Gst.Sample, error: GLib.Error) => void;
+export type VideoFormatPack = (
+ info: VideoFormatInfo,
+ flags: VideoPackFlags,
+ src: any | null,
+ sstride: number,
+ data: any | null,
+ stride: number,
+ chroma_site: VideoChromaSite,
+ y: number,
+ width: number
+) => void;
+export type VideoFormatUnpack = (
+ info: VideoFormatInfo,
+ flags: VideoPackFlags,
+ dest: any | null,
+ data: any | null,
+ stride: number,
+ x: number,
+ y: number,
+ width: number
+) => void;
+export type VideoGLTextureUpload = (meta: VideoGLTextureUploadMeta, texture_id: number) => boolean;
+
+export namespace ColorBalanceType {
+ export const $gtype: GObject.GType<ColorBalanceType>;
+}
+
+export enum ColorBalanceType {
+ HARDWARE = 0,
+ SOFTWARE = 1,
+}
+
+export namespace NavigationCommand {
+ export const $gtype: GObject.GType<NavigationCommand>;
+}
+
+export enum NavigationCommand {
+ INVALID = 0,
+ MENU1 = 1,
+ MENU2 = 2,
+ MENU3 = 3,
+ MENU4 = 4,
+ MENU5 = 5,
+ MENU6 = 6,
+ MENU7 = 7,
+ LEFT = 20,
+ RIGHT = 21,
+ UP = 22,
+ DOWN = 23,
+ ACTIVATE = 24,
+ PREV_ANGLE = 30,
+ NEXT_ANGLE = 31,
+}
+
+export namespace NavigationEventType {
+ export const $gtype: GObject.GType<NavigationEventType>;
+}
+
+export enum NavigationEventType {
+ INVALID = 0,
+ KEY_PRESS = 1,
+ KEY_RELEASE = 2,
+ MOUSE_BUTTON_PRESS = 3,
+ MOUSE_BUTTON_RELEASE = 4,
+ MOUSE_MOVE = 5,
+ COMMAND = 6,
+ MOUSE_SCROLL = 7,
+}
+
+export namespace NavigationMessageType {
+ export const $gtype: GObject.GType<NavigationMessageType>;
+}
+
+export enum NavigationMessageType {
+ INVALID = 0,
+ MOUSE_OVER = 1,
+ COMMANDS_CHANGED = 2,
+ ANGLES_CHANGED = 3,
+ EVENT = 4,
+}
+
+export namespace NavigationQueryType {
+ export const $gtype: GObject.GType<NavigationQueryType>;
+}
+
+export enum NavigationQueryType {
+ INVALID = 0,
+ COMMANDS = 1,
+ ANGLES = 2,
+}
+
+export namespace VideoAFDSpec {
+ export const $gtype: GObject.GType<VideoAFDSpec>;
+}
+
+export enum VideoAFDSpec {
+ DVB_ETSI = 0,
+ ATSC_A53 = 1,
+ SMPTE_ST2016_1 = 2,
+}
+
+export namespace VideoAFDValue {
+ export const $gtype: GObject.GType<VideoAFDValue>;
+}
+
+export enum VideoAFDValue {
+ UNAVAILABLE = 0,
+ "16_9_TOP_ALIGNED" = 2,
+ "14_9_TOP_ALIGNED" = 3,
+ GREATER_THAN_16_9 = 4,
+ "4_3_FULL_16_9_FULL" = 8,
+ "4_3_FULL_4_3_PILLAR" = 9,
+ "16_9_LETTER_16_9_FULL" = 10,
+ "14_9_LETTER_14_9_PILLAR" = 11,
+ "4_3_FULL_14_9_CENTER" = 13,
+ "16_9_LETTER_14_9_CENTER" = 14,
+ "16_9_LETTER_4_3_CENTER" = 15,
+}
+
+export namespace VideoAlphaMode {
+ export const $gtype: GObject.GType<VideoAlphaMode>;
+}
+
+export enum VideoAlphaMode {
+ COPY = 0,
+ SET = 1,
+ MULT = 2,
+}
+
+export namespace VideoAncillaryDID {
+ export const $gtype: GObject.GType<VideoAncillaryDID>;
+}
+
+export enum VideoAncillaryDID {
+ UNDEFINED = 0,
+ DELETION = 128,
+ HANC_3G_AUDIO_DATA_FIRST = 160,
+ HANC_3G_AUDIO_DATA_LAST = 167,
+ HANC_HDTV_AUDIO_DATA_FIRST = 224,
+ HANC_HDTV_AUDIO_DATA_LAST = 231,
+ HANC_SDTV_AUDIO_DATA_1_FIRST = 236,
+ HANC_SDTV_AUDIO_DATA_1_LAST = 239,
+ CAMERA_POSITION = 240,
+ HANC_ERROR_DETECTION = 244,
+ HANC_SDTV_AUDIO_DATA_2_FIRST = 248,
+ HANC_SDTV_AUDIO_DATA_2_LAST = 255,
+}
+
+export namespace VideoAncillaryDID16 {
+ export const $gtype: GObject.GType<VideoAncillaryDID16>;
+}
+
+export enum VideoAncillaryDID16 {
+ S334_EIA_708 = 24833,
+ S334_EIA_608 = 24834,
+ S2016_3_AFD_BAR = 16645,
+}
+
+export namespace VideoCaptionType {
+ export const $gtype: GObject.GType<VideoCaptionType>;
+}
+
+export enum VideoCaptionType {
+ UNKNOWN = 0,
+ CEA608_RAW = 1,
+ CEA608_S334_1A = 2,
+ CEA708_RAW = 3,
+ CEA708_CDP = 4,
+}
+
+export namespace VideoChromaMethod {
+ export const $gtype: GObject.GType<VideoChromaMethod>;
+}
+
+export enum VideoChromaMethod {
+ NEAREST = 0,
+ LINEAR = 1,
+}
+
+export namespace VideoChromaMode {
+ export const $gtype: GObject.GType<VideoChromaMode>;
+}
+
+export enum VideoChromaMode {
+ FULL = 0,
+ UPSAMPLE_ONLY = 1,
+ DOWNSAMPLE_ONLY = 2,
+ NONE = 3,
+}
+
+export namespace VideoColorMatrix {
+ export const $gtype: GObject.GType<VideoColorMatrix>;
+}
+
+export enum VideoColorMatrix {
+ UNKNOWN = 0,
+ RGB = 1,
+ FCC = 2,
+ BT709 = 3,
+ BT601 = 4,
+ SMPTE240M = 5,
+ BT2020 = 6,
+}
+
+export namespace VideoColorPrimaries {
+ export const $gtype: GObject.GType<VideoColorPrimaries>;
+}
+
+export enum VideoColorPrimaries {
+ UNKNOWN = 0,
+ BT709 = 1,
+ BT470M = 2,
+ BT470BG = 3,
+ SMPTE170M = 4,
+ SMPTE240M = 5,
+ FILM = 6,
+ BT2020 = 7,
+ ADOBERGB = 8,
+ SMPTEST428 = 9,
+ SMPTERP431 = 10,
+ SMPTEEG432 = 11,
+ EBU3213 = 12,
+}
+
+export namespace VideoColorRange {
+ export const $gtype: GObject.GType<VideoColorRange>;
+}
+
+export enum VideoColorRange {
+ UNKNOWN = 0,
+ "0_255" = 1,
+ "16_235" = 2,
+}
+
+export namespace VideoDitherMethod {
+ export const $gtype: GObject.GType<VideoDitherMethod>;
+}
+
+export enum VideoDitherMethod {
+ NONE = 0,
+ VERTERR = 1,
+ FLOYD_STEINBERG = 2,
+ SIERRA_LITE = 3,
+ BAYER = 4,
+}
+
+export namespace VideoFieldOrder {
+ export const $gtype: GObject.GType<VideoFieldOrder>;
+}
+
+export enum VideoFieldOrder {
+ UNKNOWN = 0,
+ TOP_FIELD_FIRST = 1,
+ BOTTOM_FIELD_FIRST = 2,
+}
+
+export namespace VideoFormat {
+ export const $gtype: GObject.GType<VideoFormat>;
+}
+
+export enum VideoFormat {
+ UNKNOWN = 0,
+ ENCODED = 1,
+ I420 = 2,
+ YV12 = 3,
+ YUY2 = 4,
+ UYVY = 5,
+ AYUV = 6,
+ RGBX = 7,
+ BGRX = 8,
+ XRGB = 9,
+ XBGR = 10,
+ RGBA = 11,
+ BGRA = 12,
+ ARGB = 13,
+ ABGR = 14,
+ RGB = 15,
+ BGR = 16,
+ Y41B = 17,
+ Y42B = 18,
+ YVYU = 19,
+ Y444 = 20,
+ V210 = 21,
+ V216 = 22,
+ NV12 = 23,
+ NV21 = 24,
+ GRAY8 = 25,
+ GRAY16_BE = 26,
+ GRAY16_LE = 27,
+ V308 = 28,
+ RGB16 = 29,
+ BGR16 = 30,
+ RGB15 = 31,
+ BGR15 = 32,
+ UYVP = 33,
+ A420 = 34,
+ RGB8P = 35,
+ YUV9 = 36,
+ YVU9 = 37,
+ IYU1 = 38,
+ ARGB64 = 39,
+ AYUV64 = 40,
+ R210 = 41,
+ I420_10BE = 42,
+ I420_10LE = 43,
+ I422_10BE = 44,
+ I422_10LE = 45,
+ Y444_10BE = 46,
+ Y444_10LE = 47,
+ GBR = 48,
+ GBR_10BE = 49,
+ GBR_10LE = 50,
+ NV16 = 51,
+ NV24 = 52,
+ NV12_64Z32 = 53,
+ A420_10BE = 54,
+ A420_10LE = 55,
+ A422_10BE = 56,
+ A422_10LE = 57,
+ A444_10BE = 58,
+ A444_10LE = 59,
+ NV61 = 60,
+ P010_10BE = 61,
+ P010_10LE = 62,
+ IYU2 = 63,
+ VYUY = 64,
+ GBRA = 65,
+ GBRA_10BE = 66,
+ GBRA_10LE = 67,
+ GBR_12BE = 68,
+ GBR_12LE = 69,
+ GBRA_12BE = 70,
+ GBRA_12LE = 71,
+ I420_12BE = 72,
+ I420_12LE = 73,
+ I422_12BE = 74,
+ I422_12LE = 75,
+ Y444_12BE = 76,
+ Y444_12LE = 77,
+ GRAY10_LE32 = 78,
+ NV12_10LE32 = 79,
+ NV16_10LE32 = 80,
+ NV12_10LE40 = 81,
+ Y210 = 82,
+ Y410 = 83,
+ VUYA = 84,
+ BGR10A2_LE = 85,
+ RGB10A2_LE = 86,
+ Y444_16BE = 87,
+ Y444_16LE = 88,
+ P016_BE = 89,
+ P016_LE = 90,
+ P012_BE = 91,
+ P012_LE = 92,
+ Y212_BE = 93,
+ Y212_LE = 94,
+ Y412_BE = 95,
+ Y412_LE = 96,
+ NV12_4L4 = 97,
+ NV12_32L32 = 98,
+ RGBP = 99,
+ BGRP = 100,
+ AV12 = 101,
+ ARGB64_LE = 102,
+ ARGB64_BE = 103,
+ RGBA64_LE = 104,
+ RGBA64_BE = 105,
+ BGRA64_LE = 106,
+ BGRA64_BE = 107,
+ ABGR64_LE = 108,
+ ABGR64_BE = 109,
+}
+
+export namespace VideoGLTextureOrientation {
+ export const $gtype: GObject.GType<VideoGLTextureOrientation>;
+}
+
+export enum VideoGLTextureOrientation {
+ NORMAL_Y_NORMAL = 0,
+ NORMAL_Y_FLIP = 1,
+ FLIP_Y_NORMAL = 2,
+ FLIP_Y_FLIP = 3,
+}
+
+export namespace VideoGLTextureType {
+ export const $gtype: GObject.GType<VideoGLTextureType>;
+}
+
+export enum VideoGLTextureType {
+ LUMINANCE = 0,
+ LUMINANCE_ALPHA = 1,
+ RGB16 = 2,
+ RGB = 3,
+ RGBA = 4,
+ R = 5,
+ RG = 6,
+}
+
+export namespace VideoGammaMode {
+ export const $gtype: GObject.GType<VideoGammaMode>;
+}
+
+export enum VideoGammaMode {
+ NONE = 0,
+ REMAP = 1,
+}
+
+export namespace VideoInterlaceMode {
+ export const $gtype: GObject.GType<VideoInterlaceMode>;
+}
+
+export enum VideoInterlaceMode {
+ PROGRESSIVE = 0,
+ INTERLEAVED = 1,
+ MIXED = 2,
+ FIELDS = 3,
+ ALTERNATE = 4,
+}
+
+export namespace VideoMatrixMode {
+ export const $gtype: GObject.GType<VideoMatrixMode>;
+}
+
+export enum VideoMatrixMode {
+ FULL = 0,
+ INPUT_ONLY = 1,
+ OUTPUT_ONLY = 2,
+ NONE = 3,
+}
+
+export namespace VideoMultiviewFramePacking {
+ export const $gtype: GObject.GType<VideoMultiviewFramePacking>;
+}
+
+export enum VideoMultiviewFramePacking {
+ NONE = -1,
+ MONO = 0,
+ LEFT = 1,
+ RIGHT = 2,
+ SIDE_BY_SIDE = 3,
+ SIDE_BY_SIDE_QUINCUNX = 4,
+ COLUMN_INTERLEAVED = 5,
+ ROW_INTERLEAVED = 6,
+ TOP_BOTTOM = 7,
+ CHECKERBOARD = 8,
+}
+
+export namespace VideoMultiviewMode {
+ export const $gtype: GObject.GType<VideoMultiviewMode>;
+}
+
+export enum VideoMultiviewMode {
+ NONE = -1,
+ MONO = 0,
+ LEFT = 1,
+ RIGHT = 2,
+ SIDE_BY_SIDE = 3,
+ SIDE_BY_SIDE_QUINCUNX = 4,
+ COLUMN_INTERLEAVED = 5,
+ ROW_INTERLEAVED = 6,
+ TOP_BOTTOM = 7,
+ CHECKERBOARD = 8,
+ FRAME_BY_FRAME = 32,
+ MULTIVIEW_FRAME_BY_FRAME = 33,
+ SEPARATED = 34,
+}
+
+export class VideoOrientationMethod {
+ static $gtype: GObject.GType<VideoOrientationMethod>;
+
+ constructor(copy: VideoOrientationMethod);
+
+ // Fields
+ static IDENTITY: number;
+ static "90R": number;
+ static "180": number;
+ static "90L": number;
+ static HORIZ: number;
+ static VERT: number;
+ static UL_LR: number;
+ static UR_LL: number;
+ static AUTO: number;
+ static CUSTOM: number;
+}
+
+export namespace VideoPrimariesMode {
+ export const $gtype: GObject.GType<VideoPrimariesMode>;
+}
+
+export enum VideoPrimariesMode {
+ NONE = 0,
+ MERGE_ONLY = 1,
+ FAST = 2,
+}
+
+export namespace VideoResamplerMethod {
+ export const $gtype: GObject.GType<VideoResamplerMethod>;
+}
+
+export enum VideoResamplerMethod {
+ NEAREST = 0,
+ LINEAR = 1,
+ CUBIC = 2,
+ SINC = 3,
+ LANCZOS = 4,
+}
+
+export namespace VideoTileMode {
+ export const $gtype: GObject.GType<VideoTileMode>;
+}
+
+export enum VideoTileMode {
+ UNKNOWN = 0,
+ ZFLIPZ_2X2 = 65536,
+ LINEAR = 131072,
+}
+
+export namespace VideoTileType {
+ export const $gtype: GObject.GType<VideoTileType>;
+}
+
+export enum VideoTileType {
+ INDEXED = 0,
+}
+
+export namespace VideoTransferFunction {
+ export const $gtype: GObject.GType<VideoTransferFunction>;
+}
+
+export enum VideoTransferFunction {
+ UNKNOWN = 0,
+ GAMMA10 = 1,
+ GAMMA18 = 2,
+ GAMMA20 = 3,
+ GAMMA22 = 4,
+ BT709 = 5,
+ SMPTE240M = 6,
+ SRGB = 7,
+ GAMMA28 = 8,
+ LOG100 = 9,
+ LOG316 = 10,
+ BT2020_12 = 11,
+ ADOBERGB = 12,
+ BT2020_10 = 13,
+ SMPTE2084 = 14,
+ ARIB_STD_B67 = 15,
+ BT601 = 16,
+}
+
+export namespace VideoVBIParserResult {
+ export const $gtype: GObject.GType<VideoVBIParserResult>;
+}
+
+export enum VideoVBIParserResult {
+ DONE = 0,
+ OK = 1,
+ ERROR = 2,
+}
+
+export namespace VideoBufferFlags {
+ export const $gtype: GObject.GType<VideoBufferFlags>;
+}
+
+export enum VideoBufferFlags {
+ INTERLACED = 1048576,
+ TFF = 2097152,
+ RFF = 4194304,
+ ONEFIELD = 8388608,
+ MULTIPLE_VIEW = 16777216,
+ FIRST_IN_BUNDLE = 33554432,
+ TOP_FIELD = 10485760,
+ BOTTOM_FIELD = 8388608,
+ MARKER = 512,
+ LAST = 268435456,
+}
+
+export namespace VideoChromaFlags {
+ export const $gtype: GObject.GType<VideoChromaFlags>;
+}
+
+export enum VideoChromaFlags {
+ NONE = 0,
+ INTERLACED = 1,
+}
+
+export namespace VideoChromaSite {
+ export const $gtype: GObject.GType<VideoChromaSite>;
+}
+
+export enum VideoChromaSite {
+ UNKNOWN = 0,
+ NONE = 1,
+ H_COSITED = 2,
+ V_COSITED = 4,
+ ALT_LINE = 8,
+ COSITED = 6,
+ JPEG = 1,
+ MPEG2 = 2,
+ DV = 14,
+}
+
+export namespace VideoCodecFrameFlags {
+ export const $gtype: GObject.GType<VideoCodecFrameFlags>;
+}
+
+export enum VideoCodecFrameFlags {
+ DECODE_ONLY = 1,
+ SYNC_POINT = 2,
+ FORCE_KEYFRAME = 4,
+ FORCE_KEYFRAME_HEADERS = 8,
+ CORRUPTED = 16,
+}
+
+export namespace VideoDecoderRequestSyncPointFlags {
+ export const $gtype: GObject.GType<VideoDecoderRequestSyncPointFlags>;
+}
+
+export enum VideoDecoderRequestSyncPointFlags {
+ DISCARD_INPUT = 1,
+ CORRUPT_OUTPUT = 2,
+}
+
+export namespace VideoDitherFlags {
+ export const $gtype: GObject.GType<VideoDitherFlags>;
+}
+
+export enum VideoDitherFlags {
+ NONE = 0,
+ INTERLACED = 1,
+ QUANTIZE = 2,
+}
+
+export namespace VideoFlags {
+ export const $gtype: GObject.GType<VideoFlags>;
+}
+
+export enum VideoFlags {
+ NONE = 0,
+ VARIABLE_FPS = 1,
+ PREMULTIPLIED_ALPHA = 2,
+}
+
+export namespace VideoFormatFlags {
+ export const $gtype: GObject.GType<VideoFormatFlags>;
+}
+
+export enum VideoFormatFlags {
+ YUV = 1,
+ RGB = 2,
+ GRAY = 4,
+ ALPHA = 8,
+ LE = 16,
+ PALETTE = 32,
+ COMPLEX = 64,
+ UNPACK = 128,
+ TILED = 256,
+}
+
+export namespace VideoFrameFlags {
+ export const $gtype: GObject.GType<VideoFrameFlags>;
+}
+
+export enum VideoFrameFlags {
+ NONE = 0,
+ INTERLACED = 1,
+ TFF = 2,
+ RFF = 4,
+ ONEFIELD = 8,
+ MULTIPLE_VIEW = 16,
+ FIRST_IN_BUNDLE = 32,
+ TOP_FIELD = 10,
+ BOTTOM_FIELD = 8,
+}
+
+export namespace VideoFrameMapFlags {
+ export const $gtype: GObject.GType<VideoFrameMapFlags>;
+}
+
+export enum VideoFrameMapFlags {
+ NO_REF = 65536,
+ LAST = 16777216,
+}
+
+export namespace VideoMultiviewFlags {
+ export const $gtype: GObject.GType<VideoMultiviewFlags>;
+}
+
+export enum VideoMultiviewFlags {
+ NONE = 0,
+ RIGHT_VIEW_FIRST = 1,
+ LEFT_FLIPPED = 2,
+ LEFT_FLOPPED = 4,
+ RIGHT_FLIPPED = 8,
+ RIGHT_FLOPPED = 16,
+ HALF_ASPECT = 16384,
+ MIXED_MONO = 32768,
+}
+
+export namespace VideoOverlayFormatFlags {
+ export const $gtype: GObject.GType<VideoOverlayFormatFlags>;
+}
+
+export enum VideoOverlayFormatFlags {
+ NONE = 0,
+ PREMULTIPLIED_ALPHA = 1,
+ GLOBAL_ALPHA = 2,
+}
+
+export namespace VideoPackFlags {
+ export const $gtype: GObject.GType<VideoPackFlags>;
+}
+
+export enum VideoPackFlags {
+ NONE = 0,
+ TRUNCATE_RANGE = 1,
+ INTERLACED = 2,
+}
+
+export namespace VideoResamplerFlags {
+ export const $gtype: GObject.GType<VideoResamplerFlags>;
+}
+
+export enum VideoResamplerFlags {
+ NONE = 0,
+ HALF_TAPS = 1,
+}
+
+export namespace VideoScalerFlags {
+ export const $gtype: GObject.GType<VideoScalerFlags>;
+}
+
+export enum VideoScalerFlags {
+ NONE = 0,
+ INTERLACED = 1,
+}
+
+export namespace VideoTimeCodeFlags {
+ export const $gtype: GObject.GType<VideoTimeCodeFlags>;
+}
+
+export enum VideoTimeCodeFlags {
+ NONE = 0,
+ DROP_FRAME = 1,
+ INTERLACED = 2,
+}
+export module ColorBalanceChannel {
+ export interface ConstructorProperties extends GObject.Object.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class ColorBalanceChannel extends GObject.Object {
+ static $gtype: GObject.GType<ColorBalanceChannel>;
+
+ constructor(properties?: Partial<ColorBalanceChannel.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<ColorBalanceChannel.ConstructorProperties>, ...args: any[]): void;
+
+ // Fields
+ label: string;
+ min_value: number;
+ max_value: number;
+
+ // Signals
+
+ connect(id: string, callback: (...args: any[]) => any): number;
+ connect_after(id: string, callback: (...args: any[]) => any): number;
+ emit(id: string, ...args: any[]): void;
+ connect(signal: "value-changed", callback: (_source: this, value: number) => void): number;
+ connect_after(signal: "value-changed", callback: (_source: this, value: number) => void): number;
+ emit(signal: "value-changed", value: number): void;
+
+ // Members
+
+ vfunc_value_changed(value: number): void;
+}
+export module VideoAggregator {
+ export interface ConstructorProperties extends GstBase.Aggregator.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export abstract class VideoAggregator extends GstBase.Aggregator {
+ static $gtype: GObject.GType<VideoAggregator>;
+
+ constructor(properties?: Partial<VideoAggregator.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoAggregator.ConstructorProperties>, ...args: any[]): void;
+
+ // Fields
+ aggregator: GstBase.Aggregator;
+ info: VideoInfo;
+
+ // Members
+
+ get_execution_task_pool(): Gst.TaskPool;
+ vfunc_aggregate_frames(outbuffer: Gst.Buffer): Gst.FlowReturn;
+ vfunc_create_output_buffer(outbuffer: Gst.Buffer): Gst.FlowReturn;
+ vfunc_find_best_format(downstream_caps: Gst.Caps, best_info: VideoInfo, at_least_one_alpha: boolean):
void;
+ vfunc_update_caps(caps: Gst.Caps): Gst.Caps;
+}
+export module VideoAggregatorConvertPad {
+ export interface ConstructorProperties extends VideoAggregatorPad.ConstructorProperties {
+ [key: string]: any;
+ converter_config: Gst.Structure;
+ converterConfig: Gst.Structure;
+ }
+}
+export class VideoAggregatorConvertPad extends VideoAggregatorPad {
+ static $gtype: GObject.GType<VideoAggregatorConvertPad>;
+
+ constructor(properties?: Partial<VideoAggregatorConvertPad.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoAggregatorConvertPad.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get converter_config(): Gst.Structure;
+ set converter_config(val: Gst.Structure);
+ get converterConfig(): Gst.Structure;
+ set converterConfig(val: Gst.Structure);
+
+ // Members
+
+ update_conversion_info(): void;
+ vfunc_create_conversion_info(agg: VideoAggregator, conversion_info: VideoInfo): void;
+}
+export module VideoAggregatorPad {
+ export interface ConstructorProperties extends GstBase.AggregatorPad.ConstructorProperties {
+ [key: string]: any;
+ max_last_buffer_repeat: number;
+ maxLastBufferRepeat: number;
+ repeat_after_eos: boolean;
+ repeatAfterEos: boolean;
+ zorder: number;
+ }
+}
+export class VideoAggregatorPad extends GstBase.AggregatorPad {
+ static $gtype: GObject.GType<VideoAggregatorPad>;
+
+ constructor(properties?: Partial<VideoAggregatorPad.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoAggregatorPad.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get max_last_buffer_repeat(): number;
+ set max_last_buffer_repeat(val: number);
+ get maxLastBufferRepeat(): number;
+ set maxLastBufferRepeat(val: number);
+ get repeat_after_eos(): boolean;
+ set repeat_after_eos(val: boolean);
+ get repeatAfterEos(): boolean;
+ set repeatAfterEos(val: boolean);
+ get zorder(): number;
+ set zorder(val: number);
+
+ // Fields
+ info: VideoInfo;
+
+ // Members
+
+ get_current_buffer(): Gst.Buffer;
+ get_prepared_frame(): VideoFrame;
+ has_current_buffer(): boolean;
+ set_needs_alpha(needs_alpha: boolean): void;
+ vfunc_clean_frame(videoaggregator: VideoAggregator, prepared_frame: VideoFrame): void;
+ vfunc_prepare_frame(videoaggregator: VideoAggregator, buffer: Gst.Buffer, prepared_frame: VideoFrame):
boolean;
+ vfunc_prepare_frame_finish(videoaggregator: VideoAggregator, prepared_frame: VideoFrame): void;
+ vfunc_prepare_frame_start(videoaggregator: VideoAggregator, buffer: Gst.Buffer, prepared_frame:
VideoFrame): void;
+ vfunc_update_conversion_info(): void;
+}
+export module VideoAggregatorParallelConvertPad {
+ export interface ConstructorProperties extends VideoAggregatorConvertPad.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class VideoAggregatorParallelConvertPad extends VideoAggregatorConvertPad {
+ static $gtype: GObject.GType<VideoAggregatorParallelConvertPad>;
+
+ constructor(properties?: Partial<VideoAggregatorParallelConvertPad.ConstructorProperties>, ...args:
any[]);
+ _init(properties?: Partial<VideoAggregatorParallelConvertPad.ConstructorProperties>, ...args: any[]):
void;
+}
+export module VideoBufferPool {
+ export interface ConstructorProperties extends Gst.BufferPool.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class VideoBufferPool extends Gst.BufferPool {
+ static $gtype: GObject.GType<VideoBufferPool>;
+
+ constructor(properties?: Partial<VideoBufferPool.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoBufferPool.ConstructorProperties>, ...args: any[]): void;
+
+ // Fields
+ bufferpool: Gst.BufferPool;
+ priv: VideoBufferPoolPrivate;
+
+ // Constructors
+
+ static ["new"](): VideoBufferPool;
+}
+export module VideoDecoder {
+ export interface ConstructorProperties extends Gst.Element.ConstructorProperties {
+ [key: string]: any;
+ automatic_request_sync_point_flags: VideoDecoderRequestSyncPointFlags;
+ automaticRequestSyncPointFlags: VideoDecoderRequestSyncPointFlags;
+ automatic_request_sync_points: boolean;
+ automaticRequestSyncPoints: boolean;
+ discard_corrupted_frames: boolean;
+ discardCorruptedFrames: boolean;
+ max_errors: number;
+ maxErrors: number;
+ min_force_key_unit_interval: number;
+ minForceKeyUnitInterval: number;
+ qos: boolean;
+ }
+}
+export abstract class VideoDecoder extends Gst.Element {
+ static $gtype: GObject.GType<VideoDecoder>;
+
+ constructor(properties?: Partial<VideoDecoder.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoDecoder.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get automatic_request_sync_point_flags(): VideoDecoderRequestSyncPointFlags;
+ set automatic_request_sync_point_flags(val: VideoDecoderRequestSyncPointFlags);
+ get automaticRequestSyncPointFlags(): VideoDecoderRequestSyncPointFlags;
+ set automaticRequestSyncPointFlags(val: VideoDecoderRequestSyncPointFlags);
+ get automatic_request_sync_points(): boolean;
+ set automatic_request_sync_points(val: boolean);
+ get automaticRequestSyncPoints(): boolean;
+ set automaticRequestSyncPoints(val: boolean);
+ get discard_corrupted_frames(): boolean;
+ set discard_corrupted_frames(val: boolean);
+ get discardCorruptedFrames(): boolean;
+ set discardCorruptedFrames(val: boolean);
+ get max_errors(): number;
+ set max_errors(val: number);
+ get maxErrors(): number;
+ set maxErrors(val: number);
+ get min_force_key_unit_interval(): number;
+ set min_force_key_unit_interval(val: number);
+ get minForceKeyUnitInterval(): number;
+ set minForceKeyUnitInterval(val: number);
+ get qos(): boolean;
+ set qos(val: boolean);
+
+ // Members
+
+ add_to_frame(n_bytes: number): void;
+ allocate_output_buffer(): Gst.Buffer;
+ allocate_output_frame(frame: VideoCodecFrame): Gst.FlowReturn;
+ allocate_output_frame_with_params(frame: VideoCodecFrame, params: Gst.BufferPoolAcquireParams):
Gst.FlowReturn;
+ drop_frame(frame: VideoCodecFrame): Gst.FlowReturn;
+ drop_subframe(frame: VideoCodecFrame): Gst.FlowReturn;
+ finish_frame(frame: VideoCodecFrame): Gst.FlowReturn;
+ finish_subframe(frame: VideoCodecFrame): Gst.FlowReturn;
+ get_allocator(): [Gst.Allocator | null, Gst.AllocationParams | null];
+ get_buffer_pool(): Gst.BufferPool;
+ get_estimate_rate(): number;
+ get_frame(frame_number: number): VideoCodecFrame;
+ get_frames(): VideoCodecFrame[];
+ get_input_subframe_index(frame: VideoCodecFrame): number;
+ get_latency(): [Gst.ClockTime | null, Gst.ClockTime | null];
+ get_max_decode_time(frame: VideoCodecFrame): Gst.ClockTimeDiff;
+ get_max_errors(): number;
+ get_needs_format(): boolean;
+ get_needs_sync_point(): boolean;
+ get_oldest_frame(): VideoCodecFrame;
+ get_output_state(): VideoCodecState;
+ get_packetized(): boolean;
+ get_pending_frame_size(): number;
+ get_processed_subframe_index(frame: VideoCodecFrame): number;
+ get_qos_proportion(): number;
+ get_subframe_mode(): boolean;
+ have_frame(): Gst.FlowReturn;
+ have_last_subframe(frame: VideoCodecFrame): Gst.FlowReturn;
+ merge_tags(tags: Gst.TagList | null, mode: Gst.TagMergeMode): void;
+ negotiate(): boolean;
+ proxy_getcaps(caps?: Gst.Caps | null, filter?: Gst.Caps | null): Gst.Caps;
+ release_frame(frame: VideoCodecFrame): void;
+ request_sync_point(frame: VideoCodecFrame, flags: VideoDecoderRequestSyncPointFlags): void;
+ set_estimate_rate(enabled: boolean): void;
+ set_interlaced_output_state(
+ fmt: VideoFormat,
+ interlace_mode: VideoInterlaceMode,
+ width: number,
+ height: number,
+ reference?: VideoCodecState | null
+ ): VideoCodecState;
+ set_latency(min_latency: Gst.ClockTime, max_latency: Gst.ClockTime): void;
+ set_max_errors(num: number): void;
+ set_needs_format(enabled: boolean): void;
+ set_needs_sync_point(enabled: boolean): void;
+ set_output_state(
+ fmt: VideoFormat,
+ width: number,
+ height: number,
+ reference?: VideoCodecState | null
+ ): VideoCodecState;
+ set_packetized(packetized: boolean): void;
+ set_subframe_mode(subframe_mode: boolean): void;
+ set_use_default_pad_acceptcaps(use: boolean): void;
+ vfunc_close(): boolean;
+ vfunc_decide_allocation(query: Gst.Query): boolean;
+ vfunc_drain(): Gst.FlowReturn;
+ vfunc_finish(): Gst.FlowReturn;
+ vfunc_flush(): boolean;
+ vfunc_getcaps(filter: Gst.Caps): Gst.Caps;
+ vfunc_handle_frame(frame: VideoCodecFrame): Gst.FlowReturn;
+ vfunc_handle_missing_data(timestamp: Gst.ClockTime, duration: Gst.ClockTime): boolean;
+ vfunc_negotiate(): boolean;
+ vfunc_open(): boolean;
+ vfunc_parse(frame: VideoCodecFrame, adapter: GstBase.Adapter, at_eos: boolean): Gst.FlowReturn;
+ vfunc_propose_allocation(query: Gst.Query): boolean;
+ vfunc_reset(hard: boolean): boolean;
+ vfunc_set_format(state: VideoCodecState): boolean;
+ vfunc_sink_event(event: Gst.Event): boolean;
+ vfunc_sink_query(query: Gst.Query): boolean;
+ vfunc_src_event(event: Gst.Event): boolean;
+ vfunc_src_query(query: Gst.Query): boolean;
+ vfunc_start(): boolean;
+ vfunc_stop(): boolean;
+ vfunc_transform_meta(frame: VideoCodecFrame, meta: Gst.Meta): boolean;
+}
+export module VideoEncoder {
+ export interface ConstructorProperties extends Gst.Element.ConstructorProperties {
+ [key: string]: any;
+ min_force_key_unit_interval: number;
+ minForceKeyUnitInterval: number;
+ qos: boolean;
+ }
+}
+export abstract class VideoEncoder extends Gst.Element implements Gst.Preset {
+ static $gtype: GObject.GType<VideoEncoder>;
+
+ constructor(properties?: Partial<VideoEncoder.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoEncoder.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get min_force_key_unit_interval(): number;
+ set min_force_key_unit_interval(val: number);
+ get minForceKeyUnitInterval(): number;
+ set minForceKeyUnitInterval(val: number);
+ get qos(): boolean;
+ set qos(val: boolean);
+
+ // Members
+
+ allocate_output_buffer(size: number): Gst.Buffer;
+ allocate_output_frame(frame: VideoCodecFrame, size: number): Gst.FlowReturn;
+ finish_frame(frame: VideoCodecFrame): Gst.FlowReturn;
+ finish_subframe(frame: VideoCodecFrame): Gst.FlowReturn;
+ get_allocator(): [Gst.Allocator | null, Gst.AllocationParams | null];
+ get_frame(frame_number: number): VideoCodecFrame;
+ get_frames(): VideoCodecFrame[];
+ get_latency(): [Gst.ClockTime | null, Gst.ClockTime | null];
+ get_max_encode_time(frame: VideoCodecFrame): Gst.ClockTimeDiff;
+ get_min_force_key_unit_interval(): Gst.ClockTime;
+ get_oldest_frame(): VideoCodecFrame;
+ get_output_state(): VideoCodecState;
+ is_qos_enabled(): boolean;
+ merge_tags(tags: Gst.TagList | null, mode: Gst.TagMergeMode): void;
+ negotiate(): boolean;
+ proxy_getcaps(caps?: Gst.Caps | null, filter?: Gst.Caps | null): Gst.Caps;
+ set_headers(headers: Gst.Buffer[]): void;
+ set_latency(min_latency: Gst.ClockTime, max_latency: Gst.ClockTime): void;
+ set_min_force_key_unit_interval(interval: Gst.ClockTime): void;
+ set_min_pts(min_pts: Gst.ClockTime): void;
+ set_output_state(caps: Gst.Caps, reference?: VideoCodecState | null): VideoCodecState;
+ set_qos_enabled(enabled: boolean): void;
+ vfunc_close(): boolean;
+ vfunc_decide_allocation(query: Gst.Query): boolean;
+ vfunc_finish(): Gst.FlowReturn;
+ vfunc_flush(): boolean;
+ vfunc_getcaps(filter: Gst.Caps): Gst.Caps;
+ vfunc_handle_frame(frame: VideoCodecFrame): Gst.FlowReturn;
+ vfunc_negotiate(): boolean;
+ vfunc_open(): boolean;
+ vfunc_pre_push(frame: VideoCodecFrame): Gst.FlowReturn;
+ vfunc_propose_allocation(query: Gst.Query): boolean;
+ vfunc_reset(hard: boolean): boolean;
+ vfunc_set_format(state: VideoCodecState): boolean;
+ vfunc_sink_event(event: Gst.Event): boolean;
+ vfunc_sink_query(query: Gst.Query): boolean;
+ vfunc_src_event(event: Gst.Event): boolean;
+ vfunc_src_query(query: Gst.Query): boolean;
+ vfunc_start(): boolean;
+ vfunc_stop(): boolean;
+ vfunc_transform_meta(frame: VideoCodecFrame, meta: Gst.Meta): boolean;
+
+ // Implemented Members
+
+ delete_preset(name: string): boolean;
+ get_meta(name: string, tag: string): [boolean, string];
+ get_preset_names(): string[];
+ get_property_names(): string[];
+ is_editable(): boolean;
+ load_preset(name: string): boolean;
+ rename_preset(old_name: string, new_name: string): boolean;
+ save_preset(name: string): boolean;
+ set_meta(name: string, tag: string, value?: string | null): boolean;
+ vfunc_delete_preset(name: string): boolean;
+ vfunc_get_meta(name: string, tag: string): [boolean, string];
+ vfunc_get_preset_names(): string[];
+ vfunc_get_property_names(): string[];
+ vfunc_load_preset(name: string): boolean;
+ vfunc_rename_preset(old_name: string, new_name: string): boolean;
+ vfunc_save_preset(name: string): boolean;
+ vfunc_set_meta(name: string, tag: string, value?: string | null): boolean;
+}
+export module VideoFilter {
+ export interface ConstructorProperties extends GstBase.BaseTransform.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export abstract class VideoFilter extends GstBase.BaseTransform {
+ static $gtype: GObject.GType<VideoFilter>;
+
+ constructor(properties?: Partial<VideoFilter.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoFilter.ConstructorProperties>, ...args: any[]): void;
+
+ // Fields
+ element: GstBase.BaseTransform;
+ negotiated: boolean;
+ in_info: VideoInfo;
+ out_info: VideoInfo;
+
+ // Members
+
+ vfunc_set_info(incaps: Gst.Caps, in_info: VideoInfo, outcaps: Gst.Caps, out_info: VideoInfo): boolean;
+ vfunc_transform_frame(inframe: VideoFrame, outframe: VideoFrame): Gst.FlowReturn;
+ vfunc_transform_frame_ip(frame: VideoFrame): Gst.FlowReturn;
+}
+export module VideoMultiviewFlagsSet {
+ export interface ConstructorProperties extends Gst.FlagSet.ConstructorProperties {
+ [key: string]: any;
+ }
+}
+export class VideoMultiviewFlagsSet extends Gst.FlagSet {
+ static $gtype: GObject.GType<VideoMultiviewFlagsSet>;
+
+ constructor(properties?: Partial<VideoMultiviewFlagsSet.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoMultiviewFlagsSet.ConstructorProperties>, ...args: any[]): void;
+}
+export module VideoSink {
+ export interface ConstructorProperties extends GstBase.BaseSink.ConstructorProperties {
+ [key: string]: any;
+ show_preroll_frame: boolean;
+ showPrerollFrame: boolean;
+ }
+}
+export class VideoSink extends GstBase.BaseSink {
+ static $gtype: GObject.GType<VideoSink>;
+
+ constructor(properties?: Partial<VideoSink.ConstructorProperties>, ...args: any[]);
+ _init(properties?: Partial<VideoSink.ConstructorProperties>, ...args: any[]): void;
+
+ // Properties
+ get show_preroll_frame(): boolean;
+ set show_preroll_frame(val: boolean);
+ get showPrerollFrame(): boolean;
+ set showPrerollFrame(val: boolean);
+
+ // Fields
+ element: GstBase.BaseSink;
+ width: number;
+ height: number;
+
+ // Members
+
+ vfunc_set_info(caps: Gst.Caps, info: VideoInfo): boolean;
+ vfunc_show_frame(buf: Gst.Buffer): Gst.FlowReturn;
+ static center_rect(src: VideoRectangle, dst: VideoRectangle, scaling: boolean): VideoRectangle;
+}
+
+export class VideoAFDMeta {
+ static $gtype: GObject.GType<VideoAFDMeta>;
+
+ constructor(copy: VideoAFDMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ field: number;
+ spec: VideoAFDSpec;
+ afd: VideoAFDValue;
+
+ // Members
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoAffineTransformationMeta {
+ static $gtype: GObject.GType<VideoAffineTransformationMeta>;
+
+ constructor(copy: VideoAffineTransformationMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ matrix: number[];
+
+ // Members
+ apply_matrix(matrix: number[]): void;
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoAggregatorConvertPadPrivate {
+ static $gtype: GObject.GType<VideoAggregatorConvertPadPrivate>;
+
+ constructor(copy: VideoAggregatorConvertPadPrivate);
+}
+
+export class VideoAggregatorPadPrivate {
+ static $gtype: GObject.GType<VideoAggregatorPadPrivate>;
+
+ constructor(copy: VideoAggregatorPadPrivate);
+}
+
+export class VideoAggregatorPrivate {
+ static $gtype: GObject.GType<VideoAggregatorPrivate>;
+
+ constructor(copy: VideoAggregatorPrivate);
+}
+
+export class VideoAlignment {
+ static $gtype: GObject.GType<VideoAlignment>;
+
+ constructor(copy: VideoAlignment);
+
+ // Fields
+ padding_top: number;
+ padding_bottom: number;
+ padding_left: number;
+ padding_right: number;
+ stride_align: number[];
+
+ // Members
+ reset(): void;
+}
+
+export class VideoAncillary {
+ static $gtype: GObject.GType<VideoAncillary>;
+
+ constructor(copy: VideoAncillary);
+
+ // Fields
+ DID: number;
+ SDID_block_number: number;
+ data_count: number;
+ data: Uint8Array;
+}
+
+export class VideoBarMeta {
+ static $gtype: GObject.GType<VideoBarMeta>;
+
+ constructor(copy: VideoBarMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ field: number;
+ is_letterbox: boolean;
+ bar_data1: number;
+ bar_data2: number;
+
+ // Members
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoBufferPoolPrivate {
+ static $gtype: GObject.GType<VideoBufferPoolPrivate>;
+
+ constructor(copy: VideoBufferPoolPrivate);
+}
+
+export class VideoCaptionMeta {
+ static $gtype: GObject.GType<VideoCaptionMeta>;
+
+ constructor(copy: VideoCaptionMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ caption_type: VideoCaptionType;
+ data: Uint8Array;
+ size: number;
+
+ // Members
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoChromaResample {
+ static $gtype: GObject.GType<VideoChromaResample>;
+
+ constructor(copy: VideoChromaResample);
+
+ // Members
+ free(): void;
+ get_info(n_lines: number, offset: number): void;
+}
+
+export class VideoCodecAlphaMeta {
+ static $gtype: GObject.GType<VideoCodecAlphaMeta>;
+
+ constructor(copy: VideoCodecAlphaMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ buffer: Gst.Buffer;
+
+ // Members
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoCodecFrame {
+ static $gtype: GObject.GType<VideoCodecFrame>;
+
+ constructor(copy: VideoCodecFrame);
+
+ // Fields
+ system_frame_number: number;
+ dts: Gst.ClockTime;
+ pts: Gst.ClockTime;
+ duration: Gst.ClockTime;
+ distance_from_sync: number;
+ input_buffer: Gst.Buffer;
+ output_buffer: Gst.Buffer;
+ deadline: Gst.ClockTime;
+
+ // Members
+ get_user_data(): any | null;
+ ref(): VideoCodecFrame;
+ set_user_data(notify: GLib.DestroyNotify): void;
+ unref(): void;
+}
+
+export class VideoCodecState {
+ static $gtype: GObject.GType<VideoCodecState>;
+
+ constructor(copy: VideoCodecState);
+
+ // Fields
+ info: VideoInfo;
+ caps: Gst.Caps;
+ codec_data: Gst.Buffer;
+ allocation_caps: Gst.Caps;
+ mastering_display_info: VideoMasteringDisplayInfo;
+ content_light_level: VideoContentLightLevel;
+
+ // Members
+ ref(): VideoCodecState;
+ unref(): void;
+}
+
+export class VideoColorPrimariesInfo {
+ static $gtype: GObject.GType<VideoColorPrimariesInfo>;
+
+ constructor(copy: VideoColorPrimariesInfo);
+
+ // Fields
+ primaries: VideoColorPrimaries;
+ Wx: number;
+ Wy: number;
+ Rx: number;
+ Ry: number;
+ Gx: number;
+ Gy: number;
+ Bx: number;
+ By: number;
+}
+
+export class VideoColorimetry {
+ static $gtype: GObject.GType<VideoColorimetry>;
+
+ constructor(copy: VideoColorimetry);
+
+ // Fields
+ range: VideoColorRange;
+ matrix: VideoColorMatrix;
+ transfer: VideoTransferFunction;
+ primaries: VideoColorPrimaries;
+
+ // Members
+ from_string(color: string): boolean;
+ is_equal(other: VideoColorimetry): boolean;
+ matches(color: string): boolean;
+ to_string(): string | null;
+}
+
+export class VideoContentLightLevel {
+ static $gtype: GObject.GType<VideoContentLightLevel>;
+
+ constructor(
+ properties?: Partial<{
+ max_content_light_level?: number;
+ max_frame_average_light_level?: number;
+ }>
+ );
+ constructor(copy: VideoContentLightLevel);
+
+ // Fields
+ max_content_light_level: number;
+ max_frame_average_light_level: number;
+
+ // Members
+ add_to_caps(caps: Gst.Caps): boolean;
+ from_caps(caps: Gst.Caps): boolean;
+ from_string(level: string): boolean;
+ init(): void;
+ is_equal(other: VideoContentLightLevel): boolean;
+ to_string(): string;
+}
+
+export class VideoConverter {
+ static $gtype: GObject.GType<VideoConverter>;
+
+ constructor(copy: VideoConverter);
+
+ // Members
+ frame(src: VideoFrame, dest: VideoFrame): void;
+ frame_finish(): void;
+ free(): void;
+ get_config(): Gst.Structure;
+ set_config(config: Gst.Structure): boolean;
+}
+
+export class VideoCropMeta {
+ static $gtype: GObject.GType<VideoCropMeta>;
+
+ constructor(copy: VideoCropMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ x: number;
+ y: number;
+ width: number;
+ height: number;
+
+ // Members
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoDecoderPrivate {
+ static $gtype: GObject.GType<VideoDecoderPrivate>;
+
+ constructor(copy: VideoDecoderPrivate);
+}
+
+export class VideoDither {
+ static $gtype: GObject.GType<VideoDither>;
+
+ constructor(copy: VideoDither);
+
+ // Members
+ free(): void;
+ line(line: any | null, x: number, y: number, width: number): void;
+}
+
+export class VideoEncoderPrivate {
+ static $gtype: GObject.GType<VideoEncoderPrivate>;
+
+ constructor(copy: VideoEncoderPrivate);
+}
+
+export class VideoFormatInfo {
+ static $gtype: GObject.GType<VideoFormatInfo>;
+
+ constructor(copy: VideoFormatInfo);
+
+ // Fields
+ format: VideoFormat;
+ name: string;
+ description: string;
+ flags: VideoFormatFlags;
+ bits: number;
+ n_components: number;
+ shift: number[];
+ depth: number[];
+ pixel_stride: number[];
+ n_planes: number;
+ plane: number[];
+ poffset: number[];
+ w_sub: number[];
+ h_sub: number[];
+ unpack_format: VideoFormat;
+ unpack_func: VideoFormatUnpack;
+ pack_lines: number;
+ pack_func: VideoFormatPack;
+ tile_mode: VideoTileMode;
+ tile_ws: number;
+ tile_hs: number;
+
+ // Members
+ component(plane: number): number;
+}
+
+export class VideoFrame {
+ static $gtype: GObject.GType<VideoFrame>;
+
+ constructor(copy: VideoFrame);
+
+ // Fields
+ info: VideoInfo;
+ flags: VideoFrameFlags;
+ buffer: Gst.Buffer;
+ meta: any;
+ id: number;
+ data: any[];
+
+ // Members
+ copy(src: VideoFrame): boolean;
+ copy_plane(src: VideoFrame, plane: number): boolean;
+ unmap(): void;
+ static map(info: VideoInfo, buffer: Gst.Buffer, flags: Gst.MapFlags): [boolean, VideoFrame];
+ static map_id(info: VideoInfo, buffer: Gst.Buffer, id: number, flags: Gst.MapFlags): [boolean,
VideoFrame];
+}
+
+export class VideoGLTextureUploadMeta {
+ static $gtype: GObject.GType<VideoGLTextureUploadMeta>;
+
+ constructor(copy: VideoGLTextureUploadMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ texture_orientation: VideoGLTextureOrientation;
+ n_textures: number;
+ texture_type: VideoGLTextureType[];
+
+ // Members
+ upload(texture_id: number): boolean;
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoInfo {
+ static $gtype: GObject.GType<VideoInfo>;
+
+ constructor();
+ constructor(
+ properties?: Partial<{
+ finfo?: VideoFormatInfo;
+ interlace_mode?: VideoInterlaceMode;
+ flags?: VideoFlags;
+ width?: number;
+ height?: number;
+ size?: number;
+ views?: number;
+ chroma_site?: VideoChromaSite;
+ colorimetry?: VideoColorimetry;
+ par_n?: number;
+ par_d?: number;
+ fps_n?: number;
+ fps_d?: number;
+ offset?: number[];
+ stride?: number[];
+ }>
+ );
+ constructor(copy: VideoInfo);
+
+ // Fields
+ finfo: VideoFormatInfo;
+ interlace_mode: VideoInterlaceMode;
+ flags: VideoFlags;
+ width: number;
+ height: number;
+ size: number;
+ views: number;
+ chroma_site: VideoChromaSite;
+ colorimetry: VideoColorimetry;
+ par_n: number;
+ par_d: number;
+ fps_n: number;
+ fps_d: number;
+ offset: number[];
+ stride: number[];
+
+ // Constructors
+ static ["new"](): VideoInfo;
+ static new_from_caps(caps: Gst.Caps): VideoInfo;
+
+ // Members
+ align(align: VideoAlignment): boolean;
+ align_full(align: VideoAlignment): [boolean, number];
+ convert(src_format: Gst.Format, src_value: number, dest_format: Gst.Format): [boolean, number];
+ copy(): VideoInfo;
+ free(): void;
+ is_equal(other: VideoInfo): boolean;
+ set_format(format: VideoFormat, width: number, height: number): boolean;
+ set_interlaced_format(format: VideoFormat, mode: VideoInterlaceMode, width: number, height: number):
boolean;
+ to_caps(): Gst.Caps;
+ static from_caps(caps: Gst.Caps): [boolean, VideoInfo];
+ static init(): VideoInfo;
+}
+
+export class VideoMasteringDisplayInfo {
+ static $gtype: GObject.GType<VideoMasteringDisplayInfo>;
+
+ constructor(copy: VideoMasteringDisplayInfo);
+
+ // Fields
+ display_primaries: VideoMasteringDisplayInfoCoordinates[];
+ white_point: VideoMasteringDisplayInfoCoordinates;
+ max_display_mastering_luminance: number;
+ min_display_mastering_luminance: number;
+
+ // Members
+ add_to_caps(caps: Gst.Caps): boolean;
+ from_caps(caps: Gst.Caps): boolean;
+ init(): void;
+ is_equal(other: VideoMasteringDisplayInfo): boolean;
+ to_string(): string;
+ static from_string(mastering: string): [boolean, VideoMasteringDisplayInfo];
+}
+
+export class VideoMasteringDisplayInfoCoordinates {
+ static $gtype: GObject.GType<VideoMasteringDisplayInfoCoordinates>;
+
+ constructor(
+ properties?: Partial<{
+ x?: number;
+ y?: number;
+ }>
+ );
+ constructor(copy: VideoMasteringDisplayInfoCoordinates);
+
+ // Fields
+ x: number;
+ y: number;
+}
+
+export class VideoMeta {
+ static $gtype: GObject.GType<VideoMeta>;
+
+ constructor(copy: VideoMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ buffer: Gst.Buffer;
+ flags: VideoFrameFlags;
+ format: VideoFormat;
+ id: number;
+ width: number;
+ height: number;
+ n_planes: number;
+ offset: number[];
+ stride: number[];
+ alignment: VideoAlignment;
+
+ // Members
+ get_plane_height(): [boolean, number[]];
+ get_plane_size(): [boolean, number[]];
+ map(plane: number, info: Gst.MapInfo, flags: Gst.MapFlags): [boolean, any, number];
+ set_alignment(alignment: VideoAlignment): boolean;
+ unmap(plane: number, info: Gst.MapInfo): boolean;
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoMetaTransform {
+ static $gtype: GObject.GType<VideoMetaTransform>;
+
+ constructor(copy: VideoMetaTransform);
+
+ // Fields
+ in_info: VideoInfo;
+ out_info: VideoInfo;
+
+ // Members
+ static scale_get_quark(): GLib.Quark;
+}
+
+export class VideoOverlayComposition {
+ static $gtype: GObject.GType<VideoOverlayComposition>;
+
+ constructor(rectangle?: VideoOverlayRectangle | null);
+ constructor(copy: VideoOverlayComposition);
+
+ // Constructors
+ static ["new"](rectangle?: VideoOverlayRectangle | null): VideoOverlayComposition;
+
+ // Members
+ add_rectangle(rectangle: VideoOverlayRectangle): void;
+ blend(video_buf: VideoFrame): boolean;
+ copy(): VideoOverlayComposition;
+ get_rectangle(n: number): VideoOverlayRectangle;
+ get_seqnum(): number;
+ make_writable(): VideoOverlayComposition;
+ n_rectangles(): number;
+}
+
+export class VideoOverlayCompositionMeta {
+ static $gtype: GObject.GType<VideoOverlayCompositionMeta>;
+
+ constructor(copy: VideoOverlayCompositionMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ overlay: VideoOverlayComposition;
+
+ // Members
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoOverlayRectangle {
+ static $gtype: GObject.GType<VideoOverlayRectangle>;
+
+ constructor(
+ pixels: Gst.Buffer,
+ render_x: number,
+ render_y: number,
+ render_width: number,
+ render_height: number,
+ flags: VideoOverlayFormatFlags
+ );
+ constructor(copy: VideoOverlayRectangle);
+
+ // Constructors
+ static new_raw(
+ pixels: Gst.Buffer,
+ render_x: number,
+ render_y: number,
+ render_width: number,
+ render_height: number,
+ flags: VideoOverlayFormatFlags
+ ): VideoOverlayRectangle;
+
+ // Members
+ copy(): VideoOverlayRectangle;
+ get_flags(): VideoOverlayFormatFlags;
+ get_global_alpha(): number;
+ get_pixels_argb(flags: VideoOverlayFormatFlags): Gst.Buffer;
+ get_pixels_ayuv(flags: VideoOverlayFormatFlags): Gst.Buffer;
+ get_pixels_raw(flags: VideoOverlayFormatFlags): Gst.Buffer;
+ get_pixels_unscaled_argb(flags: VideoOverlayFormatFlags): Gst.Buffer;
+ get_pixels_unscaled_ayuv(flags: VideoOverlayFormatFlags): Gst.Buffer;
+ get_pixels_unscaled_raw(flags: VideoOverlayFormatFlags): Gst.Buffer;
+ get_render_rectangle(): [boolean, number, number, number, number];
+ get_seqnum(): number;
+ set_global_alpha(global_alpha: number): void;
+ set_render_rectangle(render_x: number, render_y: number, render_width: number, render_height: number):
void;
+}
+
+export class VideoRectangle {
+ static $gtype: GObject.GType<VideoRectangle>;
+
+ constructor(
+ properties?: Partial<{
+ x?: number;
+ y?: number;
+ w?: number;
+ h?: number;
+ }>
+ );
+ constructor(copy: VideoRectangle);
+
+ // Fields
+ x: number;
+ y: number;
+ w: number;
+ h: number;
+}
+
+export class VideoRegionOfInterestMeta {
+ static $gtype: GObject.GType<VideoRegionOfInterestMeta>;
+
+ constructor(copy: VideoRegionOfInterestMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ roi_type: GLib.Quark;
+ id: number;
+ parent_id: number;
+ x: number;
+ y: number;
+ w: number;
+ h: number;
+ params: any[];
+
+ // Members
+ add_param(s: Gst.Structure): void;
+ get_param(name: string): Gst.Structure | null;
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoResampler {
+ static $gtype: GObject.GType<VideoResampler>;
+
+ constructor(
+ properties?: Partial<{
+ in_size?: number;
+ out_size?: number;
+ max_taps?: number;
+ n_phases?: number;
+ offset?: number;
+ phase?: number;
+ n_taps?: number;
+ taps?: number;
+ }>
+ );
+ constructor(copy: VideoResampler);
+
+ // Fields
+ in_size: number;
+ out_size: number;
+ max_taps: number;
+ n_phases: number;
+ offset: number;
+ phase: number;
+ n_taps: number;
+ taps: number;
+
+ // Members
+ clear(): void;
+ init(
+ method: VideoResamplerMethod,
+ flags: VideoResamplerFlags,
+ n_phases: number,
+ n_taps: number,
+ shift: number,
+ in_size: number,
+ out_size: number,
+ options: Gst.Structure
+ ): boolean;
+}
+
+export class VideoScaler {
+ static $gtype: GObject.GType<VideoScaler>;
+
+ constructor(copy: VideoScaler);
+
+ // Members
+ ["2d"](
+ vscale: VideoScaler,
+ format: VideoFormat,
+ src: any | null,
+ src_stride: number,
+ dest: any | null,
+ dest_stride: number,
+ x: number,
+ y: number,
+ width: number,
+ height: number
+ ): void;
+ free(): void;
+ get_coeff(out_offset: number, in_offset: number, n_taps: number): number;
+ get_max_taps(): number;
+ horizontal(format: VideoFormat, src: any | null, dest: any | null, dest_offset: number, width: number):
void;
+ vertical(format: VideoFormat, src_lines: any | null, dest: any | null, dest_offset: number, width:
number): void;
+}
+
+export class VideoSinkPrivate {
+ static $gtype: GObject.GType<VideoSinkPrivate>;
+
+ constructor(copy: VideoSinkPrivate);
+}
+
+export class VideoTimeCode {
+ static $gtype: GObject.GType<VideoTimeCode>;
+
+ constructor();
+ constructor(
+ properties?: Partial<{
+ config?: VideoTimeCodeConfig;
+ hours?: number;
+ minutes?: number;
+ seconds?: number;
+ frames?: number;
+ field_count?: number;
+ }>
+ );
+ constructor(copy: VideoTimeCode);
+
+ // Fields
+ config: VideoTimeCodeConfig;
+ hours: number;
+ minutes: number;
+ seconds: number;
+ frames: number;
+ field_count: number;
+
+ // Constructors
+ static ["new"](
+ fps_n: number,
+ fps_d: number,
+ latest_daily_jam: GLib.DateTime,
+ flags: VideoTimeCodeFlags,
+ hours: number,
+ minutes: number,
+ seconds: number,
+ frames: number,
+ field_count: number
+ ): VideoTimeCode;
+ static new_empty(): VideoTimeCode;
+ static new_from_date_time(
+ fps_n: number,
+ fps_d: number,
+ dt: GLib.DateTime,
+ flags: VideoTimeCodeFlags,
+ field_count: number
+ ): VideoTimeCode;
+ static new_from_date_time_full(
+ fps_n: number,
+ fps_d: number,
+ dt: GLib.DateTime,
+ flags: VideoTimeCodeFlags,
+ field_count: number
+ ): VideoTimeCode;
+ static new_from_string(tc_str: string): VideoTimeCode;
+
+ // Members
+ add_frames(frames: number): void;
+ add_interval(tc_inter: VideoTimeCodeInterval): VideoTimeCode | null;
+ clear(): void;
+ compare(tc2: VideoTimeCode): number;
+ copy(): VideoTimeCode;
+ frames_since_daily_jam(): number;
+ free(): void;
+ increment_frame(): void;
+ init(
+ fps_n: number,
+ fps_d: number,
+ latest_daily_jam: GLib.DateTime | null,
+ flags: VideoTimeCodeFlags,
+ hours: number,
+ minutes: number,
+ seconds: number,
+ frames: number,
+ field_count: number
+ ): void;
+ init_from_date_time(
+ fps_n: number,
+ fps_d: number,
+ dt: GLib.DateTime,
+ flags: VideoTimeCodeFlags,
+ field_count: number
+ ): void;
+ init_from_date_time_full(
+ fps_n: number,
+ fps_d: number,
+ dt: GLib.DateTime,
+ flags: VideoTimeCodeFlags,
+ field_count: number
+ ): boolean;
+ is_valid(): boolean;
+ nsec_since_daily_jam(): number;
+ to_date_time(): GLib.DateTime | null;
+ to_string(): string;
+}
+
+export class VideoTimeCodeConfig {
+ static $gtype: GObject.GType<VideoTimeCodeConfig>;
+
+ constructor(copy: VideoTimeCodeConfig);
+
+ // Fields
+ fps_n: number;
+ fps_d: number;
+ flags: VideoTimeCodeFlags;
+ latest_daily_jam: GLib.DateTime;
+}
+
+export class VideoTimeCodeInterval {
+ static $gtype: GObject.GType<VideoTimeCodeInterval>;
+
+ constructor(
+ properties?: Partial<{
+ hours?: number;
+ minutes?: number;
+ seconds?: number;
+ frames?: number;
+ }>
+ );
+ constructor(copy: VideoTimeCodeInterval);
+
+ // Fields
+ hours: number;
+ minutes: number;
+ seconds: number;
+ frames: number;
+
+ // Constructors
+ static ["new"](hours: number, minutes: number, seconds: number, frames: number): VideoTimeCodeInterval;
+ static new_from_string(tc_inter_str: string): VideoTimeCodeInterval;
+
+ // Members
+ clear(): void;
+ copy(): VideoTimeCodeInterval;
+ free(): void;
+ init(hours: number, minutes: number, seconds: number, frames: number): void;
+}
+
+export class VideoTimeCodeMeta {
+ static $gtype: GObject.GType<VideoTimeCodeMeta>;
+
+ constructor(copy: VideoTimeCodeMeta);
+
+ // Fields
+ meta: Gst.Meta;
+ tc: VideoTimeCode;
+
+ // Members
+ static get_info(): Gst.MetaInfo;
+}
+
+export class VideoVBIEncoder {
+ static $gtype: GObject.GType<VideoVBIEncoder>;
+
+ constructor(format: VideoFormat, pixel_width: number);
+ constructor(copy: VideoVBIEncoder);
+
+ // Constructors
+ static ["new"](format: VideoFormat, pixel_width: number): VideoVBIEncoder;
+
+ // Members
+ add_ancillary(composite: boolean, DID: number, SDID_block_number: number, data: Uint8Array | string):
boolean;
+ copy(): VideoVBIEncoder;
+ free(): void;
+ write_line(data: number): void;
+}
+
+export class VideoVBIParser {
+ static $gtype: GObject.GType<VideoVBIParser>;
+
+ constructor(format: VideoFormat, pixel_width: number);
+ constructor(copy: VideoVBIParser);
+
+ // Constructors
+ static ["new"](format: VideoFormat, pixel_width: number): VideoVBIParser;
+
+ // Members
+ add_line(data: Uint8Array | string): void;
+ copy(): VideoVBIParser;
+ free(): void;
+ get_ancillary(): [VideoVBIParserResult, VideoAncillary];
+}
+
+export interface ColorBalanceNamespace {
+ $gtype: GObject.GType<ColorBalance>;
+ prototype: ColorBalancePrototype;
+}
+export type ColorBalance = ColorBalancePrototype;
+export interface ColorBalancePrototype extends GObject.Object {
+ // Members
+
+ get_balance_type(): ColorBalanceType;
+ get_value(channel: ColorBalanceChannel): number;
+ list_channels(): ColorBalanceChannel[];
+ set_value(channel: ColorBalanceChannel, value: number): void;
+ value_changed(channel: ColorBalanceChannel, value: number): void;
+ vfunc_get_balance_type(): ColorBalanceType;
+ vfunc_get_value(channel: ColorBalanceChannel): number;
+ vfunc_list_channels(): ColorBalanceChannel[];
+ vfunc_set_value(channel: ColorBalanceChannel, value: number): void;
+ vfunc_value_changed(channel: ColorBalanceChannel, value: number): void;
+}
+
+export const ColorBalance: ColorBalanceNamespace;
+
+export interface NavigationNamespace {
+ $gtype: GObject.GType<Navigation>;
+ prototype: NavigationPrototype;
+
+ event_get_type(event: Gst.Event): NavigationEventType;
+ event_parse_command(event: Gst.Event): [boolean, NavigationCommand | null];
+ event_parse_key_event(event: Gst.Event): [boolean, string];
+ event_parse_mouse_button_event(event: Gst.Event): [boolean, number, number, number];
+ event_parse_mouse_move_event(event: Gst.Event): [boolean, number, number];
+ event_parse_mouse_scroll_event(event: Gst.Event): [boolean, number, number, number, number];
+ message_get_type(message: Gst.Message): NavigationMessageType;
+ message_new_angles_changed(src: Gst.Object, cur_angle: number, n_angles: number): Gst.Message;
+ message_new_commands_changed(src: Gst.Object): Gst.Message;
+ message_new_event(src: Gst.Object, event: Gst.Event): Gst.Message;
+ message_new_mouse_over(src: Gst.Object, active: boolean): Gst.Message;
+ message_parse_angles_changed(message: Gst.Message): [boolean, number, number];
+ message_parse_event(message: Gst.Message): [boolean, Gst.Event | null];
+ message_parse_mouse_over(message: Gst.Message): [boolean, boolean];
+ query_get_type(query: Gst.Query): NavigationQueryType;
+ query_new_angles(): Gst.Query;
+ query_new_commands(): Gst.Query;
+ query_parse_angles(query: Gst.Query): [boolean, number, number];
+ query_parse_commands_length(query: Gst.Query): [boolean, number];
+ query_parse_commands_nth(query: Gst.Query, nth: number): [boolean, NavigationCommand | null];
+ query_set_angles(query: Gst.Query, cur_angle: number, n_angles: number): void;
+ query_set_commandsv(query: Gst.Query, cmds: NavigationCommand[]): void;
+}
+export type Navigation = NavigationPrototype;
+export interface NavigationPrototype extends GObject.Object {
+ // Members
+
+ send_command(command: NavigationCommand): void;
+ send_event(structure: Gst.Structure): void;
+ send_key_event(event: string, key: string): void;
+ send_mouse_event(event: string, button: number, x: number, y: number): void;
+ send_mouse_scroll_event(x: number, y: number, delta_x: number, delta_y: number): void;
+ vfunc_send_event(structure: Gst.Structure): void;
+}
+
+export const Navigation: NavigationNamespace;
+
+export interface VideoDirectionNamespace {
+ $gtype: GObject.GType<VideoDirection>;
+ prototype: VideoDirectionPrototype;
+}
+export type VideoDirection = VideoDirectionPrototype;
+export interface VideoDirectionPrototype extends GObject.Object {
+ // Properties
+ video_direction: VideoOrientationMethod;
+ videoDirection: VideoOrientationMethod;
+}
+
+export const VideoDirection: VideoDirectionNamespace;
+
+export interface VideoOrientationNamespace {
+ $gtype: GObject.GType<VideoOrientation>;
+ prototype: VideoOrientationPrototype;
+
+ from_tag(taglist: Gst.TagList): [boolean, VideoOrientationMethod];
+}
+export type VideoOrientation = VideoOrientationPrototype;
+export interface VideoOrientationPrototype extends GObject.Object {
+ // Members
+
+ get_hcenter(): [boolean, number];
+ get_hflip(): [boolean, boolean];
+ get_vcenter(): [boolean, number];
+ get_vflip(): [boolean, boolean];
+ set_hcenter(center: number): boolean;
+ set_hflip(flip: boolean): boolean;
+ set_vcenter(center: number): boolean;
+ set_vflip(flip: boolean): boolean;
+ vfunc_get_hcenter(): [boolean, number];
+ vfunc_get_hflip(): [boolean, boolean];
+ vfunc_get_vcenter(): [boolean, number];
+ vfunc_get_vflip(): [boolean, boolean];
+ vfunc_set_hcenter(center: number): boolean;
+ vfunc_set_hflip(flip: boolean): boolean;
+ vfunc_set_vcenter(center: number): boolean;
+ vfunc_set_vflip(flip: boolean): boolean;
+}
+
+export const VideoOrientation: VideoOrientationNamespace;
+
+export interface VideoOverlayNamespace {
+ $gtype: GObject.GType<VideoOverlay>;
+ prototype: VideoOverlayPrototype;
+
+ install_properties(oclass: GObject.Object, last_prop_id: number): void;
+ // Conflicted with GObject.Object.install_properties
+ install_properties(...args: never[]): any;
+ set_property(
+ object: GObject.Object,
+ last_prop_id: number,
+ property_id: number,
+ value: GObject.Value | any
+ ): boolean;
+}
+export type VideoOverlay = VideoOverlayPrototype;
+export interface VideoOverlayPrototype extends GObject.Object {
+ // Members
+
+ expose(): void;
+ got_window_handle(handle: never): void;
+ handle_events(handle_events: boolean): void;
+ prepare_window_handle(): void;
+ set_render_rectangle(x: number, y: number, width: number, height: number): boolean;
+ set_window_handle(handle: never): void;
+ vfunc_expose(): void;
+ vfunc_handle_events(handle_events: boolean): void;
+ vfunc_set_render_rectangle(x: number, y: number, width: number, height: number): void;
+ vfunc_set_window_handle(handle: never): void;
+}
+
+export const VideoOverlay: VideoOverlayNamespace;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]