From c1db0336f2c771d5d937e5840b617f47bcb69d04 Mon Sep 17 00:00:00 2001 From: Steve Ayerhart Date: Wed, 25 Mar 2020 23:45:47 -0500 Subject: [PATCH] reorg --- extra/flac/decoder/decoder.factor | 70 +----------------------------- extra/flac/format/format.factor | 72 +++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 68 deletions(-) create mode 100644 extra/flac/format/format.factor diff --git a/extra/flac/decoder/decoder.factor b/extra/flac/decoder/decoder.factor index 170218b2d2..b5a628027b 100644 --- a/extra/flac/decoder/decoder.factor +++ b/extra/flac/decoder/decoder.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2020 . ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax math io.encodings.binary kernel io io.files locals endian bit-arrays math.intervals combinators math.order sequences io.streams.peek io.binary namespaces accessors byte-arrays ; +USING: math io.encodings.binary kernel io io.files locals endian bit-arrays math.intervals combinators math.order sequences io.streams.peek io.binary namespaces accessors byte-arrays ; USING: prettyprint ; -USING: flac.metadata.private flac.metadata ; +USING: flac.metadata.private flac.metadata flac.format ; QUALIFIED: bitstreams @@ -19,72 +19,6 @@ ERROR: invalid-sample-rate ; ERROR: invalid-subframe-type ; ERROR: invalid-subframe-sync ; -ENUM: flac-channel-assignment - channels-mono - channels-left/right - channels-left/right/center - channels-left/right/left-surround/right-surround - channels-left/right/center/left-surround/right-surround - channels-left/right/center/lfe/left-surround/right-surround - channels-left/right/center/lfe/center-surround/side-left/side-right - channels-left/right/center/lfe/left-surround/right-surround/side-left/side-right - channels-left - channels-right - channels-mid ; - -ENUM: flac-frame-number-type - frame-number-type-frame - frame-number-type-sample ; - -ENUM: flac-subframe-type - subframe-type-constant - subframe-type-verbatim - subframe-type-fixed - subframe-type-lpc ; - -ENUM: flac-entropy-coding-method - entropy-coding-partioned-rice - entropy-coding-partioned-rice2 ; - -TUPLE: flac-subframe-header - { subframe-type maybe{ subframe-type-constant - subframe-type-verbatim - subframe-type-fixed - subframe-type-lpc } } - { wasted-bits integer } ; - -TUPLE: flac-subframe - { subframe-header flac-subframe-header } - { data byte-array } ; - -TUPLE: flac-frame-header - { number-type maybe{ frame-number-type-frame frame-number-type-sample } } - { blocksize integer } - { sample-rate integer } - { channels integer } - { channel-assignment maybe{ channels-mono - channels-left/right - channels-left/right/center - channels-left/right/left-surround/right-surround - channels-left/right/center/left-surround/right-surround - channels-left/right/center/lfe/left-surround/right-surround - channels-left/right/center/lfe/center-surround/side-left/side-right - channels-left/right/center/lfe/left-surround/right-surround/side-left/side-right - channels-left - channels-right - channels-mid } } - { bits-per-sample integer } - { frame|sample-number integer } - { crc integer } ; - -TUPLE: flac-frame-footer - { crc integer } ; - -TUPLE: flac-frame - { header flac-frame-header } - { subframes sequence } - { footer flac-frame-footer } ; - : 0xxxxxxx? ( n -- ? ) 0x80 bitand 0x80 = not ; : 110xxxxx? ( n -- ? ) dup [ 0xc0 bitand 0xc0 = ] [ 0x20 bitand 0x20 = not ] bi* and ; : 1110xxxx? ( n -- ? ) dup [ 0xe0 bitand 0xe0 = ] [ 0x10 bitand 0x10 = not ] bi* and ; diff --git a/extra/flac/format/format.factor b/extra/flac/format/format.factor new file mode 100644 index 0000000000..d6eac54e81 --- /dev/null +++ b/extra/flac/format/format.factor @@ -0,0 +1,72 @@ +! Copyright (C) 2020 . +! See http://factorcode.org/license.txt for BSD license. +USING: alien.syntax math byte-arrays sequences ; + +IN: flac.format + +ENUM: flac-frame-number-type + frame-number-type-frame + frame-number-type-sample ; + +ENUM: flac-channel-assignment + channels-mono + channels-left/right + channels-left/right/center + channels-left/right/left-surround/right-surround + channels-left/right/center/left-surround/right-surround + channels-left/right/center/lfe/left-surround/right-surround + channels-left/right/center/lfe/center-surround/side-left/side-right + channels-left/right/center/lfe/left-surround/right-surround/side-left/side-right + channels-left + channels-right + channels-mid ; + +TUPLE: flac-frame-header + { number-type maybe{ frame-number-type-frame frame-number-type-sample } } + { blocksize integer } + { sample-rate integer } + { channels integer } + { channel-assignment + maybe{ channels-mono + channels-left/right + channels-left/right/center + channels-left/right/left-surround/right-surround + channels-left/right/center/left-surround/right-surround + channels-left/right/center/lfe/left-surround/right-surround + channels-left/right/center/lfe/center-surround/side-left/side-right + channels-left/right/center/lfe/left-surround/right-surround/side-left/side-right + channels-left + channels-right + channels-mid } } + { bits-per-sample integer } + { frame|sample-number integer } + { crc integer } ; + +ENUM: flac-subframe-type + subframe-type-constant + subframe-type-verbatim + subframe-type-fixed + subframe-type-lpc ; + +TUPLE: flac-subframe-header + { subframe-type maybe{ subframe-type-constant + subframe-type-verbatim + subframe-type-fixed + subframe-type-lpc } } + { wasted-bits integer } ; + +TUPLE: flac-subframe + { subframe-header flac-subframe-header } + { data byte-array } ; + +ENUM: flac-entropy-coding-method + entropy-coding-partioned-rice + entropy-coding-partioned-rice2 ; + +TUPLE: flac-frame-footer + { crc integer } ; + +TUPLE: flac-frame + { header flac-frame-header } + { subframes sequence } + { footer flac-frame-footer } ;