From 61d87ba5436d0c56df36f312874c504c8e7b7e90 Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Tue, 12 May 2026 09:06:33 +0200 Subject: [PATCH] oke --- ffmpeg-definitions.rkt | 49 +++++++++++++++++++++++++++++++++++++++++- private/downloader.rkt | 2 +- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/ffmpeg-definitions.rkt b/ffmpeg-definitions.rkt index ccd14b8..948263c 100644 --- a/ffmpeg-definitions.rkt +++ b/ffmpeg-definitions.rkt @@ -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) diff --git a/private/downloader.rkt b/private/downloader.rkt index 922da7b..1cbc1a7 100644 --- a/private/downloader.rkt +++ b/private/downloader.rkt @@ -9,7 +9,7 @@ racket/system racket/string file/unzip - define-return + early-return ) (provide download-soundlibs