This commit is contained in:
2026-05-12 09:06:33 +02:00
parent 4966936381
commit 61d87ba543
2 changed files with 49 additions and 2 deletions
+48 -1
View File
@@ -7,7 +7,7 @@
"private/utils.rkt"
"private/cstruct-helper.rkt"
let-assert
define-return
early-return
)
(provide fmpg-init
@@ -1178,6 +1178,52 @@
[else
(av_packet_unref pkt)
(loop)])))))
#|
(define (drain-resampler! self)
(let* ((dec (fmpg-instance-decoder self))
(info (fmpg-instance-audio-info self))
(channels (ais-channels info))
(sample-rate (ais-rate info))
(sample-rate* (exact->inexact sample-rate))
(swr-ctx (ds-swr-ctx dec)))
(let loop ((produced 0))
(early-return
((delay (swr_get_delay swr-ctx sample-rate)
? (<= delay 0) -> produced)
(max-bytes (av_samples_get_buffer_size #f channels delay FMPG_OUTPUT_FMT 1)
? (<= max-bytes 0) -> produced)
(tmp (malloc max-bytes 'raw) ? (eq? tmp #f) -> -1)
(out-planes (malloc _pointer 1 'raw)
? (eq? out-planes #f) -> -1 ~ (free tmp))
(do (ptr-set! out-planes _pointer 0 tmp))
(out-samples (swr_convert swr-ctx out-planes delay #f 0)
? (<= out-samples 0) -> produced
~ (begin (free out-planes) (free tmp)))
(used-bytes (av_samples_get_buffer_size #f channels out-samples FMPG_OUTPUT_FMT 1)
? (< used-bytes 0) -> produced
~ (begin (free out-planes) (free tmp)))
(do (when (pcm-empty? dec)
(let ((start (ds-next-sample-pos dec)))
(ds-start-sample! dec start)
(ds-timecode! dec (/ (exact->inexact start) sample-rate*)))))
(appended? (append-bytes! dec tmp used-bytes)
? (not appended?) -> -1
~ (begin (free out-planes) (free tmp))))
(ds-last-samples! dec (+ (ds-last-samples dec) out-samples))
(ds-next-sample-pos! dec (+ (ds-next-sample-pos dec) out-samples))
(free out-planes)
(free tmp))
(loop 1)))
)
|#
(define/return (drain-resampler! self) return
(let* ((dec (fmpg-instance-decoder self))
@@ -1225,6 +1271,7 @@
(loop 1)))))))))
(define/return (fmpg-decode-next! instance) return
(define (receive-or-return! self dec)
+1 -1
View File
@@ -9,7 +9,7 @@
racket/system
racket/string
file/unzip
define-return
early-return
)
(provide download-soundlibs