OpenVisualCloud / Media-Communications-Mesh

MCM enables efficient, low-latency media transport for media microservices.
BSD 3-Clause "New" or "Revised" License
18 stars 14 forks source link

Add FFmpeg 7.0 support #182

Closed tszumski closed 2 months ago

tszumski commented 2 months ago

This PR includes the commits below:

  1. Add FFmpeg 7.0 support
  2. Use FFmpeg 7.0 as default and update README.md how to switch to FFmpeg 6.1
ko80 commented 2 months ago

Please update the PR description to provide more details. Example:

This PR includes the commits below
* Add ffmpeg 7.0 support
* ...
ko80 commented 2 months ago

WARNING: Do not merge until @MateuszGrabuszynski approves after validating that

MateuszGrabuszynski commented 2 months ago

Build process went properly. Fallback to 6.1 works as well, but it may be better to mention using a variable instead: FFMPEG_VER=6.1 ./clone-and-patch-ffmpeg.sh.

There's one mishap though, an older version of libmcm is expected by the program:

$ pwd
/home/gta/MCM182

$ git log | head
commit a02720881d5f0fabce635ee5296f2ee057f2cbdf
Author: Tomasz Szumski <tomasz.szumski@intel.com>
Date:   Fri Aug 30 14:13:53 2024 +0200

    Use FFmpeg 7.0 as default and update readme.md how to switch to FFmpeg 6.1
$ LD_LIBRARY_PATH=$(pwd)/ffmpeg-plugin/build/FFmpeg/libavdevice/:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavcodec:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavdevice:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavfilter:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavformat:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavutil:$(pwd)/ffmpeg-plugin/build/FFmpeg/libpostproc:$(pwd)/ffmpeg-plugin/build/FFmpeg/libswresample:$(pwd)/ffmpeg-plugin/build/FFmpeg/libswscale:$(pwd)/out/lib/:$(pwd)/ffmpeg-plugin/build/jpegxs/Bin/Release/ \
ffmpeg -version

ffmpeg: error while loading shared libraries: libmcm_dp.so.24.06.01-31-g8828f22: cannot open shared object file: No such file or directory
$ find . -name libmcm_dp.so.*
./out/lib/libmcm_dp.so.24.06.01-46-ga027208

Workaround: Using a library built from commit 6123443 (last LD_LIBRARY_PATH argument points to the lib)

$ LD_LIBRARY_PATH=$(pwd)/ffmpeg-plugin/build/FFmpeg/libavdevice/:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavcodec:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavdevice:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavfilter:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavformat:$(pwd)/ffmpeg-plugin/build/FFmpeg/libavutil:$(pwd)/ffmpeg-plugin/build/FFmpeg/libpostproc:$(pwd)/ffmpeg-plugin/build/FFmpeg/libswresample:$(pwd)/ffmpeg-plugin/build/FFmpeg/libswscale:$(pwd)/out/lib/:$(pwd)/ffmpeg-plugin/build/jpegxs/Bin/Release/:$(pwd)/../MCM/out/lib \
ffmpeg -version
ffmpeg version 5148262 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --enable-shared --enable-mcm
libavutil      59.  8.100 / 59.  8.100
libavcodec     61.  3.100 / 61.  3.100
libavformat    61.  1.100 / 61.  1.100
libavdevice    61.  1.100 / 61.  1.100
libavfilter    10.  1.100 / 10.  1.100
libswscale      8.  1.100 /  8.  1.100
libswresample   5.  1.100 /  5.  1.100

Working on further tests.

MateuszGrabuszynski commented 2 months ago

ST20 video test went fine with sample bars video.

$ md5sum out_auto_2024-09-02_074852.yuv tests/single-node-sample-apps/video.yuv 
09e2ab3d78d3762993a48824e7ffb693  out_auto_2024-09-02_074852.yuv
09e2ab3d78d3762993a48824e7ffb693  tests/single-node-sample-apps/video.yuv
Mionsz commented 2 months ago

@Mionsz @tszumski as you showed the z (patch) from semver x.y.z. is automatically included in the 7.0 branch. So no changes are required.