View Issue Details

IDProjectCategoryView StatusLast Update
0000766OpenMPT[All Projects] File Format Supportpublic2017-10-08 15:51
ReportermanxAssigned Tomanx 
PrioritylowSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version 
Target VersionOpenMPT 1.28.01.00 (goals)Fixed in VersionOpenMPT 1.28.01.00 (goals) 
Summary0000766: 64bit WAVE-like file format
Description

Stream export with 192kHz/4/float format in Wave files will overflow the data chunk size after 23 minutes.
FLAC is only an option for integer formats and not floating point.
Possible formats with 64bit file size and floating point support:
1) RIFF WAVE : Chain multiple data chunks in (hack-ish but somewhat not uncommon practice)
2) EBU RF64 : http://tech.ebu.ch/docs/tech/tech3306-2009.pdf
3) Sony Wave64 : http://www.ambisonia.com/Members/mleese/sony_wave64.pdf/sony_wave64.pdf
4) Apple CAF : https://developer.apple.com/library/content/documentation/MusicAudio/Reference/CAFSpec/CAF_intro/CAF_intro.html
5) OggPCM : https://wiki.xiph.org/OggPCM
6) AU/.snd Sun Audio : http://pubs.opengroup.org/external/auformat.html

Additional Information

Discussion of different 64bit file formats can be found at http://blog.bjornroche.com/2009/11/wave64-vs-rf64-vs-caf.html

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

manx

manx

2017-10-02 19:28

administrator   ~0003282

Last edited: 2017-10-04 16:58

View 2 revisions

AU would be the simplest, and we already can read the format as samples.
W64 is probably the most useful and probably second easiest to implement (both for writing and loading as sample).
OggPCM is easy to write, however loading OggPCM requires a considerable amount of work in order to parse the channel mapping headers correctly and handle the downmixing. Also, it is not used anywhere in practice.
RF64 quite honestly looks like an utter mess of hacks.
WAV with multiple chunks is just way too dirty to consider.
CAF is not considered any more because it is kind of Apple-specific, however it is extensively and clearly specified.

manx

manx

2017-10-04 17:02

administrator   ~0003292

Last edited: 2017-10-05 20:21

View 2 revisions

W64: The Cue64/Marker chunk is ambiguously specified with respect to whether it implements chunk-external padding (like all other chunks) or chunk-internal padding. Implementations differ on behaviour in the wild: ScalaAudioFile writes chunk-external padding, Reaper writes chunk-internal padding.
W64: The Cue64/marker chunk uses UTF16 encoding, however all other string metadata inherits the problem of unspecified 8bit enconding from RIFF WAVE. Gloriously inconsistent.

manx

manx

2017-10-08 15:51

administrator   ~0003299

AU export implemented in r9067. Given that none of the considered formats is perfect and without quirks, AU was chosen because of its simplicity.

Issue History

Date Modified Username Field Change
2016-04-20 17:08 manx New Issue
2016-05-04 08:08 manx Product Version OpenMPT 1.26.00.* (old testing) =>
2017-09-22 12:15 manx Assigned To => manx
2017-09-22 12:15 manx Status new => assigned
2017-09-22 12:15 manx Target Version OpenMPT 1.?? (long term goals) => OpenMPT 1.28.01.00 (goals)
2017-09-29 17:25 manx Description Updated View Revisions
2017-10-02 19:28 manx Note Added: 0003282
2017-10-02 19:30 manx Description Updated View Revisions
2017-10-02 19:32 manx Description Updated View Revisions
2017-10-04 16:58 manx Note Edited: 0003282 View Revisions
2017-10-04 16:59 manx Description Updated View Revisions
2017-10-04 17:02 manx Note Added: 0003292
2017-10-05 20:21 manx Note Edited: 0003292 View Revisions
2017-10-08 15:51 manx Status assigned => resolved
2017-10-08 15:51 manx Resolution open => fixed
2017-10-08 15:51 manx Fixed in Version => OpenMPT 1.28.01.00 (goals)
2017-10-08 15:51 manx Note Added: 0003299