View Issue Details

IDProjectCategoryView StatusLast Update
0000643OpenMPTFile Format Supportpublic2016-02-28 09:16
ReporterRyanBram Assigned ToSaga Musix  
PrioritylowSeverityfeatureReproducibilityhave not tried
Status resolvedResolutionfixed 
PlatformAll platformOSAll OSOS VersionAll version
Product VersionOpenMPT 1.24.01.00 / libopenmpt 0.2-beta8 (upgrade first) 
Target VersionOpenMPT 1.25.04.00 / libopenmpt 0.2-beta16 (upgrade first)Fixed in VersionOpenMPT 1.25.04.00 / libopenmpt 0.2-beta16 (upgrade first) 
Summary0000643: Native support of MO3
Description

Current OpenMPT support for unmo3 is provided by binary blob from Ian Luck.
<s>By adopting the opensource version of unmo3 by Laurent Clévy, OpenMPT and libopenmpt will have support for mo3 format natively.</s>
OpenMPT and more important libopenmpt should contain native support for MO3 without relying on the binary blob in order to support MO3 on all platforms.

Additional Information

<s>Current open source version of unmo3 is licensed under GPL. After contacting the author, he has intention to relicense his code to LGPL as long as there is an opensource project who want to adopt his work.</s>

<s>With LGPL, now OpenMPT and libopenmpt will safely linked dynamically with unmo3 library without affected by copyleft.</s>

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

Activities

Saga Musix

Saga Musix

2015-02-03 20:02

administrator   ~0001945

In case you haven't noticed, I have contributed to the opensource unmo3 myself, and I can tell you that the code quality is so abysmal (probably because it's just a proof of concept) and full of security issues that rewriting a decoder from scratch would be a better choice. Plus, the open-source version of unmo3 doesn't actually do any of the MP3 or OGG decoding, so it's incomplete too.
libopenmpt can already make use of the closed-source version of UNMO3 by defining MPT_WITH_MO3.

manx

manx

2015-02-03 20:12

administrator   ~0001946

I also favour a new from scratch native parser for mo3 in OpenMPT/libopenmpt instead of completing and fixing the open source unmo3 library. The former would probably also be less work in total.
The closed source unmo3 by Ian Luck is obviously no perfect solution for libopenmpt as it naturally only works on platforms for which Ian provides a binary. However, in its current form, the open source unmo3 library is no option at all for the reasons Saga Musix already pointed out.

RyanBram

RyanBram

2015-02-03 21:04

reporter   ~0001947

Thank you for your detailed explanation.
With all of your answer I still cannot find any conclusion for my report.

Do you have any plan to developed mo3 codec from scratch in any near future? or
Will OpenMPT and libopenmpt still depend on unmo3 by Ian Luck?

If the answer for the former question is "no", my hope is you don't mark this report as won't fix and let it be open until somebody else take care for this report.

Best regards

Saga Musix

Saga Musix

2015-02-03 21:14

administrator   ~0001948

There are no plans to do so from my side.

manx

manx

2015-02-03 21:19

administrator   ~0001949

I currently do not have any plans for working on this either, but I do consider the feature request valid and would also like to see native mo3 support sometime in the future.

harbinger

harbinger

2015-03-17 01:13

reporter   ~0002006

I never work with mo3 files, but I double-clicked on one from a CD game to listen to the music, and OpenMPT opened it without a hitch. It was pretty basic (like a MOD file) but I was able to listen to the track.

So apparently SOME compatibility is available by openMPT. Let it be known that mo3 files might at least be accessible by openMPT.

Saga Musix

Saga Musix

2015-03-17 01:16

administrator   ~0002007

The focus in the feature request is on <strong>native, built-in</strong> support for MO3 files without relying on the closed-source unmo3.dll/unmo3.so, especially in the context of libopenmpt. For OpenMPT it's less of an issue, but using the closed-source unmo3 can cause licensing problems when wanting to use a completely free library, and in general libraries depending on other 3rd party libraries are always a big hassle.

Saga Musix

Saga Musix

2015-11-06 13:43

administrator   ~0002170

In a state of coding frenzy I started working on an MO3 loader last night, and pretty much everything apart from sample loading is done.

RyanBram

RyanBram

2015-11-06 15:51

reporter   ~0002171

Glad to hear that.
Thanks for your nice effort Saga.
You are really a nice person.

Saga Musix

Saga Musix

2015-11-16 22:37

administrator   ~0002186

Decoder implementation is now complete. Integration into the build system (mostly #defining some flags and searching for libmpg123) for libopenmpt is still left to do for the next major release.

manx

manx

2016-02-28 09:16

administrator   ~0002270

I implemented most of the build system changes for libopenmpt on the major desktop systems. Android, Emscripten are not done yet.
libopenmpt now (r5996) uses the internal MO3 decoder by default on Windows and on Unix-like systems.
Decoding of MP3 samples is done using libmpg123 (provided externally on Windows, linked directly on Unix-like systems) or MediaFoundation (on Windows 7 or later). libmpg123 can also be loaded dynamically on Unix-like systems.
Decoding of Vorbis samples is done using libogg, libvorbis, libvorbisfile (on Unix-like system) or stb_vorbis (on Windows or if libvorbisfile is not available).

Issue History

Date Modified Username Field Change
2015-02-03 19:57 RyanBram New Issue
2015-02-03 20:02 Saga Musix Note Added: 0001945
2015-02-03 20:12 manx Note Added: 0001946
2015-02-03 21:04 RyanBram Note Added: 0001947
2015-02-03 21:14 Saga Musix Note Added: 0001948
2015-02-03 21:19 manx Note Added: 0001949
2015-02-03 21:22 manx Summary Native support of MO3 through open source unmo3 => Native support of MO3
2015-02-03 21:24 manx Description Updated
2015-02-03 21:24 manx Additional Information Updated
2015-02-03 21:25 manx Status new => confirmed
2015-02-03 21:32 Saga Musix Priority normal => low
2015-03-17 01:13 harbinger Note Added: 0002006
2015-03-17 01:16 Saga Musix Note Added: 0002007
2015-11-06 13:43 Saga Musix Note Added: 0002170
2015-11-06 13:43 Saga Musix Assigned To => Saga Musix
2015-11-06 13:43 Saga Musix Status confirmed => assigned
2015-11-06 15:51 RyanBram Note Added: 0002171
2015-11-16 22:37 Saga Musix Note Added: 0002186
2015-11-16 22:37 Saga Musix Status assigned => resolved
2015-11-16 22:37 Saga Musix Resolution open => fixed
2015-11-16 22:37 Saga Musix Fixed in Version => OpenMPT 1.25.04.00 / libopenmpt 0.2-beta16 (upgrade first)
2015-11-16 22:37 Saga Musix Target Version => OpenMPT 1.25.04.00 / libopenmpt 0.2-beta16 (upgrade first)
2016-02-28 09:16 manx Note Added: 0002270