This commit is contained in:
2026-02-26 17:39:18 +01:00
parent 8eadceac21
commit 0a2516df1e
2 changed files with 19 additions and 3 deletions

View File

@@ -403,6 +403,7 @@
(define _FLAC__StreamDecoder-pointer (_cpointer 'flac-streamdecoder))
(define _FLAC__Data-pointer (_cpointer/null 'flac-client-data))
;(define _FLAC__StreamMetadata-pointer (_cpointer/null 'flac-stream-metadata))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; FLAC Callback function definitions
@@ -482,6 +483,16 @@
(_fun _FLAC__StreamDecoder-pointer FLAC__uint64
-> _bool))
;FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_clone(const FLAC__StreamMetadata *object);
(define-libflac FLAC__metadata_object_clone
(_fun _FLAC__StreamMetadata-pointer
-> _FLAC__StreamMetadata-pointer))
;FLAC_API void FLAC__metadata_object_delete(FLAC__StreamMetadata *object);
(define-libflac FLAC__metadata_object_delete
(_fun _FLAC__StreamMetadata-pointer
-> _void))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Our interface for decoding to racket
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -499,7 +510,9 @@
0)
(define (meta-callback fl meta client-data)
(set! meta-data (append meta-data (list meta))))
(let ((meta-clone (FLAC__metadata_object_clone meta)))
(unless (eq? meta-clone #f)
(set! meta-data (append meta-data (list meta-clone))))))
(define (error-callback fl errno client-data)
(set! error-no errno)
@@ -530,7 +543,10 @@
(decoder-state (int-state)))
(define (process-meta-data cb)
(for-each cb meta-data)
(for-each (λ (meta-entry)
(cb meta-entry)
(FLAC__metadata_object_delete meta-entry))
meta-data)
(set! meta-data '()))
(define (process-write-data cb)

View File

@@ -15,7 +15,7 @@
)
)
(ao-set-async-mode! 'scheme)
(ao-set-async-mode! 'ffi)
;(define fmt (ao-mk-format 24 48000 2 'big-endian))
;(define ao-h (ao-open-live #f fmt))