///
///
///
///
///
///
/**
* Type Definitions for Gjs (https://gjs.guide/)
*
* These type definitions are automatically generated, do not edit them by hand.
* If you found a bug fix it in `ts-for-gir` or create a bug report on https://github.com/gjsify/ts-for-gir
*
* The based EJS template file is used for the generated .d.ts file of each GIR module like Gtk-4.0, GObject-2.0, ...
*/
declare module 'gi://GstBadAudio?version=1.0' {
// Module dependencies
import type GstBase from 'gi://GstBase?version=1.0';
import type Gst from 'gi://Gst?version=1.0';
import type GObject from 'gi://GObject?version=2.0';
import type GLib from 'gi://GLib?version=2.0';
import type GModule from 'gi://GModule?version=2.0';
import type GstAudio from 'gi://GstAudio?version=1.0';
export namespace GstBadAudio {
/**
* GstBadAudio-1.0
*/
/**
* The output mode defines how the output behaves with regards to looping. Either the playback position is
* moved back to the beginning of the loop, acting like a backwards seek, or it increases steadily, as if
* loop were "unrolled".
*/
/**
* The output mode defines how the output behaves with regards to looping. Either the playback position is
* moved back to the beginning of the loop, acting like a backwards seek, or it increases steadily, as if
* loop were "unrolled".
*/
export namespace NonstreamAudioOutputMode {
export const $gtype: GObject.GType;
}
enum NonstreamAudioOutputMode {
/**
* Playback position is moved back to the beginning of the loop
*/
LOOPING,
/**
* Playback position increases steadily, even when looping
*/
STEADY,
}
/**
* The subsong mode defines how the decoder shall handle subsongs.
*/
/**
* The subsong mode defines how the decoder shall handle subsongs.
*/
export namespace NonstreamAudioSubsongMode {
export const $gtype: GObject.GType;
}
enum NonstreamAudioSubsongMode {
/**
* Only the current subsong is played
*/
SINGLE,
/**
* All subsongs are played (current subsong index is ignored)
*/
ALL,
/**
* Use decoder specific default behavior
*/
DECODER_DEFAULT,
}
/**
* The name of the template for the sink pad.
*/
const NONSTREAM_AUDIO_DECODER_SINK_NAME: string;
/**
* The name of the template for the source pad.
*/
const NONSTREAM_AUDIO_DECODER_SRC_NAME: string;
namespace NonstreamAudioDecoder {
// Constructor properties interface
interface ConstructorProps extends Gst.Element.ConstructorProps {
current_subsong: number;
currentSubsong: number;
num_loops: number;
numLoops: number;
}
}
/**
* This base class is for decoders which do not operate on a streaming model.
* That is: they load the encoded media at once, as part of an initialization,
* and afterwards can decode samples (sometimes referred to as "rendering the
* samples").
*
* This sets it apart from GstAudioDecoder, which is a base class for
* streaming audio decoders.
*
* The base class is conceptually a mix between decoder and parser. This is
* unavoidable, since virtually no format that isn't streaming based has a
* clear distinction between parsing and decoding. As a result, this class
* also handles seeking.
*
* Non-streaming audio formats tend to have some characteristics unknown to
* more "regular" bitstreams. These include subsongs and looping.
*
* Subsongs are a set of songs-within-a-song. An analogy would be a multitrack
* recording, where each track is its own song. The first subsong is typically
* the "main" one. Subsongs were popular for video games to enable context-
* aware music; for example, subsong `#0` would be the "main" song, `#1` would be
* an alternate song playing when a fight started, `#2` would be heard during
* conversations etc. The base class is designed to always have at least one
* subsong. If the subclass doesn't provide any, the base class creates a
* "pseudo" subsong, which is actually the whole song.
* Downstream is informed about the subsong using a table of contents (TOC),
* but only if there are at least 2 subsongs.
*
* Looping refers to jumps within the song, typically backwards to the loop
* start (although bi-directional looping is possible). The loop is defined
* by a chronological start and end; once the playback position reaches the
* loop end, it jumps back to the loop start.
* Depending on the subclass, looping may not be possible at all, or it
* may only be possible to enable/disable it (that is, either no looping, or
* an infinite amount of loops), or it may allow for defining a finite number
* of times the loop is repeated.
* Looping can affect output in two ways. Either, the playback position is
* reset to the start of the loop, similar to what happens after a seek event.
* Or, it is not reset, so the pipeline sees playback steadily moving forwards,
* the playback position monotonically increasing. However, seeking must
* always happen within the confines of the defined subsong duration; for
* example, if a subsong is 2 minutes long, steady playback is at 5 minutes
* (because infinite looping is enabled), then seeking will still place the
* position within the 2 minute period.
* Loop count 0 means no looping. Loop count -1 means infinite looping.
* Nonzero positive values indicate how often a loop shall occur.
*
* If the initial subsong and loop count are set to values the subclass does
* not support, the subclass has a chance to correct these values.
* `get_property` then reports the corrected versions.
*
* The base class operates as follows:
* * Unloaded mode
* - Initial values are set. If a current subsong has already been
* defined (for example over the command line with gst-launch), then
* the subsong index is copied over to current_subsong .
* Same goes for the num-loops and output-mode properties.
* Media is NOT loaded yet.
* - Once the sinkpad is activated, the process continues. The sinkpad is
* activated in push mode, and the class accumulates the incoming media
* data in an adapter inside the sinkpad's chain function until either an
* EOS event is received from upstream, or the number of bytes reported
* by upstream is reached. Then it loads the media, and starts the decoder
* output task.
* - If upstream cannot respond to the size query (in bytes) of `load_from_buffer`
* fails, an error is reported, and the pipeline stops.
* - If there are no errors, `load_from_buffer` is called to load the media. The
* subclass must at least call gst_nonstream_audio_decoder_set_output_format()
* there, and is free to make use of the initial subsong, output mode, and
* position. If the actual output mode or position differs from the initial
* value,it must set the initial value to the actual one (for example, if
* the actual starting position is always 0, set *initial_position to 0).
* If loading is unsuccessful, an error is reported, and the pipeline
* stops. Otherwise, the base class calls `get_current_subsong` to retrieve
* the actual current subsong, `get_subsong_duration` to report the current
* subsong's duration in a duration event and message, and `get_subsong_tags`
* to send tags downstream in an event (these functions are optional; if
* set to NULL, the associated operation is skipped). Afterwards, the base
* class switches to loaded mode, and starts the decoder output task.
*
* * Loaded mode
* - Inside the decoder output task, the base class repeatedly calls `decode,`
* which returns a buffer with decoded, ready-to-play samples. If the
* subclass reached the end of playback, `decode` returns FALSE, otherwise
* TRUE.
* - Upon reaching a loop end, subclass either ignores that, or loops back
* to the beginning of the loop. In the latter case, if the output mode is set
* to LOOPING, the subclass must call gst_nonstream_audio_decoder_handle_loop()
* *after* the playback position moved to the start of the loop. In
* STEADY mode, the subclass must *not* call this function.
* Since many decoders only provide a callback for when the looping occurs,
* and that looping occurs inside the decoding operation itself, the following
* mechanism for subclass is suggested: set a flag inside such a callback.
* Then, in the next `decode` call, before doing the decoding, check this flag.
* If it is set, gst_nonstream_audio_decoder_handle_loop() is called, and the
* flag is cleared.
* (This function call is necessary in LOOPING mode because it updates the
* current segment and makes sure the next buffer that is sent downstream
* has its DISCONT flag set.)
* - When the current subsong is switched, `set_current_subsong` is called.
* If it fails, a warning is reported, and nothing else is done. Otherwise,
* it calls `get_subsong_duration` to get the new current subsongs's
* duration, `get_subsong_tags` to get its tags, reports a new duration
* (i.e. it sends a duration event downstream and generates a duration
* message), updates the current segment, and sends the subsong's tags in
* an event downstream. (If `set_current_subsong` has been set to NULL by
* the subclass, attempts to set a current subsong are ignored; likewise,
* if `get_subsong_duration` is NULL, no duration is reported, and if
* `get_subsong_tags` is NULL, no tags are sent downstream.)
* - When an attempt is made to switch the output mode, it is checked against
* the bitmask returned by `get_supported_output_modes`. If the proposed
* new output mode is supported, the current segment is updated
* (it is open-ended in STEADY mode, and covers the (sub)song length in
* LOOPING mode), and the subclass' `set_output_mode` function is called
* unless it is set to NULL. Subclasses should reset internal loop counters
* in this function.
*
* The relationship between (sub)song duration, output mode, and number of loops
* is defined this way (this is all done by the base class automatically):
*
* * Segments have their duration and stop values set to GST_CLOCK_TIME_NONE in
* STEADY mode, and to the duration of the (sub)song in LOOPING mode.
*
* * The duration that is returned to a DURATION query is always the duration
* of the (sub)song, regardless of number of loops or output mode. The same
* goes for DURATION messages and tags.
*
* * If the number of loops is >0 or -1, durations of TOC entries are set to
* the duration of the respective subsong in LOOPING mode and to G_MAXINT64 in
* STEADY mode. If the number of loops is 0, entry durations are set to the
* subsong duration regardless of the output mode.
*/
abstract class NonstreamAudioDecoder extends Gst.Element {
static $gtype: GObject.GType;
// Properties
get current_subsong(): number;
set current_subsong(val: number);
get currentSubsong(): number;
set currentSubsong(val: number);
get num_loops(): number;
set num_loops(val: number);
get numLoops(): number;
set numLoops(val: number);
// Fields
element: Gst.Element;
sinkpad: Gst.Pad;
srcpad: Gst.Pad;
upstream_size: number;
loaded_mode: boolean;
input_data_adapter: GstBase.Adapter;
subsong_duration: Gst.ClockTime;
output_format_changed: boolean;
cur_pos_in_samples: number;
num_decoded_samples: number;
discont: boolean;
allocator: Gst.Allocator;
// Constructors
constructor(properties?: Partial, ...args: any[]);
_init(...args: any[]): void;
// Virtual methods
/**
* Optional.
* Sets up the allocation parameters for allocating output
* buffers. The passed in query contains the result of the
* downstream allocation query.
* Subclasses should chain up to the parent implementation to
* invoke the default handler.
* @param query
*/
vfunc_decide_allocation(query: Gst.Query): boolean;
/**
* Always required.
* Allocates an output buffer, fills it with decoded audio samples, and must be passed on to
* *buffer . The number of decoded samples must be passed on to *num_samples.
* If decoding finishes or the decoding is no longer possible (for example, due to an
* unrecoverable error), this function returns FALSE, otherwise TRUE.
* @param buffer
* @param num_samples
*/
vfunc_decode(buffer: Gst.Buffer, num_samples: number): boolean;
/**
* Optional.
* Returns the current subsong.
* If the current subsong mode is not GST_NONSTREAM_AUDIO_SUBSONG_MODE_SINGLE, this
* function's return value is undefined.
* If this function is implemented by the subclass,
* `get_num_subsongs` should be implemented as well.
*/
vfunc_get_current_subsong(): number;
/**
* Optional.
* Returns a tag list containing the main song tags, or NULL if there are
* no such tags. Returned tags will be unref'd. Use this vfunc instead of
* manually pushing a tag event downstream to avoid edge cases where not yet
* pushed sticky tag events get overwritten before they are pushed (can for
* example happen with decodebin if tags are pushed downstream before the
* decodebin pads are linked).
*/
vfunc_get_main_tags(): Gst.TagList;
/**
* Optional.
* Returns the number of loops for playback.
*/
vfunc_get_num_loops(): number;
/**
* Optional.
* Returns the number of subsongs available.
* The return values 0 and 1 have a similar, but distinct, meaning.
* If this function returns 0, then this decoder does not support subsongs at all.
* `get_current_subsong` must then also always return 0. In other words, this function
* either never returns 0, or never returns anything else than 0.
* A return value of 1 means that the media contains either only one or no subsongs
* (the entire song is then considered to be one single subsong). 1 also means that only
* this very media has no or just one subsong, and the decoder itself can
* support multiple subsongs.
*/
vfunc_get_num_subsongs(): number;
/**
* Optional.
* Returns the duration of a subsong. Returns GST_CLOCK_TIME_NONE if duration is unknown.
* @param subsong
*/
vfunc_get_subsong_duration(subsong: number): Gst.ClockTime;
/**
* Optional.
* Returns tags for a subsong, or NULL if there are no tags.
* Returned tags will be unref'd.
* @param subsong
*/
vfunc_get_subsong_tags(subsong: number): Gst.TagList;
/**
* Always required.
* Returns a bitmask containing the output modes the subclass supports.
* The mask is formed by a bitwise OR combination of integers, which can be calculated
* this way: 1 << GST_NONSTREAM_AUDIO_OUTPUT_MODE_ , where mode is either STEADY or LOOPING
*/
vfunc_get_supported_output_modes(): number;
/**
* Required if loads_from_sinkpad is set to TRUE (the default value).
* Loads the media from the given buffer. The entire media is supplied at once,
* so after this call, loading should be finished. This function
* can also make use of a suggested initial subsong & subsong mode and initial
* playback position (but isn't required to). In case it chooses a different starting
* position, the function must pass this position to *initial_position.
* The subclass does not have to unref the input buffer; the base class does that
* already.
* @param source_data
* @param initial_subsong
* @param initial_subsong_mode
* @param initial_position
* @param initial_output_mode
* @param initial_num_loops
*/
vfunc_load_from_buffer(
source_data: Gst.Buffer,
initial_subsong: number,
initial_subsong_mode: NonstreamAudioSubsongMode,
initial_position: Gst.ClockTime,
initial_output_mode: NonstreamAudioOutputMode,
initial_num_loops: number,
): boolean;
/**
* Required if loads_from_sinkpad is set to FALSE.
* Loads the media in a way defined by the custom sink. Data is not supplied;
* the derived class has to handle this on its own. Otherwise, this function is
* identical to `load_from_buffer`.
* @param initial_subsong
* @param initial_subsong_mode
* @param initial_position
* @param initial_output_mode
* @param initial_num_loops
*/
vfunc_load_from_custom(
initial_subsong: number,
initial_subsong_mode: NonstreamAudioSubsongMode,
initial_position: Gst.ClockTime,
initial_output_mode: NonstreamAudioOutputMode,
initial_num_loops: number,
): boolean;
vfunc_negotiate(): boolean;
/**
* Optional.
* Proposes buffer allocation parameters for upstream elements.
* Subclasses should chain up to the parent implementation to
* invoke the default handler.
* @param query
*/
vfunc_propose_allocation(query: Gst.Query): boolean;
/**
* Optional.
* Called when a seek event is received by the parent class.
* new_position is a pointer to a GstClockTime integer which
* contains a position relative to the current subsong.
* Minimum is 0, maximum is the subsong length.
* After this function finishes, new_position is set to the
* actual new position (which may differ from the request
* position, depending on the decoder).
* @param new_position
*/
vfunc_seek(new_position: Gst.ClockTime): boolean;
/**
* Optional.
* Sets the current subsong. This function is allowed to switch to a different
* subsong than the required one, and can optionally make use of the suggested initial
* position. In case it chooses a different starting position, the function must pass
* this position to *initial_position.
* This function switches the subsong mode to GST_NONSTREAM_AUDIO_SUBSONG_MODE_SINGLE
* automatically.
* If this function is implemented by the subclass, `get_current_subsong` and
* `get_num_subsongs` should be implemented as well.
* @param subsong
* @param initial_position
*/
vfunc_set_current_subsong(subsong: number, initial_position: Gst.ClockTime): boolean;
/**
* Optional.
* Sets the number of loops for playback. If this is called during playback,
* the subclass must set any internal loop counters to zero. A loop value of -1
* means infinite looping; 0 means no looping; and when the num_loops is greater than 0,
* playback should loop exactly num_loops times. If this function is implemented,
* `get_num_loops` should be implemented as well. The function can ignore the given values
* and choose another; however, `get_num_loops` should return this other value afterwards.
* It is up to the subclass to define where the loop starts and ends. It can mean that only
* a subset at the end or in the middle of a song is repeated, for example.
* If the current subsong mode is GST_NONSTREAM_AUDIO_SUBSONG_MODE_SINGLE, then the subsong
* is repeated this many times. If it is GST_NONSTREAM_AUDIO_SUBSONG_MODE_ALL, then all
* subsongs are repeated this many times. With GST_NONSTREAM_AUDIO_SUBSONG_MODE_DECODER_DEFAULT,
* the behavior is decoder specific.
* @param num_loops
*/
vfunc_set_num_loops(num_loops: number): boolean;
/**
* Optional.
* Sets the output mode the subclass has to use. Unlike with most other functions, the subclass
* cannot choose a different mode; it must use the requested one.
* If the output mode is set to LOOPING, `gst_nonstream_audio_decoder_handle_loop`
* must be called after playback moved back to the start of a loop.
* @param mode
* @param current_position
*/
vfunc_set_output_mode(mode: NonstreamAudioOutputMode, current_position: Gst.ClockTime): boolean;
/**
* Optional.
* Sets the current subsong mode. Since this might influence the current playback position,
* this function must set the initial_position integer argument to a defined value.
* If the playback position is not affected at all, it must be set to GST_CLOCK_TIME_NONE.
* If the subsong is restarted after the mode switch, it is recommended to set the value
* to the position in the playback right after the switch (or 0 if the subsongs are always
* reset back to the beginning).
* @param mode
* @param initial_position
*/
vfunc_set_subsong_mode(mode: NonstreamAudioSubsongMode, initial_position: Gst.ClockTime): boolean;
/**
* Optional.
* Called when a position query is received by the parent class.
* The position that this function returns must be relative to
* the current subsong. Thus, the minimum is 0, and the maximum
* is the subsong length.
*/
vfunc_tell(): Gst.ClockTime;
// Methods
/**
* Allocates an output buffer with the internally configured buffer pool.
*
* This function may only be called from within `load_from_buffer,`
* `load_from_custom,` and `decode`.
* @param size Size of the output buffer, in bytes
* @returns Newly allocated output buffer, or NULL if allocation failed
*/
allocate_output_buffer(size: number): Gst.Buffer | null;
/**
* Gets sample format, sample rate, channel count from the allowed srcpad caps.
*
* This is useful for when the subclass wishes to adjust one or more output
* parameters to whatever downstream is supporting. For example, the output
* sample rate is often a freely adjustable value in module players.
*
* This function tries to find a value inside the srcpad peer's caps for
* `format,` `sample_rate,` `num_chnanels` . Any of these can be NULL; they
* (and the corresponding downstream caps) are then skipped while retrieving
* information. Non-fixated caps are fixated first; the value closest to
* their present value is then chosen. For example, if the variables pointed
* to by the arguments are GST_AUDIO_FORMAT_16, 48000 Hz, and 2 channels,
* and the downstream caps are:
*
* "audio/x-raw, format={S16LE,S32LE}, rate=[1,32000], channels=[1,MAX]"
*
* Then `format` and `channels` stay the same, while `sample_rate` is set to 32000 Hz.
* This way, the initial values the the variables pointed to by the arguments
* are set to can be used as default output values. Note that if no downstream
* caps can be retrieved, then this function does nothing, therefore it is
* necessary to ensure that `format,` `sample_rate,` and `channels` have valid
* initial values.
*
* Decoder lock is not held by this function, so it can be called from within
* any of the class vfuncs.
* @param format #GstAudioFormat value to fill with a sample format
* @param sample_rate Integer to fill with a sample rate
* @param num_channels Integer to fill with a channel count
*/
get_downstream_info(format: GstAudio.AudioFormat | null, sample_rate: number, num_channels: number): void;
/**
* Reports that a loop has been completed and creates a new appropriate
* segment for the next loop.
*
* `new_position` exists because a loop may not start at the beginning.
*
* This function is only useful for subclasses which can be in the
* GST_NONSTREAM_AUDIO_OUTPUT_MODE_LOOPING output mode, since in the
* GST_NONSTREAM_AUDIO_OUTPUT_MODE_STEADY output mode, this function
* does nothing. See #GstNonstreamAudioOutputMode for more details.
*
* The subclass calls this during playback when it loops. It produces
* a new segment with updated base time and internal time values, to allow
* for seamless looping. It does *not* check the number of elapsed loops;
* this is up the subclass.
*
* Note that if this function is called, then it must be done after the
* last samples of the loop have been decoded and pushed downstream.
*
* This function must be called with the decoder mutex lock held, since it
* is typically called from within `decode` (which in turn are called with
* the lock already held).
* @param new_position
*/
handle_loop(new_position: Gst.ClockTime): void;
/**
* Sets the output caps by means of a GstAudioInfo structure.
*
* This must be called latest in the first `decode` call, to ensure src caps are
* set before decoded samples are sent downstream. Typically, this is called
* from inside `load_from_buffer` or `load_from_custom`.
*
* This function must be called with the decoder mutex lock held, since it
* is typically called from within the aforementioned vfuncs (which in turn
* are called with the lock already held).
* @param audio_info Valid audio info structure containing the output format
* @returns TRUE if setting the output format succeeded, FALSE otherwise
*/
set_output_format(audio_info: GstAudio.AudioInfo): boolean;
/**
* Convenience function; sets the output caps by means of common parameters.
*
* Internally, this fills a GstAudioInfo structure and calls
* gst_nonstream_audio_decoder_set_output_format().
* @param sample_rate Output sample rate to use, in Hz
* @param sample_format Output sample format to use
* @param num_channels Number of output channels to use
* @returns TRUE if setting the output format succeeded, FALSE otherwise
*/
set_output_format_simple(
sample_rate: number,
sample_format: GstAudio.AudioFormat | null,
num_channels: number,
): boolean;
}
namespace PlanarAudioAdapter {
// Constructor properties interface
interface ConstructorProps extends GObject.Object.ConstructorProps {}
}
/**
* This class is similar to GstAdapter, but it is made to work with
* non-interleaved (planar) audio buffers. Before using, an audio format
* must be configured with gst_planar_audio_adapter_configure()
*/
class PlanarAudioAdapter extends GObject.Object {
static $gtype: GObject.GType;
// Constructors
constructor(properties?: Partial, ...args: any[]);
_init(...args: any[]): void;
static ['new'](): PlanarAudioAdapter;
// Methods
/**
* Gets the maximum amount of samples available, that is it returns the maximum
* value that can be supplied to gst_planar_audio_adapter_get_buffer() without
* that function returning %NULL.
* @returns number of samples available in @adapter
*/
available(): number;
/**
* Removes all buffers from `adapter`.
*/
clear(): void;
/**
* Sets up the `adapter` to handle audio data of the specified audio format.
* Note that this will internally clear the adapter and re-initialize it.
* @param info a #GstAudioInfo describing the format of the audio data
*/
configure(info: GstAudio.AudioInfo): void;
distance_from_discont(): number;
/**
* Get the DTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
* flag, or GST_CLOCK_TIME_NONE.
* @returns The DTS at the last discont or GST_CLOCK_TIME_NONE.
*/
dts_at_discont(): Gst.ClockTime;
/**
* Flushes the first `to_flush` samples in the `adapter`. The caller must ensure
* that at least this many samples are available.
* @param to_flush the number of samples to flush
*/
flush(to_flush: number): void;
/**
* Returns a #GstBuffer containing the first `nsamples` of the `adapter,` but
* does not flush them from the adapter.
* Use gst_planar_audio_adapter_take_buffer() for flushing at the same time.
*
* The map `flags` can be used to give an optimization hint to this function.
* When the requested buffer is meant to be mapped only for reading, it might
* be possible to avoid copying memory in some cases.
*
* Caller owns a reference to the returned buffer. gst_buffer_unref() after
* usage.
*
* Free-function: gst_buffer_unref
* @param nsamples the number of samples to get
* @param flags hint the intended use of the returned buffer
* @returns a #GstBuffer containing the first @nsamples of the adapter, or %NULL if @nsamples samples are not available. gst_buffer_unref() when no longer needed.
*/
get_buffer(nsamples: number, flags: Gst.MapFlags | null): Gst.Buffer | null;
/**
* Get the offset that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
* flag, or GST_BUFFER_OFFSET_NONE.
* @returns The offset at the last discont or GST_BUFFER_OFFSET_NONE.
*/
offset_at_discont(): number;
/**
* Get the dts that was before the current sample in the adapter. When
* `distance` is given, the amount of bytes between the dts and the current
* position is returned.
*
* The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
* the adapter is first created or when it is cleared. This also means that
* before the first sample with a dts is removed from the adapter, the dts
* and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.
* @returns The previously seen dts.
*/
prev_dts(): [Gst.ClockTime, number];
/**
* Get the offset that was before the current sample in the adapter. When
* `distance` is given, the amount of samples between the offset and the current
* position is returned.
*
* The offset is reset to GST_BUFFER_OFFSET_NONE and the distance is set to 0
* when the adapter is first created or when it is cleared. This also means that
* before the first sample with an offset is removed from the adapter, the
* offset and distance returned are GST_BUFFER_OFFSET_NONE and 0 respectively.
* @returns The previous seen offset.
*/
prev_offset(): [number, number];
/**
* Get the pts that was before the current sample in the adapter. When
* `distance` is given, the amount of samples between the pts and the current
* position is returned.
*
* The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
* the adapter is first created or when it is cleared. This also means that before
* the first sample with a pts is removed from the adapter, the pts
* and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.
* @returns The previously seen pts.
*/
prev_pts(): [Gst.ClockTime, number];
/**
* Get the PTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
* flag, or GST_CLOCK_TIME_NONE.
* @returns The PTS at the last discont or GST_CLOCK_TIME_NONE.
*/
pts_at_discont(): Gst.ClockTime;
/**
* Adds the data from `buf` to the data stored inside `adapter` and takes
* ownership of the buffer.
* @param buf a #GstBuffer to queue in the adapter
*/
push(buf: Gst.Buffer): void;
/**
* Returns a #GstBuffer containing the first `nsamples` bytes of the
* `adapter`. The returned bytes will be flushed from the adapter.
*
* See gst_planar_audio_adapter_get_buffer() for more details.
*
* Caller owns a reference to the returned buffer. gst_buffer_unref() after
* usage.
*
* Free-function: gst_buffer_unref
* @param nsamples the number of samples to take
* @param flags hint the intended use of the returned buffer
* @returns a #GstBuffer containing the first @nsamples of the adapter, or %NULL if @nsamples samples are not available. gst_buffer_unref() when no longer needed.
*/
take_buffer(nsamples: number, flags: Gst.MapFlags | null): Gst.Buffer | null;
}
type NonstreamAudioDecoderClass = typeof NonstreamAudioDecoder;
type PlanarAudioAdapterClass = typeof PlanarAudioAdapter;
/**
* Name of the imported GIR library
* `see` https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L188
*/
const __name__: string;
/**
* Version of the imported GIR library
* `see` https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L189
*/
const __version__: string;
}
export default GstBadAudio;
}
declare module 'gi://GstBadAudio' {
import GstBadAudio10 from 'gi://GstBadAudio?version=1.0';
export default GstBadAudio10;
}
// END