zren / bomi Goto Github PK
View Code? Open in Web Editor NEWThis project forked from d-s-x/bomi
bomi - a powerful and easy-to-use multimedia player
Home Page: http://bomi-player.github.io
License: Other
This project forked from d-s-x/bomi
bomi - a powerful and easy-to-use multimedia player
Home Page: http://bomi-player.github.io
License: Other
Otherwise I won't be able to build on KDE Neon. Either I find a way to build ffmpeg and statically link it to mpv/bomi, or I continue development in a rolling distro (possibly in a VM), or docker.
libswresample checks are hardcoded so the flag is no longer needed.
Note that while this fixes compiling a build, there is currently a runtime segfault when loading a video.
Caused by: mpv-player/mpv@cfda696
Edit: This is probably because I haven't been properly building libmpv since v0.23.0.
There isn't a segfault if you load bomi without a video, but it will segfault when you open one after.
gdb build/bomi
then type run [Enter]
told me that the error was in VideoProcessor::open
I added #include "misc/log.hpp"
and DECLARE_LOG_CONTEXT(VideoProcessor)
to the top of videoprocessor.cpp
, then littered the function with _Info("VideoProcessor::open");
The offending line is p->vp->d->vf = vf;
which means p->vp
is probably foobarred. There's some magical casting going on for p->vp
.
auto VideoProcessor::open(vf_instance *vf) -> int
{
_Info("VideoProcessor::open");
auto p = reinterpret_cast<bomi_vf_priv*>(vf->priv);
_Info("reinterpret_cast");
p->vp = address_cast<VideoProcessor*>(p->address);
_Info("address_cast");
p->vp->d->vf = vf; // <= Segfault
_Info("p->vp->d->vf");
auto d = p->vp->d;
_Info("p->vp->d");
if (p->swdec_deint)
d->deint_swdec = DeintOption::fromString(_L(p->swdec_deint));
if (p->hwdec_deint)
d->deint_hwdec = DeintOption::fromString(_L(p->hwdec_deint));
_Info("hwdec_deint");
I had no idea what commit broke it. Normally I have a keyword to go on, but the history of vf.c
and vf.h
didn't reveal anything obvious. So I had to test every single commit between mpv 23 and 24.
I wrote a script ./test
to run:
./checkoutmpv $1
./configure --prefix=/usr \
&& make -Winvalid-pch
testVideo="/home/chris/Videos/testvid.mp4"
build/bomi "$testVideo"
Then I ran cd src/mpv && git log --oneline > testall
I trimmed the testall
file to only list the commits between 23 and 24. Then I reverse all lines (so it's chronological). I then converted each line into:
# ./test "bbdecb7" "hwdec: add a AVBufferRef(AVHWDeviceContext) field"
# ./test "6b00663" "vo_opengl: hwdec_cuda: export AVHWDeviceContext"
# ./test "3a85976" "cuda: fix AVHWFramesContext initialization"
# ./test "8a23892" "vo_opengl: hwdec_cuda: add yuv420p support"
# ./test "91fb707" "vf_lavfi: switch to AVBufferSrcParameters"
./test "1b1771f" "video: support filtering hardware frames via libavfilter"
./test "083e470" "manpage: add comment about --alpha being broken on X11/EGL/Mesa"
./test "fb6481e" "stream_bluray: use proper 0-based idx"
./test "64041f9" "cuda: fix 10 bit decoding"
Using binary search, I eventually found the offending commit that broke things.
Caused by: mpv-player/mpv@1b1771f
video: support filtering hardware frames via libavfilter
Requires a bunch of hacks:
^--- Yay...
After reading the commit, I realized I probably should have started testing with the 2 or 3 commits (and the commit that preceded them) that touched vf.c
and vf.h
. Oh well.
I'm not quite sure what to do here...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.