GithubHelp home page GithubHelp logo

zren / bomi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from d-s-x/bomi

1.0 1.0 1.0 41.52 MB

bomi - a powerful and easy-to-use multimedia player

Home Page: http://bomi-player.github.io

License: Other

Makefile 0.08% Shell 1.11% Roff 0.02% C++ 25.08% QMake 0.23% QML 2.55% HTML 0.64% C 62.36% Objective-C++ 0.13% Objective-C 2.84% Python 2.68% Perl 0.55% Lua 1.52% Prolog 0.08% Ruby 0.04% HLSL 0.01% JavaScript 0.08%

bomi's People

Contributors

bylee20 avatar d-s-x avatar hanny24 avatar hey-red avatar kagami avatar larsjohnsen avatar phill84 avatar sl1pkn07 avatar valdikss avatar varlesh avatar yfdyh000 avatar zren avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

msgpo

bomi's Issues

mpv v0.23.0

  • Support Ubuntu 16.04 LTS

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.

mpv v0.24.0

  • mpv v0.24.0 doesn't recognize --enable-libswresample --disable-libavresample

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

  • Segfault at runtime when loading a video.

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...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.