-
Notifications
You must be signed in to change notification settings - Fork 231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sound and Video Codecs #2
Comments
An example of a small library with usable interface that is based on ffmpeg code: libbinkdec from http://homepage.eircom.net/~duncandsl/avp/ Browsable source of libbinkdec: https://github.com/RobertBeckebans/RBDOOM-3-BFG/tree/master/neo/libs/libbinkdec |
Interplay around this time (1997-2000) had used ACM generally for every sound effect and music stream. This included some Bioware games as well |
Implementations from falltergeist (Fallout 2 reimplementation): https://github.com/falltergeist/falltergeist/tree/develop/src/Format/Acm ACM documentation available on TeamX site: |
I have an MVE playback implementation, based on FFmpeg that I used for Redneck Rampage Rides Again in the NBlood project: https://github.com/nukeykt/NBlood/blob/master/source/rr/src/playmve.cpp http://homepage.eircom.net/~duncandsl/avp/ is also my site but the code repository is no longer accessible, I'll get that fixed! cool to see the code is used elsewhere though! :) |
@sirlemonhead Nice! |
@burgerbecky (one of the original devs for the formats) told me last night that she has code she can release. Can someone verify if the mve files packaged with D3 work with ffmpeg? |
From the GOG version:
mpv (which uses ffmpeg/libav) can play all of those files (though it seems a bit confused about the length and seeking is glitchy) But if Becky can release the original codec source that would be even better, of course :) |
Can also confirm ffmpeg can read the MVE files, I just tried converting the intro to an MP4 and it plays back just fine with video and audio intact:
|
There might be MIT-license-friendly MVE decoding code, if Velyn can dig it up: https://cohost.org/rohit/post/5583600-descent-3-s-source-c#comment-fa05b37b-7995-4735-b9cc-df5e3ee7560d Apparently it was written when porting FreeSpace2 to Linux (http://svn.icculus.org/freespace2/trunk/src/movie/ also has source, but AFAIK the source in that repo isn't under a proper open source license). |
And there are also libfalltergeist library with mve and acm code distributed under the MIT license |
That's cool! |
By the way, a nice side-effect of Descent3 being under GPLv3 now: Basically all the code linked above (except for the one from FreeSpace2) can be integrated without causing licensing problems :) |
Is the MVE stuff not And also, the .asm code in the repo, This was not in the original source dump that Loki was working from, but it was added to Loki's tree later (under the assumption the repo was never going to be public), and I'm wondering if this is how it ended up in the public source tree. Regardless, unless this is totally cool, I would strongly urge you to remove the .asm code at a minimum, and maybe force-push the repo so it isn't even recoverable from commit history. But this might be totally cool as-is; I don't know all the details. |
I have memories of porting mvelibwa.asm to C/C++ for the initial Linux port before we handed it off to Loki. I do agree with Ryan's recommendations. |
Outright removing those files doesn't interfere with building: https://github.com/JeodC/Descent3/actions/runs/8867313091 This can be done immediately, but @kevinbentley may need to be the one to do it as repository owner. I can give it a shot though and see if git complains. Edit: It worked on the branches, but |
Closing this issue as ACM already implemented, MVE development will be tracked in #253. |
Thanks for releasing the source of Descent 3, this is really awesome!
Open Source implementations of these codecs are available, so it might be feasible to use the original files without (external) conversion?
ACM
Information on the codec: https://wiki.multimedia.cx/index.php/Interplay_ACM
Decoder library (ISC license): https://github.com/markokr/libacm
FFmpeg's decoder, based on libacm: https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/interplayacm.c
Libfalltergeist (MIT license) supports ACM: https://github.com/falltergeist/libfalltergeist
Where is ACM used? Only as part of (MVE?) cutscene videos?
MVE
MVE seems to be supported by ffmpeg; though in my experience having a dependency on ffmpeg is a pain in the ass, a minimal lib (or directly integrating code from ffmpeg into the source port) is preferable.
(OTOH, if someone wants to go the "convert to better format" route, ffmpeg could probably be used for conversion)
Information on the codec:
Implementations:
The text was updated successfully, but these errors were encountered: