[ogg-dev] How to concatenate Ogg in the browser JS?

Vitaly Zdanevich zdanevich.vitaly at ya.ru
Thu Nov 22 14:43:33 UTC 2018

I faced with problem about CRC32 calculation, I see that lookup table is different here https://github.com/rillian/rogg/blob/master/rogg.c#L196
end for example here
https://stackoverflow.com/a/18639975/1879101 - JS code on this page for building the table produces the same result. I think that generating the table is better than having hardcoded one - for security against the case when somebody accidentally change one character and this table will continue to work in 99% of cases. My current JS code for building table:

function _makeCRCTable() {
    const CRCTable = new Uint32Array(256);
    for (let i = 256; i--;) {
        let char = i;
        for (let j = 8; j--;) {
            char = char & 1 ? 3988292384 ^ char >>> 1 : char >>> 1;
        CRCTable[i] = char;
    return CRCTable;

I need to fix something here?

16.11.2018, 17:57, "Timothy B. Terriberry" <tterribe at xiph.org>:
> Please see the documentation: https://xiph.org/ogg/doc/framing.html
> I would encourage you to use random serial numbers, as intended, also,
> as any downstream consumers of your files will face limitations similar
> to the ones you are facing if they want to do anything more with them.
> But before you go too far down the route of changing the serial numbers,
> can you tell us what software is producing Oggs with a hard-coded serial
> number to begin with?
> Vitaly Zdanevich wrote:
>>  Thank you again for your help, now I am thinking about much simpler solution - because all my Oggs comes from the the one source looks like I can alter serial and crc32 at their hardcoded positions. Please see this screenshot https://giphy.com/gifs/9AIe7ksYBwiYQoLVv9/fullscreen with serials 11111111 and 22222222- it will be correct approach? And can you please say me from what region I need to calculate crc32? And also as we can see on the screenshot above - changed two groups of numbers beside the serials - what is that? Thank you very much for help.
>>  16.11.2018, 04:01, "Ralph Giles" <giles at thaumas.net>:
>>>  On 2018-11-15 11:01 a.m., Vitaly Zdanevich wrote:
>>>>    Maybe you know some existing code snippet or library for Javascript for altering serial and crc?
>>>  I don't, sorry.
>>>>    Just now I compiled your quick script to wasm but the size is 28K, > I think about simple correct solution for that case.
>>>  If you strip out the fprintf()s for progress and error reporting, it
>>>  might get smaller. More so if you replace the open/memmap step with
>>>  direct access to the blob as an array. But it's not very much code to
>>>  just port the functions to pure js.
>>>     -r
>>  _______________________________________________
>>  ogg-dev mailing list
>>  ogg-dev at xiph.org
>>  http://lists.xiph.org/mailman/listinfo/ogg-dev

More information about the ogg-dev mailing list