VOGONS


First post, by Nikita Afanasev

User metadata
Rank Newbie
Rank
Newbie

Hello, I am not familiar with old programming, but anyway I love it, so I am going to play video in DOS.
Of course, there are already several players such as Mplayer and QuickView, but I need to combine my game and the player so that the game could play movies by itself.

I searched and searched possible solutions, and reached to the result that FFMpeg is the best tool to develop it.
But there are still so many problems.

1. There is FFMpeg DOS port and it says that it supports DJGPP, but it causes so many errors while compiling.
2. FFMpeg will be used to just decode the video. To output the video to the screen, renderer will be needed.
How can I solve this problem? Direct X or SDL are widely used in other OS, but I am not sure they can be used in DOS, too.

Please help me, I have been struggling due to this issues for more than a week.
Thank you so much

Reply 3 of 13, by the3dfxdude

User metadata
Rank Member
Rank
Member

Well, if you are writing a game, do you have some way to drawing to the screen? You can use what you got going already, but I don't know what that is.

On a vga card, the beginning address for the screen is a0000h. Now how to go about setting values in there about that depends on the mode you are using and what format you get the pixels out of ffmpeg.

There are various guides out there. A famous one is Michael Abrash's book:
https://www.jagregory.com/abrash-black-book/#part-ii

It might be easier to use an API already written, but most people writing games did it like how Michael did it by accessing the card directly.

Reply 5 of 13, by Cyberdyne

User metadata
Rank Oldbie
Rank
Oldbie

Noice. DOS community needs a good video player. We only have one "commercial" thing that's outdated, and a Linux port of some kind that is super not user friendly. 😁

I am aroused about any X86 motherboard that has full functional ISA slot. I think i have problem. Not really into that original (Turbo) XT,286,386 and CGA/EGA stuff. So just a DOS nut.

Reply 7 of 13, by Nikita Afanasev

User metadata
Rank Newbie
Rank
Newbie
Bondi wrote on 2021-10-20, 09:33:

There is a good DOS viewer/player called Quickview Pro, I guess. It supports alsmost everything. But not open source, unfortunately. So not very useful info for OP.

That's why I need to develop my own video player.
There are also Mplayer, but its dos port isn't compiled, and entire source code is so huge to parse and reuse 🙁

Reply 9 of 13, by Nikita Afanasev

User metadata
Rank Newbie
Rank
Newbie
llm wrote on 2021-10-20, 12:59:

could you use the allegro flic player stuff? https://www.allegro.cc/manual/4/api/flic-routines/

FLI/FLC format is super old.
The video file format is mp4 and its duration is over 3 minutes, it sizes around 20 MB, resolution is 640x480.
When it is converted to FLC format, its size becomes over 2 GB! How can I use it?

Reply 10 of 13, by Benedikt

User metadata
Rank Oldbie
Rank
Oldbie

The way I read it, llm wanted to imply that you could perhaps reuse the Allegro part of that player in combination with decoders from FFMPEG.
You would have to dive a little bit into Allegro's source code, though.

Reply 12 of 13, by AlexZ

User metadata
Rank Member
Rank
Member

I think that if you ask mplayer authors you may get a better answer as to what DJGPP version is supported. Perhaps some additional libraries are missing or some small tweaks are needed. Maybe you're the first one trying to compile it for DOS for many years.

Pentium III 750E, ECS P6BXT-A+, 384MB RAM, NVIDIA GeForce FX 5600 128MB, Voodoo 2 12MB, 80GB HDD, Yamaha SM718 ISA, 19" AOC 9GlrA
Athlon 64 3400+, MSI K8T Neo V, 1GB RAM, NVIDIA GeForce 7600GT 256MB, 250GB HDD, Sound Blaster Audigy 2 ZS

Reply 13 of 13, by ise

User metadata
Rank Newbie
Rank
Newbie

Mplayer has no official support in upstream, it was ported to DOS by a quick and dirty way. Of course, it still can be compiled after some patching.
FFmpeg is a bit different story, at least configure & make should pass out of the box. But if someone wants to do a normal, non-crippled build with external libraries and assembly enabled, you'll have to fix your toolchain first.

% ffmpeg --help
ffmpeg version N-104664-g57adb26d05 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 4.7.4 (GCC)
configuration: --enable-gpl --arch=x86 --cross-prefix=i386-pc-msdosdjgpp- --cc=i386-pc-msdosdjgpp-gcc-4.7 --extra-cflags=-I/opt/i386-msdosdjgpp/i386-pc-msdosdjgpp/watt32/include --extra-ldflags=-L/opt/i386-msdosdjgpp/i386-pc-msdosdjgpp/watt32/lib --target-os=freedos --disable-debug --enable-libx264 --enable-libx265 --enable-libvpx --pkg-config=pkg-config --prefix=/dev/env/DJDIR
libavutil 57. 9.101 / 57. 9.101
libavcodec 59. 13.101 / 59. 13.101
libavformat 59. 9.102 / 59. 9.102
libavdevice 59. 0.101 / 59. 0.101
libavfilter 8. 17.100 / 8. 17.100
libswscale 6. 1.100 / 6. 1.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
...