Coverage report: /home/ellis/comp/core/ffi/gstreamer/element.lisp

KindCoveredAll%
expression046 0.0
branch00nil
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
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
 (define-alien-type gst-element
45
   (struct gst-element
46
           (object gst-object)
47
           (state-lock grec-mutex)
48
           (state-cookie (unsigned 32))
49
           (target-state gst-state)
50
           (current_state gst-state)
51
           (next-state gst-state)
52
           (pending-state gst-state)
53
           (last-return gst-state-change-return)
54
           (bus (* gst-bus))
55
           (clock (* gst-clock))
56
           (base-time gst-clock-time-diff)
57
           (start-time gst-clock-time)
58
           (numpads (unsigned 16))
59
           (pads (* glist))
60
           (numsrcpads (unsigned 16))
61
           (srcpads (* glist))
62
           (numsinkpads (unsigned 16))
63
           (sinkpads (* glist))
64
           (pads-cookie (unsigned 32))
65
           (contexts (* glist))
66
           (%gst-reserved (array gpointer #.(- +gst-padding+ 1)))))
67
 
68
 (define-opaque gst-element-class)
69
 
70
 (defar gst-element-get-type gtype)
71
 
72
 (macrolet ((gst-elt (name ret &rest args)
73
              `(defar ,(symbolicate "GST-ELEMENT-" name) ,ret (element (* gst-element)) ,@args)))
74
   (gst-elt provide-clock (* gst-clock))
75
   (gst-elt get-clock (* gst-clock))
76
   (gst-elt set-clock boolean (clock (* gst-clock)))
77
   (gst-elt set-base-time void (time gst-clock-time))
78
   (gst-elt get-base-time gst-clock-time)
79
   (gst-elt set-start-time void (time gst-clock-time))
80
   (gst-elt get-current-running-time gst-clock-time)
81
   (gst-elt get-current-clock-time gst-clock-time)
82
   (gst-elt set-bus void (bus (* gst-bus)))
83
   (gst-elt get-bus (* gst-bus))
84
   (gst-elt set-context void (context (* gst-context)))
85
   (gst-elt get-contexts (* glist))
86
   (gst-elt get-context (* gst-context) (context-type c-string))
87
   (gst-elt get-context-unlocked (* gst-context) (context-type c-string))
88
   (gst-elt add-pad boolean (pad (* gst-pad)))
89
   (gst-elt remove-pad boolean (pad (* gst-pad)))
90
   (gst-elt no-more-pads void)
91
   (gst-elt get-static-pad (* gst-pad) (name c-string))
92
   ;; deprecated: gst-element-get-request-pad
93
   ;; (gst-elt get-request-pad (* gst-pad) (name c-string))
94
   (gst-elt request-pad-simple (* gst-pad) (name c-string))
95
   ;; TODO
96
   ;; (gst-elt request-pad (* gst-pad) (templ (* gst-pad-template)) (name c-string) (caps (* gst-caps)))
97
   (gst-elt release-request-pad void (pad (* gst-pad)))
98
   (gst-elt iterate-pads (* gst-iterator))
99
   (gst-elt iterate-src-pads (* gst-iterator))
100
   (gst-elt iterate-sink-pads (* gst-iterator)))
101
 
102
 (defar gst-element-get-state gst-state-change-return 
103
   (element (* gst-element)) 
104
   (state (* gst-state))
105
   (pending (* gst-state))
106
   (timeout gst-clock-time))
107
 
108
 (defar gst-element-set-state gst-state-change-return (element (* gst-element)) (state gst-state))