Better renderer and server support and higher level functions. Seek solutions.

This commit is contained in:
2026-08-08 14:27:29 +02:00
parent 91c6755bb1
commit 3fbcdb09d5
10 changed files with 324 additions and 5 deletions
+60
View File
@@ -9,7 +9,9 @@
(require racket/list
racket/string
"device.rkt"
"didl-lite.rkt"
"query.rkt"
"resource-capabilities.rkt"
"service.rkt"
"services/av-transport.rkt"
"services/rendering-control.rkt")
@@ -22,9 +24,11 @@
media-renderer-model
get-media-renderer
media-renderer-dlna?
media-renderer-play-resource!
media-renderer-play-uri!
media-renderer-play!
media-renderer-next-uri-supported?
media-renderer-set-next-resource!
media-renderer-set-next-uri!
media-renderer-pause!
media-renderer-stop!
@@ -126,6 +130,43 @@
"renderer" (upnp-device-name renderer)))
(av-transport-set-next-uri! transport uri #:metadata metadata)))
(define (resource-metadata uri protocol-info mime-type
title artist album genre year track duration size)
(didl-lite-audio-item
uri
#:protocol-info
(resolve-dlna-resource-protocol-info
uri
#:protocol-info protocol-info
#:mime-type mime-type)
#:title title
#:artist artist
#:album album
#:genre genre
#:year year
#:track track
#:duration duration
#:size size))
(define (media-renderer-set-next-resource!
renderer uri
#:protocol-info [protocol-info #f]
#:mime-type [mime-type #f]
#:title [title "Media"]
#:artist [artist #f]
#:album [album #f]
#:genre [genre #f]
#:year [year #f]
#:track [track #f]
#:duration [duration #f]
#:size [size #f])
(media-renderer-set-next-uri!
renderer
uri
#:metadata
(resource-metadata uri protocol-info mime-type
title artist album genre year track duration size)))
;; Start a resource and optionally preload the following resource before
;; playback starts. Setting the next URI first gives the renderer the maximum
;; amount of time to buffer it.
@@ -152,6 +193,25 @@
#:metadata next-metadata))
(av-transport-play! transport)))
(define (media-renderer-play-resource!
renderer uri
#:protocol-info [protocol-info #f]
#:mime-type [mime-type #f]
#:title [title "Media"]
#:artist [artist #f]
#:album [album #f]
#:genre [genre #f]
#:year [year #f]
#:track [track #f]
#:duration [duration #f]
#:size [size #f])
(media-renderer-play-uri!
renderer
uri
#:metadata
(resource-metadata uri protocol-info mime-type
title artist album genre year track duration size)))
(define (media-renderer-pause! renderer)
(av-transport-pause!
(required-service 'media-renderer-pause! renderer 'av-transport)))