Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
- Exported types
- Methods
- allocateOutputBuffer
- finishFrame
- getAllocator
- getAudioInfo
- getDrainable
- getFrameMax
- getFrameSamplesMax
- getFrameSamplesMin
- getHardMin
- getHardResync
- getLatency
- getLookahead
- getMarkGranule
- getPerfectTimestamp
- getTolerance
- mergeTags
- negotiate
- proxyGetcaps
- setAllocationCaps
- setDrainable
- setFrameMax
- setFrameSamplesMax
- setFrameSamplesMin
- setHardMin
- setHardResync
- setHeaders
- setLatency
- setLookahead
- setMarkGranule
- setOutputFormat
- setPerfectTimestamp
- setTolerance
- Properties
This base class is for audio encoders turning raw audio samples into encoded audio data.
GstAudioEncoder and subclass should cooperate as follows.
<orderedlist>
<listitem>
<itemizedlist><title>Configuration</title>
<listitem><para>
Initially, GstAudioEncoder calls start
when the encoder element
is activated, which allows subclass to perform any global setup.
</para></listitem>
<listitem><para>
GstAudioEncoder calls setFormat
to inform subclass of the format
of input audio data that it is about to receive. Subclass should
setup for encoding and configure various base class parameters
appropriately, notably those directing desired input data handling.
While unlikely, it might be called more than once, if changing input
parameters require reconfiguration.
</para></listitem>
<listitem><para>
GstAudioEncoder calls stop
at end of all processing.
</para></listitem>
</itemizedlist>
</listitem>
As of configuration stage, and throughout processing, GstAudioEncoder
maintains various parameters that provide required context,
e.g. describing the format of input audio data.
Conversely, subclass can and should configure these context parameters
to inform base class of its expectation w.r.t. buffer handling.
<listitem>
<itemizedlist>
<title>Data processing</title>
<listitem><para>
Base class gathers input sample data (as directed by the context's
frame_samples and frame_max) and provides this to subclass' handleFrame
.
</para></listitem>
<listitem><para>
If codec processing results in encoded data, subclass should call
audioEncoderFinishFrame
to have encoded data pushed
downstream. Alternatively, it might also call
audioEncoderFinishFrame
(with a NULL buffer and some number of
dropped samples) to indicate dropped (non-encoded) samples.
</para></listitem>
<listitem><para>
Just prior to actually pushing a buffer downstream,
it is passed to prePush
.
</para></listitem>
<listitem><para>
During the parsing process GstAudioEncoderClass will handle both
srcpad and sinkpad events. Sink events will be passed to subclass
if event
callback has been provided.
</para></listitem>
</itemizedlist>
</listitem>
<listitem>
<itemizedlist><title>Shutdown phase</title>
<listitem><para>
GstAudioEncoder class calls stop
to inform the subclass that data
parsing will be stopped.
</para></listitem>
</itemizedlist>
</listitem>
</orderedlist>
Subclass is responsible for providing pad template caps for
source and sink pads. The pads need to be named "sink" and "src". It also
needs to set the fixed caps on srcpad, when the format is ensured. This
is typically when base class calls subclass' setFormat
function, though
it might be delayed until calling gstAudioEncoderFinishFrame
.
In summary, above process should have subclass concentrating on
codec data processing while leaving other matters to base class,
such as most notably timestamp handling. While it may exert more control
in this area (see e.g. prePush
), it is very much not recommended.
In particular, base class will either favor tracking upstream timestamps
(at the possible expense of jitter) or aim to arrange for a perfect stream of
output timestamps, depending on AudioEncoder
:perfect-timestamp
.
However, in the latter case, the input may not be so perfect or ideal, which
is handled as follows. An input timestamp is compared with the expected
timestamp as dictated by input sample stream and if the deviation is less
than AudioEncoder
:tolerance
, the deviation is discarded.
Otherwise, it is considered a discontuinity and subsequent output timestamp
is resynced to the new position after performing configured discontinuity
processing. In the non-perfect-timestamp case, an upstream variation
exceeding tolerance only leads to marking DISCONT on subsequent outgoing
(while timestamps are adjusted to upstream regardless of variation).
While DISCONT is also marked in the perfect-timestamp case, this one
optionally (see AudioEncoder
:hard-resync
)
performs some additional steps, such as clipping of (early) input samples
or draining all currently remaining input data, depending on the direction
of the discontuinity.
If perfect timestamps are arranged, it is also possible to request baseclass (usually set by subclass) to provide additional buffer metadata (in OFFSET and OFFSET_END) fields according to granule defined semantics currently needed by oggmux. Specifically, OFFSET is set to granulepos (= sample count including buffer) and OFFSET_END to corresponding timestamp (as determined by same sample count and sample rate).
Things that subclass need to take care of:
<itemizedlist>
<listitem><para>Provide pad templates</para></listitem>
<listitem><para>
Set source pad caps when appropriate
</para></listitem>
<listitem><para>
Inform base class of buffer processing needs using context's
frame_samples and frame_bytes.
</para></listitem>
<listitem><para>
Set user-configurable properties to sane defaults for format and
implementing codec at hand, e.g. those controlling timestamp behaviour
and discontinuity processing.
</para></listitem>
<listitem><para>
Accept data in handleFrame
and provide encoded results to
audioEncoderFinishFrame
.
</para></listitem>
</itemizedlist>
- newtype AudioEncoder = AudioEncoder (ManagedPtr AudioEncoder)
- class GObject o => IsAudioEncoder o
- toAudioEncoder :: IsAudioEncoder o => o -> IO AudioEncoder
- noAudioEncoder :: Maybe AudioEncoder
- data AudioEncoderAllocateOutputBufferMethodInfo
- audioEncoderAllocateOutputBuffer :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Word64 -> m Buffer
- data AudioEncoderFinishFrameMethodInfo
- audioEncoderFinishFrame :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Buffer -> Int32 -> m FlowReturn
- data AudioEncoderGetAllocatorMethodInfo
- audioEncoderGetAllocator :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m (Allocator, AllocationParams)
- data AudioEncoderGetAudioInfoMethodInfo
- audioEncoderGetAudioInfo :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m AudioInfo
- data AudioEncoderGetDrainableMethodInfo
- audioEncoderGetDrainable :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Bool
- data AudioEncoderGetFrameMaxMethodInfo
- audioEncoderGetFrameMax :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Int32
- data AudioEncoderGetFrameSamplesMaxMethodInfo
- audioEncoderGetFrameSamplesMax :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Int32
- data AudioEncoderGetFrameSamplesMinMethodInfo
- audioEncoderGetFrameSamplesMin :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Int32
- data AudioEncoderGetHardMinMethodInfo
- audioEncoderGetHardMin :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Bool
- data AudioEncoderGetHardResyncMethodInfo
- audioEncoderGetHardResync :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Bool
- data AudioEncoderGetLatencyMethodInfo
- audioEncoderGetLatency :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m (Word64, Word64)
- data AudioEncoderGetLookaheadMethodInfo
- audioEncoderGetLookahead :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Int32
- data AudioEncoderGetMarkGranuleMethodInfo
- audioEncoderGetMarkGranule :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Bool
- data AudioEncoderGetPerfectTimestampMethodInfo
- audioEncoderGetPerfectTimestamp :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Bool
- data AudioEncoderGetToleranceMethodInfo
- audioEncoderGetTolerance :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Word64
- data AudioEncoderMergeTagsMethodInfo
- audioEncoderMergeTags :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Maybe TagList -> TagMergeMode -> m ()
- data AudioEncoderNegotiateMethodInfo
- audioEncoderNegotiate :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Bool
- data AudioEncoderProxyGetcapsMethodInfo
- audioEncoderProxyGetcaps :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Maybe Caps -> Maybe Caps -> m Caps
- data AudioEncoderSetAllocationCapsMethodInfo
- audioEncoderSetAllocationCaps :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Maybe Caps -> m ()
- data AudioEncoderSetDrainableMethodInfo
- audioEncoderSetDrainable :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Bool -> m ()
- data AudioEncoderSetFrameMaxMethodInfo
- audioEncoderSetFrameMax :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Int32 -> m ()
- data AudioEncoderSetFrameSamplesMaxMethodInfo
- audioEncoderSetFrameSamplesMax :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Int32 -> m ()
- data AudioEncoderSetFrameSamplesMinMethodInfo
- audioEncoderSetFrameSamplesMin :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Int32 -> m ()
- data AudioEncoderSetHardMinMethodInfo
- audioEncoderSetHardMin :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Bool -> m ()
- data AudioEncoderSetHardResyncMethodInfo
- audioEncoderSetHardResync :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Bool -> m ()
- data AudioEncoderSetHeadersMethodInfo
- audioEncoderSetHeaders :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> [Buffer] -> m ()
- data AudioEncoderSetLatencyMethodInfo
- audioEncoderSetLatency :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Word64 -> Word64 -> m ()
- data AudioEncoderSetLookaheadMethodInfo
- audioEncoderSetLookahead :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Int32 -> m ()
- data AudioEncoderSetMarkGranuleMethodInfo
- audioEncoderSetMarkGranule :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Bool -> m ()
- data AudioEncoderSetOutputFormatMethodInfo
- audioEncoderSetOutputFormat :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Caps -> m Bool
- data AudioEncoderSetPerfectTimestampMethodInfo
- audioEncoderSetPerfectTimestamp :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Bool -> m ()
- data AudioEncoderSetToleranceMethodInfo
- audioEncoderSetTolerance :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Word64 -> m ()
- data AudioEncoderHardResyncPropertyInfo
- audioEncoderHardResync :: AttrLabelProxy "hardResync"
- constructAudioEncoderHardResync :: IsAudioEncoder o => Bool -> IO (GValueConstruct o)
- getAudioEncoderHardResync :: (MonadIO m, IsAudioEncoder o) => o -> m Bool
- setAudioEncoderHardResync :: (MonadIO m, IsAudioEncoder o) => o -> Bool -> m ()
- data AudioEncoderMarkGranulePropertyInfo
- audioEncoderMarkGranule :: AttrLabelProxy "markGranule"
- getAudioEncoderMarkGranule :: (MonadIO m, IsAudioEncoder o) => o -> m Bool
- data AudioEncoderPerfectTimestampPropertyInfo
- audioEncoderPerfectTimestamp :: AttrLabelProxy "perfectTimestamp"
- constructAudioEncoderPerfectTimestamp :: IsAudioEncoder o => Bool -> IO (GValueConstruct o)
- getAudioEncoderPerfectTimestamp :: (MonadIO m, IsAudioEncoder o) => o -> m Bool
- setAudioEncoderPerfectTimestamp :: (MonadIO m, IsAudioEncoder o) => o -> Bool -> m ()
- data AudioEncoderTolerancePropertyInfo
- audioEncoderTolerance :: AttrLabelProxy "tolerance"
- constructAudioEncoderTolerance :: IsAudioEncoder o => Int64 -> IO (GValueConstruct o)
- getAudioEncoderTolerance :: (MonadIO m, IsAudioEncoder o) => o -> m Int64
- setAudioEncoderTolerance :: (MonadIO m, IsAudioEncoder o) => o -> Int64 -> m ()
Exported types
newtype AudioEncoder Source #
GObject AudioEncoder Source # | |
IsObject AudioEncoder Source # | |
IsPreset AudioEncoder Source # | |
IsElement AudioEncoder Source # | |
IsObject AudioEncoder Source # | |
IsAudioEncoder AudioEncoder Source # | |
((~) * info (ResolveAudioEncoderMethod t AudioEncoder), MethodInfo * info AudioEncoder p) => IsLabel t (AudioEncoder -> p) Source # | |
((~) * info (ResolveAudioEncoderMethod t AudioEncoder), MethodInfo * info AudioEncoder p) => IsLabelProxy t (AudioEncoder -> p) Source # | |
HasAttributeList * AudioEncoder Source # | |
type AttributeList AudioEncoder Source # | |
type SignalList AudioEncoder Source # | |
class GObject o => IsAudioEncoder o Source #
toAudioEncoder :: IsAudioEncoder o => o -> IO AudioEncoder Source #
Methods
allocateOutputBuffer
data AudioEncoderAllocateOutputBufferMethodInfo Source #
((~) * signature (Word64 -> m Buffer), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderAllocateOutputBufferMethodInfo a signature Source # | |
audioEncoderAllocateOutputBuffer Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Word64 |
|
-> m Buffer | Returns: allocated buffer |
Helper function that allocates a buffer to hold an encoded audio frame
for enc
's current output format.
finishFrame
data AudioEncoderFinishFrameMethodInfo Source #
((~) * signature (Buffer -> Int32 -> m FlowReturn), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderFinishFrameMethodInfo a signature Source # | |
audioEncoderFinishFrame Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Buffer |
|
-> Int32 |
|
-> m FlowReturn | Returns: a |
Collects encoded data and pushes encoded data downstream. Source pad caps must be set when this is called.
If samples
< 0, then best estimate is all samples provided to encoder
(subclass) so far. buf
may be NULL, in which case next number of samples
are considered discarded, e.g. as a result of discontinuous transmission,
and a discontinuity is marked.
Note that samples received in gst_audio_encoder_handle_frame()
may be invalidated by a call to this function.
getAllocator
data AudioEncoderGetAllocatorMethodInfo Source #
((~) * signature (m (Allocator, AllocationParams)), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetAllocatorMethodInfo a signature Source # | |
audioEncoderGetAllocator Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m (Allocator, AllocationParams) |
Lets AudioEncoder
sub-classes to know the memory allocator
used by the base class and its params
.
Unref the allocator
after use it.
getAudioInfo
data AudioEncoderGetAudioInfoMethodInfo Source #
((~) * signature (m AudioInfo), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetAudioInfoMethodInfo a signature Source # | |
audioEncoderGetAudioInfo Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m AudioInfo | Returns: a |
No description available in the introspection data.
getDrainable
data AudioEncoderGetDrainableMethodInfo Source #
((~) * signature (m Bool), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetDrainableMethodInfo a signature Source # | |
audioEncoderGetDrainable Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Bool | Returns: TRUE if drainable handling is enabled. MT safe. |
Queries encoder drain handling.
getFrameMax
data AudioEncoderGetFrameMaxMethodInfo Source #
((~) * signature (m Int32), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetFrameMaxMethodInfo a signature Source # | |
audioEncoderGetFrameMax Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Int32 | Returns: currently configured maximum handled frames |
No description available in the introspection data.
getFrameSamplesMax
data AudioEncoderGetFrameSamplesMaxMethodInfo Source #
((~) * signature (m Int32), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetFrameSamplesMaxMethodInfo a signature Source # | |
audioEncoderGetFrameSamplesMax Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Int32 | Returns: currently maximum requested samples per frame |
No description available in the introspection data.
getFrameSamplesMin
data AudioEncoderGetFrameSamplesMinMethodInfo Source #
((~) * signature (m Int32), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetFrameSamplesMinMethodInfo a signature Source # | |
audioEncoderGetFrameSamplesMin Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Int32 | Returns: currently minimum requested samples per frame |
No description available in the introspection data.
getHardMin
data AudioEncoderGetHardMinMethodInfo Source #
((~) * signature (m Bool), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetHardMinMethodInfo a signature Source # | |
audioEncoderGetHardMin Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Bool | Returns: TRUE if hard minimum handling is enabled. MT safe. |
Queries encoder hard minimum handling.
getHardResync
data AudioEncoderGetHardResyncMethodInfo Source #
((~) * signature (m Bool), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetHardResyncMethodInfo a signature Source # | |
audioEncoderGetHardResync :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> m Bool Source #
No description available in the introspection data.
getLatency
data AudioEncoderGetLatencyMethodInfo Source #
((~) * signature (m (Word64, Word64)), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetLatencyMethodInfo a signature Source # | |
audioEncoderGetLatency Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m (Word64, Word64) |
Sets the variables pointed to by min
and max
to the currently configured
latency.
getLookahead
data AudioEncoderGetLookaheadMethodInfo Source #
((~) * signature (m Int32), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetLookaheadMethodInfo a signature Source # | |
audioEncoderGetLookahead Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Int32 | Returns: currently configured encoder lookahead |
No description available in the introspection data.
getMarkGranule
data AudioEncoderGetMarkGranuleMethodInfo Source #
((~) * signature (m Bool), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetMarkGranuleMethodInfo a signature Source # | |
audioEncoderGetMarkGranule Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Bool | Returns: TRUE if granule marking is enabled. MT safe. |
Queries if the encoder will handle granule marking.
getPerfectTimestamp
data AudioEncoderGetPerfectTimestampMethodInfo Source #
((~) * signature (m Bool), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetPerfectTimestampMethodInfo a signature Source # | |
audioEncoderGetPerfectTimestamp Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Bool | Returns: TRUE if perfect timestamp setting enabled. MT safe. |
Queries encoder perfect timestamp behaviour.
getTolerance
data AudioEncoderGetToleranceMethodInfo Source #
((~) * signature (m Word64), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderGetToleranceMethodInfo a signature Source # | |
audioEncoderGetTolerance Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Word64 | Returns: encoder audio jitter tolerance threshold. MT safe. |
Queries current audio jitter tolerance threshold.
mergeTags
data AudioEncoderMergeTagsMethodInfo Source #
((~) * signature (Maybe TagList -> TagMergeMode -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderMergeTagsMethodInfo a signature Source # | |
audioEncoderMergeTags Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Maybe TagList |
|
-> TagMergeMode |
|
-> m () |
Sets the audio encoder tags and how they should be merged with any
upstream stream tags. This will override any tags previously-set
with audioEncoderMergeTags
.
Note that this is provided for convenience, and the subclass is not required to use this and can still do tag handling on its own.
MT safe.
negotiate
data AudioEncoderNegotiateMethodInfo Source #
((~) * signature (m Bool), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderNegotiateMethodInfo a signature Source # | |
audioEncoderNegotiate Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> m Bool | Returns: |
Negotiate with downstream elements to currently configured Caps
.
Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
negotiate fails.
proxyGetcaps
data AudioEncoderProxyGetcapsMethodInfo Source #
((~) * signature (Maybe Caps -> Maybe Caps -> m Caps), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderProxyGetcapsMethodInfo a signature Source # | |
audioEncoderProxyGetcaps Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Maybe Caps |
|
-> Maybe Caps |
|
-> m Caps | Returns: a |
Returns caps that express caps
(or sink template caps if caps
== NULL)
restricted to channel/rate combinations supported by downstream elements
(e.g. muxers).
setAllocationCaps
data AudioEncoderSetAllocationCapsMethodInfo Source #
((~) * signature (Maybe Caps -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetAllocationCapsMethodInfo a signature Source # | |
audioEncoderSetAllocationCaps Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Maybe Caps | |
-> m () |
Sets a caps in allocation query which are different from the set
pad's caps. Use this function before calling
audioEncoderNegotiate
. Setting to Nothing
the allocation
query will use the caps from the pad.
Since: 1.10
setDrainable
data AudioEncoderSetDrainableMethodInfo Source #
((~) * signature (Bool -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetDrainableMethodInfo a signature Source # | |
audioEncoderSetDrainable Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Bool |
|
-> m () |
Configures encoder drain handling. If drainable, subclass might be handed a NULL buffer to have it return any leftover encoded data. Otherwise, it is not considered so capable and will only ever be passed real data.
MT safe.
setFrameMax
data AudioEncoderSetFrameMaxMethodInfo Source #
((~) * signature (Int32 -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetFrameMaxMethodInfo a signature Source # | |
audioEncoderSetFrameMax Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Int32 |
|
-> m () |
Sets max number of frames accepted at once (assumed minimally 1).
Requires frameSamplesMin
and frameSamplesMax
to be the equal.
Note: This value will be reset to 0 every time before
GstAudioEncoder::set_format()
is called.
setFrameSamplesMax
data AudioEncoderSetFrameSamplesMaxMethodInfo Source #
((~) * signature (Int32 -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetFrameSamplesMaxMethodInfo a signature Source # | |
audioEncoderSetFrameSamplesMax Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Int32 |
|
-> m () |
Sets number of samples (per channel) subclass needs to be handed, at most or will be handed all available if 0.
If an exact number of samples is required, audioEncoderSetFrameSamplesMin
must be called with the same number.
Note: This value will be reset to 0 every time before
GstAudioEncoder::set_format()
is called.
setFrameSamplesMin
data AudioEncoderSetFrameSamplesMinMethodInfo Source #
((~) * signature (Int32 -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetFrameSamplesMinMethodInfo a signature Source # | |
audioEncoderSetFrameSamplesMin Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Int32 |
|
-> m () |
Sets number of samples (per channel) subclass needs to be handed, at least or will be handed all available if 0.
If an exact number of samples is required, audioEncoderSetFrameSamplesMax
must be called with the same number.
Note: This value will be reset to 0 every time before
GstAudioEncoder::set_format()
is called.
setHardMin
data AudioEncoderSetHardMinMethodInfo Source #
((~) * signature (Bool -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetHardMinMethodInfo a signature Source # | |
audioEncoderSetHardMin Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Bool |
|
-> m () |
Configures encoder hard minimum handling. If enabled, subclass will never be handed less samples than it configured, which otherwise might occur near end-of-data handling. Instead, the leftover samples will simply be discarded.
MT safe.
setHardResync
data AudioEncoderSetHardResyncMethodInfo Source #
((~) * signature (Bool -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetHardResyncMethodInfo a signature Source # | |
audioEncoderSetHardResync :: (HasCallStack, MonadIO m, IsAudioEncoder a) => a -> Bool -> m () Source #
No description available in the introspection data.
setHeaders
data AudioEncoderSetHeadersMethodInfo Source #
((~) * signature ([Buffer] -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetHeadersMethodInfo a signature Source # | |
audioEncoderSetHeaders Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> [Buffer] |
|
-> m () |
Set the codec headers to be sent downstream whenever requested.
setLatency
data AudioEncoderSetLatencyMethodInfo Source #
((~) * signature (Word64 -> Word64 -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetLatencyMethodInfo a signature Source # | |
audioEncoderSetLatency Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Word64 |
|
-> Word64 |
|
-> m () |
Sets encoder latency.
setLookahead
data AudioEncoderSetLookaheadMethodInfo Source #
((~) * signature (Int32 -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetLookaheadMethodInfo a signature Source # | |
audioEncoderSetLookahead Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Int32 |
|
-> m () |
Sets encoder lookahead (in units of input rate samples)
Note: This value will be reset to 0 every time before
GstAudioEncoder::set_format()
is called.
setMarkGranule
data AudioEncoderSetMarkGranuleMethodInfo Source #
((~) * signature (Bool -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetMarkGranuleMethodInfo a signature Source # | |
audioEncoderSetMarkGranule Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Bool |
|
-> m () |
Enable or disable encoder granule handling.
MT safe.
setOutputFormat
data AudioEncoderSetOutputFormatMethodInfo Source #
((~) * signature (Caps -> m Bool), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetOutputFormatMethodInfo a signature Source # | |
audioEncoderSetOutputFormat Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Caps |
|
-> m Bool | Returns: |
Configure output caps on the srcpad of enc
.
setPerfectTimestamp
data AudioEncoderSetPerfectTimestampMethodInfo Source #
((~) * signature (Bool -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetPerfectTimestampMethodInfo a signature Source # | |
audioEncoderSetPerfectTimestamp Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Bool |
|
-> m () |
Enable or disable encoder perfect output timestamp preference.
MT safe.
setTolerance
data AudioEncoderSetToleranceMethodInfo Source #
((~) * signature (Word64 -> m ()), MonadIO m, IsAudioEncoder a) => MethodInfo * AudioEncoderSetToleranceMethodInfo a signature Source # | |
audioEncoderSetTolerance Source #
:: (HasCallStack, MonadIO m, IsAudioEncoder a) | |
=> a |
|
-> Word64 |
|
-> m () |
Configures encoder audio jitter tolerance threshold.
MT safe.
Properties
hardResync
data AudioEncoderHardResyncPropertyInfo Source #
audioEncoderHardResync :: AttrLabelProxy "hardResync" Source #
constructAudioEncoderHardResync :: IsAudioEncoder o => Bool -> IO (GValueConstruct o) Source #
getAudioEncoderHardResync :: (MonadIO m, IsAudioEncoder o) => o -> m Bool Source #
setAudioEncoderHardResync :: (MonadIO m, IsAudioEncoder o) => o -> Bool -> m () Source #
markGranule
data AudioEncoderMarkGranulePropertyInfo Source #
audioEncoderMarkGranule :: AttrLabelProxy "markGranule" Source #
getAudioEncoderMarkGranule :: (MonadIO m, IsAudioEncoder o) => o -> m Bool Source #
perfectTimestamp
data AudioEncoderPerfectTimestampPropertyInfo Source #
audioEncoderPerfectTimestamp :: AttrLabelProxy "perfectTimestamp" Source #
constructAudioEncoderPerfectTimestamp :: IsAudioEncoder o => Bool -> IO (GValueConstruct o) Source #
getAudioEncoderPerfectTimestamp :: (MonadIO m, IsAudioEncoder o) => o -> m Bool Source #
setAudioEncoderPerfectTimestamp :: (MonadIO m, IsAudioEncoder o) => o -> Bool -> m () Source #
tolerance
data AudioEncoderTolerancePropertyInfo Source #
audioEncoderTolerance :: AttrLabelProxy "tolerance" Source #
constructAudioEncoderTolerance :: IsAudioEncoder o => Int64 -> IO (GValueConstruct o) Source #
getAudioEncoderTolerance :: (MonadIO m, IsAudioEncoder o) => o -> m Int64 Source #
setAudioEncoderTolerance :: (MonadIO m, IsAudioEncoder o) => o -> Int64 -> m () Source #