Hello,
I agree reference code is important as a known-good base to help test
the compliance of third party implementations, but code NEVER has been
equivalent to a specification.
Code is usually complex, and specific to a particular kind of machines.
it uses shortcuts, optimizations, and is linked to its implementation
language. it's almost art. It is unusable to build a hardware version of
the codec. So, it's not a spec.
A formal spec is more important, as it describes the pure algorithmic
structure of the codec in a concise, synthetic, yet practical way.
Writing a spec is a also a way to make sure we know what the code is
doing, without having to know how to code. And to make sure no detail is
left out.
For example, there is a difference between writing "energy is quantified
linearly by selecting codes in this lookup tables for these values of
energies" and having to browse dozens of files to find which encoding
table and routine are used for a specific mode.
I know because was there before, I tried as a third party developer, to
document codec2 algorithms from code, without previous intimate
knowledge of the algorithms (I have already shared my doc).
I found it very difficult to do, not because codec2 is complex, but
because the current codec2 code base is quite large, comes with lots of
unused and/or unrelated routines, and as such is very hard to follow.
This is normal.
I am very glad that a specification is finally available. I have not yet
been able to read it yet as github told me the pdf was corrupted, but I
hope to get it soon, read it, help improve it, and use it to finally
build a fixed point version.
Thank you very much for this document,
Sebastien
Le 13/12/2023 à 23:35, glen english LIST a écrit :
I support reference C code
For a developer who needs to implement an algorthm on their platform,
the reference C code (RCC) provides ability to numerically test bench
their platform code (essential) , and provides a well broken down
algorithm method in the form of C code (essential) .
In my opinion, an implementation developer does not need to understand
how and why , just what has to be done.
I'm starting to implement Codec2 on a RISC-V soft micro on an FPGA
with custom instructions. I started with the RCC, and identify regions
that I can generate FPGA acceleration in the fabric , and I test bench
it against vectors produced by the RCC.
(While I have a general interest in the inner workings) - I don't
need understand David's excellent Codec2 math inclusive documentation,
I just need to implement my numerically accurate version of the RCC
-glen VK1XX
On 14/12/2023 9:24 am, david wrote:
Hi Greg,
Thanks for your comments, good to get a perspective from a non DSP
person. Some thoughts:
1/ The modes are not interoperable.
2/ The "stable" question is a good one. I consider codec2 unstable, as
I am dissatisfied with performance and enjoy experimenting. Having
said that, the youngest mode is now 7 years old, and some haven't
changed in a decade. I don't think we'd remove any existing modes that
had a user base > 1.
_______________________________________________
Freetel-codec2 mailing list
Freetel-codec2@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
_______________________________________________
Freetel-codec2 mailing list
Freetel-codec2@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freetel-codec2