packages feed

gi-gsttag 1.0.15 → 1.0.17

raw patch · 20 files changed

+3708/−10 lines, 20 filesdep ~haskell-gidep ~haskell-gi-basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: haskell-gi, haskell-gi-base

API changes (from Hackage documentation)

- GI.GstTag.Interfaces.TagXmpWriter: instance (Data.GI.Base.BasicTypes.GObject a, Data.GI.Base.Overloading.UnknownAncestorError GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter a) => GI.GstTag.Interfaces.TagXmpWriter.IsTagXmpWriter a
- GI.GstTag.Interfaces.TagXmpWriter: instance GI.GObject.Objects.Object.IsObject GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter
- GI.GstTag.Interfaces.TagXmpWriter: instance GI.Gst.Objects.Element.IsElement GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter
- GI.GstTag.Interfaces.TagXmpWriter: instance GI.Gst.Objects.Object.IsObject GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter
- GI.GstTag.Interfaces.TagXmpWriter: instance GI.GstTag.Interfaces.TagXmpWriter.IsTagXmpWriter GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter
- GI.GstTag.Objects.TagDemux: instance (Data.GI.Base.BasicTypes.GObject a, Data.GI.Base.Overloading.UnknownAncestorError GI.GstTag.Objects.TagDemux.TagDemux a) => GI.GstTag.Objects.TagDemux.IsTagDemux a
- GI.GstTag.Objects.TagDemux: instance GI.GObject.Objects.Object.IsObject GI.GstTag.Objects.TagDemux.TagDemux
- GI.GstTag.Objects.TagDemux: instance GI.Gst.Objects.Element.IsElement GI.GstTag.Objects.TagDemux.TagDemux
- GI.GstTag.Objects.TagDemux: instance GI.Gst.Objects.Object.IsObject GI.GstTag.Objects.TagDemux.TagDemux
- GI.GstTag.Objects.TagDemux: instance GI.GstTag.Objects.TagDemux.IsTagDemux GI.GstTag.Objects.TagDemux.TagDemux
- GI.GstTag.Objects.TagMux: instance (Data.GI.Base.BasicTypes.GObject a, Data.GI.Base.Overloading.UnknownAncestorError GI.GstTag.Objects.TagMux.TagMux a) => GI.GstTag.Objects.TagMux.IsTagMux a
- GI.GstTag.Objects.TagMux: instance GI.GObject.Objects.Object.IsObject GI.GstTag.Objects.TagMux.TagMux
- GI.GstTag.Objects.TagMux: instance GI.Gst.Interfaces.TagSetter.IsTagSetter GI.GstTag.Objects.TagMux.TagMux
- GI.GstTag.Objects.TagMux: instance GI.Gst.Objects.Element.IsElement GI.GstTag.Objects.TagMux.TagMux
- GI.GstTag.Objects.TagMux: instance GI.Gst.Objects.Object.IsObject GI.GstTag.Objects.TagMux.TagMux
- GI.GstTag.Objects.TagMux: instance GI.GstTag.Objects.TagMux.IsTagMux GI.GstTag.Objects.TagMux.TagMux
+ GI.GstTag.Interfaces.TagXmpWriter: instance (Data.GI.Base.BasicTypes.GObject o, Data.GI.Base.Overloading.IsDescendantOf GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter o) => GI.GstTag.Interfaces.TagXmpWriter.IsTagXmpWriter o
+ GI.GstTag.Interfaces.TagXmpWriter: instance Data.GI.Base.Overloading.HasParentTypes GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter
+ GI.GstTag.Objects.TagDemux: instance (Data.GI.Base.BasicTypes.GObject o, Data.GI.Base.Overloading.IsDescendantOf GI.GstTag.Objects.TagDemux.TagDemux o) => GI.GstTag.Objects.TagDemux.IsTagDemux o
+ GI.GstTag.Objects.TagDemux: instance Data.GI.Base.Overloading.HasParentTypes GI.GstTag.Objects.TagDemux.TagDemux
+ GI.GstTag.Objects.TagMux: instance (Data.GI.Base.BasicTypes.GObject o, Data.GI.Base.Overloading.IsDescendantOf GI.GstTag.Objects.TagMux.TagMux o) => GI.GstTag.Objects.TagMux.IsTagMux o
+ GI.GstTag.Objects.TagMux: instance Data.GI.Base.Overloading.HasParentTypes GI.GstTag.Objects.TagMux.TagMux
- GI.GstTag.Functions: tagListFromVorbiscomment :: (HasCallStack, MonadIO m) => ByteString -> ByteString -> m ((TagList, Text))
+ GI.GstTag.Functions: tagListFromVorbiscomment :: (HasCallStack, MonadIO m) => ByteString -> ByteString -> m (TagList, Text)
- GI.GstTag.Functions: tagListFromVorbiscommentBuffer :: (HasCallStack, MonadIO m) => Buffer -> ByteString -> m ((TagList, Text))
+ GI.GstTag.Functions: tagListFromVorbiscommentBuffer :: (HasCallStack, MonadIO m) => Buffer -> ByteString -> m (TagList, Text)
- GI.GstTag.Functions: tagListToVorbiscommentBuffer :: (HasCallStack, MonadIO m) => TagList -> ByteString -> Maybe (Text) -> m Buffer
+ GI.GstTag.Functions: tagListToVorbiscommentBuffer :: (HasCallStack, MonadIO m) => TagList -> ByteString -> Maybe Text -> m Buffer
- GI.GstTag.Functions: tagParseExtendedComment :: (HasCallStack, MonadIO m) => Text -> Bool -> m ((Bool, Maybe Text, Maybe Text, Text))
+ GI.GstTag.Functions: tagParseExtendedComment :: (HasCallStack, MonadIO m) => Text -> Bool -> m (Bool, Maybe Text, Maybe Text, Text)
- GI.GstTag.Interfaces.TagXmpWriter: TagXmpWriter :: (ManagedPtr TagXmpWriter) -> TagXmpWriter
+ GI.GstTag.Interfaces.TagXmpWriter: TagXmpWriter :: ManagedPtr TagXmpWriter -> TagXmpWriter
- GI.GstTag.Interfaces.TagXmpWriter: class GObject o => IsTagXmpWriter o
+ GI.GstTag.Interfaces.TagXmpWriter: class (GObject o, IsDescendantOf TagXmpWriter o) => IsTagXmpWriter o
- GI.GstTag.Objects.TagDemux: TagDemux :: (ManagedPtr TagDemux) -> TagDemux
+ GI.GstTag.Objects.TagDemux: TagDemux :: ManagedPtr TagDemux -> TagDemux
- GI.GstTag.Objects.TagDemux: class GObject o => IsTagDemux o
+ GI.GstTag.Objects.TagDemux: class (GObject o, IsDescendantOf TagDemux o) => IsTagDemux o
- GI.GstTag.Objects.TagMux: TagMux :: (ManagedPtr TagMux) -> TagMux
+ GI.GstTag.Objects.TagMux: TagMux :: ManagedPtr TagMux -> TagMux
- GI.GstTag.Objects.TagMux: class GObject o => IsTagMux o
+ GI.GstTag.Objects.TagMux: class (GObject o, IsDescendantOf TagMux o) => IsTagMux o

Files

ChangeLog.md view
@@ -1,3 +1,11 @@+### 1.0.17+++ Update to haskell-gi(-base) 0.22++### 1.0.16+++ Update stack version to 12.10+ ### 1.0.15  + Remove enable-overloading flags, and use instead explicit CPP checks for 'haskell-gi-overloading-1.0', see [how to disable overloading](https://github.com/haskell-gi/haskell-gi/wiki/Overloading\#disabling-overloading).
+ GI/GstTag.hs view
@@ -0,0 +1,56 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag+    (     module GI.GstTag.Constants              ,+    module GI.GstTag.Enums                  ,+    module GI.GstTag.Flags                  ,+    module GI.GstTag.Functions              ,+    module GI.GstTag.Interfaces             ,+    module GI.GstTag.Objects                ,++++    module Data.GI.Base                     ,+++    ) where++import GI.GstTag.Constants+import GI.GstTag.Enums+import GI.GstTag.Flags+import GI.GstTag.Functions+import GI.GstTag.Interfaces+import GI.GstTag.Objects++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.ManagedPtr as B.ManagedPtr+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.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 Data.GI.Base+
+ GI/GstTag/Constants.hs view
@@ -0,0 +1,342 @@+{-# 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 (inaki@blueleaf.cc)+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Constants+    ( +    pattern TAG_MUSICBRAINZ_TRMID           ,+    pattern TAG_MUSICBRAINZ_TRACKID         ,+    pattern TAG_MUSICBRAINZ_ARTISTID        ,+    pattern TAG_MUSICBRAINZ_ALBUMID         ,+    pattern TAG_MUSICBRAINZ_ALBUMARTISTID   ,+    pattern TAG_MUSICAL_KEY                 ,+    pattern TAG_IMAGE_VERTICAL_PPI          ,+    pattern TAG_IMAGE_HORIZONTAL_PPI        ,+    pattern TAG_ID3V2_HEADER_SIZE           ,+    pattern TAG_CMML_STREAM                 ,+    pattern TAG_CMML_HEAD                   ,+    pattern TAG_CMML_CLIP                   ,+    pattern TAG_CDDA_MUSICBRAINZ_DISCID_FULL,+    pattern TAG_CDDA_MUSICBRAINZ_DISCID     ,+    pattern TAG_CDDA_CDDB_DISCID_FULL       ,+    pattern TAG_CDDA_CDDB_DISCID            ,+    pattern TAG_CAPTURING_WHITE_BALANCE     ,+    pattern TAG_CAPTURING_SOURCE            ,+    pattern TAG_CAPTURING_SHUTTER_SPEED     ,+    pattern TAG_CAPTURING_SHARPNESS         ,+    pattern TAG_CAPTURING_SCENE_CAPTURE_TYPE,+    pattern TAG_CAPTURING_SATURATION        ,+    pattern TAG_CAPTURING_METERING_MODE     ,+    pattern TAG_CAPTURING_ISO_SPEED         ,+    pattern TAG_CAPTURING_GAIN_ADJUSTMENT   ,+    pattern TAG_CAPTURING_FOCAL_RATIO       ,+    pattern TAG_CAPTURING_FOCAL_LENGTH_35_MM,+    pattern TAG_CAPTURING_FOCAL_LENGTH      ,+    pattern TAG_CAPTURING_FLASH_MODE        ,+    pattern TAG_CAPTURING_FLASH_FIRED       ,+    pattern TAG_CAPTURING_EXPOSURE_PROGRAM  ,+    pattern TAG_CAPTURING_EXPOSURE_MODE     ,+    pattern TAG_CAPTURING_EXPOSURE_COMPENSATION,+    pattern TAG_CAPTURING_DIGITAL_ZOOM_RATIO,+    pattern TAG_CAPTURING_CONTRAST          ,++    ) 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.ManagedPtr as B.ManagedPtr+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.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+++{- |+MusicBrainz track TRM ID+-}+pattern TAG_MUSICBRAINZ_TRMID = "musicbrainz-trmid" :: T.Text++{- |+MusicBrainz track ID+-}+pattern TAG_MUSICBRAINZ_TRACKID = "musicbrainz-trackid" :: T.Text++{- |+MusicBrainz artist ID+-}+pattern TAG_MUSICBRAINZ_ARTISTID = "musicbrainz-artistid" :: T.Text++{- |+MusicBrainz album ID+-}+pattern TAG_MUSICBRAINZ_ALBUMID = "musicbrainz-albumid" :: T.Text++{- |+MusicBrainz album artist ID+-}+pattern TAG_MUSICBRAINZ_ALBUMARTISTID = "musicbrainz-albumartistid" :: T.Text++{- |+Musical key in which the sound starts. It is represented as a string+with a maximum length of three characters. The ground keys are+represented with \"A\",\"B\",\"C\",\"D\",\"E\", \"F\" and \"G\" and halfkeys+represented with \"b\" and \"#\". Minor is represented as \"m\" (e.g. \"Dbm\").+Off key is represented with an \"o\" only.+This notation might be extended in the future to support non-minor\/major+keys.++/Since: 1.2/+-}+pattern TAG_MUSICAL_KEY = "musical-key" :: T.Text++{- |+Media (image\/video) intended vertical pixel density in ppi. (double)+-}+pattern TAG_IMAGE_VERTICAL_PPI = "image-vertical-ppi" :: T.Text++{- |+Media (image\/video) intended horizontal pixel density in ppi. (double)+-}+pattern TAG_IMAGE_HORIZONTAL_PPI = "image-horizontal-ppi" :: T.Text++{- |+ID3V2 header size considered minimum input for some functions such as+'GI.GstTag.Functions.tagListFromId3v2Tag' and 'GI.GstTag.Functions.tagGetId3v2TagSize' for example.+-}+pattern TAG_ID3V2_HEADER_SIZE = 10 :: Int32++{- |+Annodex CMML stream element tag+-}+pattern TAG_CMML_STREAM = "cmml-stream" :: T.Text++{- |+Annodex CMML head element tag+-}+pattern TAG_CMML_HEAD = "cmml-head" :: T.Text++{- |+Annodex CMML clip element tag+-}+pattern TAG_CMML_CLIP = "cmml-clip" :: T.Text++{- |+Musicbrainz disc id details+-}+pattern TAG_CDDA_MUSICBRAINZ_DISCID_FULL = "musicbrainz-discid-full" :: T.Text++{- |+Musicbrainz disc id (e.g. \'ahg7JUcfR3vCYBphSDIogOOWrr0-\')+-}+pattern TAG_CDDA_MUSICBRAINZ_DISCID = "musicbrainz-discid" :: T.Text++{- |+CDDB disc id including all details+-}+pattern TAG_CDDA_CDDB_DISCID_FULL = "discid-full" :: T.Text++{- |+CDDB disc id in its short form (e.g. \'aa063d0f\')+-}+pattern TAG_CDDA_CDDB_DISCID = "discid" :: T.Text++{- |+White balance mode used when capturing an image. (string)++The allowed values are:+  \"auto\"+  \"manual\"+  \"daylight\"+  \"cloudy\"+  \"tungsten\"+  \"fluorescent\"+  \"fluorescent h\" (newer daylight-calibrated fluorescents)+  \"flash\"+-}+pattern TAG_CAPTURING_WHITE_BALANCE = "capturing-white-balance" :: T.Text++{- |+Indicates the source of capture. The device\/medium used to do the+capture. (string)++Allowed values are:+  \"dsc\" (= digital still camera)+  \"transparent-scanner\"+  \"reflex-scanner\"+  \"other\"+-}+pattern TAG_CAPTURING_SOURCE = "capturing-source" :: T.Text++{- |+Shutter speed used when capturing an image, in seconds. (fraction)+-}+pattern TAG_CAPTURING_SHUTTER_SPEED = "capturing-shutter-speed" :: T.Text++{- |+Direction of sharpness processing applied when capturing an image. (string)++The allowed values are:+ \"normal\"+ \"soft\"+ \"hard\"+-}+pattern TAG_CAPTURING_SHARPNESS = "capturing-sharpness" :: T.Text++{- |+Scene mode used when capturing an image. (string)++The allowed values are:+  \"standard\"+  \"landscape\"+  \"portrait\"+  \"night-scene\"+-}+pattern TAG_CAPTURING_SCENE_CAPTURE_TYPE = "capturing-scene-capture-type" :: T.Text++{- |+Direction of saturation processing applied when capturing an image. (string)++The allowed values are:+ \"normal\"+ \"low-saturation\"+ \"high-saturation\"+-}+pattern TAG_CAPTURING_SATURATION = "capturing-saturation" :: T.Text++{- |+Defines the way a camera determines the exposure. (string)++The allowed values are:+  \"unknown\"+  \"average\"+  \"center-weighted-average\"+  \"spot\"+  \"multi-spot\"+  \"pattern\"+  \"partial\"+  \"other\"+-}+pattern TAG_CAPTURING_METERING_MODE = "capturing-metering-mode" :: T.Text++{- |+ISO speed used when capturing an image. (integer)+-}+pattern TAG_CAPTURING_ISO_SPEED = "capturing-iso-speed" :: T.Text++{- |+Gain adjustment applied to an image. (string)++The allowed values are:+  \"none\"+  \"low-gain-up\"+  \"high-gain-up\"+  \"low-gain-down\"+  \"high-gain-down\"+-}+pattern TAG_CAPTURING_GAIN_ADJUSTMENT = "capturing-gain-adjustment" :: T.Text++{- |+Focal ratio (f-number) used when capturing an image. (double)++The value stored is the denominator of the focal ratio (f-number).+For example, if this tag value is 2, the focal ratio is f\/2.+-}+pattern TAG_CAPTURING_FOCAL_RATIO = "capturing-focal-ratio" :: T.Text++{- |+35 mm equivalent focal length used when capturing an image, in mm. (double)++/Since: 1.10/+-}+pattern TAG_CAPTURING_FOCAL_LENGTH_35_MM = "capturing-focal-length-35mm" :: T.Text++{- |+Focal length used when capturing an image, in mm. (double)+-}+pattern TAG_CAPTURING_FOCAL_LENGTH = "capturing-focal-length" :: T.Text++{- |+The flash mode selected during the capture of an image. (string)++The allowed values are:+ \"auto\"+ \"always\"+ \"never\"+-}+pattern TAG_CAPTURING_FLASH_MODE = "capturing-flash-mode" :: T.Text++{- |+If flash was fired during the capture of an image. (boolean)++Note that if this tag isn\'t present, it should not be assumed that+the flash did not fire. It should be treated as unknown.+-}+pattern TAG_CAPTURING_FLASH_FIRED = "capturing-flash-fired" :: T.Text++{- |+Type of exposure control used when capturing an image. (string)++The allowed values are:+  \"undefined\"+  \"manual\"+  \"normal\" - automatically controlled+  \"aperture-priority\" - user selects aperture value+  \"shutter-priority\" - user selects shutter speed+  \"creative\" - biased towards depth of field+  \"action\" - biased towards fast shutter speed+  \"portrait\" - closeup, leaving background out of focus+  \"landscape\" - landscape photos, background in focus+-}+pattern TAG_CAPTURING_EXPOSURE_PROGRAM = "capturing-exposure-program" :: T.Text++{- |+Exposure mode used when capturing an image. (string)++The allowed values are:+  \"auto-exposure\"+  \"manual-exposure\"+  \"auto-bracket\"+-}+pattern TAG_CAPTURING_EXPOSURE_MODE = "capturing-exposure-mode" :: T.Text++{- |+Exposure compensation using when capturing an image in EV. (double)+-}+pattern TAG_CAPTURING_EXPOSURE_COMPENSATION = "capturing-exposure-compensation" :: T.Text++{- |+Digital zoom ratio used when capturing an image. (double)+-}+pattern TAG_CAPTURING_DIGITAL_ZOOM_RATIO = "capturing-digital-zoom-ratio" :: T.Text++{- |+Direction of contrast processing applied when capturing an image. (string)++The allowed values are:+ \"normal\"+ \"soft\"+ \"hard\"+-}+pattern TAG_CAPTURING_CONTRAST = "capturing-contrast" :: T.Text++
+ GI/GstTag/Enums.hs view
@@ -0,0 +1,238 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Enums+    ( ++ -- * Enumerations+-- ** TagDemuxResult #enum:TagDemuxResult#++    TagDemuxResult(..)                      ,+++-- ** TagImageType #enum:TagImageType#++    TagImageType(..)                        ,+++++    ) 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.ManagedPtr as B.ManagedPtr+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.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+++-- Enum TagImageType+{- |+Type of image contained in an image tag (specified as \"image-type\" field in+the info structure in the image\'s 'GI.Gst.Structs.Sample.Sample')+-}+data TagImageType = +      TagImageTypeNone+    {- ^+    No image type. Can be used to+         tell functions such as 'GI.GstTag.Functions.tagImageDataToImageSample' that no+         image type should be set.+    -}+    | TagImageTypeUndefined+    {- ^+    Undefined\/other image type+    -}+    | TagImageTypeFrontCover+    {- ^+    Cover (front)+    -}+    | TagImageTypeBackCover+    {- ^+    Cover (back)+    -}+    | TagImageTypeLeafletPage+    {- ^+    Leaflet page+    -}+    | TagImageTypeMedium+    {- ^+    Medium (e.g. label side of CD)+    -}+    | TagImageTypeLeadArtist+    {- ^+    Lead artist\/lead performer\/soloist+    -}+    | TagImageTypeArtist+    {- ^+    Artist\/performer+    -}+    | TagImageTypeConductor+    {- ^+    Conductor+    -}+    | TagImageTypeBandOrchestra+    {- ^+    Band\/orchestra+    -}+    | TagImageTypeComposer+    {- ^+    Composer+    -}+    | TagImageTypeLyricist+    {- ^+    Lyricist\/text writer+    -}+    | TagImageTypeRecordingLocation+    {- ^+    Recording location+    -}+    | TagImageTypeDuringRecording+    {- ^+    During recording+    -}+    | TagImageTypeDuringPerformance+    {- ^+    During performance+    -}+    | TagImageTypeVideoCapture+    {- ^+    Movie\/video screen capture+    -}+    | TagImageTypeFish+    {- ^+    A fish as funny as the ID3v2 spec+    -}+    | TagImageTypeIllustration+    {- ^+    Illustration+    -}+    | TagImageTypeBandArtistLogo+    {- ^+    Band\/artist logotype+    -}+    | TagImageTypePublisherStudioLogo+    {- ^+    Publisher\/studio logotype+    -}+    | AnotherTagImageType Int+    -- ^ Catch-all for unknown values+    deriving (Show, Eq)++instance P.Enum TagImageType where+    fromEnum TagImageTypeNone = -1+    fromEnum TagImageTypeUndefined = 0+    fromEnum TagImageTypeFrontCover = 1+    fromEnum TagImageTypeBackCover = 2+    fromEnum TagImageTypeLeafletPage = 3+    fromEnum TagImageTypeMedium = 4+    fromEnum TagImageTypeLeadArtist = 5+    fromEnum TagImageTypeArtist = 6+    fromEnum TagImageTypeConductor = 7+    fromEnum TagImageTypeBandOrchestra = 8+    fromEnum TagImageTypeComposer = 9+    fromEnum TagImageTypeLyricist = 10+    fromEnum TagImageTypeRecordingLocation = 11+    fromEnum TagImageTypeDuringRecording = 12+    fromEnum TagImageTypeDuringPerformance = 13+    fromEnum TagImageTypeVideoCapture = 14+    fromEnum TagImageTypeFish = 15+    fromEnum TagImageTypeIllustration = 16+    fromEnum TagImageTypeBandArtistLogo = 17+    fromEnum TagImageTypePublisherStudioLogo = 18+    fromEnum (AnotherTagImageType k) = k++    toEnum -1 = TagImageTypeNone+    toEnum 0 = TagImageTypeUndefined+    toEnum 1 = TagImageTypeFrontCover+    toEnum 2 = TagImageTypeBackCover+    toEnum 3 = TagImageTypeLeafletPage+    toEnum 4 = TagImageTypeMedium+    toEnum 5 = TagImageTypeLeadArtist+    toEnum 6 = TagImageTypeArtist+    toEnum 7 = TagImageTypeConductor+    toEnum 8 = TagImageTypeBandOrchestra+    toEnum 9 = TagImageTypeComposer+    toEnum 10 = TagImageTypeLyricist+    toEnum 11 = TagImageTypeRecordingLocation+    toEnum 12 = TagImageTypeDuringRecording+    toEnum 13 = TagImageTypeDuringPerformance+    toEnum 14 = TagImageTypeVideoCapture+    toEnum 15 = TagImageTypeFish+    toEnum 16 = TagImageTypeIllustration+    toEnum 17 = TagImageTypeBandArtistLogo+    toEnum 18 = TagImageTypePublisherStudioLogo+    toEnum k = AnotherTagImageType k++instance P.Ord TagImageType where+    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)++foreign import ccall "gst_tag_image_type_get_type" c_gst_tag_image_type_get_type :: +    IO GType++instance BoxedEnum TagImageType where+    boxedEnumType _ = c_gst_tag_image_type_get_type++-- Enum TagDemuxResult+{- |+Result values from the parse_tag virtual function.+-}+data TagDemuxResult = +      TagDemuxResultBrokenTag+    {- ^+    cannot parse tag, just skip it+    -}+    | TagDemuxResultAgain+    {- ^+    call again with less or more data+    -}+    | TagDemuxResultOk+    {- ^+    parsed tag successfully+    -}+    | AnotherTagDemuxResult Int+    -- ^ Catch-all for unknown values+    deriving (Show, Eq)++instance P.Enum TagDemuxResult where+    fromEnum TagDemuxResultBrokenTag = 0+    fromEnum TagDemuxResultAgain = 1+    fromEnum TagDemuxResultOk = 2+    fromEnum (AnotherTagDemuxResult k) = k++    toEnum 0 = TagDemuxResultBrokenTag+    toEnum 1 = TagDemuxResultAgain+    toEnum 2 = TagDemuxResultOk+    toEnum k = AnotherTagDemuxResult k++instance P.Ord TagDemuxResult where+    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)++foreign import ccall "gst_tag_demux_result_get_type" c_gst_tag_demux_result_get_type :: +    IO GType++instance BoxedEnum TagDemuxResult where+    boxedEnumType _ = c_gst_tag_demux_result_get_type++
+ GI/GstTag/Enums.hs-boot view
@@ -0,0 +1,30 @@+#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))+module GI.GstTag.Enums 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.ManagedPtr as B.ManagedPtr+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.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++data TagImageType+instance P.Enum TagImageType where+instance BoxedEnum TagImageType where+data TagDemuxResult+instance P.Enum TagDemuxResult where+instance BoxedEnum TagDemuxResult where
+ GI/GstTag/Flags.hs view
@@ -0,0 +1,173 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Flags+    ( ++ -- * Flags+-- ** TagLicenseFlags #flag:TagLicenseFlags#++    TagLicenseFlags(..)                     ,+++++    ) 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.ManagedPtr as B.ManagedPtr+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.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+++-- Flags TagLicenseFlags+{- |+See http:\/\/creativecommons.org\/ns for more information.+-}+data TagLicenseFlags = +      TagLicenseFlagsPermitsReproduction+    {- ^+    making multiple copies+        is allowed+    -}+    | TagLicenseFlagsPermitsDistribution+    {- ^+    distribution, public display+        and public performance are allowed+    -}+    | TagLicenseFlagsPermitsDerivativeWorks+    {- ^+    distribution of derivative+        works is allowed+    -}+    | TagLicenseFlagsPermitsSharing+    {- ^+    commercial derivatives are allowed,+        but only non-commercial distribution is allowed+    -}+    | TagLicenseFlagsRequiresNotice+    {- ^+    copyright and license notices+        must be kept intact+    -}+    | TagLicenseFlagsRequiresAttribution+    {- ^+    credit must be given to+        copyright holder and\/or author+    -}+    | TagLicenseFlagsRequiresShareAlike+    {- ^+    derivative works must be+        licensed under the same terms or compatible terms as the original work+    -}+    | TagLicenseFlagsRequiresSourceCode+    {- ^+    source code (the preferred+        form for making modifications) must be provided when exercising some+        rights granted by the license+    -}+    | TagLicenseFlagsRequiresCopyleft+    {- ^+    derivative and combined works+        must be licensed under specified terms, similar to those of the original+        work+    -}+    | TagLicenseFlagsRequiresLesserCopyleft+    {- ^+    derivative works must be+        licensed under specified terms, with at least the same conditions as+        the original work; combinations with the work may be licensed under+        different terms+    -}+    | TagLicenseFlagsProhibitsCommercialUse+    {- ^+    exercising rights for+        commercial purposes is prohibited+    -}+    | TagLicenseFlagsProhibitsHighIncomeNationUse+    {- ^+    use in a+        non-developing country is prohibited+    -}+    | TagLicenseFlagsCreativeCommonsLicense+    {- ^+    this license was created+        by the Creative Commons project+    -}+    | TagLicenseFlagsFreeSoftwareFoundationLicense+    {- ^+    this license was+        created by the Free Software Foundation (FSF)+    -}+    | AnotherTagLicenseFlags Int+    -- ^ Catch-all for unknown values+    deriving (Show, Eq)++instance P.Enum TagLicenseFlags where+    fromEnum TagLicenseFlagsPermitsReproduction = 1+    fromEnum TagLicenseFlagsPermitsDistribution = 2+    fromEnum TagLicenseFlagsPermitsDerivativeWorks = 4+    fromEnum TagLicenseFlagsPermitsSharing = 8+    fromEnum TagLicenseFlagsRequiresNotice = 256+    fromEnum TagLicenseFlagsRequiresAttribution = 512+    fromEnum TagLicenseFlagsRequiresShareAlike = 1024+    fromEnum TagLicenseFlagsRequiresSourceCode = 2048+    fromEnum TagLicenseFlagsRequiresCopyleft = 4096+    fromEnum TagLicenseFlagsRequiresLesserCopyleft = 8192+    fromEnum TagLicenseFlagsProhibitsCommercialUse = 65536+    fromEnum TagLicenseFlagsProhibitsHighIncomeNationUse = 131072+    fromEnum TagLicenseFlagsCreativeCommonsLicense = 16777216+    fromEnum TagLicenseFlagsFreeSoftwareFoundationLicense = 33554432+    fromEnum (AnotherTagLicenseFlags k) = k++    toEnum 1 = TagLicenseFlagsPermitsReproduction+    toEnum 2 = TagLicenseFlagsPermitsDistribution+    toEnum 4 = TagLicenseFlagsPermitsDerivativeWorks+    toEnum 8 = TagLicenseFlagsPermitsSharing+    toEnum 256 = TagLicenseFlagsRequiresNotice+    toEnum 512 = TagLicenseFlagsRequiresAttribution+    toEnum 1024 = TagLicenseFlagsRequiresShareAlike+    toEnum 2048 = TagLicenseFlagsRequiresSourceCode+    toEnum 4096 = TagLicenseFlagsRequiresCopyleft+    toEnum 8192 = TagLicenseFlagsRequiresLesserCopyleft+    toEnum 65536 = TagLicenseFlagsProhibitsCommercialUse+    toEnum 131072 = TagLicenseFlagsProhibitsHighIncomeNationUse+    toEnum 16777216 = TagLicenseFlagsCreativeCommonsLicense+    toEnum 33554432 = TagLicenseFlagsFreeSoftwareFoundationLicense+    toEnum k = AnotherTagLicenseFlags k++instance P.Ord TagLicenseFlags where+    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)++foreign import ccall "gst_tag_license_flags_get_type" c_gst_tag_license_flags_get_type :: +    IO GType++instance BoxedFlags TagLicenseFlags where+    boxedFlagsType _ = c_gst_tag_license_flags_get_type++instance IsGFlag TagLicenseFlags++
+ GI/GstTag/Flags.hs-boot view
@@ -0,0 +1,28 @@+#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))+module GI.GstTag.Flags 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.ManagedPtr as B.ManagedPtr+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.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++data TagLicenseFlags+instance P.Enum TagLicenseFlags where+instance BoxedFlags TagLicenseFlags where+instance IsGFlag TagLicenseFlags
+ GI/GstTag/Functions.hs view
@@ -0,0 +1,1646 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Functions+    ( ++ -- * Methods+-- ** tagCheckLanguageCode #method:tagCheckLanguageCode#++    tagCheckLanguageCode                    ,+++-- ** tagFreeformStringToUtf8 #method:tagFreeformStringToUtf8#++    tagFreeformStringToUtf8                 ,+++-- ** tagFromId3Tag #method:tagFromId3Tag#++    tagFromId3Tag                           ,+++-- ** tagFromId3UserTag #method:tagFromId3UserTag#++    tagFromId3UserTag                       ,+++-- ** tagFromVorbisTag #method:tagFromVorbisTag#++    tagFromVorbisTag                        ,+++-- ** tagGetId3v2TagSize #method:tagGetId3v2TagSize#++    tagGetId3v2TagSize                      ,+++-- ** tagGetLanguageCodeIso6391 #method:tagGetLanguageCodeIso6391#++    tagGetLanguageCodeIso6391               ,+++-- ** tagGetLanguageCodeIso6392B #method:tagGetLanguageCodeIso6392B#++    tagGetLanguageCodeIso6392B              ,+++-- ** tagGetLanguageCodeIso6392T #method:tagGetLanguageCodeIso6392T#++    tagGetLanguageCodeIso6392T              ,+++-- ** tagGetLanguageCodes #method:tagGetLanguageCodes#++    tagGetLanguageCodes                     ,+++-- ** tagGetLanguageName #method:tagGetLanguageName#++    tagGetLanguageName                      ,+++-- ** tagGetLicenseDescription #method:tagGetLicenseDescription#++    tagGetLicenseDescription                ,+++-- ** tagGetLicenseFlags #method:tagGetLicenseFlags#++    tagGetLicenseFlags                      ,+++-- ** tagGetLicenseJurisdiction #method:tagGetLicenseJurisdiction#++    tagGetLicenseJurisdiction               ,+++-- ** tagGetLicenseNick #method:tagGetLicenseNick#++    tagGetLicenseNick                       ,+++-- ** tagGetLicenseTitle #method:tagGetLicenseTitle#++    tagGetLicenseTitle                      ,+++-- ** tagGetLicenseVersion #method:tagGetLicenseVersion#++    tagGetLicenseVersion                    ,+++-- ** tagGetLicenses #method:tagGetLicenses#++    tagGetLicenses                          ,+++-- ** tagId3GenreCount #method:tagId3GenreCount#++    tagId3GenreCount                        ,+++-- ** tagId3GenreGet #method:tagId3GenreGet#++    tagId3GenreGet                          ,+++-- ** tagImageDataToImageSample #method:tagImageDataToImageSample#++    tagImageDataToImageSample               ,+++-- ** tagListAddId3Image #method:tagListAddId3Image#++    tagListAddId3Image                      ,+++-- ** tagListFromExifBuffer #method:tagListFromExifBuffer#++    tagListFromExifBuffer                   ,+++-- ** tagListFromExifBufferWithTiffHeader #method:tagListFromExifBufferWithTiffHeader#++    tagListFromExifBufferWithTiffHeader     ,+++-- ** tagListFromId3v2Tag #method:tagListFromId3v2Tag#++    tagListFromId3v2Tag                     ,+++-- ** tagListFromVorbiscomment #method:tagListFromVorbiscomment#++    tagListFromVorbiscomment                ,+++-- ** tagListFromVorbiscommentBuffer #method:tagListFromVorbiscommentBuffer#++    tagListFromVorbiscommentBuffer          ,+++-- ** tagListFromXmpBuffer #method:tagListFromXmpBuffer#++    tagListFromXmpBuffer                    ,+++-- ** tagListNewFromId3v1 #method:tagListNewFromId3v1#++    tagListNewFromId3v1                     ,+++-- ** tagListToExifBuffer #method:tagListToExifBuffer#++    tagListToExifBuffer                     ,+++-- ** tagListToExifBufferWithTiffHeader #method:tagListToExifBufferWithTiffHeader#++    tagListToExifBufferWithTiffHeader       ,+++-- ** tagListToVorbiscommentBuffer #method:tagListToVorbiscommentBuffer#++    tagListToVorbiscommentBuffer            ,+++-- ** tagListToXmpBuffer #method:tagListToXmpBuffer#++    tagListToXmpBuffer                      ,+++-- ** tagParseExtendedComment #method:tagParseExtendedComment#++    tagParseExtendedComment                 ,+++-- ** tagRegisterMusicbrainzTags #method:tagRegisterMusicbrainzTags#++    tagRegisterMusicbrainzTags              ,+++-- ** tagToId3Tag #method:tagToId3Tag#++    tagToId3Tag                             ,+++-- ** tagToVorbisComments #method:tagToVorbisComments#++    tagToVorbisComments                     ,+++-- ** tagToVorbisTag #method:tagToVorbisTag#++    tagToVorbisTag                          ,+++-- ** tagXmpListSchemas #method:tagXmpListSchemas#++    tagXmpListSchemas                       ,+++-- ** vorbisTagAdd #method:vorbisTagAdd#++    vorbisTagAdd                            ,+++++    ) 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.ManagedPtr as B.ManagedPtr+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.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 GI.Gst.Structs.Buffer as Gst.Buffer+import qualified GI.Gst.Structs.Sample as Gst.Sample+import qualified GI.Gst.Structs.TagList as Gst.TagList+import {-# SOURCE #-} qualified GI.GstTag.Enums as GstTag.Enums+import {-# SOURCE #-} qualified GI.GstTag.Flags as GstTag.Flags++-- function gst_vorbis_tag_add+-- Args : [Arg {argCName = "list", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstTagList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tag", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a vorbiscomment tag string (key in key=value), must be valid UTF-8", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a vorbiscomment value string (value in key=value), must be valid UTF-8", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Nothing+-- throws : False+-- Skip return : False++foreign import ccall "gst_vorbis_tag_add" gst_vorbis_tag_add :: +    Ptr Gst.TagList.TagList ->              -- list : TInterface (Name {namespace = "Gst", name = "TagList"})+    CString ->                              -- tag : TBasicType TUTF8+    CString ->                              -- value : TBasicType TUTF8+    IO ()++{- |+Convenience function using 'GI.GstTag.Functions.tagFromVorbisTag', parsing+a vorbis comment string into the right type and adding it to the+given taglist /@list@/.++Unknown vorbiscomment tags will be added to the tag list in form+of a 'GI.Gst.Constants.TAG_EXTENDED_COMMENT'.+-}+vorbisTagAdd ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.TagList.TagList+    {- ^ /@list@/: a 'GI.Gst.Structs.TagList.TagList' -}+    -> T.Text+    {- ^ /@tag@/: a vorbiscomment tag string (key in key=value), must be valid UTF-8 -}+    -> T.Text+    {- ^ /@value@/: a vorbiscomment value string (value in key=value), must be valid UTF-8 -}+    -> m ()+vorbisTagAdd list tag value = liftIO $ do+    list' <- unsafeManagedPtrGetPtr list+    tag' <- textToCString tag+    value' <- textToCString value+    gst_vorbis_tag_add list' tag' value'+    touchManagedPtr list+    freeMem tag'+    freeMem value'+    return ()+++-- function gst_tag_xmp_list_schemas+-- Args : []+-- Lengths : []+-- returnType : Just (TCArray True (-1) (-1) (TBasicType TUTF8))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_xmp_list_schemas" gst_tag_xmp_list_schemas :: +    IO (Ptr CString)++{- |+Gets the list of supported schemas in the xmp lib+-}+tagXmpListSchemas ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    m [T.Text]+    {- ^ __Returns:__ a 'Nothing' terminated array of strings with the+    schema names -}+tagXmpListSchemas  = liftIO $ do+    result <- gst_tag_xmp_list_schemas+    checkUnexpectedReturnNULL "tagXmpListSchemas" result+    result' <- unpackZeroTerminatedUTF8CArray result+    return result'+++-- function gst_tag_to_vorbis_tag+-- Args : [Arg {argCName = "gst_tag", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "GStreamer tag to convert to vorbiscomment tag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_to_vorbis_tag" gst_tag_to_vorbis_tag :: +    CString ->                              -- gst_tag : TBasicType TUTF8+    IO CString++{- |+Looks up the vorbiscomment tag for a GStreamer tag.+-}+tagToVorbisTag ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@gstTag@/: GStreamer tag to convert to vorbiscomment tag -}+    -> m T.Text+    {- ^ __Returns:__ The corresponding vorbiscomment tag or NULL if none exists. -}+tagToVorbisTag gstTag = liftIO $ do+    gstTag' <- textToCString gstTag+    result <- gst_tag_to_vorbis_tag gstTag'+    checkUnexpectedReturnNULL "tagToVorbisTag" result+    result' <- cstringToText result+    freeMem gstTag'+    return result'+++-- function gst_tag_to_vorbis_comments+-- Args : [Arg {argCName = "list", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstTagList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tag", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a GStreamer tag identifier, such as #GST_TAG_ARTIST", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TGList (TBasicType TUTF8))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_to_vorbis_comments" gst_tag_to_vorbis_comments :: +    Ptr Gst.TagList.TagList ->              -- list : TInterface (Name {namespace = "Gst", name = "TagList"})+    CString ->                              -- tag : TBasicType TUTF8+    IO (Ptr (GList CString))++{- |+Creates a new tag list that contains the information parsed out of a+vorbiscomment packet.+-}+tagToVorbisComments ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.TagList.TagList+    {- ^ /@list@/: a 'GI.Gst.Structs.TagList.TagList' -}+    -> T.Text+    {- ^ /@tag@/: a GStreamer tag identifier, such as 'GI.Gst.Constants.TAG_ARTIST' -}+    -> m [T.Text]+    {- ^ __Returns:__ A 'GI.GLib.Structs.List.List' of newly-allocated+    key=value strings. Free with g_list_foreach (list, (GFunc) g_free, NULL)+    plus g_list_free (list) -}+tagToVorbisComments list tag = liftIO $ do+    list' <- unsafeManagedPtrGetPtr list+    tag' <- textToCString tag+    result <- gst_tag_to_vorbis_comments list' tag'+    result' <- unpackGList result+    result'' <- mapM cstringToText result'+    mapGList freeMem result+    g_list_free result+    touchManagedPtr list+    freeMem tag'+    return result''+++-- function gst_tag_to_id3_tag+-- Args : [Arg {argCName = "gst_tag", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "GStreamer tag to convert to vorbiscomment tag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_to_id3_tag" gst_tag_to_id3_tag :: +    CString ->                              -- gst_tag : TBasicType TUTF8+    IO CString++{- |+Looks up the ID3v2 tag for a GStreamer tag.+-}+tagToId3Tag ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@gstTag@/: GStreamer tag to convert to vorbiscomment tag -}+    -> m T.Text+    {- ^ __Returns:__ The corresponding ID3v2 tag or NULL if none exists. -}+tagToId3Tag gstTag = liftIO $ do+    gstTag' <- textToCString gstTag+    result <- gst_tag_to_id3_tag gstTag'+    checkUnexpectedReturnNULL "tagToId3Tag" result+    result' <- cstringToText result+    freeMem gstTag'+    return result'+++-- function gst_tag_register_musicbrainz_tags+-- Args : []+-- Lengths : []+-- returnType : Nothing+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_register_musicbrainz_tags" gst_tag_register_musicbrainz_tags :: +    IO ()++{- |+Registers additional musicbrainz-specific tags with the GStreamer tag+system. Plugins and applications that use these tags should call this+function before using them. Can be called multiple times.+-}+tagRegisterMusicbrainzTags ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    m ()+tagRegisterMusicbrainzTags  = liftIO $ do+    gst_tag_register_musicbrainz_tags+    return ()+++-- function gst_tag_parse_extended_comment+-- Args : [Arg {argCName = "ext_comment", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an extended comment string, see #GST_TAG_EXTENDED_COMMENT", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = True, argDoc = Documentation {rawDocText = Just "\n    return location for the comment description key, or NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "lang", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = True, argDoc = Documentation {rawDocText = Just "\n    return location for the comment ISO-639 language code, or NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "value", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return location for the actual comment string, or NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "fail_if_no_key", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether to fail if strings are not in key=value form", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TBoolean)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_parse_extended_comment" gst_tag_parse_extended_comment :: +    CString ->                              -- ext_comment : TBasicType TUTF8+    Ptr CString ->                          -- key : TBasicType TUTF8+    Ptr CString ->                          -- lang : TBasicType TUTF8+    Ptr CString ->                          -- value : TBasicType TUTF8+    CInt ->                                 -- fail_if_no_key : TBasicType TBoolean+    IO CInt++{- |+Convenience function to parse a GST_TAG_EXTENDED_COMMENT string and+separate it into its components.++If successful, /@key@/, /@lang@/ and\/or /@value@/ will be set to newly allocated+strings that you need to free with 'GI.GLib.Functions.free' when done. /@key@/ and /@lang@/+may also be set to NULL by this function if there is no key or no language+code in the extended comment string.+-}+tagParseExtendedComment ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@extComment@/: an extended comment string, see 'GI.Gst.Constants.TAG_EXTENDED_COMMENT' -}+    -> Bool+    {- ^ /@failIfNoKey@/: whether to fail if strings are not in key=value form -}+    -> m ((Bool, Maybe T.Text, Maybe T.Text, T.Text))+    {- ^ __Returns:__ TRUE if the string could be parsed, otherwise FALSE -}+tagParseExtendedComment extComment failIfNoKey = liftIO $ do+    extComment' <- textToCString extComment+    key <- allocMem :: IO (Ptr CString)+    lang <- allocMem :: IO (Ptr CString)+    value <- allocMem :: IO (Ptr CString)+    let failIfNoKey' = (fromIntegral . fromEnum) failIfNoKey+    result <- gst_tag_parse_extended_comment extComment' key lang value failIfNoKey'+    let result' = (/= 0) result+    key' <- peek key+    maybeKey' <- convertIfNonNull key' $ \key'' -> do+        key''' <- cstringToText key''+        return key'''+    freeMem key'+    lang' <- peek lang+    maybeLang' <- convertIfNonNull lang' $ \lang'' -> do+        lang''' <- cstringToText lang''+        return lang'''+    freeMem lang'+    value' <- peek value+    value'' <- cstringToText value'+    freeMem value'+    freeMem extComment'+    freeMem key+    freeMem lang+    freeMem value+    return (result', maybeKey', maybeLang', value'')+++-- function gst_tag_list_to_xmp_buffer+-- Args : [Arg {argCName = "list", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "tags", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "read_only", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "does the container forbid inplace editing", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "schemas", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "\n    %NULL terminated array of schemas to be used on serialization", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_to_xmp_buffer" gst_tag_list_to_xmp_buffer :: +    Ptr Gst.TagList.TagList ->              -- list : TInterface (Name {namespace = "Gst", name = "TagList"})+    CInt ->                                 -- read_only : TBasicType TBoolean+    Ptr CString ->                          -- schemas : TCArray True (-1) (-1) (TBasicType TUTF8)+    IO (Ptr Gst.Buffer.Buffer)++{- |+Formats a taglist as a xmp packet using only the selected+schemas. An empty list ('Nothing') means that all schemas should+be used+-}+tagListToXmpBuffer ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.TagList.TagList+    {- ^ /@list@/: tags -}+    -> Bool+    {- ^ /@readOnly@/: does the container forbid inplace editing -}+    -> [T.Text]+    {- ^ /@schemas@/: +    'Nothing' terminated array of schemas to be used on serialization -}+    -> m Gst.Buffer.Buffer+    {- ^ __Returns:__ new buffer or 'Nothing', unref the buffer when done -}+tagListToXmpBuffer list readOnly schemas = liftIO $ do+    list' <- unsafeManagedPtrGetPtr list+    let readOnly' = (fromIntegral . fromEnum) readOnly+    schemas' <- packZeroTerminatedUTF8CArray schemas+    result <- gst_tag_list_to_xmp_buffer list' readOnly' schemas'+    checkUnexpectedReturnNULL "tagListToXmpBuffer" result+    result' <- (wrapBoxed Gst.Buffer.Buffer) result+    touchManagedPtr list+    mapZeroTerminatedCArray freeMem schemas'+    freeMem schemas'+    return result'+++-- function gst_tag_list_to_vorbiscomment_buffer+-- Args : [Arg {argCName = "list", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "tag list to convert", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id_data", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "identification data at start of stream", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id_data_length", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of identification data, may be 0 if @id_data is NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "vendor_string", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "string that describes the vendor string or NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : [Arg {argCName = "id_data_length", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of identification data, may be 0 if @id_data is NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_to_vorbiscomment_buffer" gst_tag_list_to_vorbiscomment_buffer :: +    Ptr Gst.TagList.TagList ->              -- list : TInterface (Name {namespace = "Gst", name = "TagList"})+    Ptr Word8 ->                            -- id_data : TCArray False (-1) 2 (TBasicType TUInt8)+    Word32 ->                               -- id_data_length : TBasicType TUInt+    CString ->                              -- vendor_string : TBasicType TUTF8+    IO (Ptr Gst.Buffer.Buffer)++{- |+Creates a new vorbiscomment buffer from a tag list.+-}+tagListToVorbiscommentBuffer ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.TagList.TagList+    {- ^ /@list@/: tag list to convert -}+    -> ByteString+    {- ^ /@idData@/: identification data at start of stream -}+    -> Maybe (T.Text)+    {- ^ /@vendorString@/: string that describes the vendor string or NULL -}+    -> m Gst.Buffer.Buffer+    {- ^ __Returns:__ A new 'GI.Gst.Structs.Buffer.Buffer' containing a vorbiscomment buffer with all tags+         that could be converted from the given tag list. -}+tagListToVorbiscommentBuffer list idData vendorString = liftIO $ do+    let idDataLength = fromIntegral $ B.length idData+    list' <- unsafeManagedPtrGetPtr list+    idData' <- packByteString idData+    maybeVendorString <- case vendorString of+        Nothing -> return nullPtr+        Just jVendorString -> do+            jVendorString' <- textToCString jVendorString+            return jVendorString'+    result <- gst_tag_list_to_vorbiscomment_buffer list' idData' idDataLength maybeVendorString+    checkUnexpectedReturnNULL "tagListToVorbiscommentBuffer" result+    result' <- (wrapBoxed Gst.Buffer.Buffer) result+    touchManagedPtr list+    freeMem idData'+    freeMem maybeVendorString+    return result'+++-- function gst_tag_list_to_exif_buffer_with_tiff_header+-- Args : [Arg {argCName = "taglist", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The taglist", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_to_exif_buffer_with_tiff_header" gst_tag_list_to_exif_buffer_with_tiff_header :: +    Ptr Gst.TagList.TagList ->              -- taglist : TInterface (Name {namespace = "Gst", name = "TagList"})+    IO (Ptr Gst.Buffer.Buffer)++{- |+Formats the tags in taglist into exif structure, a tiff header+is put in the beginning of the buffer.+-}+tagListToExifBufferWithTiffHeader ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.TagList.TagList+    {- ^ /@taglist@/: The taglist -}+    -> m Gst.Buffer.Buffer+    {- ^ __Returns:__ A GstBuffer containing the data -}+tagListToExifBufferWithTiffHeader taglist = liftIO $ do+    taglist' <- unsafeManagedPtrGetPtr taglist+    result <- gst_tag_list_to_exif_buffer_with_tiff_header taglist'+    checkUnexpectedReturnNULL "tagListToExifBufferWithTiffHeader" result+    result' <- (wrapBoxed Gst.Buffer.Buffer) result+    touchManagedPtr taglist+    return result'+++-- function gst_tag_list_to_exif_buffer+-- Args : [Arg {argCName = "taglist", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The taglist", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "byte_order", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "byte order used in writing (G_LITTLE_ENDIAN or G_BIG_ENDIAN)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "base_offset", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Offset from the tiff header first byte", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_to_exif_buffer" gst_tag_list_to_exif_buffer :: +    Ptr Gst.TagList.TagList ->              -- taglist : TInterface (Name {namespace = "Gst", name = "TagList"})+    Int32 ->                                -- byte_order : TBasicType TInt+    Word32 ->                               -- base_offset : TBasicType TUInt32+    IO (Ptr Gst.Buffer.Buffer)++{- |+Formats the tags in taglist on exif format. The resulting buffer contains+the tags IFD and is followed by the data pointed by the tag entries.+-}+tagListToExifBuffer ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.TagList.TagList+    {- ^ /@taglist@/: The taglist -}+    -> Int32+    {- ^ /@byteOrder@/: byte order used in writing (G_LITTLE_ENDIAN or G_BIG_ENDIAN) -}+    -> Word32+    {- ^ /@baseOffset@/: Offset from the tiff header first byte -}+    -> m Gst.Buffer.Buffer+    {- ^ __Returns:__ A GstBuffer containing the tag entries followed by the tag data -}+tagListToExifBuffer taglist byteOrder baseOffset = liftIO $ do+    taglist' <- unsafeManagedPtrGetPtr taglist+    result <- gst_tag_list_to_exif_buffer taglist' byteOrder baseOffset+    checkUnexpectedReturnNULL "tagListToExifBuffer" result+    result' <- (wrapBoxed Gst.Buffer.Buffer) result+    touchManagedPtr taglist+    return result'+++-- function gst_tag_list_new_from_id3v1+-- Args : [Arg {argCName = "data", argType = TCArray False 128 (-1) (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "128 bytes of data containing the ID3v1 tag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TagList"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_new_from_id3v1" gst_tag_list_new_from_id3v1 :: +    Ptr Word8 ->                            -- data : TCArray False 128 (-1) (TBasicType TUInt8)+    IO (Ptr Gst.TagList.TagList)++{- |+Parses the data containing an ID3v1 tag and returns a 'GI.Gst.Structs.TagList.TagList' from the+parsed data.+-}+tagListNewFromId3v1 ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    ByteString+    {- ^ /@data@/: 128 bytes of data containing the ID3v1 tag -}+    -> m Gst.TagList.TagList+    {- ^ __Returns:__ A new tag list or NULL if the data was not an ID3v1 tag. -}+tagListNewFromId3v1 data_ = liftIO $ do+    data_' <- packByteString data_+    result <- gst_tag_list_new_from_id3v1 data_'+    checkUnexpectedReturnNULL "tagListNewFromId3v1" result+    result' <- (wrapBoxed Gst.TagList.TagList) result+    freeMem data_'+    return result'+++-- function gst_tag_list_from_xmp_buffer+-- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "buffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TagList"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_from_xmp_buffer" gst_tag_list_from_xmp_buffer :: +    Ptr Gst.Buffer.Buffer ->                -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"})+    IO (Ptr Gst.TagList.TagList)++{- |+Parse a xmp packet into a taglist.+-}+tagListFromXmpBuffer ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.Buffer.Buffer+    {- ^ /@buffer@/: buffer -}+    -> m Gst.TagList.TagList+    {- ^ __Returns:__ new taglist or 'Nothing', free the list when done -}+tagListFromXmpBuffer buffer = liftIO $ do+    buffer' <- unsafeManagedPtrGetPtr buffer+    result <- gst_tag_list_from_xmp_buffer buffer'+    checkUnexpectedReturnNULL "tagListFromXmpBuffer" result+    result' <- (wrapBoxed Gst.TagList.TagList) result+    touchManagedPtr buffer+    return result'+++-- function gst_tag_list_from_vorbiscomment_buffer+-- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "buffer to convert", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id_data", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "identification data at start of stream", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id_data_length", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of identification data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "vendor_string", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "pointer to a string that should take the\n    vendor string of this vorbis comment or NULL if you don't need it.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]+-- Lengths : [Arg {argCName = "id_data_length", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of identification data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TagList"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_from_vorbiscomment_buffer" gst_tag_list_from_vorbiscomment_buffer :: +    Ptr Gst.Buffer.Buffer ->                -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"})+    Ptr Word8 ->                            -- id_data : TCArray False (-1) 2 (TBasicType TUInt8)+    Word32 ->                               -- id_data_length : TBasicType TUInt+    Ptr CString ->                          -- vendor_string : TBasicType TUTF8+    IO (Ptr Gst.TagList.TagList)++{- |+Creates a new tag list that contains the information parsed out of a+vorbiscomment packet.+-}+tagListFromVorbiscommentBuffer ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.Buffer.Buffer+    {- ^ /@buffer@/: buffer to convert -}+    -> ByteString+    {- ^ /@idData@/: identification data at start of stream -}+    -> m ((Gst.TagList.TagList, T.Text))+    {- ^ __Returns:__ A new 'GI.Gst.Structs.TagList.TagList' with all tags that could be extracted from the+         given vorbiscomment buffer or NULL on error. -}+tagListFromVorbiscommentBuffer buffer idData = liftIO $ do+    let idDataLength = fromIntegral $ B.length idData+    buffer' <- unsafeManagedPtrGetPtr buffer+    idData' <- packByteString idData+    vendorString <- allocMem :: IO (Ptr CString)+    result <- gst_tag_list_from_vorbiscomment_buffer buffer' idData' idDataLength vendorString+    checkUnexpectedReturnNULL "tagListFromVorbiscommentBuffer" result+    result' <- (wrapBoxed Gst.TagList.TagList) result+    vendorString' <- peek vendorString+    vendorString'' <- cstringToText vendorString'+    freeMem vendorString'+    touchManagedPtr buffer+    freeMem idData'+    freeMem vendorString+    return (result', vendorString'')+++-- function gst_tag_list_from_vorbiscomment+-- Args : [Arg {argCName = "data", argType = TCArray False (-1) 1 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "data to convert", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "size of @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id_data", argType = TCArray False (-1) 3 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "identification data at start of stream", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id_data_length", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of identification data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "vendor_string", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "pointer to a string that should take the\n    vendor string of this vorbis comment or NULL if you don't need it.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]+-- Lengths : [Arg {argCName = "id_data_length", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of identification data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "size of @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TagList"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_from_vorbiscomment" gst_tag_list_from_vorbiscomment :: +    Ptr Word8 ->                            -- data : TCArray False (-1) 1 (TBasicType TUInt8)+    Word64 ->                               -- size : TBasicType TUInt64+    Ptr Word8 ->                            -- id_data : TCArray False (-1) 3 (TBasicType TUInt8)+    Word32 ->                               -- id_data_length : TBasicType TUInt+    Ptr CString ->                          -- vendor_string : TBasicType TUTF8+    IO (Ptr Gst.TagList.TagList)++{- |+Creates a new tag list that contains the information parsed out of a+vorbiscomment packet.+-}+tagListFromVorbiscomment ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    ByteString+    {- ^ /@data@/: data to convert -}+    -> ByteString+    {- ^ /@idData@/: identification data at start of stream -}+    -> m ((Gst.TagList.TagList, T.Text))+    {- ^ __Returns:__ A new 'GI.Gst.Structs.TagList.TagList' with all tags that could be extracted from the+         given vorbiscomment buffer or NULL on error. -}+tagListFromVorbiscomment data_ idData = liftIO $ do+    let idDataLength = fromIntegral $ B.length idData+    let size = fromIntegral $ B.length data_+    data_' <- packByteString data_+    idData' <- packByteString idData+    vendorString <- allocMem :: IO (Ptr CString)+    result <- gst_tag_list_from_vorbiscomment data_' size idData' idDataLength vendorString+    checkUnexpectedReturnNULL "tagListFromVorbiscomment" result+    result' <- (wrapBoxed Gst.TagList.TagList) result+    vendorString' <- peek vendorString+    vendorString'' <- cstringToText vendorString'+    freeMem vendorString'+    freeMem data_'+    freeMem idData'+    freeMem vendorString+    return (result', vendorString'')+++-- function gst_tag_list_from_id3v2_tag+-- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "buffer to convert", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TagList"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_from_id3v2_tag" gst_tag_list_from_id3v2_tag :: +    Ptr Gst.Buffer.Buffer ->                -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"})+    IO (Ptr Gst.TagList.TagList)++{- |+Creates a new tag list that contains the information parsed out of a+ID3 tag.+-}+tagListFromId3v2Tag ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.Buffer.Buffer+    {- ^ /@buffer@/: buffer to convert -}+    -> m Gst.TagList.TagList+    {- ^ __Returns:__ A new 'GI.Gst.Structs.TagList.TagList' with all tags that could be extracted from the+         given vorbiscomment buffer or NULL on error. -}+tagListFromId3v2Tag buffer = liftIO $ do+    buffer' <- unsafeManagedPtrGetPtr buffer+    result <- gst_tag_list_from_id3v2_tag buffer'+    checkUnexpectedReturnNULL "tagListFromId3v2Tag" result+    result' <- (wrapBoxed Gst.TagList.TagList) result+    touchManagedPtr buffer+    return result'+++-- function gst_tag_list_from_exif_buffer_with_tiff_header+-- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The exif buffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TagList"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_from_exif_buffer_with_tiff_header" gst_tag_list_from_exif_buffer_with_tiff_header :: +    Ptr Gst.Buffer.Buffer ->                -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"})+    IO (Ptr Gst.TagList.TagList)++{- |+Parses the exif tags starting with a tiff header structure.+-}+tagListFromExifBufferWithTiffHeader ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.Buffer.Buffer+    {- ^ /@buffer@/: The exif buffer -}+    -> m Gst.TagList.TagList+    {- ^ __Returns:__ The taglist -}+tagListFromExifBufferWithTiffHeader buffer = liftIO $ do+    buffer' <- unsafeManagedPtrGetPtr buffer+    result <- gst_tag_list_from_exif_buffer_with_tiff_header buffer'+    checkUnexpectedReturnNULL "tagListFromExifBufferWithTiffHeader" result+    result' <- (wrapBoxed Gst.TagList.TagList) result+    touchManagedPtr buffer+    return result'+++-- function gst_tag_list_from_exif_buffer+-- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The exif buffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "byte_order", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "byte order of the data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "base_offset", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Offset from the tiff header to this buffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TagList"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_from_exif_buffer" gst_tag_list_from_exif_buffer :: +    Ptr Gst.Buffer.Buffer ->                -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"})+    Int32 ->                                -- byte_order : TBasicType TInt+    Word32 ->                               -- base_offset : TBasicType TUInt32+    IO (Ptr Gst.TagList.TagList)++{- |+Parses the IFD and IFD tags data contained in the buffer and puts it+on a taglist. The base_offset is used to subtract from the offset in+the tag entries and be able to get the offset relative to the buffer+start+-}+tagListFromExifBuffer ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.Buffer.Buffer+    {- ^ /@buffer@/: The exif buffer -}+    -> Int32+    {- ^ /@byteOrder@/: byte order of the data -}+    -> Word32+    {- ^ /@baseOffset@/: Offset from the tiff header to this buffer -}+    -> m Gst.TagList.TagList+    {- ^ __Returns:__ The parsed taglist -}+tagListFromExifBuffer buffer byteOrder baseOffset = liftIO $ do+    buffer' <- unsafeManagedPtrGetPtr buffer+    result <- gst_tag_list_from_exif_buffer buffer' byteOrder baseOffset+    checkUnexpectedReturnNULL "tagListFromExifBuffer" result+    result' <- (wrapBoxed Gst.TagList.TagList) result+    touchManagedPtr buffer+    return result'+++-- function gst_tag_list_add_id3_image+-- Args : [Arg {argCName = "tag_list", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a tag list", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "image_data", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the (encoded) image", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "image_data_len", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of the encoded image data at @image_data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id3_picture_type", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "picture type as per the ID3 (v2.4.0) specification for\n   the APIC frame (0 = unknown/other)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : [Arg {argCName = "image_data_len", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of the encoded image data at @image_data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- returnType : Just (TBasicType TBoolean)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_list_add_id3_image" gst_tag_list_add_id3_image :: +    Ptr Gst.TagList.TagList ->              -- tag_list : TInterface (Name {namespace = "Gst", name = "TagList"})+    Ptr Word8 ->                            -- image_data : TCArray False (-1) 2 (TBasicType TUInt8)+    Word32 ->                               -- image_data_len : TBasicType TUInt+    Word32 ->                               -- id3_picture_type : TBasicType TUInt+    IO CInt++{- |+Adds an image from an ID3 APIC frame (or similar, such as used in FLAC)+to the given tag list. Also see 'GI.GstTag.Functions.tagImageDataToImageSample' for+more information on image tags in GStreamer.+-}+tagListAddId3Image ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.TagList.TagList+    {- ^ /@tagList@/: a tag list -}+    -> ByteString+    {- ^ /@imageData@/: the (encoded) image -}+    -> Word32+    {- ^ /@id3PictureType@/: picture type as per the ID3 (v2.4.0) specification for+   the APIC frame (0 = unknown\/other) -}+    -> m Bool+    {- ^ __Returns:__ 'True' if the image was processed, otherwise 'False' -}+tagListAddId3Image tagList imageData id3PictureType = liftIO $ do+    let imageDataLen = fromIntegral $ B.length imageData+    tagList' <- unsafeManagedPtrGetPtr tagList+    imageData' <- packByteString imageData+    result <- gst_tag_list_add_id3_image tagList' imageData' imageDataLen id3PictureType+    let result' = (/= 0) result+    touchManagedPtr tagList+    freeMem imageData'+    return result'+++-- function gst_tag_image_data_to_image_sample+-- Args : [Arg {argCName = "image_data", argType = TCArray False (-1) 1 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the (encoded) image", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "image_data_len", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of the encoded image data at @image_data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "image_type", argType = TInterface (Name {namespace = "GstTag", name = "TagImageType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "type of the image, or #GST_TAG_IMAGE_TYPE_UNDEFINED. Pass\n    #GST_TAG_IMAGE_TYPE_NONE if no image type should be set at all (e.g.\n    for preview images)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : [Arg {argCName = "image_data_len", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of the encoded image data at @image_data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Sample"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_image_data_to_image_sample" gst_tag_image_data_to_image_sample :: +    Ptr Word8 ->                            -- image_data : TCArray False (-1) 1 (TBasicType TUInt8)+    Word32 ->                               -- image_data_len : TBasicType TUInt+    CInt ->                                 -- image_type : TInterface (Name {namespace = "GstTag", name = "TagImageType"})+    IO (Ptr Gst.Sample.Sample)++{- |+Helper function for tag-reading plugins to create a 'GI.Gst.Structs.Sample.Sample' suitable to+add to a 'GI.Gst.Structs.TagList.TagList' as an image tag (such as 'GI.Gst.Constants.TAG_IMAGE' or+'GI.Gst.Constants.TAG_PREVIEW_IMAGE') from the encoded image data and an (optional) image+type.++Background: cover art and other images in tags are usually stored as a+blob of binary image data, often accompanied by a MIME type or some other+content type string (e.g. \'png\', \'jpeg\', \'jpg\'). Sometimes there is also an+\'image type\' to indicate what kind of image this is (e.g. front cover,+back cover, artist, etc.). The image data may also be an URI to the image+rather than the image itself.++In GStreamer, image tags are 'GI.Gst.Structs.Sample.Sample'\<!-- -->s containing the raw image+data, with the sample caps describing the content type of the image+(e.g. image\/jpeg, image\/png, text\/uri-list). The sample info may contain+an additional \'image-type\' field of @/GST_TYPE_TAG_IMAGE_TYPE/@ to describe+the type of image (front cover, back cover etc.). 'GI.Gst.Constants.TAG_PREVIEW_IMAGE'+tags should not carry an image type, their type is already indicated via+the special tag name.++This function will do various checks and typefind the encoded image+data (we can\'t trust the declared mime type).+-}+tagImageDataToImageSample ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    ByteString+    {- ^ /@imageData@/: the (encoded) image -}+    -> GstTag.Enums.TagImageType+    {- ^ /@imageType@/: type of the image, or @/GST_TAG_IMAGE_TYPE_UNDEFINED/@. Pass+    @/GST_TAG_IMAGE_TYPE_NONE/@ if no image type should be set at all (e.g.+    for preview images) -}+    -> m Gst.Sample.Sample+    {- ^ __Returns:__ a newly-allocated image sample for use in tag lists, or NULL -}+tagImageDataToImageSample imageData imageType = liftIO $ do+    let imageDataLen = fromIntegral $ B.length imageData+    imageData' <- packByteString imageData+    let imageType' = (fromIntegral . fromEnum) imageType+    result <- gst_tag_image_data_to_image_sample imageData' imageDataLen imageType'+    checkUnexpectedReturnNULL "tagImageDataToImageSample" result+    result' <- (wrapBoxed Gst.Sample.Sample) result+    freeMem imageData'+    return result'+++-- function gst_tag_id3_genre_get+-- Args : [Arg {argCName = "id", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "ID of genre to query", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_id3_genre_get" gst_tag_id3_genre_get :: +    Word32 ->                               -- id : TBasicType TUInt+    IO CString++{- |+Gets the ID3v1 genre name for a given ID.+-}+tagId3GenreGet ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Word32+    {- ^ /@id@/: ID of genre to query -}+    -> m T.Text+    {- ^ __Returns:__ the genre or NULL if no genre is associated with that ID. -}+tagId3GenreGet id = liftIO $ do+    result <- gst_tag_id3_genre_get id+    checkUnexpectedReturnNULL "tagId3GenreGet" result+    result' <- cstringToText result+    return result'+++-- function gst_tag_id3_genre_count+-- Args : []+-- Lengths : []+-- returnType : Just (TBasicType TUInt)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_id3_genre_count" gst_tag_id3_genre_count :: +    IO Word32++{- |+Gets the number of ID3v1 genres that can be identified. Winamp genres are+included.+-}+tagId3GenreCount ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    m Word32+    {- ^ __Returns:__ the number of ID3v1 genres that can be identified -}+tagId3GenreCount  = liftIO $ do+    result <- gst_tag_id3_genre_count+    return result+++-- function gst_tag_get_licenses+-- Args : []+-- Lengths : []+-- returnType : Just (TCArray True (-1) (-1) (TBasicType TUTF8))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_licenses" gst_tag_get_licenses :: +    IO (Ptr CString)++{- |+Returns a list of known license references (in form of URIs). This is+useful for UIs to build a list of available licenses for tagging purposes+(e.g. to tag an audio track appropriately in a video or audio editor, or+an image in a camera application).+-}+tagGetLicenses ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    m [T.Text]+    {- ^ __Returns:__ NULL-terminated array of license strings. Free+    with 'GI.GLib.Functions.strfreev' when no longer needed. -}+tagGetLicenses  = liftIO $ do+    result <- gst_tag_get_licenses+    checkUnexpectedReturnNULL "tagGetLicenses" result+    result' <- unpackZeroTerminatedUTF8CArray result+    mapZeroTerminatedCArray freeMem result+    freeMem result+    return result'+++-- function gst_tag_get_license_version+-- Args : [Arg {argCName = "license_ref", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a license reference string in form of a URI,\n    e.g. \"http://creativecommons.org/licenses/by-nc-nd/2.0/\"", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_license_version" gst_tag_get_license_version :: +    CString ->                              -- license_ref : TBasicType TUTF8+    IO CString++{- |+Get the version of a license.+-}+tagGetLicenseVersion ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@licenseRef@/: a license reference string in form of a URI,+    e.g. \"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/\" -}+    -> m T.Text+    {- ^ __Returns:__ the version of the license, or NULL if the license is not known or+   has no version -}+tagGetLicenseVersion licenseRef = liftIO $ do+    licenseRef' <- textToCString licenseRef+    result <- gst_tag_get_license_version licenseRef'+    checkUnexpectedReturnNULL "tagGetLicenseVersion" result+    result' <- cstringToText result+    freeMem licenseRef'+    return result'+++-- function gst_tag_get_license_title+-- Args : [Arg {argCName = "license_ref", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a license reference string in form of a URI,\n    e.g. \"http://creativecommons.org/licenses/by-nc-nd/2.0/\"", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_license_title" gst_tag_get_license_title :: +    CString ->                              -- license_ref : TBasicType TUTF8+    IO CString++{- |+Get the title of a license, which is a short translated description+of the license\'s features (generally not very pretty though).+-}+tagGetLicenseTitle ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@licenseRef@/: a license reference string in form of a URI,+    e.g. \"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/\" -}+    -> m T.Text+    {- ^ __Returns:__ the title of the license, or NULL if the license is unknown or+   no title is available. -}+tagGetLicenseTitle licenseRef = liftIO $ do+    licenseRef' <- textToCString licenseRef+    result <- gst_tag_get_license_title licenseRef'+    checkUnexpectedReturnNULL "tagGetLicenseTitle" result+    result' <- cstringToText result+    freeMem licenseRef'+    return result'+++-- function gst_tag_get_license_nick+-- Args : [Arg {argCName = "license_ref", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a license reference string in form of a URI,\n    e.g. \"http://creativecommons.org/licenses/by-nc-nd/2.0/\"", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_license_nick" gst_tag_get_license_nick :: +    CString ->                              -- license_ref : TBasicType TUTF8+    IO CString++{- |+Get the nick name of a license, which is a short (untranslated) string+such as e.g. \"CC BY-NC-ND 2.0 UK\".+-}+tagGetLicenseNick ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@licenseRef@/: a license reference string in form of a URI,+    e.g. \"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/\" -}+    -> m T.Text+    {- ^ __Returns:__ the nick name of the license, or NULL if the license is unknown -}+tagGetLicenseNick licenseRef = liftIO $ do+    licenseRef' <- textToCString licenseRef+    result <- gst_tag_get_license_nick licenseRef'+    checkUnexpectedReturnNULL "tagGetLicenseNick" result+    result' <- cstringToText result+    freeMem licenseRef'+    return result'+++-- function gst_tag_get_license_jurisdiction+-- Args : [Arg {argCName = "license_ref", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a license reference string in form of a URI,\n    e.g. \"http://creativecommons.org/licenses/by-nc-nd/2.0/\"", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_license_jurisdiction" gst_tag_get_license_jurisdiction :: +    CString ->                              -- license_ref : TBasicType TUTF8+    IO CString++{- |+Get the jurisdiction code of a license. This is usually a two-letter+ISO 3166-1 alpha-2 code, but there is also the special case of Scotland,+for which no code exists and which is thus represented as \"scotland\".++Known jurisdictions: ar, at, au, be, bg, br, ca, ch, cl, cn, co, de,+dk, es, fi, fr, hr, hu, il, in, it, jp, kr, mk, mt, mx, my, nl, pe, pl,+pt, scotland, se, si, tw, uk, us, za.+-}+tagGetLicenseJurisdiction ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@licenseRef@/: a license reference string in form of a URI,+    e.g. \"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/\" -}+    -> m T.Text+    {- ^ __Returns:__ the jurisdiction code of the license, or NULL if the license is+   unknown or is not specific to a particular jurisdiction. -}+tagGetLicenseJurisdiction licenseRef = liftIO $ do+    licenseRef' <- textToCString licenseRef+    result <- gst_tag_get_license_jurisdiction licenseRef'+    checkUnexpectedReturnNULL "tagGetLicenseJurisdiction" result+    result' <- cstringToText result+    freeMem licenseRef'+    return result'+++-- function gst_tag_get_license_flags+-- Args : [Arg {argCName = "license_ref", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a license reference string in form of a URI,\n    e.g. \"http://creativecommons.org/licenses/by-nc-nd/2.0/\"", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "GstTag", name = "TagLicenseFlags"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_license_flags" gst_tag_get_license_flags :: +    CString ->                              -- license_ref : TBasicType TUTF8+    IO CUInt++{- |+Get the flags of a license, which describe most of the features of+a license in their most general form.+-}+tagGetLicenseFlags ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@licenseRef@/: a license reference string in form of a URI,+    e.g. \"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/\" -}+    -> m [GstTag.Flags.TagLicenseFlags]+    {- ^ __Returns:__ the flags of the license, or 0 if the license is unknown -}+tagGetLicenseFlags licenseRef = liftIO $ do+    licenseRef' <- textToCString licenseRef+    result <- gst_tag_get_license_flags licenseRef'+    let result' = wordToGFlags result+    freeMem licenseRef'+    return result'+++-- function gst_tag_get_license_description+-- Args : [Arg {argCName = "license_ref", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a license reference string in form of a URI,\n    e.g. \"http://creativecommons.org/licenses/by-nc-nd/2.0/\"", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_license_description" gst_tag_get_license_description :: +    CString ->                              -- license_ref : TBasicType TUTF8+    IO CString++{- |+Get the description of a license, which is a translated description+of the license\'s main features.+-}+tagGetLicenseDescription ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@licenseRef@/: a license reference string in form of a URI,+    e.g. \"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/\" -}+    -> m T.Text+    {- ^ __Returns:__ the description of the license, or NULL if the license is unknown+   or a description is not available. -}+tagGetLicenseDescription licenseRef = liftIO $ do+    licenseRef' <- textToCString licenseRef+    result <- gst_tag_get_license_description licenseRef'+    checkUnexpectedReturnNULL "tagGetLicenseDescription" result+    result' <- cstringToText result+    freeMem licenseRef'+    return result'+++-- function gst_tag_get_language_name+-- Args : [Arg {argCName = "language_code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "two or three-letter ISO-639 language code", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_language_name" gst_tag_get_language_name :: +    CString ->                              -- language_code : TBasicType TUTF8+    IO CString++{- |+Returns the name of the language given an ISO-639 language code as+found in a GST_TAG_LANGUAGE_CODE tag. The name will be translated+according to the current locale (if the library was built against the+iso-codes package, otherwise the English name will be returned).++Language codes are case-sensitive and expected to be lower case.+-}+tagGetLanguageName ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@languageCode@/: two or three-letter ISO-639 language code -}+    -> m T.Text+    {- ^ __Returns:__ language name in UTF-8 format, or NULL if /@languageCode@/ could+    not be mapped to a language name. The returned string must not be+    modified and does not need to freed; it will stay valid until the+    application is terminated. -}+tagGetLanguageName languageCode = liftIO $ do+    languageCode' <- textToCString languageCode+    result <- gst_tag_get_language_name languageCode'+    checkUnexpectedReturnNULL "tagGetLanguageName" result+    result' <- cstringToText result+    freeMem languageCode'+    return result'+++-- function gst_tag_get_language_codes+-- Args : []+-- Lengths : []+-- returnType : Just (TCArray True (-1) (-1) (TBasicType TUTF8))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_language_codes" gst_tag_get_language_codes :: +    IO (Ptr CString)++{- |+Returns a list of known language codes (in form of two-letter ISO-639-1+codes). This is useful for UIs to build a list of available languages for+tagging purposes (e.g. to tag an audio track appropriately in a video or+audio editor).+-}+tagGetLanguageCodes ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    m [T.Text]+    {- ^ __Returns:__ NULL-terminated string array with two-letter+    language codes. Free with 'GI.GLib.Functions.strfreev' when no longer needed. -}+tagGetLanguageCodes  = liftIO $ do+    result <- gst_tag_get_language_codes+    checkUnexpectedReturnNULL "tagGetLanguageCodes" result+    result' <- unpackZeroTerminatedUTF8CArray result+    mapZeroTerminatedCArray freeMem result+    freeMem result+    return result'+++-- function gst_tag_get_language_code_iso_639_2T+-- Args : [Arg {argCName = "lang_code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "ISO-639 language code (e.g. \"deu\" or \"ger\" or \"de\")", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_language_code_iso_639_2T" gst_tag_get_language_code_iso_639_2T :: +    CString ->                              -- lang_code : TBasicType TUTF8+    IO CString++{- |+Returns three-letter ISO-639-2 \"terminological\" language code given a+two-letter ISO-639-1 language code or a three-letter ISO-639-2 language+code (both are accepted for convenience).++The \"terminological\" code is derived from the local name of the language+(e.g. \"deu\" for German instead of \"ger\"). In most scenarios, the+\"terminological\" codes are prefered over the \"bibliographic\" ones.++Language codes are case-sensitive and expected to be lower case.+-}+tagGetLanguageCodeIso6392T ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@langCode@/: ISO-639 language code (e.g. \"deu\" or \"ger\" or \"de\") -}+    -> m T.Text+    {- ^ __Returns:__ three-letter ISO-639-2 language code string that maps to /@langCode@/,+    or NULL if no mapping is known. The returned string must not be+    modified or freed. -}+tagGetLanguageCodeIso6392T langCode = liftIO $ do+    langCode' <- textToCString langCode+    result <- gst_tag_get_language_code_iso_639_2T langCode'+    checkUnexpectedReturnNULL "tagGetLanguageCodeIso6392T" result+    result' <- cstringToText result+    freeMem langCode'+    return result'+++-- function gst_tag_get_language_code_iso_639_2B+-- Args : [Arg {argCName = "lang_code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "ISO-639 language code (e.g. \"deu\" or \"ger\" or \"de\")", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_language_code_iso_639_2B" gst_tag_get_language_code_iso_639_2B :: +    CString ->                              -- lang_code : TBasicType TUTF8+    IO CString++{- |+Returns three-letter ISO-639-2 \"bibliographic\" language code given a+two-letter ISO-639-1 language code or a three-letter ISO-639-2 language+code (both are accepted for convenience).++The \"bibliographic\" code is derived from the English name of the language+(e.g. \"ger\" for German instead of \"de\" or \"deu\"). In most scenarios, the+\"terminological\" codes are prefered.++Language codes are case-sensitive and expected to be lower case.+-}+tagGetLanguageCodeIso6392B ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@langCode@/: ISO-639 language code (e.g. \"deu\" or \"ger\" or \"de\") -}+    -> m T.Text+    {- ^ __Returns:__ three-letter ISO-639-2 language code string that maps to /@langCode@/,+    or NULL if no mapping is known. The returned string must not be+    modified or freed. -}+tagGetLanguageCodeIso6392B langCode = liftIO $ do+    langCode' <- textToCString langCode+    result <- gst_tag_get_language_code_iso_639_2B langCode'+    checkUnexpectedReturnNULL "tagGetLanguageCodeIso6392B" result+    result' <- cstringToText result+    freeMem langCode'+    return result'+++-- function gst_tag_get_language_code_iso_639_1+-- Args : [Arg {argCName = "lang_code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "ISO-639 language code (e.g. \"deu\" or \"ger\" or \"de\")", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_language_code_iso_639_1" gst_tag_get_language_code_iso_639_1 :: +    CString ->                              -- lang_code : TBasicType TUTF8+    IO CString++{- |+Returns two-letter ISO-639-1 language code given a three-letter ISO-639-2+language code or two-letter ISO-639-1 language code (both are accepted for+convenience).++Language codes are case-sensitive and expected to be lower case.+-}+tagGetLanguageCodeIso6391 ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@langCode@/: ISO-639 language code (e.g. \"deu\" or \"ger\" or \"de\") -}+    -> m T.Text+    {- ^ __Returns:__ two-letter ISO-639-1 language code string that maps to /@langCode@/,+    or NULL if no mapping is known. The returned string must not be+    modified or freed. -}+tagGetLanguageCodeIso6391 langCode = liftIO $ do+    langCode' <- textToCString langCode+    result <- gst_tag_get_language_code_iso_639_1 langCode'+    checkUnexpectedReturnNULL "tagGetLanguageCodeIso6391" result+    result' <- cstringToText result+    freeMem langCode'+    return result'+++-- function gst_tag_get_id3v2_tag_size+-- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "buffer holding ID3v2 tag (or at least the start of one)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUInt)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_get_id3v2_tag_size" gst_tag_get_id3v2_tag_size :: +    Ptr Gst.Buffer.Buffer ->                -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"})+    IO Word32++{- |+Determines size of an ID3v2 tag on buffer containing at least ID3v2 header,+i.e. at least 'GI.GstTag.Constants.TAG_ID3V2_HEADER_SIZE' (10) bytes;+-}+tagGetId3v2TagSize ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    Gst.Buffer.Buffer+    {- ^ /@buffer@/: buffer holding ID3v2 tag (or at least the start of one) -}+    -> m Word32+    {- ^ __Returns:__ Size of tag, or 0 if header is invalid or too small. -}+tagGetId3v2TagSize buffer = liftIO $ do+    buffer' <- unsafeManagedPtrGetPtr buffer+    result <- gst_tag_get_id3v2_tag_size buffer'+    touchManagedPtr buffer+    return result+++-- function gst_tag_from_vorbis_tag+-- Args : [Arg {argCName = "vorbis_tag", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "vorbiscomment tag to convert to GStreamer tag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_from_vorbis_tag" gst_tag_from_vorbis_tag :: +    CString ->                              -- vorbis_tag : TBasicType TUTF8+    IO CString++{- |+Looks up the GStreamer tag for a vorbiscomment tag.+-}+tagFromVorbisTag ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@vorbisTag@/: vorbiscomment tag to convert to GStreamer tag -}+    -> m T.Text+    {- ^ __Returns:__ The corresponding GStreamer tag or NULL if none exists. -}+tagFromVorbisTag vorbisTag = liftIO $ do+    vorbisTag' <- textToCString vorbisTag+    result <- gst_tag_from_vorbis_tag vorbisTag'+    checkUnexpectedReturnNULL "tagFromVorbisTag" result+    result' <- cstringToText result+    freeMem vorbisTag'+    return result'+++-- function gst_tag_from_id3_user_tag+-- Args : [Arg {argCName = "type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the type of ID3v2 user tag (e.g. \"TXXX\" or \"UDIF\")", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "id3_user_tag", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "ID3v2 user tag to convert to GStreamer tag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_from_id3_user_tag" gst_tag_from_id3_user_tag :: +    CString ->                              -- type : TBasicType TUTF8+    CString ->                              -- id3_user_tag : TBasicType TUTF8+    IO CString++{- |+Looks up the GStreamer tag for an ID3v2 user tag (e.g. description in+TXXX frame or owner in UFID frame).+-}+tagFromId3UserTag ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@type@/: the type of ID3v2 user tag (e.g. \"TXXX\" or \"UDIF\") -}+    -> T.Text+    {- ^ /@id3UserTag@/: ID3v2 user tag to convert to GStreamer tag -}+    -> m T.Text+    {- ^ __Returns:__ The corresponding GStreamer tag or NULL if none exists. -}+tagFromId3UserTag type_ id3UserTag = liftIO $ do+    type_' <- textToCString type_+    id3UserTag' <- textToCString id3UserTag+    result <- gst_tag_from_id3_user_tag type_' id3UserTag'+    checkUnexpectedReturnNULL "tagFromId3UserTag" result+    result' <- cstringToText result+    freeMem type_'+    freeMem id3UserTag'+    return result'+++-- function gst_tag_from_id3_tag+-- Args : [Arg {argCName = "id3_tag", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "ID3v2 tag to convert to GStreamer tag", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_from_id3_tag" gst_tag_from_id3_tag :: +    CString ->                              -- id3_tag : TBasicType TUTF8+    IO CString++{- |+Looks up the GStreamer tag for a ID3v2 tag.+-}+tagFromId3Tag ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@id3Tag@/: ID3v2 tag to convert to GStreamer tag -}+    -> m T.Text+    {- ^ __Returns:__ The corresponding GStreamer tag or NULL if none exists. -}+tagFromId3Tag id3Tag = liftIO $ do+    id3Tag' <- textToCString id3Tag+    result <- gst_tag_from_id3_tag id3Tag'+    checkUnexpectedReturnNULL "tagFromId3Tag" result+    result' <- cstringToText result+    freeMem id3Tag'+    return result'+++-- function gst_tag_freeform_string_to_utf8+-- Args : [Arg {argCName = "data", argType = TCArray False (-1) 1 (TBasicType TInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "string data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of string data, or -1 if the string is NUL-terminated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "env_vars", argType = TCArray True (-1) (-1) (TBasicType TUTF8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "\n   a NULL-terminated string array of environment variable names, or NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : [Arg {argCName = "size", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "length of string data, or -1 if the string is NUL-terminated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- returnType : Just (TBasicType TUTF8)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_freeform_string_to_utf8" gst_tag_freeform_string_to_utf8 :: +    Ptr Int8 ->                             -- data : TCArray False (-1) 1 (TBasicType TInt8)+    Int32 ->                                -- size : TBasicType TInt+    Ptr CString ->                          -- env_vars : TCArray True (-1) (-1) (TBasicType TUTF8)+    IO CString++{- |+Convenience function to read a string with unknown character encoding. If+the string is already in UTF-8 encoding, it will be returned right away.+If not it tries to detect byte-order-mark for UTF-16\/32 cases and use that.+Otherwise, the environment will be searched for a number of environment+variables (whose names are specified in the NULL-terminated string array+/@envVars@/) containing a list of character encodings to try\/use. If none+are specified, the current locale will be tried. If that also doesn\'t work,+WINDOWS-1252\/ISO-8859-1 is assumed (which will almost always succeed).+-}+tagFreeformStringToUtf8 ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    [Int8]+    {- ^ /@data@/: string data -}+    -> [T.Text]+    {- ^ /@envVars@/: +   a NULL-terminated string array of environment variable names, or NULL -}+    -> m T.Text+    {- ^ __Returns:__ a newly-allocated string in UTF-8 encoding, or NULL -}+tagFreeformStringToUtf8 data_ envVars = liftIO $ do+    let size = fromIntegral $ length data_+    data_' <- packStorableArray data_+    envVars' <- packZeroTerminatedUTF8CArray envVars+    result <- gst_tag_freeform_string_to_utf8 data_' size envVars'+    checkUnexpectedReturnNULL "tagFreeformStringToUtf8" result+    result' <- cstringToText result+    freeMem result+    freeMem data_'+    mapZeroTerminatedCArray freeMem envVars'+    freeMem envVars'+    return result'+++-- function gst_tag_check_language_code+-- Args : [Arg {argCName = "lang_code", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "ISO-639 language code (e.g. \"deu\" or \"ger\" or \"de\")", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TBoolean)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_check_language_code" gst_tag_check_language_code :: +    CString ->                              -- lang_code : TBasicType TUTF8+    IO CInt++{- |+Check if a given string contains a known ISO 639 language code.++This is useful in situations where it\'s not clear whether a given+string is a language code (which should be put into a 'GI.Gst.Constants.TAG_LANGUAGE_CODE'+tag) or a free-form language name descriptor (which should be put into a+'GI.Gst.Constants.TAG_LANGUAGE_NAME' tag instead).+-}+tagCheckLanguageCode ::+    (B.CallStack.HasCallStack, MonadIO m) =>+    T.Text+    {- ^ /@langCode@/: ISO-639 language code (e.g. \"deu\" or \"ger\" or \"de\") -}+    -> m Bool+    {- ^ __Returns:__ TRUE if the two- or three-letter language code in /@langCode@/+    is a valid ISO-639 language code. -}+tagCheckLanguageCode langCode = liftIO $ do+    langCode' <- textToCString langCode+    result <- gst_tag_check_language_code langCode'+    let result' = (/= 0) result+    freeMem langCode'+    return result'+++
+ GI/GstTag/Interfaces.hs view
@@ -0,0 +1,41 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Interfaces+    (     module GI.GstTag.Interfaces.TagXmpWriter,+++    ) where++import GI.GstTag.Interfaces.TagXmpWriter++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.ManagedPtr as B.ManagedPtr+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.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+++
+ GI/GstTag/Interfaces/TagXmpWriter.hs view
@@ -0,0 +1,499 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)++This interface is implemented by elements that are able to do XMP serialization. Examples for+such elements are @/jifmux/@ and @/qtmux/@.++Applications can use this interface to configure which XMP schemas should be used when serializing+tags into XMP. Schemas are represented by their names, a full list of the supported schemas can be+obtained from 'GI.GstTag.Functions.tagXmpListSchemas'. By default, all schemas are used.+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Interfaces.TagXmpWriter+    ( ++-- * Exported types+    TagXmpWriter(..)                        ,+    noTagXmpWriter                          ,+    IsTagXmpWriter                          ,+    toTagXmpWriter                          ,+++ -- * Methods+-- ** addAllSchemas #method:addAllSchemas#++#if ENABLE_OVERLOADING+    TagXmpWriterAddAllSchemasMethodInfo     ,+#endif+    tagXmpWriterAddAllSchemas               ,+++-- ** addSchema #method:addSchema#++#if ENABLE_OVERLOADING+    TagXmpWriterAddSchemaMethodInfo         ,+#endif+    tagXmpWriterAddSchema                   ,+++-- ** hasSchema #method:hasSchema#++#if ENABLE_OVERLOADING+    TagXmpWriterHasSchemaMethodInfo         ,+#endif+    tagXmpWriterHasSchema                   ,+++-- ** removeAllSchemas #method:removeAllSchemas#++#if ENABLE_OVERLOADING+    TagXmpWriterRemoveAllSchemasMethodInfo  ,+#endif+    tagXmpWriterRemoveAllSchemas            ,+++-- ** removeSchema #method:removeSchema#++#if ENABLE_OVERLOADING+    TagXmpWriterRemoveSchemaMethodInfo      ,+#endif+    tagXmpWriterRemoveSchema                ,+++-- ** tagListToXmpBuffer #method:tagListToXmpBuffer#++#if ENABLE_OVERLOADING+    TagXmpWriterTagListToXmpBufferMethodInfo,+#endif+    tagXmpWriterTagListToXmpBuffer          ,+++++    ) 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.ManagedPtr as B.ManagedPtr+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.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 GI.GObject.Objects.Object as GObject.Object+import qualified GI.Gst.Objects.Element as Gst.Element+import qualified GI.Gst.Objects.Object as Gst.Object+import qualified GI.Gst.Structs.Buffer as Gst.Buffer+import qualified GI.Gst.Structs.TagList as Gst.TagList++-- interface TagXmpWriter +-- | Memory-managed wrapper type.+newtype TagXmpWriter = TagXmpWriter (ManagedPtr TagXmpWriter)+-- | A convenience alias for `Nothing` :: `Maybe` `TagXmpWriter`.+noTagXmpWriter :: Maybe TagXmpWriter+noTagXmpWriter = Nothing++#if ENABLE_OVERLOADING+type instance O.SignalList TagXmpWriter = TagXmpWriterSignalList+type TagXmpWriterSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])++#endif++foreign import ccall "gst_tag_xmp_writer_get_type"+    c_gst_tag_xmp_writer_get_type :: IO GType++instance GObject TagXmpWriter where+    gobjectType = c_gst_tag_xmp_writer_get_type+    ++-- | Type class for types which can be safely cast to `TagXmpWriter`, for instance with `toTagXmpWriter`.+class (GObject o, O.IsDescendantOf TagXmpWriter o) => IsTagXmpWriter o+instance (GObject o, O.IsDescendantOf TagXmpWriter o) => IsTagXmpWriter o++instance O.HasParentTypes TagXmpWriter+type instance O.ParentTypes TagXmpWriter = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]++-- | Cast to `TagXmpWriter`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.+toTagXmpWriter :: (MonadIO m, IsTagXmpWriter o) => o -> m TagXmpWriter+toTagXmpWriter = liftIO . unsafeCastTo TagXmpWriter++#if ENABLE_OVERLOADING+instance O.HasAttributeList TagXmpWriter+type instance O.AttributeList TagXmpWriter = TagXmpWriterAttributeList+type TagXmpWriterAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, *)])+#endif++#if ENABLE_OVERLOADING+#endif++#if ENABLE_OVERLOADING+type family ResolveTagXmpWriterMethod (t :: Symbol) (o :: *) :: * where+    ResolveTagXmpWriterMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo+    ResolveTagXmpWriterMethod "addAllSchemas" o = TagXmpWriterAddAllSchemasMethodInfo+    ResolveTagXmpWriterMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo+    ResolveTagXmpWriterMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo+    ResolveTagXmpWriterMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo+    ResolveTagXmpWriterMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo+    ResolveTagXmpWriterMethod "addSchema" o = TagXmpWriterAddSchemaMethodInfo+    ResolveTagXmpWriterMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo+    ResolveTagXmpWriterMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo+    ResolveTagXmpWriterMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo+    ResolveTagXmpWriterMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo+    ResolveTagXmpWriterMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo+    ResolveTagXmpWriterMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo+    ResolveTagXmpWriterMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo+    ResolveTagXmpWriterMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo+    ResolveTagXmpWriterMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo+    ResolveTagXmpWriterMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo+    ResolveTagXmpWriterMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo+    ResolveTagXmpWriterMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo+    ResolveTagXmpWriterMethod "getv" o = GObject.Object.ObjectGetvMethodInfo+    ResolveTagXmpWriterMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo+    ResolveTagXmpWriterMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo+    ResolveTagXmpWriterMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo+    ResolveTagXmpWriterMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo+    ResolveTagXmpWriterMethod "hasSchema" o = TagXmpWriterHasSchemaMethodInfo+    ResolveTagXmpWriterMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo+    ResolveTagXmpWriterMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo+    ResolveTagXmpWriterMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo+    ResolveTagXmpWriterMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo+    ResolveTagXmpWriterMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo+    ResolveTagXmpWriterMethod "link" o = Gst.Element.ElementLinkMethodInfo+    ResolveTagXmpWriterMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo+    ResolveTagXmpWriterMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo+    ResolveTagXmpWriterMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo+    ResolveTagXmpWriterMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo+    ResolveTagXmpWriterMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo+    ResolveTagXmpWriterMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo+    ResolveTagXmpWriterMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo+    ResolveTagXmpWriterMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo+    ResolveTagXmpWriterMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo+    ResolveTagXmpWriterMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo+    ResolveTagXmpWriterMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo+    ResolveTagXmpWriterMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo+    ResolveTagXmpWriterMethod "query" o = Gst.Element.ElementQueryMethodInfo+    ResolveTagXmpWriterMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo+    ResolveTagXmpWriterMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo+    ResolveTagXmpWriterMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo+    ResolveTagXmpWriterMethod "ref" o = Gst.Object.ObjectRefMethodInfo+    ResolveTagXmpWriterMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo+    ResolveTagXmpWriterMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo+    ResolveTagXmpWriterMethod "removeAllSchemas" o = TagXmpWriterRemoveAllSchemasMethodInfo+    ResolveTagXmpWriterMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo+    ResolveTagXmpWriterMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo+    ResolveTagXmpWriterMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo+    ResolveTagXmpWriterMethod "removeSchema" o = TagXmpWriterRemoveSchemaMethodInfo+    ResolveTagXmpWriterMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo+    ResolveTagXmpWriterMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo+    ResolveTagXmpWriterMethod "seek" o = Gst.Element.ElementSeekMethodInfo+    ResolveTagXmpWriterMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo+    ResolveTagXmpWriterMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo+    ResolveTagXmpWriterMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo+    ResolveTagXmpWriterMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo+    ResolveTagXmpWriterMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo+    ResolveTagXmpWriterMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo+    ResolveTagXmpWriterMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo+    ResolveTagXmpWriterMethod "tagListToXmpBuffer" o = TagXmpWriterTagListToXmpBufferMethodInfo+    ResolveTagXmpWriterMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo+    ResolveTagXmpWriterMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo+    ResolveTagXmpWriterMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo+    ResolveTagXmpWriterMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo+    ResolveTagXmpWriterMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo+    ResolveTagXmpWriterMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo+    ResolveTagXmpWriterMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo+    ResolveTagXmpWriterMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo+    ResolveTagXmpWriterMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo+    ResolveTagXmpWriterMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo+    ResolveTagXmpWriterMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo+    ResolveTagXmpWriterMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo+    ResolveTagXmpWriterMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo+    ResolveTagXmpWriterMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo+    ResolveTagXmpWriterMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo+    ResolveTagXmpWriterMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo+    ResolveTagXmpWriterMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo+    ResolveTagXmpWriterMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo+    ResolveTagXmpWriterMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo+    ResolveTagXmpWriterMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo+    ResolveTagXmpWriterMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo+    ResolveTagXmpWriterMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo+    ResolveTagXmpWriterMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo+    ResolveTagXmpWriterMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo+    ResolveTagXmpWriterMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo+    ResolveTagXmpWriterMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo+    ResolveTagXmpWriterMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo+    ResolveTagXmpWriterMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo+    ResolveTagXmpWriterMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo+    ResolveTagXmpWriterMethod "getState" o = Gst.Element.ElementGetStateMethodInfo+    ResolveTagXmpWriterMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo+    ResolveTagXmpWriterMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo+    ResolveTagXmpWriterMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo+    ResolveTagXmpWriterMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo+    ResolveTagXmpWriterMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo+    ResolveTagXmpWriterMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo+    ResolveTagXmpWriterMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo+    ResolveTagXmpWriterMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo+    ResolveTagXmpWriterMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo+    ResolveTagXmpWriterMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo+    ResolveTagXmpWriterMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo+    ResolveTagXmpWriterMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo+    ResolveTagXmpWriterMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo+    ResolveTagXmpWriterMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo+    ResolveTagXmpWriterMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo+    ResolveTagXmpWriterMethod "setState" o = Gst.Element.ElementSetStateMethodInfo+    ResolveTagXmpWriterMethod l o = O.MethodResolutionFailed l o++instance (info ~ ResolveTagXmpWriterMethod t TagXmpWriter, O.MethodInfo info TagXmpWriter p) => OL.IsLabel t (TagXmpWriter -> p) where+#if MIN_VERSION_base(4,10,0)+    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)+#else+    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)+#endif++#endif++-- method TagXmpWriter::add_all_schemas+-- method type : OrdinaryMethod+-- Args : [Arg {argCName = "config", argType = TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstTagXmpWriter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Nothing+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_xmp_writer_add_all_schemas" gst_tag_xmp_writer_add_all_schemas :: +    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})+    IO ()++{- |+Adds all available XMP schemas to the configuration. Meaning that+all will be used.+-}+tagXmpWriterAddAllSchemas ::+    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>+    a+    {- ^ /@config@/: a 'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter' -}+    -> m ()+tagXmpWriterAddAllSchemas config = liftIO $ do+    config' <- unsafeManagedPtrCastPtr config+    gst_tag_xmp_writer_add_all_schemas config'+    touchManagedPtr config+    return ()++#if ENABLE_OVERLOADING+data TagXmpWriterAddAllSchemasMethodInfo+instance (signature ~ (m ()), MonadIO m, IsTagXmpWriter a) => O.MethodInfo TagXmpWriterAddAllSchemasMethodInfo a signature where+    overloadedMethod _ = tagXmpWriterAddAllSchemas++#endif++-- method TagXmpWriter::add_schema+-- method type : OrdinaryMethod+-- Args : [Arg {argCName = "config", argType = TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstTagXmpWriter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "schema", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the schema to be added", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Nothing+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_xmp_writer_add_schema" gst_tag_xmp_writer_add_schema :: +    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})+    CString ->                              -- schema : TBasicType TUTF8+    IO ()++{- |+Adds /@schema@/ to the list schemas+-}+tagXmpWriterAddSchema ::+    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>+    a+    {- ^ /@config@/: a 'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter' -}+    -> T.Text+    {- ^ /@schema@/: the schema to be added -}+    -> m ()+tagXmpWriterAddSchema config schema = liftIO $ do+    config' <- unsafeManagedPtrCastPtr config+    schema' <- textToCString schema+    gst_tag_xmp_writer_add_schema config' schema'+    touchManagedPtr config+    freeMem schema'+    return ()++#if ENABLE_OVERLOADING+data TagXmpWriterAddSchemaMethodInfo+instance (signature ~ (T.Text -> m ()), MonadIO m, IsTagXmpWriter a) => O.MethodInfo TagXmpWriterAddSchemaMethodInfo a signature where+    overloadedMethod _ = tagXmpWriterAddSchema++#endif++-- method TagXmpWriter::has_schema+-- method type : OrdinaryMethod+-- Args : [Arg {argCName = "config", argType = TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstTagXmpWriter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "schema", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the schema to test", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TBasicType TBoolean)+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_xmp_writer_has_schema" gst_tag_xmp_writer_has_schema :: +    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})+    CString ->                              -- schema : TBasicType TUTF8+    IO CInt++{- |+Checks if /@schema@/ is going to be used+-}+tagXmpWriterHasSchema ::+    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>+    a+    {- ^ /@config@/: a 'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter' -}+    -> T.Text+    {- ^ /@schema@/: the schema to test -}+    -> m Bool+    {- ^ __Returns:__ 'True' if it is going to be used -}+tagXmpWriterHasSchema config schema = liftIO $ do+    config' <- unsafeManagedPtrCastPtr config+    schema' <- textToCString schema+    result <- gst_tag_xmp_writer_has_schema config' schema'+    let result' = (/= 0) result+    touchManagedPtr config+    freeMem schema'+    return result'++#if ENABLE_OVERLOADING+data TagXmpWriterHasSchemaMethodInfo+instance (signature ~ (T.Text -> m Bool), MonadIO m, IsTagXmpWriter a) => O.MethodInfo TagXmpWriterHasSchemaMethodInfo a signature where+    overloadedMethod _ = tagXmpWriterHasSchema++#endif++-- method TagXmpWriter::remove_all_schemas+-- method type : OrdinaryMethod+-- Args : [Arg {argCName = "config", argType = TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstTagXmpWriter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Nothing+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_xmp_writer_remove_all_schemas" gst_tag_xmp_writer_remove_all_schemas :: +    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})+    IO ()++{- |+Removes all schemas from the list of schemas to use. Meaning that no+XMP will be generated.+-}+tagXmpWriterRemoveAllSchemas ::+    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>+    a+    {- ^ /@config@/: a 'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter' -}+    -> m ()+tagXmpWriterRemoveAllSchemas config = liftIO $ do+    config' <- unsafeManagedPtrCastPtr config+    gst_tag_xmp_writer_remove_all_schemas config'+    touchManagedPtr config+    return ()++#if ENABLE_OVERLOADING+data TagXmpWriterRemoveAllSchemasMethodInfo+instance (signature ~ (m ()), MonadIO m, IsTagXmpWriter a) => O.MethodInfo TagXmpWriterRemoveAllSchemasMethodInfo a signature where+    overloadedMethod _ = tagXmpWriterRemoveAllSchemas++#endif++-- method TagXmpWriter::remove_schema+-- method type : OrdinaryMethod+-- Args : [Arg {argCName = "config", argType = TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstTagXmpWriter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "schema", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the schema to remove", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Nothing+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_xmp_writer_remove_schema" gst_tag_xmp_writer_remove_schema :: +    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})+    CString ->                              -- schema : TBasicType TUTF8+    IO ()++{- |+Removes a schema from the list of schemas to use. Nothing is done if+the schema wasn\'t in the list+-}+tagXmpWriterRemoveSchema ::+    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>+    a+    {- ^ /@config@/: a 'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter' -}+    -> T.Text+    {- ^ /@schema@/: the schema to remove -}+    -> m ()+tagXmpWriterRemoveSchema config schema = liftIO $ do+    config' <- unsafeManagedPtrCastPtr config+    schema' <- textToCString schema+    gst_tag_xmp_writer_remove_schema config' schema'+    touchManagedPtr config+    freeMem schema'+    return ()++#if ENABLE_OVERLOADING+data TagXmpWriterRemoveSchemaMethodInfo+instance (signature ~ (T.Text -> m ()), MonadIO m, IsTagXmpWriter a) => O.MethodInfo TagXmpWriterRemoveSchemaMethodInfo a signature where+    overloadedMethod _ = tagXmpWriterRemoveSchema++#endif++-- method TagXmpWriter::tag_list_to_xmp_buffer+-- method type : OrdinaryMethod+-- Args : [Arg {argCName = "config", argType = TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "taglist", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "read_only", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]+-- Lengths : []+-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"}))+-- throws : False+-- Skip return : False++foreign import ccall "gst_tag_xmp_writer_tag_list_to_xmp_buffer" gst_tag_xmp_writer_tag_list_to_xmp_buffer :: +    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})+    Ptr Gst.TagList.TagList ->              -- taglist : TInterface (Name {namespace = "Gst", name = "TagList"})+    CInt ->                                 -- read_only : TBasicType TBoolean+    IO (Ptr Gst.Buffer.Buffer)++{- |+/No description available in the introspection data./+-}+tagXmpWriterTagListToXmpBuffer ::+    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>+    a+    -> Gst.TagList.TagList+    -> Bool+    -> m Gst.Buffer.Buffer+tagXmpWriterTagListToXmpBuffer config taglist readOnly = liftIO $ do+    config' <- unsafeManagedPtrCastPtr config+    taglist' <- unsafeManagedPtrGetPtr taglist+    let readOnly' = (fromIntegral . fromEnum) readOnly+    result <- gst_tag_xmp_writer_tag_list_to_xmp_buffer config' taglist' readOnly'+    checkUnexpectedReturnNULL "tagXmpWriterTagListToXmpBuffer" result+    result' <- (wrapBoxed Gst.Buffer.Buffer) result+    touchManagedPtr config+    touchManagedPtr taglist+    return result'++#if ENABLE_OVERLOADING+data TagXmpWriterTagListToXmpBufferMethodInfo+instance (signature ~ (Gst.TagList.TagList -> Bool -> m Gst.Buffer.Buffer), MonadIO m, IsTagXmpWriter a) => O.MethodInfo TagXmpWriterTagListToXmpBufferMethodInfo a signature where+    overloadedMethod _ = tagXmpWriterTagListToXmpBuffer++#endif++
+ GI/GstTag/Interfaces/TagXmpWriter.hs-boot view
@@ -0,0 +1,47 @@+#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))+module GI.GstTag.Interfaces.TagXmpWriter 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.ManagedPtr as B.ManagedPtr+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.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++newtype TagXmpWriter = TagXmpWriter (ManagedPtr TagXmpWriter)+instance GObject TagXmpWriter where+class (GObject o, O.IsDescendantOf TagXmpWriter o) => IsTagXmpWriter o+instance (GObject o, O.IsDescendantOf TagXmpWriter o) => IsTagXmpWriter o+instance O.HasParentTypes TagXmpWriter+#if ENABLE_OVERLOADING+data TagXmpWriterAddAllSchemasMethodInfo+#endif+#if ENABLE_OVERLOADING+data TagXmpWriterAddSchemaMethodInfo+#endif+#if ENABLE_OVERLOADING+data TagXmpWriterHasSchemaMethodInfo+#endif+#if ENABLE_OVERLOADING+data TagXmpWriterRemoveAllSchemasMethodInfo+#endif+#if ENABLE_OVERLOADING+data TagXmpWriterRemoveSchemaMethodInfo+#endif+#if ENABLE_OVERLOADING+data TagXmpWriterTagListToXmpBufferMethodInfo+#endif
+ GI/GstTag/Objects.hs view
@@ -0,0 +1,43 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Objects+    (     module GI.GstTag.Objects.TagDemux       ,+    module GI.GstTag.Objects.TagMux         ,+++    ) where++import GI.GstTag.Objects.TagDemux+import GI.GstTag.Objects.TagMux++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.ManagedPtr as B.ManagedPtr+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.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+++
+ GI/GstTag/Objects/TagDemux.hs view
@@ -0,0 +1,236 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)++Provides a base class for demuxing tags at the beginning or end of a+stream and handles things like typefinding, querying, seeking, and+different modes of operation (chain-based, pull_range-based, and providing+downstream elements with random access if upstream supports that). The tag+is stripped from the output, and all offsets are adjusted for the tag+sizes, so that to the downstream element the stream will appear as if+there was no tag at all. Also, once the tag has been parsed, GstTagDemux+will try to determine the media type of the resulting stream and add a+source pad with the appropriate caps in order to facilitate auto-plugging.++== Deriving from GstTagDemux++Subclasses have to do four things:++ * In their base init function, they must add a pad template for the sink+   pad to the element class, describing the media type they can parse in+   the caps of the pad template.+ * In their class init function, they must override+   GST_TAG_DEMUX_CLASS(demux_klass)->identify_tag with their own identify+   function.+ * In their class init function, they must override+ GST_TAG_DEMUX_CLASS(demux_klass)->parse_tag with their own parse+ function.+ * In their class init function, they must also set+   GST_TAG_DEMUX_CLASS(demux_klass)->min_start_size and\/or+ GST_TAG_DEMUX_CLASS(demux_klass)->min_end_size to the minimum size required+ for the identify function to decide whether the stream has a supported tag+ or not. A class parsing ID3v1 tags, for example, would set min_end_size to+ 128 bytes.+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Objects.TagDemux+    ( ++-- * Exported types+    TagDemux(..)                            ,+    IsTagDemux                              ,+    toTagDemux                              ,+    noTagDemux                              ,+++    ) 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.ManagedPtr as B.ManagedPtr+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.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 GI.GObject.Objects.Object as GObject.Object+import qualified GI.Gst.Objects.Element as Gst.Element+import qualified GI.Gst.Objects.Object as Gst.Object++-- | Memory-managed wrapper type.+newtype TagDemux = TagDemux (ManagedPtr TagDemux)+foreign import ccall "gst_tag_demux_get_type"+    c_gst_tag_demux_get_type :: IO GType++instance GObject TagDemux where+    gobjectType = c_gst_tag_demux_get_type+    ++-- | Type class for types which can be safely cast to `TagDemux`, for instance with `toTagDemux`.+class (GObject o, O.IsDescendantOf TagDemux o) => IsTagDemux o+instance (GObject o, O.IsDescendantOf TagDemux o) => IsTagDemux o++instance O.HasParentTypes TagDemux+type instance O.ParentTypes TagDemux = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]++-- | Cast to `TagDemux`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.+toTagDemux :: (MonadIO m, IsTagDemux o) => o -> m TagDemux+toTagDemux = liftIO . unsafeCastTo TagDemux++-- | A convenience alias for `Nothing` :: `Maybe` `TagDemux`.+noTagDemux :: Maybe TagDemux+noTagDemux = Nothing++#if ENABLE_OVERLOADING+type family ResolveTagDemuxMethod (t :: Symbol) (o :: *) :: * where+    ResolveTagDemuxMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo+    ResolveTagDemuxMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo+    ResolveTagDemuxMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo+    ResolveTagDemuxMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo+    ResolveTagDemuxMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo+    ResolveTagDemuxMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo+    ResolveTagDemuxMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo+    ResolveTagDemuxMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo+    ResolveTagDemuxMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo+    ResolveTagDemuxMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo+    ResolveTagDemuxMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo+    ResolveTagDemuxMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo+    ResolveTagDemuxMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo+    ResolveTagDemuxMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo+    ResolveTagDemuxMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo+    ResolveTagDemuxMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo+    ResolveTagDemuxMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo+    ResolveTagDemuxMethod "getv" o = GObject.Object.ObjectGetvMethodInfo+    ResolveTagDemuxMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo+    ResolveTagDemuxMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo+    ResolveTagDemuxMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo+    ResolveTagDemuxMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo+    ResolveTagDemuxMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo+    ResolveTagDemuxMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo+    ResolveTagDemuxMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo+    ResolveTagDemuxMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo+    ResolveTagDemuxMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo+    ResolveTagDemuxMethod "link" o = Gst.Element.ElementLinkMethodInfo+    ResolveTagDemuxMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo+    ResolveTagDemuxMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo+    ResolveTagDemuxMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo+    ResolveTagDemuxMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo+    ResolveTagDemuxMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo+    ResolveTagDemuxMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo+    ResolveTagDemuxMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo+    ResolveTagDemuxMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo+    ResolveTagDemuxMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo+    ResolveTagDemuxMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo+    ResolveTagDemuxMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo+    ResolveTagDemuxMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo+    ResolveTagDemuxMethod "query" o = Gst.Element.ElementQueryMethodInfo+    ResolveTagDemuxMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo+    ResolveTagDemuxMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo+    ResolveTagDemuxMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo+    ResolveTagDemuxMethod "ref" o = Gst.Object.ObjectRefMethodInfo+    ResolveTagDemuxMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo+    ResolveTagDemuxMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo+    ResolveTagDemuxMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo+    ResolveTagDemuxMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo+    ResolveTagDemuxMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo+    ResolveTagDemuxMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo+    ResolveTagDemuxMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo+    ResolveTagDemuxMethod "seek" o = Gst.Element.ElementSeekMethodInfo+    ResolveTagDemuxMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo+    ResolveTagDemuxMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo+    ResolveTagDemuxMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo+    ResolveTagDemuxMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo+    ResolveTagDemuxMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo+    ResolveTagDemuxMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo+    ResolveTagDemuxMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo+    ResolveTagDemuxMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo+    ResolveTagDemuxMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo+    ResolveTagDemuxMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo+    ResolveTagDemuxMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo+    ResolveTagDemuxMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo+    ResolveTagDemuxMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo+    ResolveTagDemuxMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo+    ResolveTagDemuxMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo+    ResolveTagDemuxMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo+    ResolveTagDemuxMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo+    ResolveTagDemuxMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo+    ResolveTagDemuxMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo+    ResolveTagDemuxMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo+    ResolveTagDemuxMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo+    ResolveTagDemuxMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo+    ResolveTagDemuxMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo+    ResolveTagDemuxMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo+    ResolveTagDemuxMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo+    ResolveTagDemuxMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo+    ResolveTagDemuxMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo+    ResolveTagDemuxMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo+    ResolveTagDemuxMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo+    ResolveTagDemuxMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo+    ResolveTagDemuxMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo+    ResolveTagDemuxMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo+    ResolveTagDemuxMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo+    ResolveTagDemuxMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo+    ResolveTagDemuxMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo+    ResolveTagDemuxMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo+    ResolveTagDemuxMethod "getState" o = Gst.Element.ElementGetStateMethodInfo+    ResolveTagDemuxMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo+    ResolveTagDemuxMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo+    ResolveTagDemuxMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo+    ResolveTagDemuxMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo+    ResolveTagDemuxMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo+    ResolveTagDemuxMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo+    ResolveTagDemuxMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo+    ResolveTagDemuxMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo+    ResolveTagDemuxMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo+    ResolveTagDemuxMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo+    ResolveTagDemuxMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo+    ResolveTagDemuxMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo+    ResolveTagDemuxMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo+    ResolveTagDemuxMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo+    ResolveTagDemuxMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo+    ResolveTagDemuxMethod "setState" o = Gst.Element.ElementSetStateMethodInfo+    ResolveTagDemuxMethod l o = O.MethodResolutionFailed l o++instance (info ~ ResolveTagDemuxMethod t TagDemux, O.MethodInfo info TagDemux p) => OL.IsLabel t (TagDemux -> p) where+#if MIN_VERSION_base(4,10,0)+    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)+#else+    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)+#endif++#endif++#if ENABLE_OVERLOADING+instance O.HasAttributeList TagDemux+type instance O.AttributeList TagDemux = TagDemuxAttributeList+type TagDemuxAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, *)])+#endif++#if ENABLE_OVERLOADING+#endif++#if ENABLE_OVERLOADING+type instance O.SignalList TagDemux = TagDemuxSignalList+type TagDemuxSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])++#endif++
+ GI/GstTag/Objects/TagDemux.hs-boot view
@@ -0,0 +1,29 @@+#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))+module GI.GstTag.Objects.TagDemux 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.ManagedPtr as B.ManagedPtr+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.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++newtype TagDemux = TagDemux (ManagedPtr TagDemux)+instance GObject TagDemux where+class (GObject o, O.IsDescendantOf TagDemux o) => IsTagDemux o+instance (GObject o, O.IsDescendantOf TagDemux o) => IsTagDemux o+instance O.HasParentTypes TagDemux
+ GI/GstTag/Objects/TagMux.hs view
@@ -0,0 +1,228 @@+++{- |+Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte+License    : LGPL-2.1+Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)++Provides a base class for adding tags at the beginning or end of a+stream.++== Deriving from GstTagMux++Subclasses have to do the following things:++ * In their base init function, they must add pad templates for the sink+   pad and the source pad to the element class, describing the media type+   they accept and output in the caps of the pad template.+ * In their class init function, they must override the+   GST_TAG_MUX_CLASS(mux_klass)->render_start_tag and\/or+   GST_TAG_MUX_CLASS(mux_klass)->render_end_tag vfuncs and set up a render+   function.+-}++#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))++module GI.GstTag.Objects.TagMux+    ( ++-- * Exported types+    TagMux(..)                              ,+    IsTagMux                                ,+    toTagMux                                ,+    noTagMux                                ,+++    ) 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.ManagedPtr as B.ManagedPtr+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.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 GI.GObject.Objects.Object as GObject.Object+import qualified GI.Gst.Interfaces.TagSetter as Gst.TagSetter+import qualified GI.Gst.Objects.Element as Gst.Element+import qualified GI.Gst.Objects.Object as Gst.Object++-- | Memory-managed wrapper type.+newtype TagMux = TagMux (ManagedPtr TagMux)+foreign import ccall "gst_tag_mux_get_type"+    c_gst_tag_mux_get_type :: IO GType++instance GObject TagMux where+    gobjectType = c_gst_tag_mux_get_type+    ++-- | Type class for types which can be safely cast to `TagMux`, for instance with `toTagMux`.+class (GObject o, O.IsDescendantOf TagMux o) => IsTagMux o+instance (GObject o, O.IsDescendantOf TagMux o) => IsTagMux o++instance O.HasParentTypes TagMux+type instance O.ParentTypes TagMux = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object, Gst.TagSetter.TagSetter]++-- | Cast to `TagMux`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.+toTagMux :: (MonadIO m, IsTagMux o) => o -> m TagMux+toTagMux = liftIO . unsafeCastTo TagMux++-- | A convenience alias for `Nothing` :: `Maybe` `TagMux`.+noTagMux :: Maybe TagMux+noTagMux = Nothing++#if ENABLE_OVERLOADING+type family ResolveTagMuxMethod (t :: Symbol) (o :: *) :: * where+    ResolveTagMuxMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo+    ResolveTagMuxMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo+    ResolveTagMuxMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo+    ResolveTagMuxMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo+    ResolveTagMuxMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo+    ResolveTagMuxMethod "addTagValue" o = Gst.TagSetter.TagSetterAddTagValueMethodInfo+    ResolveTagMuxMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo+    ResolveTagMuxMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo+    ResolveTagMuxMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo+    ResolveTagMuxMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo+    ResolveTagMuxMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo+    ResolveTagMuxMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo+    ResolveTagMuxMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo+    ResolveTagMuxMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo+    ResolveTagMuxMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo+    ResolveTagMuxMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo+    ResolveTagMuxMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo+    ResolveTagMuxMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo+    ResolveTagMuxMethod "getv" o = GObject.Object.ObjectGetvMethodInfo+    ResolveTagMuxMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo+    ResolveTagMuxMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo+    ResolveTagMuxMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo+    ResolveTagMuxMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo+    ResolveTagMuxMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo+    ResolveTagMuxMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo+    ResolveTagMuxMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo+    ResolveTagMuxMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo+    ResolveTagMuxMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo+    ResolveTagMuxMethod "link" o = Gst.Element.ElementLinkMethodInfo+    ResolveTagMuxMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo+    ResolveTagMuxMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo+    ResolveTagMuxMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo+    ResolveTagMuxMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo+    ResolveTagMuxMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo+    ResolveTagMuxMethod "mergeTags" o = Gst.TagSetter.TagSetterMergeTagsMethodInfo+    ResolveTagMuxMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo+    ResolveTagMuxMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo+    ResolveTagMuxMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo+    ResolveTagMuxMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo+    ResolveTagMuxMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo+    ResolveTagMuxMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo+    ResolveTagMuxMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo+    ResolveTagMuxMethod "query" o = Gst.Element.ElementQueryMethodInfo+    ResolveTagMuxMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo+    ResolveTagMuxMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo+    ResolveTagMuxMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo+    ResolveTagMuxMethod "ref" o = Gst.Object.ObjectRefMethodInfo+    ResolveTagMuxMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo+    ResolveTagMuxMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo+    ResolveTagMuxMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo+    ResolveTagMuxMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo+    ResolveTagMuxMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo+    ResolveTagMuxMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo+    ResolveTagMuxMethod "resetTags" o = Gst.TagSetter.TagSetterResetTagsMethodInfo+    ResolveTagMuxMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo+    ResolveTagMuxMethod "seek" o = Gst.Element.ElementSeekMethodInfo+    ResolveTagMuxMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo+    ResolveTagMuxMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo+    ResolveTagMuxMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo+    ResolveTagMuxMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo+    ResolveTagMuxMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo+    ResolveTagMuxMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo+    ResolveTagMuxMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo+    ResolveTagMuxMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo+    ResolveTagMuxMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo+    ResolveTagMuxMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo+    ResolveTagMuxMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo+    ResolveTagMuxMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo+    ResolveTagMuxMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo+    ResolveTagMuxMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo+    ResolveTagMuxMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo+    ResolveTagMuxMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo+    ResolveTagMuxMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo+    ResolveTagMuxMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo+    ResolveTagMuxMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo+    ResolveTagMuxMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo+    ResolveTagMuxMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo+    ResolveTagMuxMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo+    ResolveTagMuxMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo+    ResolveTagMuxMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo+    ResolveTagMuxMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo+    ResolveTagMuxMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo+    ResolveTagMuxMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo+    ResolveTagMuxMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo+    ResolveTagMuxMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo+    ResolveTagMuxMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo+    ResolveTagMuxMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo+    ResolveTagMuxMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo+    ResolveTagMuxMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo+    ResolveTagMuxMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo+    ResolveTagMuxMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo+    ResolveTagMuxMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo+    ResolveTagMuxMethod "getState" o = Gst.Element.ElementGetStateMethodInfo+    ResolveTagMuxMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo+    ResolveTagMuxMethod "getTagList" o = Gst.TagSetter.TagSetterGetTagListMethodInfo+    ResolveTagMuxMethod "getTagMergeMode" o = Gst.TagSetter.TagSetterGetTagMergeModeMethodInfo+    ResolveTagMuxMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo+    ResolveTagMuxMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo+    ResolveTagMuxMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo+    ResolveTagMuxMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo+    ResolveTagMuxMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo+    ResolveTagMuxMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo+    ResolveTagMuxMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo+    ResolveTagMuxMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo+    ResolveTagMuxMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo+    ResolveTagMuxMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo+    ResolveTagMuxMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo+    ResolveTagMuxMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo+    ResolveTagMuxMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo+    ResolveTagMuxMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo+    ResolveTagMuxMethod "setState" o = Gst.Element.ElementSetStateMethodInfo+    ResolveTagMuxMethod "setTagMergeMode" o = Gst.TagSetter.TagSetterSetTagMergeModeMethodInfo+    ResolveTagMuxMethod l o = O.MethodResolutionFailed l o++instance (info ~ ResolveTagMuxMethod t TagMux, O.MethodInfo info TagMux p) => OL.IsLabel t (TagMux -> p) where+#if MIN_VERSION_base(4,10,0)+    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)+#else+    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)+#endif++#endif++#if ENABLE_OVERLOADING+instance O.HasAttributeList TagMux+type instance O.AttributeList TagMux = TagMuxAttributeList+type TagMuxAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, *)])+#endif++#if ENABLE_OVERLOADING+#endif++#if ENABLE_OVERLOADING+type instance O.SignalList TagMux = TagMuxSignalList+type TagMuxSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])++#endif++
+ GI/GstTag/Objects/TagMux.hs-boot view
@@ -0,0 +1,29 @@+#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \+       && !defined(__HADDOCK_VERSION__))+module GI.GstTag.Objects.TagMux 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.ManagedPtr as B.ManagedPtr+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.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++newtype TagMux = TagMux (ManagedPtr TagMux)+instance GObject TagMux where+class (GObject o, O.IsDescendantOf TagMux o) => IsTagMux o+instance (GObject o, O.IsDescendantOf TagMux o) => IsTagMux o+instance O.HasParentTypes TagMux
LICENSE view
@@ -1,3 +1,17 @@+The gi-gsttag library and included works are provided under the terms of the+GNU Library General Public License (LGPL) version 2.1 with the following+exception:++Static linking of applications or any other source to the gi-gsttag library+does not constitute a modified or derivative work and does not require+the author(s) to provide source code for said work, to link against the+shared gi-gsttag libraries, or to link their applications against a+user-supplied version of gi-gsttag. If you link applications to a modified+version of gi-gsttag, then the changes to gi-gsttag must be provided under the+terms of the LGPL.++----------------------------------------------------------------------------+                   GNU LESSER GENERAL PUBLIC LICENSE                        Version 2.1, February 1999 
README.md view
@@ -1,6 +1,6 @@ # Documentation Autogenerated documentation for this package can be found at -[https://hackage.haskell.org/package/gi-gsttag-1.0.15/docs/GI-GstTag.html](https://hackage.haskell.org/package/gi-gsttag-1.0.15/docs/GI-GstTag.html)+[https://hackage.haskell.org/package/gi-gsttag-1.0.17/docs/GI-GstTag.html](https://hackage.haskell.org/package/gi-gsttag-1.0.17/docs/GI-GstTag.html)  For general documentation on using [haskell-gi](https://github.com/haskell-gi/haskell-gi) based bindings, see [the project page](https://github.com/haskell-gi/haskell-gi) or [the Wiki](https://github.com/haskell-gi/haskell-gi/wiki).
gi-gsttag.cabal view
@@ -1,33 +1,33 @@ name:                 gi-gsttag-version:              1.0.15+version:              1.0.17 synopsis:             GStreamer Tag bindings description:          Bindings for the GStreamer Tag library, autogenerated by haskell-gi. homepage:             https://github.com/haskell-gi/haskell-gi license:              LGPL-2.1 license-file:         LICENSE author:               Will Thompson, Iñaki García Etxebarria and Jonas Platte-maintainer:           Iñaki García Etxebarria (garetxe@gmail.com)+maintainer:           Iñaki García Etxebarria (inaki@blueleaf.cc) category:             Bindings build-type:           Custom-cabal-version:        >= 1.24+cabal-version:        1.24  extra-source-files: README.md ChangeLog.md stack.yaml GstTag.overrides  custom-setup-      setup-depends: base >= 4.7 && < 5,+      setup-depends: base >= 4.9 && < 5,                      Cabal >= 1.24,-                     haskell-gi == 0.21.*+                     haskell-gi >= 0.21.0 && < 0.23  library       default-language: Haskell2010-      default-extensions: NoImplicitPrelude, ScopedTypeVariables, CPP, OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts+      default-extensions: NoImplicitPrelude, ScopedTypeVariables, CPP, OverloadedStrings, NegativeLiterals, ConstraintKinds, TypeFamilies, MultiParamTypeClasses, KindSignatures, FlexibleInstances, UndecidableInstances, DataKinds, FlexibleContexts, UndecidableSuperClasses       other-extensions: PatternSynonyms, ViewPatterns       ghc-options: -fno-warn-unused-imports -fno-warn-warnings-deprecations        pkgconfig-depends: gstreamer-tag-1.0       build-depends: base >= 4.8 && <5,-                     haskell-gi-base == 0.21.*,-                     haskell-gi == 0.21.*,+                     haskell-gi-base >= 0.21.0 && < 0.23,+                     haskell-gi >= 0.21.0 && < 0.23,                      haskell-gi-overloading < 1.1,                      gi-gstbase == 1.0.*,                      gi-gst == 1.0.*,@@ -42,3 +42,14 @@       -- see https://ghc.haskell.org/trac/ghc/ticket/14382       if impl(ghc == 8.2.*)               build-depends: haskell-gi-overloading == 0.0++      exposed-modules: GI.GstTag,+                       GI.GstTag.Constants,+                       GI.GstTag.Enums,+                       GI.GstTag.Flags,+                       GI.GstTag.Functions,+                       GI.GstTag.Interfaces,+                       GI.GstTag.Interfaces.TagXmpWriter,+                       GI.GstTag.Objects,+                       GI.GstTag.Objects.TagDemux,+                       GI.GstTag.Objects.TagMux
stack.yaml view
@@ -1,3 +1,3 @@ packages: - '.'-resolver: lts-9.21+resolver: lts-13.7