Could you try to upload binary dump (i.e. the "hex 2-digits" from Hex editor) of those .ogg? First 0x1000 bytes (4096 '2-digits') might be enough. Strange that .TXTH did not help you, did you specify start_offset?
Thanks for uploading sample files. You are right! Source file has OggS streams in it, and also it would not have been enough to get information with only 0x1000 bytes. File seems array of {FMT}{SEEK}{DATA} group of bytes.
Legend (All values are in Hexadecimal 0x#### ): "TTTT" is string. [xxxx_size] are (4-byte LE) size of bytes of following (sub-structure){ }. [yyyy] are (in general) 4-byte values meaning 'yyyy'. <zzzz> is description or meaning (what I could interpret).
So in theory (I could not test in this PC), setting in .txth: start_offset=0x211C (AND NOT "06x2150") should make the data playable. ffmpeg should read stream header before recognizing the format, so first "OggS" bytes must(?) be included (cannot confirm this).
edited 5:38 PM EDT April 15, 2022
thanks (and another problem) by elburg at 12:16 PM EDT on April 15, 2022
i will be sure to try this.
UPDATE
It was just as I feared: only the example file worked.
I was thinking of a potential git clone of vgmstream to implement this, but I am still learning c++ so I don't know how to do a proper edit.
start_offset=0x211C is static text. As this offset is dependant on FMT/SEEK struct sizes, one cannot expect all "DATA" (OggS) structs (from .AUDIO_DATA source files) to be same size, as this "start_offset" assumes (because that's the only file I got - the "example file" as you call it).
The proper way to get "start_offset" values, is to get the proper "count" of those "OggS" string, i.e. to get FMT/SEEK struct sizes in advance, like this: (All values are Hexadecimal)
And here we have 2 variable offsets! Let's try this first (or we would need ALL sample files to discard following assumption!) Assume [header_data size] is constant i.e. {FMT} struct is always same size for any .AUDIO_DATA. From example file, [header_data size] == 14 But leave [table_data size] as the variable, which with the above asumption, is always at offset 20. Vgmstream's TXTH uses @<offset>:EE$4 to get the [value] from this <offset>, with endianness EE and size 4 i.e. 4-bytes. See TXTH
And so, for the .TXTH we would have to edit this line start_offset=0x211C into start_offset=0x2C + @0x20:LE$4 Or, using default options, simply as start_offset=0x2C + @0x20
Thanks for your input, bnnm I did not figure this way of chaining input values.
Is there some way of including simple conditional statements in TXTH/TXTP, to make this process simpler? I can see the variables are already there, and audio source files are byte struct/arrays most of the time.
Example: if (@0x0 == "FMT ") then base_offset = <expr1> if (@0x0 == "FRST") then base_offset = <expr2> etc.
And I do not think, hopefully, loops should be implemented - way beyond the scope of playback... I think.