GithubHelp home page GithubHelp logo

marlam / bino Goto Github PK

View Code? Open in Web Editor NEW
40.0 4.0 12.0 2.95 MB

3D video player with support for 180°/360° video and Virtual Reality

Home Page: https://bino3d.org

License: GNU General Public License v3.0

C++ 92.81% GLSL 6.04% CMake 1.15%
180-video 360-video stereoscopic-3d video-player virtual-reality

bino's People

Contributors

63n avatar cuchac avatar eile avatar ggreco avatar htwoo avatar kodawah avatar let-def avatar lion-simba avatar lokster avatar marlam avatar mrbumpy409 avatar norwayfun avatar schaal avatar thesamesam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

bino's Issues

Bino3D fails - Ubuntu Studio 22.10

The VR file Singer 3D Mp4 plays (failing as if no 3D ) in VLC visually incorrect but then only plays the audio in Bino3D

The installed OS is a Ubuntu multimedia variation called Ubuntu Studio and is version 22.10

$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.10"
NAME="Ubuntu"
VERSION_ID="22.10"
VERSION="22.10 (Kinetic Kudu)"
VERSION_CODENAME=kinetic
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=kinetic
LOGO=ubuntu-logo

The system is an HP Sprout version 1

$ uname -a
Linux sprout 5.19.0-1018-lowlatency #19-Ubuntu SMP PREEMPT_DYNAMIC Tue Feb 7 18:03:52 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
$ flatpak run org.bino3d.bino -v
Gtk-Message: 09:56:39.365: Failed to load module "canberra-gtk-module"
Gtk-Message: 09:56:39.365: Failed to load module "canberra-gtk-module"
Bino 2.1

I assume the canberra module is here

$ ls -al /usr/lib/x86_64-linux-gnu/gtk-3.0/modules
total 104
drwxr-xr-x 2 root root  4096 Oct 25 18:54 .
drwxr-xr-x 4 root root  4096 Apr 19  2022 ..
-rw-r--r-- 1 root root 30792 Apr  8  2022 libcanberra-gtk3-module.so
lrwxrwxrwx 1 root root    26 Apr 29  2022 libcanberra-gtk-module.so -> libcanberra-gtk3-module.so
-rw-r--r-- 1 root root 14336 Sep  6  2022 libcolorreload-gtk-module.so
-rw-r--r-- 1 root root 31552 Mar  9  2022 libunity-gtk-module.so
-rw-r--r-- 1 root root 14496 Sep  6  2022 libwindow-decorations-gtk-module.so

Also I have an error about the missing codec even though VLC can view the contents incorrectly

$ flatpak run org.bino3d.bino --list-tracks Singer\ 3D.mp4
Gtk-Message: 09:53:28.109: Failed to load module "canberra-gtk-module"
Gtk-Message: 09:53:28.109: Failed to load module "canberra-gtk-module"

(bino:2): GStreamer-CRITICAL **: 09:53:28.349: gst_caps_append: assertion 'GST_IS_CAPS (caps2)' failed
MESA-INTEL: warning: Haswell Vulkan support is incomplete
Bino: Qt warning: Warning: "No decoder available for type 'video/x-h265, stream-format=(string)hvc1, alignment=(string)au, level=(string)5, tier=(string)main, profile=(string)main, codec_data=(buffer)01016000000090000000000096f000fcfdf8f800000f03200001001840010c01ffff016000000300900000030000030096959809210001002e420101016000000300900000030000030096a001e020021c596566924cafff00ba00af0100000303e9000075300822000100074401c172b46240, width=(int)3840, height=(int)2160, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)186/175, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true'."
Bino: file:///.../3D_Videos/Singer 3D.mp4
Bino:     Duration: 00:00:00
Bino:     Container Format: MPEG-4
Bino:     Audio codec: AAC
Bino:     Url: file:///.../3D_Videos/Singer 3D.mp4
Bino:     Resolution: 3840 x 2160
Bino:     Video frame rate: 29.970029830932617
Bino:     Video codec: H265
Bino:   no video tracks
Bino:   audio track 0
Bino:     Audio bit rate: 247660
Bino:     Audio codec: MP3
Bino:     Language: Default
Bino:   no subtitle tracks

Doesn't compile with ffmpeg 5.0

bino doesn't compile with the recently released ffmpeg 5.0.
Some changes are trivial (remove av_register_all(), additional const-ness, ...), but some are problematic (removal of AVPicture).

media_object.cpp:348:5: error: use of undeclared identifier 'av_register_all'
    av_register_all();
    ^
media_object.cpp:796:19: error: assigning to 'AVInputFormat *' from 'const AVInputFormat *' discards qualifiers
        iformat = av_find_input_format("libdc1394");
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
media_object.cpp:799:19: error: assigning to 'AVInputFormat *' from 'const AVInputFormat *' discards qualifiers
        iformat = av_find_input_format("x11grab");
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
media_object.cpp:807:19: error: assigning to 'AVInputFormat *' from 'const AVInputFormat *' discards qualifiers
        iformat = av_find_input_format("video4linux2");
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
media_object.cpp:824:27: error: assigning to 'AVInputFormat *' from 'const AVInputFormat *' discards qualifiers
                iformat = av_find_input_format("mjpeg");
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
media_object.cpp:886:70: error: no member named 'codec' in 'AVStream'
        AVCodecContext *codec_ctx = _ffmpeg->format_ctx->streams[i]->codec;
                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
media_object.cpp:887:18: error: cannot initialize a variable of type 'AVCodec *' with an rvalue of type 'const AVCodec *'
        AVCodec *codec = (codec_ctx->codec_id == AV_CODEC_ID_TEXT
                 ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
media_object.cpp:940:13: warning: 'av_init_packet' is deprecated [-Wdeprecated-declarations]
            av_init_packet(&(_ffmpeg->video_packets[j]));
            ^
/usr/include/libavcodec/packet.h:505:1: note: 'av_init_packet' has been explicitly marked deprecated here
attribute_deprecated
^
/usr/include/libavutil/attributes.h:100:49: note: expanded from macro 'attribute_deprecated'
#    define attribute_deprecated __attribute__((deprecated))
                                                ^
media_object.cpp:951:34: error: use of undeclared identifier 'avpicture_get_size'
            int frame_bufsize = (avpicture_get_size(frame_fmt,
                                 ^
media_object.cpp:954:45: error: unknown type name 'AVPicture'
            avpicture_fill(reinterpret_cast<AVPicture *>(_ffmpeg->video_buffered_frames[j]), _ffmpeg->video_buffers[j],
                                            ^
media_object.cpp:954:13: error: use of undeclared identifier 'avpicture_fill'
            avpicture_fill(reinterpret_cast<AVPicture *>(_ffmpeg->video_buffered_frames[j]), _ffmpeg->video_buffers[j],
            ^
media_object.cpp:963:35: error: use of undeclared identifier 'avpicture_get_size'
                int sws_bufsize = avpicture_get_size(AV_PIX_FMT_BGRA,
                                  ^
media_object.cpp:975:49: error: unknown type name 'AVPicture'
                avpicture_fill(reinterpret_cast<AVPicture *>(_ffmpeg->video_sws_frames[j]), _ffmpeg->video_sws_buffers[j],
                                                ^
media_object.cpp:975:17: error: use of undeclared identifier 'avpicture_fill'
                avpicture_fill(reinterpret_cast<AVPicture *>(_ffmpeg->video_sws_frames[j]), _ffmpeg->video_sws_buffers[j],
                ^
media_object.cpp:1355:21: error: use of undeclared identifier 'av_dup_packet'; did you mean 'av_init_packet'?
                if (av_dup_packet(&packet) < 0)
                    ^~~~~~~~~~~~~
                    av_init_packet
/usr/include/libavcodec/packet.h:506:6: note: 'av_init_packet' declared here
void av_init_packet(AVPacket *pkt);
     ^
media_object.cpp:1355:21: warning: 'av_init_packet' is deprecated [-Wdeprecated-declarations]
                if (av_dup_packet(&packet) < 0)
                    ^
/usr/include/libavcodec/packet.h:505:1: note: 'av_init_packet' has been explicitly marked deprecated here
attribute_deprecated
^
/usr/include/libavutil/attributes.h:100:49: note: expanded from macro 'attribute_deprecated'
#    define attribute_deprecated __attribute__((deprecated))
                                                ^
media_object.cpp:1355:44: error: invalid operands to binary expression ('void' and 'int')
                if (av_dup_packet(&packet) < 0)
                    ~~~~~~~~~~~~~~~~~~~~~~ ^ ~
media_object.cpp:1384:25: error: use of undeclared identifier 'av_dup_packet'; did you mean 'av_init_packet'?
                    if (av_dup_packet(&packet) < 0)
                        ^~~~~~~~~~~~~
                        av_init_packet
/usr/include/libavcodec/packet.h:506:6: note: 'av_init_packet' declared here
void av_init_packet(AVPacket *pkt);
     ^
media_object.cpp:1384:25: warning: 'av_init_packet' is deprecated [-Wdeprecated-declarations]
                    if (av_dup_packet(&packet) < 0)
                        ^
/usr/include/libavcodec/packet.h:505:1: note: 'av_init_packet' has been explicitly marked deprecated here
attribute_deprecated
^
/usr/include/libavutil/attributes.h:100:49: note: expanded from macro 'attribute_deprecated'
#    define attribute_deprecated __attribute__((deprecated))
                                                ^
media_object.cpp:1384:48: error: invalid operands to binary expression ('void' and 'int')
                    if (av_dup_packet(&packet) < 0)
                        ~~~~~~~~~~~~~~~~~~~~~~ ^ ~
media_object.cpp:1414:25: error: use of undeclared identifier 'av_dup_packet'; did you mean 'av_init_packet'?
                    if (av_dup_packet(&packet) < 0)
                        ^~~~~~~~~~~~~
                        av_init_packet
/usr/include/libavcodec/packet.h:506:6: note: 'av_init_packet' declared here
void av_init_packet(AVPacket *pkt);
     ^
media_object.cpp:1414:25: warning: 'av_init_packet' is deprecated [-Wdeprecated-declarations]
                    if (av_dup_packet(&packet) < 0)
                        ^
/usr/include/libavcodec/packet.h:505:1: note: 'av_init_packet' has been explicitly marked deprecated here
attribute_deprecated
^
/usr/include/libavutil/attributes.h:100:49: note: expanded from macro 'attribute_deprecated'
#    define attribute_deprecated __attribute__((deprecated))
                                                ^
media_object.cpp:1414:48: error: invalid operands to binary expression ('void' and 'int')
                    if (av_dup_packet(&packet) < 0)
                        ~~~~~~~~~~~~~~~~~~~~~~ ^ ~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
4 warnings and 20 errors generated.

no sound in fullscreen

For all the samples from here (all have 6 audio channels) bino loses audio when go to fullscreen
https://www.demolandia.net/3d-video/brands/lg/page-3.html

The work around is to exit fullscreen, move the playback progress back a bit until sound is restored and then go to fullscreen again and then there is audio in fullscreen.

It is kind of annoying.

Same with both bino-1.6.6 from repository and bino-1.6.7 compiled from source.

OS is Ubuntu 20.04, graphic NVIDIA GTX1070

Audio playback issue in Windows binary.

Hello.

Sound does not work properly when playing video in Windows. Only the first fragment is played and then silence. Tried on different videos.

I think the problem is with audio tracks encoded in ac3. All the videos I've tried have multiple audio tracks.

FTBFS on Fedora 34 , gcc 11 ?

make[4]: Entering directory '/builddir/build/BUILD/bino-1.6.7/src/base'
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../src -pthread   -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c -o dbg.o dbg.cpp
dbg.cpp: In function 'void dbg::init_crashhandler()':
dbg.cpp:77:14: error: 'set_unexpected' is not a member of 'std'
   77 |         std::set_unexpected(exception_crash);
      |              ^~~~~~~~~~~~~~
dbg.cpp:78:14: error: 'set_terminate' is not a member of 'std'
   78 |         std::set_terminate(exception_crash);
      |              ^~~~~~~~~~~~~
make[4]: *** [Makefile:442: dbg.o] Error 1

you can see all build.log where https://koji.rpmfusion.org/kojifiles/work/tasks/4/460004/build.log , https://koji.rpmfusion.org/koji/taskinfo?taskID=460004

Audio playback issues with fast forward

Hi, i'm running Fedora 37 (KDE Wayland + Pipewire + mesa with RX 6700) with Bino 2.0 manually compiled (thanks for this great 3D video software).

I'm playing an MKV file (3D Half Side By Side) of 13GB :
image

When using multiple times the Right arrow to move forward (or page up), the sound is desynchronising and then totally mute.
Then, if I try to change Audio track Bino completely freeze.
Also the sound briefly spikes at the start of the video (really spikes).

Thanks.

Issues while installing

Hi, I've been trying to install this on a Raspberry Pi running Raspbian (version Buster), but run into a lot of issues with missing dependencies. I think I managed to get most of them, and am finally able to get some results when running ./configure; make; make install, but now get a lot of new errors that I don't understand.

Below is the end of the error report, I can't copy all of them in here, as the errors fill my entire terminal window (I can't even scroll up to the top). All errors are similar to this:

In file included from video_output_qt.h:26,
                 from dispatch.cpp:43:
/usr/include/GL/glew.h:20880:41: note: previous declaration ‘void (* __glewTexBufferRange)(GLenum, GLenum, GLuint, GLintptr, GLsizeiptr)’
 GLEW_FUN_EXPORT PFNGLTEXBUFFERRANGEPROC __glewTexBufferRange;
                                         ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/arm-linux-gnueabihf/qt5/QtGui/qopengl.h:105,
                 from /usr/include/arm-linux-gnueabihf/qt5/QtOpenGL/qgl.h:45,
                 from /usr/include/arm-linux-gnueabihf/qt5/QtOpenGL/QGLWidget:1,
                 from video_output_qt.h:29,
                 from dispatch.cpp:43:
/usr/include/GLES3/gl32.h:1821:187: error: ‘void __glewTexStorage3DMultisample(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean)’ redeclared as different kind of symbol
 num internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
                                                                                                 ^

In file included from video_output_qt.h:26,
                 from dispatch.cpp:43:
/usr/include/GL/glew.h:20901:50: note: previous declaration ‘void (* __glewTexStorage3DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean)’
 GLEW_FUN_EXPORT PFNGLTEXSTORAGE3DMULTISAMPLEPROC __glewTexStorage3DMultisample;
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [Makefile:808: dispatch.o] Error 1
make[3]: Leaving directory '/home/pi/bino/src'
make[2]: *** [Makefile:954: install-recursive] Error 1
make[2]: Leaving directory '/home/pi/bino/src'
make[1]: *** [Makefile:1114: install] Error 2
make[1]: Leaving directory '/home/pi/bino/src'
make: *** [Makefile:456: install-recursive] Error 1

Does anyone have any idea what I can do to solve this?

Flatpak does not work with VR

/home/chris/.var/app/org.bino3d.bino/config/

This folder does not exist when the Flatpak is installed, so there's no path registry. Building/installing QVR and then Bino on Arch Linux from AUR might give VR functionality with my Index - I'm not sure as testing that has other issues, such as:

Hardware does not support image size 4320x2160 (constraints: width 0-4096 height 0-4096)

The native resolution of the Index display(s) shouldn't matter, should it? Isn't it a virtual screen?

bino

Bino fails to install error manjaro xfce
20.2.1

config.status: create src / base / Makefile
config.status: Create src / Makefile
config.status: create document / Makefile
config.status: Create pkg / macosx / Info.plist
config.status: create config.h
config.status: config.h hasn't changed
config.status: Execute file delete commands
config.status: executing po directory commands
config.status: create po / POTFILES
config.status: create po / Makefile
Configuration:
NLS: yes
Equalizer: no
NVIDIA Quadro SDI Output: No
lirc: yes
make recursive
make [1]: enter directory "/ home / anton / bino"
Doing everything in software
make [2]: enter directory "/ home / anton / bino / po"
*** error: gettext infrastructure mismatch: Makefile.in.in from gettext version 0.19 is used, but autoconf macros are from gettext version 0.20
make [2]: *** [Makefile: 201: stamp-po] Error 1
make [2]: exit the directory "/ home / anton / bino / po"
make [1]: *** [Makefile: 458: fully recursive] Error 1
make [1]: exit "/ home / anton / bino" directory
make: *** [Makefile: 397: all] Error 2
Installing in po
make [1]: enter directory "/ home / anton / bino / po"
*** error: gettext infrastructure mismatch: Makefile.in.in from gettext version 0.19 is used, but autoconf macros are from gettext version 0.20
make [1]: *** [Makefile: 201: stamp-po] Error 1
make [1]: exit the directory "/ home / anton / bino / po"
make: *** [Makefile: 458: recursive install] Error 1

Thank you very much for the program!

Thank you very much for the program distributed under a free open license! Added a program to a Russian-language site about free software, here is the link.

Please do not drop the project, this is a very interesting program!

Can't open a file

Compiled successfully on XUbuntu 20.10 (see #4).

The final binary is starting properly. But, when trying to open a media with "File/OpenFile(s)", I get a problem:

  1. after the short information message, the file selector is opening, but stay transparent (no content, only the window framing). It is really transparent, not simply frozen. If I move it, I see the other windows through it (not simply a static initial copy of them, as it may occur some times when a window is frozen).
  2. one CPU core/thread is running 100%
  3. I can close this transparent Window, and the application seems to still properly be running
  4. points 1 to 4 can be repeated several times

Console output is showing this:

bino: [wrn] Cannot initialize LIRC.
bino: [wrn] LibASS: Shaper: FriBidi 0.19.7 (SIMPLE) HarfBuzz-ng 2.6.4 (COMPLEX)
bino: [wrn] LibASS: Using font provider fontconfig
bino: [wrn] QXcbConnection: XCB error: 3 (BadWindow), sequence: 784, resource id: 13163934, major code: 40 (TranslateCoords), minor code: 0

The last line may be repeated when I'm trying to open a file, but not all the time. Here is a new example:

bino: [wrn] QXcbConnection: XCB error: 3 (BadWindow), sequence: 1046, resource id: 13174010, major code: 40 (TranslateCoords), minor code: 0

Any idea?

PS: "Open device(s)" is working properly. I can see my WebCam playing.

Update

Any chance that you will update this application as their hasn't been any activity for a year. Its just that when opening a youtube url fails.

Emitter Module for Active 3D Glasses Support

I’m interested in discussing the possibility of developing an emitter module for active 3D glasses in Bino 3D, to support any 120Hz display, similar to Nvidia 3D Vision.

Given the unavailability of 3D displays and Nvidia 3D Vision, this could be a great solution for those of us who still have 120Hz TVs/Monitors and want to enjoy 3D content.

The proposed solution involves:

  • Using an Arduino as the microcontroller.
  • Using an IR or RF emitter for communication.
  • Using DLP link glasses which have a built-in IR emitter.
  • A USB interface for connectivity.

Here are some references that back up this idea:

Looking forward to hearing your thoughts on this.

How to run bino in VR mode?

Hi there,

I found bino and wanted to give it a try on my VR Setup (SteamVR + ALVR + PhoneVR). I added bino to the Steam library and added the --vr option but it does only start a black screen, with no user interface elements. Now I do not know, how I am supposed to open a 3D video or image. I consulted the manual, but it has no detailed information on how to start bino in VR mode, other then the command line option. Anything I can do here?

Bino crashing on opening under macOS Big Sur

Hi!

I know that macOS Big Sur is still under development, but I wanted to try to see if Bino could work. It's working fine under the latest public beta of Catalina (using the precompiled binary from Frédéric Devernay)

Under macOS Big Sur, both the version of Frédéric and the one I compiled myself(more info of my config below) from git have the same critical bug. On opening, we can see quickly the main window but disappear right after with an error code 11 (Segmentation fault). Here is the log I get:

Log

If I try using the terminal to run the app with no GUI and no video to play, everything is fine.
If I try to play a video with no GUI by using the following command in the terminal ./Bino.app/Contents/MacOS/Bino -n --log-file=LOG --log-level=debug /Volumes/macOS/Films/Frozen.II.2019.3D.1080p.BluRay.x264-GUACAMOLE\[rarbg\]/gua-frozen2.3d-1080p.mkv, then the app get a different log file. As you can see, the app seems to be able to parse the movie, but fails to show the movie (the movie is show for half a second and then it crashes).

Here is the log I get when try to play the movie:
Log

Here is the configuration I had when building the app from source:

  • macOS Big Sur dev beta 4
  • homebrew (up to date)
  • Latest version of texinfo (6.7), FFmpeg (4.3.1), Glew (2.1.0), LibASS(0.14.0), qt4(formally qt@4 version 4.8.7_6), openal-soft (1.20.1) and gettext (0.21)
  • I choosed to build with openal-soft because OpenAL from Apple is been deprecated and only there for compatibility since at least Catalina

I had a few minor bug to fix before it could compile (fix a gettext problem with mismatching macros and two lines of code in media_object.cpp so it would be working with the latest version of FFmpeg).

If you want someone to test your builds, it would be a pleasure to help!

EDIT: I put my logs on Pastebin because they would take quite a lot of space here.

Separate Streams for synchronized playback of two video files

👍 Praise

I love this feature though I use it a bit differently 😉 :

  • Instead of using it for stereoscopic video playback coming from two separate source files I use this feature of Bino to open different export/transcoding qualities of the same video.
  • Input is then: Separate streams
  • Output: I set this to one of them (left) or display them side by side, or on top of each other, whatever uses the screen space better.
  • Great! Though I don't know how reliable it is for spotting differences. I set the render level to the maximum of 4. Would this be enough for reliably spotting smaller encoding differences?

💡Improvement

Opening multiple files should not only work with using Menu > File > Open but also when opening multiple files via double click in Finder which are associated to open with Bino or via drag-n-drop onto Bino.app icon.

🤗 Feature Requests

Ability to set dedicated zoom factors

  • CMD-0 Auto — This is currently the case
    • In addition Preferences > Zoom decides whether to fit or fill.
  • CMD-1 "Original (100%)" — 1 source pixel is 1 presentation pixel, more reliable check for quality
  • CMD-2 "Double Size (200%)" — 1 source pixel is 2 presentation pixels, see how upscaling works on a full multiple (also good for testing low vs. high resolution (@2x) displays)
  • Manual Zoom factor -> dialog which takes percent or fraction -> Cancel / Apply

User Preference: Criteria for Separate Streams

  • Currently Bino determines itself whether two files are suited as Input for "Separate Streams". From what I observed the criteria seem to be:
    • Length must be the same
    • Resolution must be the same
    • Container format must be the same
  • It would be cool if power users could set those criteria themselves. Differences in:
    • Container format
      • Only offer this is possible. I do not compare different container formats anyhow. Some may want to use it for this.
    • Length
      • Ofc if video A ends then ofc only video B is played back until it ends. Totally ok with it.
    • Resolution
      • 3 settings:
        • Original size of both
        • Scale small one up to size of large one
        • Scale large one down to size of small one
      • Also offer this as hotkeys please: Original scale is used, Small one is target, Large one is target,

🪲 Bug

Swapping left/right video of separate streams looses sync as soon as you jump or scrub

Reproduction

  1. Open two videos of the same duration, dimensions and container format. Codec quality can differ. Video should be 30sec+ so that seeking/jumping can be realistically simulated.
  2. Input: Seperate streams, left first.
  3. Output: Left view.
  4. Start playback.
  5. Press hotkey "e" (as in "eye") or alternativly click the UI toggle "Swap left/right)". This works fine. As many times you like. Also if some pause and resumes are inbetween.
  6. After you had ca. 10secs playback, pause.
  7. Now we trigger a seek operation: Press arrow-right (seek 10 seconds forward) or arrow left.

Actual

  • From now on the synchronization between the two videos is broken. They have a time offset.

Expected

  • The videos remains in sync.
  • Bino is clever enough to even handle VBR videos where the keyframe positions between video A and B may differ, by some kind of "absolute timecode instructions" to both video A and B, where relative timecodes (i.e. codec based commands like +4 inter-frames forward) fail.

Workaround in this situation

  • Press STOP.
  • This resets the playhead to the start.
  • Sadly it also resets the window to it's default size (you loose the maximized window state).

Reproduction

  1. Open two videos of the same size and duration. Quality can differ. Video should be min 30sec so that seeking/jumping can be realistically used.
  2. Input: Seperate streams, left first
  3. Output: Left view
  4. Start playback
  5. Press hotkey "e" (as in "eye") or alternativly click the UI toggle "Swap left/right)". This works fine. As many times you like. Also if some pause and resumes are inbetween.
  6. After you had ca. 10secs playback, pause.
  7. Now we trigger a seek operation: Press arrow-right (seek 10 seconds forward).

--> From now on sync is broken.

Several issues with subtitles

There appear to be multiple issues with subtitle rendering in Bino.
This was tested on Bino commit ddf9854 (tag: bino-1.6.8). Sample files, logs, debug patches and screenshots can be found in the attached archive: bino_i13_samples.zip. For a comparison to a correct reference there are also a few correct_* screenshots obtained from a recent mpv+libass, but they don't cover everything.

Most notably, some subtitle events go missing, i.e. they aren't rendered at all.
So for the test_108p.{mkv,ass} sample Bino only displays this
bino_1080p
but it should actually render the following (for both sides, the anamorphic sample is similar see archive):
correct_1080p__mpv

. And in the aegisub-formattest.{mkv,ass} sample several overlapping events go missing leaving only one; among other this happens e.g. with those two events:

Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0000,0000,0000,,Now going to test conflict resolution. {By the way, this is a common abuse, "inline-comments" in override tag groups. They should not be rendered and not generate errors, just be i
gnored.}
Dialogue: 0,0:00:07.50,0:00:09.00,Default,,0000,0000,0000,,This line should be above the previous.

bino_aegi

At first I suspected the bitmaps were dropped somewhere during blending and afaict this could also happen if a zero-area bitmap is mixed into the results. At some places only max_x < 0 was checked; just in case I also added checks for max_y but I'm not sure if that can actually cause problems. Either way, I applied the following patch:

diff --git a/src/subtitle_renderer.cpp b/src/subtitle_renderer.cpp
index efc3cc5..05d5e38 100644
--- a/src/subtitle_renderer.cpp
+++ b/src/subtitle_renderer.cpp
@@ -459,8 +459,10 @@ bool subtitle_renderer::prerender_ass(const subtitle_box &box, int64_t timestamp
     int min_y = height;
     int max_y = -1;
     ASS_Image *img = _ass_img;
-    while (img && img->w > 0 && img->h > 0)
+    while (img)
     {
+        if(img->w == 0 && img->h == 0)
+            continue;
         if (img->dst_x < min_x)
             min_x = img->dst_x;
         if (img->dst_x + img->w - 1 > max_x)
@@ -471,7 +473,7 @@ bool subtitle_renderer::prerender_ass(const subtitle_box &box, int64_t timestamp
             max_y = img->dst_y + img->h - 1;
         img = img->next;
     }
-    if (max_x < 0)
+    if (max_x < 0 || max_y < 0)
     {
         _bb_x = 0;
         _bb_y = 0;
@@ -494,10 +496,12 @@ void subtitle_renderer::render_ass(uint32_t *bgra32_buffer)
     {
         std::memset(bgra32_buffer, 0, _bb_w * _bb_h * sizeof(uint32_t));
         ASS_Image *img = _ass_img;
-        while (img && img->w > 0 && img->h > 0)
+        while (img)
         {
-            blend_ass_image(img, bgra32_buffer);
+            if (img->w > 0 && img->h > 0)
+                blend_ass_image(img, bgra32_buffer);
             img = img->next;
+            printf("   ------ R_A: Blend Image %2d\n", i++);
         }
     }
 }
@@ -522,7 +526,7 @@ bool subtitle_renderer::prerender_img(const subtitle_box &box)
         if (img.y + img.h - 1 > max_y)
             max_y = img.y + img.h - 1;
     }
-    if (max_x < 0)
+    if (max_x < 0 || max_y < 0)
     {
         _bb_x = 0;
         _bb_y = 0;

But this didn't resolve the issue, and adding more debugging messages (see archive) revealed that the events weren't even showing up in the data fed to libass. Unfortunately I couldn't quite follow the function calls to determine where the file is read and was thus unable to look further into why this happens.
In particular, the output from the aegisub-formattest.{mkv,ass} sample suggests Bino is continuously flushing or recreating the track and trying to only adding the currently active events; I suspect this is where things go wrong. Note that ASS events in a file are not required to be in chronological order. Unless expecting to work with very large subtitle streams, whose complete content does not fit into memory, it may be more robust to just feed the entire file to libass or in case of muxed packets, pass the packets to ass_process_chunk without flushing or recreating the track.

.

Furthermore, I also noticed Bino is not calling ass_set_storage_size, which means that even if the events are passed to libass the rendering may be incorrect, notably for the 1080p and anamorphic samples since 3D-transforms and other tags unfortunately depend on the videos storage resolution in ASS.
To fix this, Bino should call ass_set_storage_size telling libass the video’s nominal size before anamorphic de-squeezing, i.e. the size the video is encoded in with codec-level crop applied. Just using the size the decoder reports will most-likely already match this; compare to the correct_* screenshots from the attached archive to empirically validate it matches.

.

As a final note, the ASS header used for converted subs could also be improved.
Omitting the Style field entirely in the event’s Format will iinm result in “the default ASS fallback style” being used instead of the Default style specified in the [V4+ Styles] section; adding the Style field and setting it to Default for all events will resolve this.
In general to get reasonable results across different video sizes, ScaledBorderAndShadow: yes\n should be added to the [Script Info] section (however due to using a custom Format line this is already the default). Specifying PlayResX and PlayResY such that they match the video’s aspect ratio might also be a good idea.
For your information: using custom Format lines is a libass-specific extension which doesn't work in other ASS renderers — however since it’s only used for temporary internal conversions and not written into an actual file this shouldn't be a problem here.

Save 3D modes settings

Hi ! First of all, thank you a LOT for this wonderful piece of software ! I'm using it a lot and really love it !

Those days I'm re-compressing 3D videos I made and I use Bino to check outputs of different Handbrake compression settings. So I'm using Bino a lot to check 30 second videos. But Bino doesn't actually remember my last 3D settings: everytime I check a test clip I've to set:

  • 3D modes -> input 3D SBS -> input left/right half
  • 3D modes -> output 2D left

This is a quite time-consuming process to set all of those settings each time.

I'd like to:

  • Bino remember my last settings
  • or better (in a second time I suppose): being able to save 3D settings as presets, and reopen them later (for example here my preset is "HSBS -> left only", but I'm also using a lot "HSBS -> anaglyph" and sometimes "Surround 360 -> anaglyph")

Thanks !

Bino 2.1 / flatpak / Ubuntu 22.04

Compilation error

Hi!
On XUbuntu 20.10, I got this error message at compilation time, strangely coming from standard QT lib:

In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:45,
                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmainwindow.h:44,
                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMainWindow:1,
                 from mainwindow.h:31,
                 from gui.h:33,
                 from dispatch.cpp:41:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h: In member function ‘bool QObject::isWindowType() const’:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qobject.h:154:54: error: ‘class QObjectData’ has no member named ‘ksWindow’; did you mean ‘isWindow’?
  154 |     inline bool isWindowType() const { return d_ptr->ksWindow; }
      |                                                      ^~~~~~~~
      |                                                      isWindow

Any idea?
Best regards,
Etienne

PS: Windows EXE version works nicely using Wine. I just had to play a bit with the sound delay.
:)

Will open seperate Left/Right 3D file and output 3D Dual Screen function be include in new version?

Thanks for your gread job.
I am trying to use you code to make my project
I am new to write code.The version 1.6.8 seem developped under linux which is not system I am working,so I have difficulty to build the version 1.6.8.
So I bulid version 2.1 by Qt in Windows.But find that open seperate Left/Right 3D file and output 3D Dual Screen function is not find in version 2.X . Will it be added in furture?

Speed Issues & Stuttering in L/R Frame Alternating Output Mode

First, I wanted to thank you for making such a useful program and keeping it updated even when 3D technology is not being produced much anymore, while also keeping it open source. I have used it over the past 7 years. I recently upgraded from an older system from 2015 that was able to do opengl stereo output mode which allowed my gpu to output a frame packed HDMI signal which always worked perfectly with my 3D projector. My new system is an RTX 3080 which has no support for the opengl quad buffering. I found that my projector supports another mode which I had never used before called frame sequential and was happy that I may continue watching 3D movies but I had an issue.

Since the movie I tried is in 23.97 FPS, as most are, I decided to set my display to 47.95 FPS using a custom display mode and then use the frame alternating mode both in the projector and in Bino to send the 3D data to the projector at full 1080p23.97 resolution. This works which I am happy about, but the video stutters randomly (both in linux and windows). The sources I tried are a Full Top over Bottom mkv so 1920x2160 resolution and a Half Side by Side MKV 1920x1080.
Along with stutters sometimes the parallax jumps back and forth randomly only within the frame alternating output mode. Both of these issues ruin the 3D effect and may cause you to get sick sadly. I tried many settings such as forcing VSync, triple buffering, & more through the NVIDIA control panel for Bino and also other display refresh rates (60Hz and 24Hz) but my projector does not support 1080p at anything higher than 60fps it seems.

Another thing I noticed which I suspect may be related to the stuttering noted above is that the speed of the movie (in any output mode in Bino) depends on the refresh rate of the monitor! I got a 165 Hz monitor recently with my new PC and on that monitor, the speed of the video is VERY fast both in Windows Bino v1.6.8 and Linux Bino v2.0. Pausing and resuming seems to change the speed to a more normal rate but changing focus to another window on my computer messes up the speed again sometimes.

Please tell me if you need any more details or have suggestions for me to try.

Does not compile with latest FFMPEG

Compilation of the latest dev version on Arch Linux terminates with error due to FFMPEG changes:

make[4]: Leaving directory '/home/jose/tmp/bino-git/src/bino-git/src/base'
make[4]: Entering directory '/home/jose/tmp/bino-git/src/bino-git/src'
  CXX      media_data.o
  CXX      media_object.o
media_object.cpp: In constructor ‘media_object::media_object(bool)’:
media_object.cpp:348:21: warning: ‘void av_register_all()’ is deprecated [-Wdeprecated-declarations]
  348 |     av_register_all();
      |                     ^
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:2050:6: note: declared here
 2050 | void av_register_all(void);
      |      ^~~~~~~~~~~~~~~
media_object.cpp: In member function ‘void media_object::open(const string&, const device_request&)’:
media_object.cpp:886:70: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
  886 |         AVCodecContext *codec_ctx = _ffmpeg->format_ctx->streams[i]->codec;
      |                                                                      ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:886:70: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
  886 |         AVCodecContext *codec_ctx = _ffmpeg->format_ctx->streams[i]->codec;
      |                                                                      ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:886:70: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
  886 |         AVCodecContext *codec_ctx = _ffmpeg->format_ctx->streams[i]->codec;
      |                                                                      ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:908:60: error: ‘CODEC_CAP_DR1’ was not declared in this scope; did you mean ‘AV_CODEC_CAP_DR1’?
  908 |             if (lowres || (codec && (codec->capabilities & CODEC_CAP_DR1)))
      |                                                            ^~~~~~~~~~~~~
      |                                                            AV_CODEC_CAP_DR1
media_object.cpp:909:37: error: ‘CODEC_FLAG_EMU_EDGE’ was not declared in this scope
  909 |                 codec_ctx->flags |= CODEC_FLAG_EMU_EDGE;
      |                                     ^~~~~~~~~~~~~~~~~~~
media_object.cpp:950:98: warning: ‘int avpicture_get_size(AVPixelFormat, int, int)’ is deprecated [-Wdeprecated-declarations]
  950 |                         _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height));
      |                                                                                                  ^
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:3739:5: note: declared here
 3739 | int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
      |     ^~~~~~~~~~~~~~~~~~
media_object.cpp:953:105: warning: ‘int avpicture_fill(AVPicture*, const uint8_t*, AVPixelFormat, int, int)’ is deprecated [-Wdeprecated-declarations]
  953 |                     frame_fmt, _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
      |                                                                                                         ^
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:3724:5: note: declared here
 3724 | int avpicture_fill(AVPicture *picture, const uint8_t *ptr,
      |     ^~~~~~~~~~~~~~
media_object.cpp:962:98: warning: ‘int avpicture_get_size(AVPixelFormat, int, int)’ is deprecated [-Wdeprecated-declarations]
  962 |                         _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
      |                                                                                                  ^
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:3739:5: note: declared here
 3739 | int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
      |     ^~~~~~~~~~~~~~~~~~
media_object.cpp:974:115: warning: ‘int avpicture_fill(AVPicture*, const uint8_t*, AVPixelFormat, int, int)’ is deprecated [-Wdeprecated-declarations]
  974 |                         AV_PIX_FMT_BGRA, _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
      |                                                                                                                   ^
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:3724:5: note: declared here
 3724 | int avpicture_fill(AVPicture *picture, const uint8_t *ptr,
      |     ^~~~~~~~~~~~~~
media_object.cpp: In member function ‘virtual void read_thread::run()’:
media_object.cpp:1353:42: warning: ‘int av_dup_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1353 |                 if (av_dup_packet(&packet) < 0)
      |                                          ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:509:5: note: declared here
  509 | int av_dup_packet(AVPacket *pkt);
      |     ^~~~~~~~~~~~~
media_object.cpp:1382:46: warning: ‘int av_dup_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1382 |                     if (av_dup_packet(&packet) < 0)
      |                                              ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:509:5: note: declared here
  509 | int av_dup_packet(AVPacket *pkt);
      |     ^~~~~~~~~~~~~
media_object.cpp:1412:46: warning: ‘int av_dup_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1412 |                     if (av_dup_packet(&packet) < 0)
      |                                              ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:509:5: note: declared here
  509 | int av_dup_packet(AVPacket *pkt);
      |     ^~~~~~~~~~~~~
media_object.cpp:1428:35: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1428 |             av_free_packet(&packet);
      |                                   ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp: In member function ‘virtual void video_decode_thread::run()’:
media_object.cpp:1494:68: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1494 |             av_free_packet(&(_ffmpeg->video_packets[_video_stream]));
      |                                                                    ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp:1502:61: warning: ‘int avcodec_decode_video2(AVCodecContext*, AVFrame*, int*, const AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1502 |                     &(_ffmpeg->video_packets[_video_stream]));
      |                                                             ^
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:3073:5: note: declared here
 3073 | int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
      |     ^~~~~~~~~~~~~~~~~~~~~
media_object.cpp:1534:73: warning: ‘void av_picture_copy(AVPicture*, const AVPicture*, AVPixelFormat, int, int)’ is deprecated [-Wdeprecated-declarations]
 1534 |                         _ffmpeg->video_codec_ctxs[_video_stream]->height);
      |                                                                         ^
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:3745:6: note: declared here
 3745 | void av_picture_copy(AVPicture *dst, const AVPicture *src,
      |      ^~~~~~~~~~~~~~~
media_object.cpp: In member function ‘virtual void audio_decode_thread::run()’:
media_object.cpp:1656:60: warning: ‘int avcodec_decode_audio4(AVCodecContext*, AVFrame*, int*, const AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1656 |                         &audioframe, &got_frame, &tmppacket);
      |                                                            ^
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:3024:5: note: declared here
 3024 | int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame,
      |     ^~~~~~~~~~~~~~~~~~~~~
media_object.cpp:1716:35: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1716 |             av_free_packet(&packet);
      |                                   ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp: In member function ‘virtual void subtitle_decode_thread::run()’:
media_object.cpp:1806:39: warning: ‘AVPacket::convergence_duration’ is deprecated [-Wdeprecated-declarations]
 1806 |             int64_t duration = packet.convergence_duration * 1000000
      |                                       ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:384:13: note: declared here
  384 |     int64_t convergence_duration;
      |             ^~~~~~~~~~~~~~~~~~~~
media_object.cpp:1806:39: warning: ‘AVPacket::convergence_duration’ is deprecated [-Wdeprecated-declarations]
 1806 |             int64_t duration = packet.convergence_duration * 1000000
      |                                       ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:384:13: note: declared here
  384 |     int64_t convergence_duration;
      |             ^~~~~~~~~~~~~~~~~~~~
media_object.cpp:1806:39: warning: ‘AVPacket::convergence_duration’ is deprecated [-Wdeprecated-declarations]
 1806 |             int64_t duration = packet.convergence_duration * 1000000
      |                                       ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:384:13: note: declared here
  384 |     int64_t convergence_duration;
      |             ^~~~~~~~~~~~~~~~~~~~
media_object.cpp:1855:72: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1855 |                     std::memcpy(&(box.images.back().palette[0]), rect->pict.data[1],
      |                                                                        ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1855:72: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1855 |                     std::memcpy(&(box.images.back().palette[0]), rect->pict.data[1],
      |                                                                        ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1855:72: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1855 |                     std::memcpy(&(box.images.back().palette[0]), rect->pict.data[1],
      |                                                                        ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1855:77: warning: ‘AVPicture::data’ is deprecated [-Wdeprecated-declarations]
 1855 |                     std::memcpy(&(box.images.back().palette[0]), rect->pict.data[1],
      |                                                                             ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2629:14: note: declared here
 2629 |     uint8_t *data[AV_NUM_DATA_POINTERS];    ///< pointers to the image data planes
      |              ^~~~
media_object.cpp:1855:77: warning: ‘AVPicture::data’ is deprecated [-Wdeprecated-declarations]
 1855 |                     std::memcpy(&(box.images.back().palette[0]), rect->pict.data[1],
      |                                                                             ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2629:14: note: declared here
 2629 |     uint8_t *data[AV_NUM_DATA_POINTERS];    ///< pointers to the image data planes
      |              ^~~~
media_object.cpp:1855:77: warning: ‘AVPicture::data’ is deprecated [-Wdeprecated-declarations]
 1855 |                     std::memcpy(&(box.images.back().palette[0]), rect->pict.data[1],
      |                                                                             ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2629:14: note: declared here
 2629 |     uint8_t *data[AV_NUM_DATA_POINTERS];    ///< pointers to the image data planes
      |              ^~~~
media_object.cpp:1857:56: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1857 |                     box.images.back().linesize = rect->pict.linesize[0];
      |                                                        ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1857:56: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1857 |                     box.images.back().linesize = rect->pict.linesize[0];
      |                                                        ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1857:56: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1857 |                     box.images.back().linesize = rect->pict.linesize[0];
      |                                                        ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1857:61: warning: ‘AVPicture::linesize’ is deprecated [-Wdeprecated-declarations]
 1857 |                     box.images.back().linesize = rect->pict.linesize[0];
      |                                                             ^~~~~~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2631:9: note: declared here
 2631 |     int linesize[AV_NUM_DATA_POINTERS];     ///< number of bytes per line
      |         ^~~~~~~~
media_object.cpp:1857:61: warning: ‘AVPicture::linesize’ is deprecated [-Wdeprecated-declarations]
 1857 |                     box.images.back().linesize = rect->pict.linesize[0];
      |                                                             ^~~~~~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2631:9: note: declared here
 2631 |     int linesize[AV_NUM_DATA_POINTERS];     ///< number of bytes per line
      |         ^~~~~~~~
media_object.cpp:1857:61: warning: ‘AVPicture::linesize’ is deprecated [-Wdeprecated-declarations]
 1857 |                     box.images.back().linesize = rect->pict.linesize[0];
      |                                                             ^~~~~~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2631:9: note: declared here
 2631 |     int linesize[AV_NUM_DATA_POINTERS];     ///< number of bytes per line
      |         ^~~~~~~~
media_object.cpp:1859:69: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1859 |                     std::memcpy(&(box.images.back().data[0]), rect->pict.data[0],
      |                                                                     ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1859:69: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1859 |                     std::memcpy(&(box.images.back().data[0]), rect->pict.data[0],
      |                                                                     ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1859:69: warning: ‘AVSubtitleRect::pict’ is deprecated [-Wdeprecated-declarations]
 1859 |                     std::memcpy(&(box.images.back().data[0]), rect->pict.data[0],
      |                                                                     ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2671:15: note: declared here
 2671 |     AVPicture pict;
      |               ^~~~
media_object.cpp:1859:74: warning: ‘AVPicture::data’ is deprecated [-Wdeprecated-declarations]
 1859 |                     std::memcpy(&(box.images.back().data[0]), rect->pict.data[0],
      |                                                                          ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2629:14: note: declared here
 2629 |     uint8_t *data[AV_NUM_DATA_POINTERS];    ///< pointers to the image data planes
      |              ^~~~
media_object.cpp:1859:74: warning: ‘AVPicture::data’ is deprecated [-Wdeprecated-declarations]
 1859 |                     std::memcpy(&(box.images.back().data[0]), rect->pict.data[0],
      |                                                                          ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2629:14: note: declared here
 2629 |     uint8_t *data[AV_NUM_DATA_POINTERS];    ///< pointers to the image data planes
      |              ^~~~
media_object.cpp:1859:74: warning: ‘AVPicture::data’ is deprecated [-Wdeprecated-declarations]
 1859 |                     std::memcpy(&(box.images.back().data[0]), rect->pict.data[0],
      |                                                                          ^~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/avcodec.h:2629:14: note: declared here
 2629 |     uint8_t *data[AV_NUM_DATA_POINTERS];    ///< pointers to the image data planes
      |              ^~~~
media_object.cpp:1892:31: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1892 |         av_free_packet(&packet);
      |                               ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp: In member function ‘void media_object::seek(int64_t)’:
media_object.cpp:1945:88: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1945 |         avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->video_streams[i]]->codec);
      |                                                                                        ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1945:88: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1945 |         avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->video_streams[i]]->codec);
      |                                                                                        ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1945:88: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1945 |         avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->video_streams[i]]->codec);
      |                                                                                        ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1948:63: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1948 |             av_free_packet(&_ffmpeg->video_packet_queues[i][j]);
      |                                                               ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp:1954:88: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1954 |         avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->audio_streams[i]]->codec);
      |                                                                                        ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1954:88: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1954 |         avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->audio_streams[i]]->codec);
      |                                                                                        ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1954:88: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1954 |         avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->audio_streams[i]]->codec);
      |                                                                                        ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1958:63: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1958 |             av_free_packet(&_ffmpeg->audio_packet_queues[i][j]);
      |                                                               ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp:1964:73: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1964 |         if (_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec->codec_id != AV_CODEC_ID_TEXT)
      |                                                                         ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1964:73: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1964 |         if (_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec->codec_id != AV_CODEC_ID_TEXT)
      |                                                                         ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1964:73: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1964 |         if (_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec->codec_id != AV_CODEC_ID_TEXT)
      |                                                                         ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1967:95: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1967 |             avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec);
      |                                                                                               ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1967:95: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1967 |             avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec);
      |                                                                                               ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1967:95: warning: ‘AVStream::codec’ is deprecated [-Wdeprecated-declarations]
 1967 |             avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec);
      |                                                                                               ^~~~~
In file included from media_object.cpp:30:
/usr/include/libavformat/avformat.h:880:21: note: declared here
  880 |     AVCodecContext *codec;
      |                     ^~~~~
media_object.cpp:1972:66: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 1972 |             av_free_packet(&_ffmpeg->subtitle_packet_queues[i][j]);
      |                                                                  ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp: In member function ‘void media_object::close()’:
media_object.cpp:2070:71: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 2070 |                     av_free_packet(&_ffmpeg->video_packet_queues[i][j]);
      |                                                                       ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp:2075:60: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 2075 |                 av_free_packet(&(_ffmpeg->video_packets[i]));
      |                                                            ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp:2093:71: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 2093 |                     av_free_packet(&_ffmpeg->audio_packet_queues[i][j]);
      |                                                                       ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
media_object.cpp:2116:74: warning: ‘void av_free_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
 2116 |                     av_free_packet(&_ffmpeg->subtitle_packet_queues[i][j]);
      |                                                                          ^
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from media_object.cpp:30:
/usr/include/libavcodec/packet.h:538:6: note: declared here
  538 | void av_free_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
make[4]: *** [Makefile:807: media_object.o] Error 1
make[4]: Leaving directory '/home/jose/tmp/bino-git/src/bino-git/src'

Environment:
Arch Linux, x86_64, ffmpeg 2:4.3.2-5

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.