changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/ffi/gstreamer/element.lisp

changeset 698: 96958d3eb5b0
parent: a2fe095379f9
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
1 ;;; element.lisp --- Gstreamer FFI Elements
2 
3 ;;
4 
5 ;;; Code:
6 (in-package :gstreamer)
7 
8 (eval-always
9  (define-alien-enum (gst-state int)
10  :void-pending 0
11  :null 1
12  :ready 2
13  :paused 3
14  :playing 4)
15  (defun %state-change (state1 state2)
16  (logior (ash (gst-state state1) 3) (gst-state state2)))
17  (defun %elt-flag (n)
18  (ash (gst-object-flags :last) n)))
19 
20 (define-alien-enum (gst-state-change int)
21  :null-to-ready (%state-change :null :ready)
22  :ready-to-paused (%state-change :ready :paused)
23  :paused-to-playing (%state-change :paused :playing)
24  :paused-to-ready (%state-change :paused :ready)
25  :ready-to-null (%state-change :ready :null)
26  :paused-to-paused (%state-change :paused :paused)
27  :playing-to-playing (%state-change :playing :playing))
28 
29 (define-alien-enum (gst-state-change-return int)
30  :failure 0
31  :success 1
32  :async 2
33  :no-preroll 3)
34 
35 (define-alien-enum (gst-element-flags int)
36  :locked-state (%elt-flag 0)
37  :sink (%elt-flag 1)
38  :source (%elt-flag 2)
39  :provide-clock (%elt-flag 3)
40  :require-clock (%elt-flag 4)
41  :indexable (%elt-flag 5)
42  :last (%elt-flag 10))
43 
44 (eval-always
45  (define-opaque gst-element))
46 
47 (define-alien-type gst-element-t
48  (struct gst-element
49  (object gst-object-t)
50  (state-lock grec-mutex)
51  (state-cookie (unsigned 32))
52  (target-state gst-state)
53  (current_state gst-state)
54  (next-state gst-state)
55  (pending-state gst-state)
56  (last-return gst-state-change-return)
57  (bus (* gst-bus))
58  (clock (* gst-clock))
59  (base-time gst-clock-time-diff)
60  (start-time gst-clock-time)
61  (numpads (unsigned 16))
62  (pads (* glist))
63  (numsrcpads (unsigned 16))
64  (srcpads (* glist))
65  (numsinkpads (unsigned 16))
66  (sinkpads (* glist))
67  (pads-cookie (unsigned 32))
68  (contexts (* glist))
69  (%gst-reserved (array gpointer #.(- +gst-padding+ 1)))))
70 
71 (define-opaque gst-element-class)
72 
73 (define-alien-routine gst-element-get-type gtype)
74 
75 (macrolet ((gst-elt (name ret &rest args)
76  `(define-alien-routine ,(symbolicate "GST-ELEMENT-" name) ,ret (element (* gst-element)) ,@args)))
77  (gst-elt provide-clock (* gst-clock))
78  (gst-elt get-clock (* gst-clock))
79  (gst-elt set-clock boolean (clock (* gst-clock)))
80  (gst-elt set-base-time void (time gst-clock-time))
81  (gst-elt get-base-time gst-clock-time)
82  (gst-elt set-start-time void (time gst-clock-time))
83  (gst-elt get-current-running-time gst-clock-time)
84  (gst-elt get-current-clock-time gst-clock-time)
85  (gst-elt set-bus void (bus (* gst-bus)))
86  (gst-elt get-bus (* gst-bus))
87  (gst-elt set-context void (context (* gst-context)))
88  (gst-elt get-contexts (* glist))
89  (gst-elt get-context (* gst-context) (context-type c-string))
90  (gst-elt get-context-unlocked (* gst-context) (context-type c-string))
91  (gst-elt add-pad boolean (pad (* gst-pad)))
92  (gst-elt remove-pad boolean (pad (* gst-pad)))
93  (gst-elt no-more-pads void)
94  (gst-elt get-static-pad (* gst-pad) (name c-string))
95  ;; deprecated: gst-element-get-request-pad
96  ;; (gst-elt get-request-pad (* gst-pad) (name c-string))
97  (gst-elt request-pad-simple (* gst-pad) (name c-string))
98  ;; TODO
99  ;; (gst-elt request-pad (* gst-pad) (templ (* gst-pad-template)) (name c-string) (caps (* gst-caps)))
100  (gst-elt release-request-pad void (pad (* gst-pad)))
101  (gst-elt iterate-pads (* gst-iterator))
102  (gst-elt iterate-src-pads (* gst-iterator))
103  (gst-elt iterate-sink-pads (* gst-iterator)))