{-# LANGUAGE PatternSynonyms, ScopedTypeVariables, ViewPatterns #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GstAudio.Constants
    ( 
    pattern META_TAG_AUDIO_STR              ,
    pattern META_TAG_AUDIO_RATE_STR         ,
    pattern META_TAG_AUDIO_CHANNELS_STR     ,
    pattern AUDIO_RESAMPLER_QUALITY_MIN     ,
    pattern AUDIO_RESAMPLER_QUALITY_MAX     ,
    pattern AUDIO_RESAMPLER_QUALITY_DEFAULT ,
    pattern AUDIO_RESAMPLER_OPT_TRANSITION_BANDWIDTH,
    pattern AUDIO_RESAMPLER_OPT_STOP_ATTENUATION,
    pattern AUDIO_RESAMPLER_OPT_N_TAPS      ,
    pattern AUDIO_RESAMPLER_OPT_MAX_PHASE_ERROR,
    pattern AUDIO_RESAMPLER_OPT_FILTER_OVERSAMPLE,
    pattern AUDIO_RESAMPLER_OPT_FILTER_MODE_THRESHOLD,
    pattern AUDIO_RESAMPLER_OPT_FILTER_MODE ,
    pattern AUDIO_RESAMPLER_OPT_FILTER_INTERPOLATION,
    pattern AUDIO_RESAMPLER_OPT_CUTOFF      ,
    pattern AUDIO_RESAMPLER_OPT_CUBIC_C     ,
    pattern AUDIO_RESAMPLER_OPT_CUBIC_B     ,
    pattern AUDIO_RATE_RANGE                ,
    pattern AUDIO_FORMATS_ALL               ,
    pattern AUDIO_ENCODER_SRC_NAME          ,
    pattern AUDIO_ENCODER_SINK_NAME         ,
    pattern AUDIO_DEF_RATE                  ,
    pattern AUDIO_DEF_FORMAT                ,
    pattern AUDIO_DEF_CHANNELS              ,
    pattern AUDIO_DECODER_SRC_NAME          ,
    pattern AUDIO_DECODER_SINK_NAME         ,
    pattern AUDIO_DECODER_MAX_ERRORS        ,
    pattern AUDIO_CONVERTER_OPT_RESAMPLER_METHOD,
    pattern AUDIO_CONVERTER_OPT_QUANTIZATION,
    pattern AUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD,
    pattern AUDIO_CONVERTER_OPT_MIX_MATRIX  ,
    pattern AUDIO_CONVERTER_OPT_DITHER_METHOD,
    pattern AUDIO_CHANNELS_RANGE            ,

    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R


-- | This metadata is relevant for audio streams.
-- 
-- /Since: 1.2/
pattern $bMETA_TAG_AUDIO_STR :: Text
$mMETA_TAG_AUDIO_STR :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
META_TAG_AUDIO_STR = "audio" :: T.Text

-- | This metadata stays relevant as long as sample rate is unchanged.
-- 
-- /Since: 1.8/
pattern $bMETA_TAG_AUDIO_RATE_STR :: Text
$mMETA_TAG_AUDIO_RATE_STR :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
META_TAG_AUDIO_RATE_STR = "rate" :: T.Text

-- | This metadata stays relevant as long as channels are unchanged.
-- 
-- /Since: 1.2/
pattern $bMETA_TAG_AUDIO_CHANNELS_STR :: Text
$mMETA_TAG_AUDIO_CHANNELS_STR :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
META_TAG_AUDIO_CHANNELS_STR = "channels" :: T.Text

-- | /No description available in the introspection data./
pattern $bAUDIO_RESAMPLER_QUALITY_MIN :: Int32
$mAUDIO_RESAMPLER_QUALITY_MIN :: forall {r}. Int32 -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_QUALITY_MIN = 0 :: Int32

-- | /No description available in the introspection data./
pattern $bAUDIO_RESAMPLER_QUALITY_MAX :: Int32
$mAUDIO_RESAMPLER_QUALITY_MAX :: forall {r}. Int32 -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_QUALITY_MAX = 10 :: Int32

-- | /No description available in the introspection data./
pattern $bAUDIO_RESAMPLER_QUALITY_DEFAULT :: Int32
$mAUDIO_RESAMPLER_QUALITY_DEFAULT :: forall {r}. Int32 -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_QUALITY_DEFAULT = 4 :: Int32

-- | G_TYPE_DOUBLE, transition bandwidth. The width of the
-- transition band for the kaiser window. 0.087 is the default.
pattern $bAUDIO_RESAMPLER_OPT_TRANSITION_BANDWIDTH :: Text
$mAUDIO_RESAMPLER_OPT_TRANSITION_BANDWIDTH :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_TRANSITION_BANDWIDTH = "GstAudioResampler.transition-bandwidth" :: T.Text

-- | G_TYPE_DOUBLE, stopband attenuation in decibels. The attenuation
-- after the stopband for the kaiser window. 85 dB is the default.
pattern $bAUDIO_RESAMPLER_OPT_STOP_ATTENUATION :: Text
$mAUDIO_RESAMPLER_OPT_STOP_ATTENUATION :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_STOP_ATTENUATION = "GstAudioResampler.stop-attenutation" :: T.Text

-- | G_TYPE_INT: the number of taps to use for the filter.
-- 0 is the default and selects the taps automatically.
pattern $bAUDIO_RESAMPLER_OPT_N_TAPS :: Text
$mAUDIO_RESAMPLER_OPT_N_TAPS :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_N_TAPS = "GstAudioResampler.n-taps" :: T.Text

-- | G_TYPE_DOUBLE: The maximum allowed phase error when switching sample
-- rates.
-- 0.1 is the default.
pattern $bAUDIO_RESAMPLER_OPT_MAX_PHASE_ERROR :: Text
$mAUDIO_RESAMPLER_OPT_MAX_PHASE_ERROR :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_MAX_PHASE_ERROR = "GstAudioResampler.max-phase-error" :: T.Text

-- | G_TYPE_UINT, oversampling to use when interpolating filters
-- 8 is the default.
pattern $bAUDIO_RESAMPLER_OPT_FILTER_OVERSAMPLE :: Text
$mAUDIO_RESAMPLER_OPT_FILTER_OVERSAMPLE :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_FILTER_OVERSAMPLE = "GstAudioResampler.filter-oversample" :: T.Text

-- | G_TYPE_UINT: the amount of memory to use for full filter tables before
-- switching to interpolated filter tables.
-- 1048576 is the default.
pattern $bAUDIO_RESAMPLER_OPT_FILTER_MODE_THRESHOLD :: Text
$mAUDIO_RESAMPLER_OPT_FILTER_MODE_THRESHOLD :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_FILTER_MODE_THRESHOLD = "GstAudioResampler.filter-mode-threshold" :: T.Text

-- | GST_TYPE_AUDIO_RESAMPLER_FILTER_MODE: how the filter tables should be
-- constructed.
-- GST_AUDIO_RESAMPLER_FILTER_MODE_AUTO is the default.
pattern $bAUDIO_RESAMPLER_OPT_FILTER_MODE :: Text
$mAUDIO_RESAMPLER_OPT_FILTER_MODE :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_FILTER_MODE = "GstAudioResampler.filter-mode" :: T.Text

-- | GST_TYPE_AUDIO_RESAMPLER_INTERPOLATION: how the filter coefficients should be
--    interpolated.
-- GST_AUDIO_RESAMPLER_FILTER_INTERPOLATION_CUBIC is default.
pattern $bAUDIO_RESAMPLER_OPT_FILTER_INTERPOLATION :: Text
$mAUDIO_RESAMPLER_OPT_FILTER_INTERPOLATION :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_FILTER_INTERPOLATION = "GstAudioResampler.filter-interpolation" :: T.Text

-- | G_TYPE_DOUBLE, Cutoff parameter for the filter. 0.940 is the default.
pattern $bAUDIO_RESAMPLER_OPT_CUTOFF :: Text
$mAUDIO_RESAMPLER_OPT_CUTOFF :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_CUTOFF = "GstAudioResampler.cutoff" :: T.Text

-- | G_TYPE_DOUBLE, C parameter of the cubic filter.
-- Values between 0.0 and 2.0 are accepted. 0.0 is the default.
-- 
-- See 'GI.GstAudio.Constants.AUDIO_RESAMPLER_OPT_CUBIC_B' for some more common values
pattern $bAUDIO_RESAMPLER_OPT_CUBIC_C :: Text
$mAUDIO_RESAMPLER_OPT_CUBIC_C :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_CUBIC_C = "GstAudioResampler.cubic-c" :: T.Text

-- | G_TYPE_DOUBLE, B parameter of the cubic filter.
-- Values between 0.0 and 2.0 are accepted. 1.0 is the default.
-- 
-- Below are some values of popular filters:
--                    B       C
-- Hermite           0.0     0.0
-- Spline            1.0     0.0
-- Catmull-Rom       0.0     1\/2
pattern $bAUDIO_RESAMPLER_OPT_CUBIC_B :: Text
$mAUDIO_RESAMPLER_OPT_CUBIC_B :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RESAMPLER_OPT_CUBIC_B = "GstAudioResampler.cubic-b" :: T.Text

-- | Maximum range of allowed sample rates, for use in template caps strings.
pattern $bAUDIO_RATE_RANGE :: Text
$mAUDIO_RATE_RANGE :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_RATE_RANGE = "(int) [ 1, max ]" :: T.Text

-- | List of all audio formats, for use in template caps strings.
-- 
-- Formats are sorted by decreasing \"quality\", using these criteria by priority:
--   - depth
--   - width
--   - Float > Signed > Unsigned
--   - native endianness preferred
pattern $bAUDIO_FORMATS_ALL :: Text
$mAUDIO_FORMATS_ALL :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_FORMATS_ALL = "{ F64BE, F64LE, F32BE, F32LE, S32BE, S32LE, U32BE, U32LE, S24_32BE, S24_32LE, U24_32BE, U24_32LE, S24BE, S24LE, U24BE, U24LE, S20BE, S20LE, U20BE, U20LE, S18BE, S18LE, U18BE, U18LE, S16BE, S16LE, U16BE, U16LE, S8, U8 }" :: T.Text

-- | the name of the templates for the source pad
pattern $bAUDIO_ENCODER_SRC_NAME :: Text
$mAUDIO_ENCODER_SRC_NAME :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_ENCODER_SRC_NAME = "src" :: T.Text

-- | the name of the templates for the sink pad
pattern $bAUDIO_ENCODER_SINK_NAME :: Text
$mAUDIO_ENCODER_SINK_NAME :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_ENCODER_SINK_NAME = "sink" :: T.Text

-- | Standard sampling rate used in consumer audio.
pattern $bAUDIO_DEF_RATE :: Int32
$mAUDIO_DEF_RATE :: forall {r}. Int32 -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_DEF_RATE = 44100 :: Int32

-- | Standard format used in consumer audio.
pattern $bAUDIO_DEF_FORMAT :: Text
$mAUDIO_DEF_FORMAT :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_DEF_FORMAT = "S16LE" :: T.Text

-- | Standard number of channels used in consumer audio.
pattern $bAUDIO_DEF_CHANNELS :: Int32
$mAUDIO_DEF_CHANNELS :: forall {r}. Int32 -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_DEF_CHANNELS = 2 :: Int32

-- | The name of the templates for the source pad.
pattern $bAUDIO_DECODER_SRC_NAME :: Text
$mAUDIO_DECODER_SRC_NAME :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_DECODER_SRC_NAME = "src" :: T.Text

-- | The name of the templates for the sink pad.
pattern $bAUDIO_DECODER_SINK_NAME :: Text
$mAUDIO_DECODER_SINK_NAME :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_DECODER_SINK_NAME = "sink" :: T.Text

-- | Default maximum number of errors tolerated before signaling error.
pattern $bAUDIO_DECODER_MAX_ERRORS :: Int32
$mAUDIO_DECODER_MAX_ERRORS :: forall {r}. Int32 -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_DECODER_MAX_ERRORS = 10 :: Int32

-- | t'GI.GstAudio.Enums.AudioResamplerMethod', The resampler method to use when
-- changing sample rates.
-- Default is @/GST_AUDIO_RESAMPLER_METHOD_BLACKMAN_NUTTALL/@.
pattern $bAUDIO_CONVERTER_OPT_RESAMPLER_METHOD :: Text
$mAUDIO_CONVERTER_OPT_RESAMPLER_METHOD :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_CONVERTER_OPT_RESAMPLER_METHOD = "GstAudioConverter.resampler-method" :: T.Text

-- | @/G_TYPE_UINT/@, The quantization amount. Components will be
-- quantized to multiples of this value.
-- Default is 1
pattern $bAUDIO_CONVERTER_OPT_QUANTIZATION :: Text
$mAUDIO_CONVERTER_OPT_QUANTIZATION :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_CONVERTER_OPT_QUANTIZATION = "GstAudioConverter.quantization" :: T.Text

-- | t'GI.GstAudio.Enums.AudioNoiseShapingMethod', The noise shaping method to use
-- to mask noise from quantization errors.
-- Default is @/GST_AUDIO_NOISE_SHAPING_NONE/@.
pattern $bAUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD :: Text
$mAUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_CONVERTER_OPT_NOISE_SHAPING_METHOD = "GstAudioConverter.noise-shaping-method" :: T.Text

-- | @/GST_TYPE_LIST/@, The channel mapping matrix.
-- 
-- The matrix coefficients must be between -1 and 1: the number of rows is equal
-- to the number of output channels and the number of columns is equal to the
-- number of input channels.
-- 
-- == Example matrix generation code
-- To generate the matrix using code:
-- 
-- >
-- >GValue v = G_VALUE_INIT;
-- >GValue v2 = G_VALUE_INIT;
-- >GValue v3 = G_VALUE_INIT;
-- >
-- >g_value_init (&v2, GST_TYPE_ARRAY);
-- >g_value_init (&v3, G_TYPE_DOUBLE);
-- >g_value_set_double (&v3, 1);
-- >gst_value_array_append_value (&v2, &v3);
-- >g_value_unset (&v3);
-- >[ Repeat for as many double as your input channels - unset and reinit v3 ]
-- >g_value_init (&v, GST_TYPE_ARRAY);
-- >gst_value_array_append_value (&v, &v2);
-- >g_value_unset (&v2);
-- >[ Repeat for as many v2's as your output channels - unset and reinit v2]
-- >g_object_set_property (G_OBJECT (audiomixmatrix), "matrix", &v);
-- >g_value_unset (&v);
pattern $bAUDIO_CONVERTER_OPT_MIX_MATRIX :: Text
$mAUDIO_CONVERTER_OPT_MIX_MATRIX :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_CONVERTER_OPT_MIX_MATRIX = "GstAudioConverter.mix-matrix" :: T.Text

-- | t'GI.GstAudio.Enums.AudioDitherMethod', The dither method to use when
-- changing bit depth.
-- Default is @/GST_AUDIO_DITHER_NONE/@.
pattern $bAUDIO_CONVERTER_OPT_DITHER_METHOD :: Text
$mAUDIO_CONVERTER_OPT_DITHER_METHOD :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_CONVERTER_OPT_DITHER_METHOD = "GstAudioConverter.dither-method" :: T.Text

-- | Maximum range of allowed channels, for use in template caps strings.
pattern $bAUDIO_CHANNELS_RANGE :: Text
$mAUDIO_CHANNELS_RANGE :: forall {r}. Text -> (Void# -> r) -> (Void# -> r) -> r
AUDIO_CHANNELS_RANGE = "(int) [ 1, max ]" :: T.Text