1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
-- GIMP Toolkit (GTK) Binding for Haskell: binding to gstreamer -*-haskell-*-
--
-- Author : Peter Gavin
-- Created: 1-Apr-2007
--
-- Copyright (c) 2007 Peter Gavin
--
-- This library is free software: you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation, either version 3 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this program. If not, see
-- <http://www.gnu.org/licenses/>.
--
-- GStreamer, the C library which this Haskell library depends on, is
-- available under LGPL Version 2. The documentation included with
-- this library is based on the original GStreamer documentation.
--
-- | Maintainer : gtk2hs-devel@lists.sourceforge.net
-- Stability : alpha
-- Portability : portable (depends on GHC)
module Media.Streaming.GStreamer.Core.Pipeline (
Pipeline,
PipelineClass,
castToPipeline,
gTypePipeline,
pipelineNew,
pipelineGetBus,
pipelineSetClock,
pipelineUseClock,
pipelineSetNewStreamTime,
pipelineGetLastStreamTime,
pipelineSetAutoFlushBus,
pipelineGetAutoFlushBus,
pipelineSetDelay,
pipelineGetDelay,
pipelineAutoFlushBus,
pipelineDelay
) where
import Control.Monad (liftM)
{#import Media.Streaming.GStreamer.Core.Types#}
import System.Glib.UTFString
import System.Glib.FFI
import System.Glib.Attributes ( Attr
, newAttr )
{# context lib = "gstreamer" prefix = "gst" #}
pipelineNew :: String
-> IO Element
pipelineNew name =
withUTFString name {# call pipeline_new #} >>=
takeObject
pipelineGetBus :: PipelineClass pipeline
=> pipeline
-> IO Bus
pipelineGetBus pipeline =
{# call pipeline_get_bus #} (toPipeline pipeline) >>= takeObject
pipelineSetClock :: (PipelineClass pipeline, ClockClass clock)
=> pipeline
-> clock
-> IO Bool
pipelineSetClock pipeline clock =
liftM toBool $
{# call pipeline_set_clock #} (toPipeline pipeline) (toClock clock)
pipelineUseClock :: (PipelineClass pipeline, ClockClass clock)
=> pipeline
-> clock
-> IO ()
pipelineUseClock pipeline clock =
{# call pipeline_use_clock #} (toPipeline pipeline) (toClock clock)
pipelineSetNewStreamTime :: PipelineClass pipeline
=> pipeline
-> ClockTime
-> IO ()
pipelineSetNewStreamTime pipeline time =
{# call pipeline_set_new_stream_time #} (toPipeline pipeline)
(fromIntegral time)
pipelineGetLastStreamTime :: PipelineClass pipeline
=> pipeline
-> IO ClockTime
pipelineGetLastStreamTime pipeline =
liftM fromIntegral $
{# call pipeline_get_last_stream_time #} (toPipeline pipeline)
pipelineSetAutoFlushBus :: PipelineClass pipeline
=> pipeline
-> Bool
-> IO ()
pipelineSetAutoFlushBus pipeline autoFlush =
{# call pipeline_set_auto_flush_bus #} (toPipeline pipeline) $ fromBool autoFlush
pipelineGetAutoFlushBus :: PipelineClass pipeline
=> pipeline
-> IO Bool
pipelineGetAutoFlushBus pipeline =
liftM toBool $
{# call pipeline_get_auto_flush_bus #} (toPipeline pipeline)
pipelineSetDelay :: PipelineClass pipeline
=> pipeline
-> ClockTime
-> IO ()
pipelineSetDelay pipeline delay =
{# call pipeline_set_delay #} (toPipeline pipeline)
(fromIntegral delay)
pipelineGetDelay :: PipelineClass pipeline
=> pipeline
-> IO ClockTime
pipelineGetDelay pipeline =
liftM fromIntegral $
{# call pipeline_get_delay #} (toPipeline pipeline)
pipelineAutoFlushBus :: PipelineClass pipelineT
=> Attr pipelineT Bool
pipelineAutoFlushBus = newAttr
pipelineGetAutoFlushBus
pipelineSetAutoFlushBus
pipelineDelay :: PipelineClass pipelineT
=> Attr pipelineT ClockTime
pipelineDelay = newAttr
pipelineGetDelay
pipelineSetDelay
|