Skip to content

Commit ca7db7f

Browse files
committed
Add bufferskink.
1 parent ab71e00 commit ca7db7f

File tree

2 files changed

+47
-10
lines changed

2 files changed

+47
-10
lines changed

video/private/ffmpeg-stream.rkt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -345,19 +345,14 @@
345345
['loop (packetqueue-put callback-data packet)]
346346
['close (packetqueue-put callback-data eof)])]))
347347

348-
(define ((dequeue-stream passthrough-proc) mode obj)
348+
(define (dequeue-stream mode obj)
349349
(match obj
350350
[(struct* codec-obj ([callback-data callback-data]))
351351
(match mode
352-
['init (passthrough-proc mode obj #f)]
353-
['open (passthrough-proc mode obj #f)]
354-
['write (define packet (packetqueue-get callback-data))
355-
(cond
356-
[(eof-object? packet) #f]
357-
[else
358-
(passthrough-proc mode obj packet)
359-
#t])]
360-
['close (passthrough-proc mode obj #f)])]))
352+
['init (void)]
353+
['open (void)]
354+
['write (packetqueue-get callback-data)]
355+
['close (void)])]))
361356

362357
(define (link infile
363358
outfile)

video/private/ffmpeg.rkt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@
164164
pred
165165
interlaced-me = ,(arithmetic-shift 1 29)
166166
closed-gop = ,(arithmetic-shift 1 31))))
167+
167168
(define _avcodec-flags2
168169
(_bitmask `(fast
169170
no-ouput = 4
@@ -174,19 +175,22 @@
174175
show-all = ,(arithmetic-shift 1 22)
175176
export-mvs = ,(arithmetic-shift 1 28)
176177
skip-manual)))
178+
177179
(define _avio-flags
178180
(_bitmask `(read = 1
179181
write = 2
180182
read-write = 3
181183
nonblock = 8
182184
direct = #x8000)))
185+
183186
(define _av-dictionary-flags
184187
(_bitmask `(match-case
185188
ignore-suffix
186189
dont-strdup-key
187190
dont-strdup-val
188191
dont-overwrite
189192
append)))
193+
190194
(define _avfilter-flags
191195
(_bitmask `(dynamic-inputs
192196
dynamic-outputs
@@ -195,10 +199,17 @@
195199
support-timeline-internal
196200
support-timeline = ,(bitwise-ior (arithmetic-shift 1 16)
197201
(arithmetic-shift 1 17)))))
202+
198203
(define _avfilter-command-flags
199204
(_bitmask `(one
200205
fast)))
201206

207+
(define _av-buffer-sink-flags
208+
(_bitmask '(peek
209+
no-request)))
210+
211+
;; ===================================================================================================
212+
202213
(define _avcodec-id (_enum '(none
203214

204215
;; Video
@@ -508,6 +519,7 @@
508519
bgr444be
509520
ya8
510521
))) ;; XXX And more! :)
522+
(define-cpointer-type _avpixel-format-pointer)
511523

512524
(define _avcolor-transfer-characteristic _fixint)
513525
(define _avcolor-space _fixint)
@@ -1184,6 +1196,22 @@
11841196
[priv _pointer]
11851197
[commandqueue _avfilter-command-pointer]))
11861198

1199+
(define-cstruct _avfilter-in-out
1200+
([name _string]
1201+
[filter-ctx _avfilter-context-pointer]
1202+
[pad-idx _int]
1203+
[next _avfilter-in-out-pointer]))
1204+
1205+
(define-cstruct _av-buffersink-params
1206+
([pixel-fmts _avpixel-format-pointer/null]))
1207+
1208+
(define-cstruct _av-buffersink-aparams
1209+
([sample-fmts _avsample-format-pointer/null]
1210+
[channel-layout _pointer]
1211+
[channel-counts _pointer]
1212+
[all-channel-counts _int]
1213+
[sample-rates _int]))
1214+
11871215
;; ===================================================================================================
11881216

11891217
(define-avformat av-register-all (_fun -> _void))
@@ -1465,6 +1493,7 @@
14651493
(define-avutil av-get-channel-layout-nb-channels (_fun _av-channel-layout -> _int))
14661494
(define-avutil av-compare-ts (_fun _int64 _avrational _int64 _avrational
14671495
-> _int))
1496+
(define-avutil av-strdup (_fun _string -> _pointer))
14681497

14691498
(define-swscale sws-getContext (_fun _int
14701499
_int
@@ -1511,3 +1540,16 @@
15111540
-> (cond
15121541
[(>= ret 0) out]
15131542
[else (error 'graph-create-filter (convert-err ret))])))
1543+
(define-avfilter avfilter-get-by-name (_fun _string -> [ret : _avfilter-pointer/null]
1544+
-> (or ret (error 'avfilter "Invalid Filter Name"))))
1545+
(define (av-buffersink-get-frame ptr [out #f])
1546+
(define-avfilter av-buffersink-get-frame (_fun _avfilter-context-pointer [out : _av-frame-pointer]
1547+
-> [ret : _int]
1548+
-> (cond
1549+
[(>= ret 0) out]
1550+
[else (error 'buffersink-get-frame
1551+
(convert-err ret))])))
1552+
(define o (or out (av-frame-alloc)))
1553+
(av-buffersink-get-frame ptr o))
1554+
(define-avfilter av-buffersink-params-alloc (_fun -> _av-buffersink-params-pointer))
1555+
(define-avfilter av-buffersink-aparams-alloc (_fun -> _av-buffersink-aparams-pointer))

0 commit comments

Comments
 (0)