Old 03-19-2010, 12:48 PM   #1
TexasFury
Human being with feelings
 
Join Date: Sep 2006
Posts: 38
Default Divio G.726 codec.

Anyone hear of this codec? An app I beta tested apparently uses this for the wav files. At least it's the codec what WMP11 says is missing when I tried playing one of the wav files in it. Reaper will open when I try, but there is nothing in the track. Anyway does anyone know where to find this codec? I've looked everywhere If it helps, the samples for this app were provided by Chocolate Audio, and the processing is done by Overloud. Thanks.

EDIT: nevermind, turns out the app uses a proprietary compression scheme, so the developers informed me

Last edited by TexasFury; 03-25-2010 at 06:19 PM.
TexasFury is offline   Reply With Quote
Old 12-10-2013, 12:44 PM   #2
buggyboy
Human being with feelings
 
Join Date: Feb 2011
Posts: 40
Default

Format-Tag:
0x4243 = Divio G726 Divio, Inc. !

Interesting I just messing around with the Soundbank files from Guitar Pro 6.
From version Guitar Pro 6.1.4 to Guitar Pro 6.1.5 they nearly halfed the size of the soundbank.
Well these are *.wav files but with some strange Codec.

the TwoCC in the RIFF header are these:

Format-Tag:
0x4342 'CB' -> Bigger File (GP 6.1.4) =FLAC?
0x4243 'BC' -> Smaller File (GP 6.1.5) =OGG?

there is also some OverLoud.dll.
Well but the main thing is WavFile.dll.
So far I guess the compression is somehow FLAC or vorbis ogg since there is that String:
"reference libFLAC 1.2.1 20070917"
Wow http://xiph.org/flac/changelog.html
FLAC 1.2.1 (17-Sep-2007)
What a coincidence as well as this
libraries:
...
Added support for encoding the residual coding method introduced in libFLAC 1.2.0 (RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) which will encode 24-bit files more efficiently.
and the string 'PARTITIONED_RICE2' inside WavFile.dll.

Anyway that is the interesting export GP6 uses to open these files:
[ord_01]
public: utils::WavFile::WavFile(
class filesystem::FileSystem &,
class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)
Caller passes the filename in form of some QT-filesystem object. WavFile will open that file and do the decompression.

... and there are more cool API's

[ord_25] public: utils::WavFile::setCompression(enum utils::WavFile::Compression,int)

and this:

[ord_24]
public: utils::WavFile::save(
class filesystem::FileSystem &,
class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)

The Plan:

Decompress:
WavFile::WavFile("Clarinet-Blow-Sus-NoVibr-00-none-076-none-none.wav")
WavFile::setCompression(0x1)
WavFile::save()

Compress:
WavFile::WavFile("Clarinet-Blow-Sus-NoVibr-00-none-076-none-none.wav")
WavFile::setCompression(0x4342)
WavFile::save()

However oh dear that C++ 'decorated' calls really sucks. At the moment it's somehow to complicated for me to just call this from 'outside'. Like using a Python script or some C++ code.

So the plan for now is to hack into GP6 some setCompression & WavFile::save call...
buggyboy is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 05:36 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.