Documentation added.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
#lang scribble/manual
|
||||
|
||||
@(require (for-label racket/base
|
||||
racket/path
|
||||
"../encoder-test.rkt"))
|
||||
|
||||
@title{Encoder Test Program}
|
||||
@author[@author+email["Hans Dijkema" "hans@dijkewijk.nl"]]
|
||||
|
||||
@defmodule[racket-audio/encoder-test]
|
||||
|
||||
The @racketmodname[racket-audio/encoder-test] module is a small integration test
|
||||
and command-line wrapper around @racketmodname[racket-audio/audio-encoder]. It
|
||||
is useful for checking that the native encoder libraries are available and that
|
||||
a concrete source file can be transcoded to Opus or FLAC.
|
||||
|
||||
The module depends on @filepath{tests.rkt} for its default input file. For
|
||||
portable tests, pass an explicit input file.
|
||||
|
||||
@section{Program use}
|
||||
|
||||
Run the test module directly to encode the default test file to a temporary
|
||||
Opus file:
|
||||
|
||||
@verbatim{
|
||||
racket encoder-test.rkt
|
||||
}
|
||||
|
||||
Useful command-line examples:
|
||||
|
||||
@verbatim{
|
||||
racket encoder-test.rkt --encoder opus --input input.flac --output output.opus --bitrate-kbps 224
|
||||
|
||||
racket encoder-test.rkt --encoder flac --input input-96k.flac --output output-48k.flac --sample-rate 48000 --bits-per-sample 24 --compression-level 8
|
||||
}
|
||||
|
||||
The program prints the selected encoder, settings, percentage progress, and a
|
||||
summary of the result hash returned by @racket[audio-encode]. Progress is based
|
||||
on input frames read from the decoder.
|
||||
|
||||
@section{Program options}
|
||||
|
||||
The command-line wrapper accepts these options:
|
||||
|
||||
@itemlist[#:style 'compact
|
||||
@item{@tt{-e}, @tt{--encoder}: @tt{opus} or @tt{flac}.}
|
||||
@item{@tt{-i}, @tt{--input}: input audio file.}
|
||||
@item{@tt{-o}, @tt{--output}: output audio file.}
|
||||
@item{@tt{--sample-rate}: target sample rate or @tt{source}.}
|
||||
@item{@tt{--bits-per-sample}: target FLAC bit depth or @tt{source}.}
|
||||
@item{@tt{--bitrate-kbps}: Opus bitrate in kbit/s.}
|
||||
@item{@tt{--compression-level}: FLAC compression level.}
|
||||
@item{@tt{--no-tags}: disable copying tags and embedded pictures.}]
|
||||
|
||||
@section{Racket functions}
|
||||
|
||||
@defproc[(encoder-test [input-file path-string?]
|
||||
[output-file (or/c path-string? #f)]
|
||||
[encoder (or/c symbol? string?)]
|
||||
[settings hash?]
|
||||
[#:copy-tags? copy-tags? boolean? #t])
|
||||
hash?]{
|
||||
Runs one encode test and prints a human-readable summary. The return value is
|
||||
the result hash produced by @racket[audio-encode]. When @racket[output-file] is
|
||||
@racket[#f], a temporary output path is chosen from the encoder kind.}
|
||||
|
||||
@defproc[(encoder-test-opus [input-file path-string?]
|
||||
[output-file (or/c path-string? #f) #f]
|
||||
[#:bitrate-kbps bitrate-kbps exact-positive-integer? 160]
|
||||
[#:sample-rate sample-rate (or/c exact-positive-integer? 'source) 'source]
|
||||
[#:copy-tags? copy-tags? boolean? #t])
|
||||
hash?]{
|
||||
Encodes @racket[input-file] to an Opus file using @racket[encoder-test]. The
|
||||
bitrate argument is expressed in kbit/s and is converted to the @racket['bitrate]
|
||||
setting used by the Opus backend.
|
||||
|
||||
The @racket[sample-rate] argument is normally @racket['source]. Opus encoding
|
||||
passes the input rate to @tt{libopusenc}; @tt{libopusenc} performs the internal
|
||||
resampling required for Opus output.}
|
||||
|
||||
@defproc[(encoder-test-flac [input-file path-string?]
|
||||
[output-file (or/c path-string? #f) #f]
|
||||
[#:compression-level compression-level exact-nonnegative-integer? 8]
|
||||
[#:sample-rate sample-rate (or/c exact-positive-integer? 'source) 'source]
|
||||
[#:bits-per-sample bits-per-sample (or/c exact-positive-integer? 'source) 'source]
|
||||
[#:copy-tags? copy-tags? boolean? #t])
|
||||
hash?]{
|
||||
Encodes @racket[input-file] to a FLAC file using @racket[encoder-test]. When
|
||||
@racket[sample-rate] or @racket[bits-per-sample] is not @racket['source], the
|
||||
FLAC pipeline requests the corresponding output format from
|
||||
@racketmodname[racket-audio/audio-encoder].}
|
||||
Reference in New Issue
Block a user