[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/emms a372976 20/80: Fix Opus channel mapping decoding
From: |
Stefan Monnier |
Subject: |
[elpa] externals/emms a372976 20/80: Fix Opus channel mapping decoding |
Date: |
Wed, 17 Mar 2021 18:42:22 -0400 (EDT) |
branch: externals/emms
commit a3729763e260a9ae2e7d1b9e49c27b83ca92f7a7
Author: Petteri Hintsanen <petterih@iki.fi>
Commit: Petteri Hintsanen <petterih@iki.fi>
Fix Opus channel mapping decoding
It seems that bindat specs cannot refer outside themselves, so use a
special variable ‘emms-info-native--opus-channel-count’ with dynamic
binding to keep track of channel count.
---
emms-info-native.el | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/emms-info-native.el b/emms-info-native.el
index 669f3f3..dc2bbbd 100644
--- a/emms-info-native.el
+++ b/emms-info-native.el
@@ -189,8 +189,9 @@ Return a structure that corresponds to either
(bindat-unpack emms-info-native--vorbis-headers-bindat-spec
packets))
((eq stream-type 'opus)
- (bindat-unpack emms-info-native--opus-headers-bindat-spec
- packets))
+ (let (emms-info-native--opus-channel-count)
+ (bindat-unpack emms-info-native--opus-headers-bindat-spec
+ packets)))
(t (error "Unknown stream type %s" stream-type))))
;;;; Vorbis code
@@ -355,6 +356,11 @@ lower case and VALUE is the decoded value."
;;;; Opus code
+(defvar emms-info-native--opus-channel-count 0
+ "Last decoded Opus channel count.
+This is a kludge; it is needed because bindat spec cannot refer
+outside itself.")
+
(defconst emms-info-native--opus-head-magic-array
[79 112 117 115 72 101 97 100]
"Opus identification header magic pattern ‘OpusHead’.")
@@ -366,7 +372,7 @@ lower case and VALUE is the decoded value."
(defconst emms-info-native--opus-channel-mapping-table
'((stream-count u8)
(coupled-count u8)
- (channel-mapping vec (channel-count)))
+ (channel-mapping vec (eval emms-info-native--opus-channel-count)))
"Opus channel mapping table specification.")
(defconst emms-info-native--opus-identification-header-bindat-spec
@@ -380,11 +386,14 @@ lower case and VALUE is the decoded value."
(error "Opus version mismatch: expected < 16, got %s"
last)))
(channel-count u8)
+ (eval (setq emms-info-native--opus-channel-count last))
(pre-skip u16r)
(sample-rate u32r)
(output-gain u16r)
(channel-mapping-family u8)
- (eval (> last 0) (struct opus-channel-mapping-table)))
+ (union (channel-mapping-family)
+ (0 nil)
+ (t (struct emms-info-native--opus-channel-mapping-table))))
"Opus identification header specification.")
(defconst emms-info-native--opus-comment-header-bindat-spec
- [elpa] externals/emms dbcc614 24/80: Fix id3v2 bugs, (continued)
- [elpa] externals/emms dbcc614 24/80: Fix id3v2 bugs, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 0f11ae1 22/80: Reorder functions and constants, Stefan Monnier, 2021/03/17
- [elpa] externals/emms e89bc15 26/80: Merge branch 'info-native', Stefan Monnier, 2021/03/17
- [elpa] externals/emms fa8f64e 33/80: Fix whitespace trimming, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 5aea8e7 35/80: Fix id3v2 frame id to info-field mapping, Stefan Monnier, 2021/03/17
- [elpa] externals/emms f9f2bab 30/80: Trim trailing whitespace from id3v2 strings, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 60c9304 32/80: Trim trailing whitespace from all info-fields, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 6e5d477 21/80: Simplify FLAC code, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 757043b 41/80: Merge branch 'info-native', Stefan Monnier, 2021/03/17
- [elpa] externals/emms 7479d7d 19/80: Use lexical binding, Stefan Monnier, 2021/03/17
- [elpa] externals/emms a372976 20/80: Fix Opus channel mapping decoding,
Stefan Monnier <=
- [elpa] externals/emms 4a4a358 23/80: Remove emms-info-native return value, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 0fe6100 28/80: Improve id3v2 error handling, Stefan Monnier, 2021/03/17
- [elpa] externals/emms cd437ca 40/80: Fix byte compilation, Stefan Monnier, 2021/03/17
- [elpa] externals/emms a57cc7e 43/80: * emms-bookmarks.el: lexical scoping declaration, Stefan Monnier, 2021/03/17
- [elpa] externals/emms fcdb111 25/80: Add mappings for more id3v2 text frames, Stefan Monnier, 2021/03/17
- [elpa] externals/emms c8f198d 31/80: Put some id3v2.4 frame data to info-date instead of info-year, Stefan Monnier, 2021/03/17
- [elpa] externals/emms b7684ba 39/80: Match id3v1 genres in id3v2.4 frame, Stefan Monnier, 2021/03/17
- [elpa] externals/emms d12014d 50/80: * emms-i18n.el: lexical declaration, Stefan Monnier, 2021/03/17
- [elpa] externals/emms abf6b01 49/80: * emms-history.el: lexical declaration, Stefan Monnier, 2021/03/17
- [elpa] externals/emms 0fcea44 52/80: * emms-info.el: add lexical and remove unused lexical variable, Stefan Monnier, 2021/03/17