FreeCalypso > hg > gsm-codec-lib
annotate doc/PCM-file-formats @ 477:4c9222d95647
libtwamr encoder: always emit frame->mode = mode;
In the original implementation of amr_encode_frame(), the 'mode' member
of the output struct was set to 0xFF if the output frame type is TX_NO_DATA.
This design was made to mimic the mode field (16-bit word) being set to
0xFFFF (or -1) in 3GPP test sequence format - but nothing actually depends
on this struct member being set in any way, and amr_frame_to_tseq()
generates the needed 0xFFFF on its own, based on frame->type being equal
to TX_NO_DATA.
It is simpler and more efficient to always set frame->mode to the actual
encoding mode in amr_encode_frame(), and this new behavior has already
been documented in doc/AMR-library-API description in anticipation of
the present change.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 18 May 2024 22:30:42 +0000 |
parents | a217a6eacbad |
children |
rev | line source |
---|---|
143
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 What file format should be used for 16-bit PCM sample recordings? The first |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 (in the order of development) group of utilities in the present package that |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 need to read and write such files are gsm[e]fr-encode and gsm[e]fr-decode, |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 designed to mirror amrnb-enc and amrnb-dec from opencore-amr FOSS package; |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 these utilities read and write WAV files and even use WAV reading and writing |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 functions copied from opencore-amrnb test code. |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 However, as I (Mother Mychaela) keep developing more tools, my use cases become |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 more diverse: in some use cases WAV is most convenient (e.g., when playing or |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 recording with SoX tools), but in other use cases a raw sample file without any |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 header is much more convenient. To address this diversity of use cases, a pair |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 of conversion utilities have been written: |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 pcm16-raw2wav converts from raw format to WAV |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 pcm16-wav2raw converts from WAV to raw format |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 Both utilities take a mandatory command line argument specifying the endian |
195911f2211c
document PCM format conversion utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 order for the raw format - there is no default. |
152
a217a6eacbad
doc/PCM-file-formats: establish "robe" format
Mychaela Falconia <falcon@freecalypso.org>
parents:
143
diff
changeset
|
19 |
a217a6eacbad
doc/PCM-file-formats: establish "robe" format
Mychaela Falconia <falcon@freecalypso.org>
parents:
143
diff
changeset
|
20 Going forward, I (Mother Mychaela) prefer big-endian format for raw PCM16 files: |
a217a6eacbad
doc/PCM-file-formats: establish "robe" format
Mychaela Falconia <falcon@freecalypso.org>
parents:
143
diff
changeset
|
21 aside from it being the network byte order on the Internet, 16-bit and 32-bit |
a217a6eacbad
doc/PCM-file-formats: establish "robe" format
Mychaela Falconia <falcon@freecalypso.org>
parents:
143
diff
changeset
|
22 numbers appear "naturally" in hex dumps in BE, but not in LE. Therefore, newly |
a217a6eacbad
doc/PCM-file-formats: establish "robe" format
Mychaela Falconia <falcon@freecalypso.org>
parents:
143
diff
changeset
|
23 developed utilities will read and write PCM16 data in "robe" format - "robe" is |
a217a6eacbad
doc/PCM-file-formats: establish "robe" format
Mychaela Falconia <falcon@freecalypso.org>
parents:
143
diff
changeset
|
24 English pronunciation play on "raw BE", and it is also the ritual garment worn |
a217a6eacbad
doc/PCM-file-formats: establish "robe" format
Mychaela Falconia <falcon@freecalypso.org>
parents:
143
diff
changeset
|
25 by Themyscira telecom priestesses. :-) |