Open maxf266 opened 1 year ago
While this is technically fixable issue, I think there is no much sense in doing that.
To fix it, I'd need to either add a lot of compatibility macros to accommodate all changes to FFmpeg APIs through years up until now, which is highly error-prone and will need a lot of testing. Or to implement dynamic loading for multiple FFmpeg major versions. Every path I see involves a lot of work. It's not hard, just cumbersome and time consuming.
And there is not much sense in even fixing something that cannot be used anymore. Flash browser plugin is essentially killed by Adobe. Major browsers removed plugin code. With two sides missing, what compatibility layer is for? Big sites moved away from Flash years before the plugin itself was EOLed.
If you use freshplayerplugin, you probably are using some older browser, which if uses FFmpeg libraries, expects some older versions. You best bet is to compile FreshPlayerPlugin against those older versions of FFmpeg and just keep those older FFmpeg binaries. I'd suggest going with the newest version of FFmpeg which a browser you'll be using will load. That way you'll have only one set of FFmpeg libraries loaded.
Oh, by the way you may just turn hardware decoding support off during configure stage.
Add -DWITH_HWDEC=OFF
to the cmake
invocation line. (For example, cmake -DWITH_HWDEC=OFF ..
)
@i-rinat You can clone/fork preferred ffmpeg version as "public archive" and add it as dep to gitmodules. (But build process may be specific and slow.)
You can clone/fork preferred ffmpeg version as "public archive" and add it as dep to gitmodules
Yeah, it's possible to even create a custom stripped-down version of FFmpeg libraries that only support selected features with modified ABI to avoid clashes with the distro-provided FFmpeg libraries. I just do not understand why even it's needed in the first place.
It's impossible to use Flash plugin with the current versions of Firefox or webkitgtk-based browsers, as they thrown away plugin support code. Most of popular enough sites even removed Flash versions completely. But let's assume there are some sites that still require Flash to work. Most probably, users will run some compartmentalized, older version of Firefox. Most probably that "container" will contain some older libraries that older browser builds required and which are no longer available in current distributions. For example, it you want to run Opera 12, you'll need already-removed-from-almost-all-distros Gstreamer 0.10. So... if users already carry older libraries, why not add older FFmpeg libraries to the container? And on top of that, older Firefox versions can't load FFmpeg 5.0 anyway, so why bother adding compatibility with FFmpeg 5.0 to the plugin?
personally I use the browser "MyPal" https://www.mypal-browser.org/download.html https://github.com/Feodor2/Mypal68/ or "Centaury" from the same author but didn't find the link anymore.
So... Maybe just have to remind required version of FFmpeg in INSTALL / README ?
have to remind required version of FFmpeg in INSTALL
This will require preliminary testing and validation, which is quite time-consuming and cumbersome. Although I understand that this is probably useful to somebody, I just can't bring myself to actually do it. I'm not using this code anymore, so there is no real incentive to actually fix the issue for me. And as such, it's highly unlikely I will ever fix anything here. There is a pull request that is more than two and a half years old now, and I still did not address that issue. So to be real, the FreshPlayerPlugin project is dead.
@i-rinat We just need version. Can I test it instead of you?
Custom ffmpeg build available on Xubuntu 16.04 (gcc 5.4) ...
1.2.12 was released on 2015-02-12. It is the latest stable FFmpeg release from the 1.2 release branch, which was cut from master on 2013-03-07. Amongst lots of other changes, it includes all changes from ffmpeg-mt, libav master of 2013-03-07, libav 9 as of 2013-03-07.
It includes the following library versions:
libavutil 52. 18.100
libavcodec 54. 92.100
libavformat 54. 63.104
libavdevice 54. 3.103
libavfilter 3. 42.103
libavresample 1. 1. 0
libswscale 2. 2.100
libswresample 0. 17.102
libpostproc 52. 2.100
sudo apt-get remove ffmpeg libavcodec-dev libavcodec-ffmpeg56 libavutil-ffmpeg54 libswresample-ffmpeg1 libavdevice-ffmpeg56 libavutil-dev libswresample-dev gstreamer1.0-libav gstreamer1.0-plugins-bad libavfilter-ffmpeg5 libavformat-ffmpeg56 libpostproc-ffmpeg53
sudo apt-get install yasm libpulse-dev libasound2-dev
sudo apt-get install ragel libssl-dev libglib2.0-dev libpango1.0-dev libgl1-mesa-dev libevent-dev libgtk2.0-dev libxrandr-dev libxrender-dev libxcursor-dev libv4l-dev libgles2-mesa-dev libva-dev libvdpau-dev libdrm-dev libicu-dev
mkdir -p ~/Solutions
cd ~/Solutions
wget https://ffmpeg.org/releases/ffmpeg-1.2.12.tar.bz2
... extract it
cd ffmpeg-1.2.12
./configure --enable-libpulse --enable-indev=alsa,pulse,oss,fbdev --enable-outdev=alsa,pulse,oss,fbdev
make -j2
sudo make install
cd ~/Solutions
git clone https://github.com/proxy-m/freshplayerplugin.git
cd freshplayerplugin
mkdir build
cd build
cmake -DWITH_HWDEC=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j2
sudo make install
It builds firstly with some errors on headers... So fix it manually #define HAVE_AVVDPAUContext
on vdpau.h before typedef struct AVVDPAUContext
...
geany ~/Solutions/freshplayerplugin/src/ppb_video_decoder.c:46 /usr/local/include/libavcodec/vdpau.h:71 &
building shows following error: