X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f Message-Id: <202301022028.302KSMm8021413@delorie.com> Date: Mon, 2 Jan 2023 20:51:56 +0100 From: "Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de) [via djgpp-announce AT delorie DOT com]" To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: DJGPP port of FFmpeg 5.1.2 uploaded. Content-Type: text/plain; charset=US-ASCII UI-OutboundReport: notjunk:1;M01:P0:NT/1UF5xkZs=;f0CZFwc0rekmx7Nt6SdgkaZA4qv AvHT/BLpnC/PhTTomQz+c5p7ZNLAmVqvFbmTs6K9JUa2ouNus/pfqDRhOyrg6IydIJxYbrb+M u/APjyESlK9TLcksH52VkBlDKWJtG7xI4xlHLjOJ2U8NytmTEo+RRiLP695Io+sV18qMpD7gV R+TzDNkr3YE4Ytb5g4seRbbbUgSUgJ8VS6cT+RvtYHjPZBm/lzhdhkqCQBsCMXiHHprbDa0AJ tYk9UNOTMCLJmBmymudcVl+efwGtzL0bGR80cNK+5+q4MWOGJyNC3MC1BQ0yRqHTQN9QsvJsL qMxVLwjvknrY13D6C6ItX2BwGdPdGi270D42v/9klN8j8DBEYG8bRX3JbSy67jp88ZjYfvWTv sMCtrSKr+cEFMnL9pZ0IKWtAVeAW91M5tHZ1Yaz1GVg919qV4DldJQLdIfDmr1lcarD+ZkHVU vs94e5K86fk9WR9tEjx1s8OIOaHVWy/7xcakRBAKsufMV5sV7sEngwRAoEG3dG+zd53v4hBt3 JauWXANoGW1Qis9VYdCEwVJCTG6A32SzVypj1dsCYFlWB2VkMr2YlKlq50J6iI4kPJ0qFR114 0wjErhfDp1DIG5rhKrNjy/qoyH2jIZgaNtweVSYWfU8EJhc47O4gdDq9p7LL70oB5l01TF+Ry yBG7yadEQwFEDeloEpWnfWDJObYVvHqrFHils6qDq85DAmFSTvg5nn5/is5P7DwO6ViYYcjOo lTETnRRhFCfesoBLLoNSrJnMqgEGzkCJD/E5wVZFBJyib+MW4o2xkdTlx/+wCSDK/oMJhH74g kpHZ9D4TNBi0jdolVt3EkRNp+04RjmuU4CrzD9prNDy+uM9uErRzj/EYw00kcQHvEJAXQXwJ1 AwkAkgc1U4BJdFinNIFykeixMUZ2UzE9Fbv08aQO21expNKFsj6ITAlkYqa1XbHLy6/Cdq8J/ DC9K59MzrhR80XCOZBBhCLuoqAo= Reply-To: djgpp AT delorie DOT com This is a port of FFmpeg 5.1.2 to MSDOS/DJGPP. FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. FFmpeg Libraries for developers libavutil is a library containing functions for simplifying programming, including random number generators, data structures, mathematics routines, core multimedia utilities, and much more. libavcodec is a library containing decoders and encoders for audio/video codecs. libavformat is a library containing demuxers and muxers for multimedia container formats. libavdevice is a library containing input and output devices for grabbing from and rendering to many common multimedia input/output software frameworks, including Video4Linux, Video4Linux2, VfW, and ALSA. libavfilter is a library containing media filters. libswscale is a library performing highly optimized image scaling and color space/pixel format conversion operations. libswresample is a library performing highly optimized audio resampling, rematrixing and sample format conversion operations. DJGPP specific changes. ======================= - The port has been configured and compiled with all assembler optimizations disabled. This also includes the disableling of the run-time cpu detection code. The goal is to have a library that only requires a i386 cpu. If someone wants a specialized version of this library, he will have to build his own version. - The configure script has been modified to get the library configured and compiled with DJGPP. A new target called "djgpp-dos" has been created to control the DJGPP build. This is important because else the GNU default target is used and this defaults some parameters for a 64 bit system instead as for 32 a bit system. The diffs file documents the DJGPP specific changes and is stored in the "djgpp" directory. - There are no user visible changes. - The port has been configured and compiled using the small djmake.sh script stored in the "djgpp" directory. An inspection of the scripts shows the configuration parameters that have been used. - Except for one or two test programs that cannot be build all other test programs can be compiled and their checks pass flawlessly. - The library requires an entropy source to seed the hash function. This can be a driver that will be addressed either as /dev/urandom or /dev/random. On plain DOS one such driver, NOISE.SYS, can be obtained from: http://web.archive.org/web/20051124224824/http://www.rahul.net/dkaufman/ as: http://web.archive.org/web/20051124224824/http://www.rahul.net/dkaufman/noise063a2.zip Please read the instructions carefully. This driver works on DOS and may be on some versions of Windows but it does not work for all versions of Windows. For XP it does not work and I have found no replacement. Alternatively if no driver is available, then some pseudo random data will be created by the library itself. - To configure and compile this port at least the following version of Bash, Make, pkg-config and perl are required: http://ftp.delorie.com/pub/djgpp/current/v2gnu/bsh4253b.zip http://ftp.delorie.com/pub/djgpp/current/v2gnu/mak43br2.zip http://ftp.delorie.com/pub/djgpp/current/v2gnu/perl588b.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/pkc023b.zip No previous versions will work nor are supported. Any future version should work. - To build and use this port the latest DJGPP ports of the following libraries are required: http://ftp.delorie.com/pub/djgpp/current/v2apps/bz2-108a.zip http://ftp.delorie.com/pub/djgpp/current/v2apps/lzlb112a.zip http://ftp.delorie.com/pub/djgpp/current/v2apps/xz-525a.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/zlb1212b.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/xml2914b.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/ltha111b.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/lme3100b.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/logg135b.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/lops131b.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/lvbs137b.zip http://ftp.delorie.com/pub/djgpp/current/v2tk/x264-1b.zip and must be installed. All those libraries may introduce even more dependencies from other libraries that will have to be resolved by installing them. - Network support may be possible using the latest DJGPP port of the Watt-32 library (aka wat3211b.zip) but will require some more porting effort that I have not done. - The port has been configured and compiled on WinXP SP3 and Win98SE. It has not been possible to compile it on MSDOS 6.22 with DOSLFN v0.41f. Due to the use of long file names it will not be possible to configure and compile without LFN support. To compile the port, gcc1210, gpp1210 and bnu2351b are required. It was not possible to compile it using gcc1030 and gpp1030. - Compiling and running the test suite on Win98SE installed on a virtual machine takes approximately 60 min. - The html formatted documentation has been created on a Linux system because the port of makeinfo is to old and does not provide the required features. - Due to the size of the binaries and libraries, the port has been splited into a binary archive and a library archive. The binary archive contains the programs ffmpeg, a command line toolbox to manipulate, convert and stream multimedia content and ffprobe,a simple analysis tool to inspect multimedia content. ffplay, a minimalistic multimedia player is not provided because it requires a port of the sdl2 library that is not available. May be it is possible to replace the sdl2 library by the last working DJGPP port of the Allegro library but I will certainly not intend to port ffplay to Allegro. - The library archive is not SFN clean. There is a major number of header files that do not match the 8.3 file name rule of DOS. This will not be fixed. Inventing new DOS conforming SFN that will never find their way upstream is a waiste of time. If some one wants to use this library on plain DOS, he will have to install and use a LFN driver. - This port shall be a "prove of work", in the sense that it is still possible to use DJGPP on Win98 or WinXP to "natively" configure and compile a software package of the complexity like this one. It is clear that the porter will need enough skills and insight in DJGPP, MSDOS/FreeDOS and Posix. In general, modern software packages like this one can no longer be compiled on plain DOS no matter if a LFN driver is installed or not. The inherent limitation of plain DOS is not only the SFN but also that the maximal path name length is limited to 64 characters. This length gets some times exceeded by Posix tools used to configure and compile the sources, when these tools create temporary directories and files during the build process. Apart from this inconvenience the time to configure and compile the sources is dramaticaly longer on a plain DOS system than on a Windows system. It is also clear that it may become necessary to port a lot of auxiliary libraries and tools to be able to build a product like this one. E.g.: the configure script requires pkg-config to check for the existence of the different auxiliary libraries. Either the configuration script must be adjusted for DJGPP or pkg-config must be ported. Or the alternative of cross-compiling can be chosen. Last but not least, I am not an user of FFmpeg neither on Linux nor on DOS/Windows. I am also not lobbying for using it on plain DOS. In my opinion, it makes no sense at all doing multi-media stuff on plain DOS nowadays. I even do not know if this port performs well at all. This means that if this port does not work as you expect, you are alone. You can report issues and I may try to fix them or may not. But in general I am not interested in this topic anymore and the only purpose of this exercise was to demonstrate that software like this can still be build using DJGPP as native building environment. For the people interested in the output of the build process, the following output files have been stored in the "djgpp" directory of the source archive: _c_log.txt: console output of the configuration step. _m_log.txt: console output of the compilation step. _mc_log.txt: console output of the check step. As usual, all djgpp specific files (diffs, README files, etc.) are stored in the "djgpp" directory. The sources will be configured to be build in the "0build" directory under the top src directory using the djmake.sh script. Please read the docs to become familiar with this product. Here is an extract of the CHANGES file showing the user visible changes from the last port (FFmpeg 0.0.0) to this one: ------------------------------------------------------------------------------- This is the first port. Read the documentation. ------------------------------------------------------------------------------- The port consists of the usual three packages that have been produced using djdev20X (CVS repository code) and can be downloaded from ftp.delorie.com and mirrors as (time stamp 2022-12-31): FFmpeg 5.1.2 headers, library and man format documentation: http://ftp.delorie.com/pub/djgpp/current/v2tk/ffmg512a.zip FFmpeg 5.1.2 binaries and man format documentation: http://ftp.delorie.com/pub/djgpp/current/v2tk/ffmg512b.zip FFmpeg 5.1.2 source: http://ftp.delorie.com/pub/djgpp/current/v2tk/ffmg512s.zip Send FFmpeg specific bug reports to Send suggestions and bug reports concerning the DJGPP port to comp.os.msdos.djgpp or . Enjoy. Guerrero, Juan Manuel