diff options
| author | Paul Oliver <contact@pauloliver.dev> | 2026-01-02 00:48:59 +0000 |
|---|---|---|
| committer | Paul Oliver <contact@pauloliver.dev> | 2026-01-02 04:50:46 +0000 |
| commit | a0f0f6985e67ddbce929bf3da6832c443db5293d (patch) | |
| tree | c6ca55d816e2d3888d8b73b0d93bb129d1d5fb27 /hsm-stream/Hsm/Stream | |
| parent | 95eedfcab2b933b1a97e87a44f57ad79861f93ad (diff) | |
Adds libcamera to WebRTC streaming service
Diffstat (limited to 'hsm-stream/Hsm/Stream')
| -rw-r--r-- | hsm-stream/Hsm/Stream/FFI.hsc | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/hsm-stream/Hsm/Stream/FFI.hsc b/hsm-stream/Hsm/Stream/FFI.hsc new file mode 100644 index 0000000..3ef4f98 --- /dev/null +++ b/hsm-stream/Hsm/Stream/FFI.hsc @@ -0,0 +1,48 @@ +{-# LANGUAGE CApiFFI #-} + +module Hsm.Stream.FFI + ( GstElement + , gstInit + , gstDeinit + , gstParseLaunch + , gstStatePlaying + , gstStateNull + , gstElementSetState + , gstObjectUnref + ) +where + +import Foreign.C.String (CString) +import Foreign.C.Types (CChar, CInt) +import Foreign.Ptr (Ptr) + +data GstElement + +data GError + +newtype GStateChangeReturn + = GStateChangeReturn Int + +newtype GState + = GState Int + +foreign import capi safe "gst/gst.h gst_init" + gstInit :: Ptr CInt -> Ptr (Ptr (Ptr CChar)) -> IO () + +foreign import capi safe "gst/gst.h gst_deinit" + gstDeinit :: IO () + +foreign import capi safe "gst/gst.h gst_parse_launch" + gstParseLaunch :: CString -> Ptr GError -> IO (Ptr GstElement) + +foreign import capi safe "gst/gst.h value GST_STATE_PLAYING" + gstStatePlaying :: GState + +foreign import capi safe "gst/gst.h value GST_STATE_NULL" + gstStateNull :: GState + +foreign import capi safe "gst/gst.h gst_element_set_state" + gstElementSetState :: Ptr GstElement -> GState -> IO GStateChangeReturn + +foreign import capi safe "gst/gst.h gst_object_unref" + gstObjectUnref :: Ptr GstElement -> IO () |
