FreeCalypso > hg > gsm-codec-lib
view doc/AMR-study-utils @ 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 | e26b974f7ba3 |
children |
line wrap: on
line source
Historical article from 2023-04 =============================== The following article was written in 2023-04, a year before the introduction of libtwamr. All of the utilities described in this article, plus even older gsm-amr2efr and gsm-efr2amr utilities described in AMR-EFR-conversion article, are implemented in amrconv subdirectory of the present source package, and are entirely independent of libtwamr - they predate this library. Original article follows; the utilities described therein are still useful: As of this writing (2023-04), the main emphasis here at Themyscira Wireless is on classic FR and EFR codecs, particularly the latter, rather than AMR. However, given the close relation between GSM EFR and the highest MR122 mode of AMR, we are starting to explore AMR a little too, focusing on the reference C implementation and various published test sequences. Working in this direction, we have developed the following AMR study and exploration utilities: amr-cod-parse This utility reads the *.cod binary file format used by 3GPP reference code and test sequences for AMR-encoded speech, groks every frame and dumps all recorded parameters in human-readable form. amr-ietf-parse A similar AMR parse/dump utility to amr-cod-parse, but reading the more common IETF RFC 4867 *.amr binary file format instead. amr-cod2ietf These two utilities convert between 3GPP *.cod and IETF *.amr amr-ietf2cod formats. amr-cod2ietf converts from *.cod to *.amr; amr-ietf2cod converts in the opposite direction. Just like ETSI *.cod and *.dec formats for EFR, 3GPP *.cod format for AMR is endian-dependent. Our amr-cod-parse and amr-cod2ietf utilities expect LE byte order by default, matching the official test sequences in ts_126074v170001p0.zip; they also support BE byte order with -b option. However, our amr-ietf2cod utility (rarely needed) emits its cod-format output in the local machine's native byte order.