Version 1.6.8
This commit is contained in:
parent
f1de0ad440
commit
c942c5b8a8
3 changed files with 10 additions and 443 deletions
13
.SRCINFO
13
.SRCINFO
|
@ -1,9 +1,8 @@
|
||||||
pkgbase = bino
|
pkgbase = bino
|
||||||
pkgdesc = 3D video player with multi-display support
|
pkgdesc = 3D video player with multi-display support
|
||||||
pkgver = 1.6.7
|
pkgver = 1.6.8
|
||||||
pkgrel = 2
|
pkgrel = 1
|
||||||
url = https://bino3d.org/
|
url = https://bino3d.org/
|
||||||
arch = i686
|
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
license = GPL3
|
license = GPL3
|
||||||
depends = ffmpeg
|
depends = ffmpeg
|
||||||
|
@ -13,12 +12,10 @@ pkgbase = bino
|
||||||
depends = libass
|
depends = libass
|
||||||
depends = qt5-base
|
depends = qt5-base
|
||||||
optdepends = lirc: infrared remote control
|
optdepends = lirc: infrared remote control
|
||||||
source = 00700a3.patch
|
source = https://bino3d.org/releases/bino-1.6.8.tar.xz
|
||||||
source = https://bino3d.org/releases/bino-1.6.7.tar.xz
|
source = https://bino3d.org/releases/bino-1.6.8.tar.xz.sig
|
||||||
source = https://bino3d.org/releases/bino-1.6.7.tar.xz.sig
|
|
||||||
validpgpkeys = 2F61B4828BBA779AECB3F32703A2A4AB1E32FD34
|
validpgpkeys = 2F61B4828BBA779AECB3F32703A2A4AB1E32FD34
|
||||||
sha512sums = 2923f3818cbbf979e5ba77d731a5d05525472a8ac7419a716bf2b298af6c8fe21f87fb63653460c729169ec76497a9a300d646cd308fd905e730d4fc65140ac8
|
sha512sums = d8cf5be356add4ed3fb36673038b5ffd92d0dc840798cc616fa4b11fec221c7f114347dfc7cdb7a3a24c5599b56301cddc99f84d3862d8e874612960281319cc
|
||||||
sha512sums = ae8f72b200100664b9fd55963371ce64a2f39e240676494d69b422d662f2295560ba458eb04707b82f88d3c6b3fab98a1ecb40d74799300f96b8eb8be680c9b8
|
|
||||||
sha512sums = SKIP
|
sha512sums = SKIP
|
||||||
|
|
||||||
pkgname = bino
|
pkgname = bino
|
||||||
|
|
424
00700a3.patch
424
00700a3.patch
|
@ -1,424 +0,0 @@
|
||||||
diff --git a/README.md b/README.md
|
|
||||||
index 85b61f0..32dea56 100644
|
|
||||||
--- a/README.md
|
|
||||||
+++ b/README.md
|
|
||||||
@@ -1,6 +1,7 @@
|
|
||||||
# Bino: A 3D video player with multi-display support
|
|
||||||
|
|
||||||
Bino is a video player with two main features:
|
|
||||||
+
|
|
||||||
- Support for 3D videos, with a wide variety of input and output formats.
|
|
||||||
- Support for distributed multi-display video, e.g. for powerwalls, Virtual
|
|
||||||
Reality installations and other multi-projector setups.
|
|
||||||
diff --git a/pkg/w32/notes.txt b/pkg/w32/notes.txt
|
|
||||||
index f84be15..e3e1c20 100644
|
|
||||||
--- a/pkg/w32/notes.txt
|
|
||||||
+++ b/pkg/w32/notes.txt
|
|
||||||
@@ -17,4 +17,4 @@ The source code for Bino is available here:
|
|
||||||
https://bino3d.org/download.html
|
|
||||||
|
|
||||||
Instructions to build this package from source can be found here:
|
|
||||||
-https://gitlab.marlam.de/marlam/bino/raw/master/README.Windows
|
|
||||||
+https://git.marlam.de/gitweb/?p=bino.git;a=blob_plain;f=README.Windows;hb=HEAD
|
|
||||||
diff --git a/src/base/dbg.cpp b/src/base/dbg.cpp
|
|
||||||
index 6c6234f..044be67 100644
|
|
||||||
--- a/src/base/dbg.cpp
|
|
||||||
+++ b/src/base/dbg.cpp
|
|
||||||
@@ -74,8 +74,10 @@ namespace dbg
|
|
||||||
(void)sigaction(SIGFPE, &signal_handler, NULL);
|
|
||||||
(void)sigaction(SIGSEGV, &signal_handler, NULL);
|
|
||||||
#endif
|
|
||||||
+#if __cplusplus < 201700
|
|
||||||
std::set_unexpected(exception_crash);
|
|
||||||
std::set_terminate(exception_crash);
|
|
||||||
+#endif
|
|
||||||
std::set_new_handler(oom_abort);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/dispatch.cpp b/src/dispatch.cpp
|
|
||||||
index d6f9327..703d865 100644
|
|
||||||
--- a/src/dispatch.cpp
|
|
||||||
+++ b/src/dispatch.cpp
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* This file is part of bino, a 3D video player.
|
|
||||||
*
|
|
||||||
- * Copyright (C) 2010, 2011, 2012, 2013, 2015
|
|
||||||
+ * Copyright (C) 2010, 2011, 2012, 2013, 2015, 2018
|
|
||||||
* Martin Lambers <marlam@marlam.de>
|
|
||||||
* Binocle <http://binocle.com> (author: Olivier Letz <oletz@binocle.com>)
|
|
||||||
* Frédéric Bour <frederic.bour@lakaban.net>
|
|
||||||
@@ -504,6 +504,12 @@ void dispatch::receive_cmd(const command& cmd)
|
|
||||||
if (_input_data.params.subtitle_parallax_is_set())
|
|
||||||
_parameters.set_subtitle_parallax(_input_data.params.subtitle_parallax());
|
|
||||||
notify_all(notification::subtitle_parallax);
|
|
||||||
+ if (_input_data.params.vertical_pixel_shift_left_is_set())
|
|
||||||
+ _parameters.set_vertical_pixel_shift_left(_input_data.params.vertical_pixel_shift_left());
|
|
||||||
+ notify_all(notification::vertical_pixel_shift_left);
|
|
||||||
+ if (_input_data.params.vertical_pixel_shift_right_is_set())
|
|
||||||
+ _parameters.set_vertical_pixel_shift_right(_input_data.params.vertical_pixel_shift_right());
|
|
||||||
+ notify_all(notification::vertical_pixel_shift_right);
|
|
||||||
if (!_parameters.stereo_mode_is_set()) {
|
|
||||||
if (_media_input->video_frame_template().stereo_layout == parameters::layout_mono)
|
|
||||||
_parameters.set_stereo_mode(parameters::mode_mono_left);
|
|
||||||
@@ -833,6 +839,14 @@ void dispatch::receive_cmd(const command& cmd)
|
|
||||||
_parameters.set_subtitle_parallax(clamp(s11n::load<float>(p), -1.0f, +1.0f));
|
|
||||||
notify_all(notification::subtitle_parallax);
|
|
||||||
break;
|
|
||||||
+ case command::set_vertical_pixel_shift_left:
|
|
||||||
+ _parameters.set_vertical_pixel_shift_left(s11n::load<float>(p));
|
|
||||||
+ notify_all(notification::vertical_pixel_shift_left);
|
|
||||||
+ break;
|
|
||||||
+ case command::set_vertical_pixel_shift_right:
|
|
||||||
+ _parameters.set_vertical_pixel_shift_right(s11n::load<float>(p));
|
|
||||||
+ notify_all(notification::vertical_pixel_shift_right);
|
|
||||||
+ break;
|
|
||||||
// Volatile parameters
|
|
||||||
case command::toggle_fullscreen:
|
|
||||||
{
|
|
||||||
@@ -1217,6 +1231,12 @@ bool dispatch::parse_command(const std::string& s, command* c)
|
|
||||||
} else if (tokens.size() == 2 && tokens[0] == "adjust-subtitle-parallax"
|
|
||||||
&& str::to(tokens[1], &p.f)) {
|
|
||||||
*c = command(command::adjust_subtitle_parallax, p.f);
|
|
||||||
+ } else if (tokens.size() == 2 && tokens[0] == "set-vertical-pixel-shift-left"
|
|
||||||
+ && str::to(tokens[1], &p.f)) {
|
|
||||||
+ *c = command(command::set_vertical_pixel_shift_left, p.f);
|
|
||||||
+ } else if (tokens.size() == 2 && tokens[0] == "set-vertical-pixel-shift-right"
|
|
||||||
+ && str::to(tokens[1], &p.f)) {
|
|
||||||
+ *c = command(command::set_vertical_pixel_shift_right, p.f);
|
|
||||||
} else if (tokens.size() == 1 && tokens[0] == "toggle-fullscreen") {
|
|
||||||
*c = command(command::toggle_fullscreen);
|
|
||||||
} else if (tokens.size() == 1 && tokens[0] == "center") {
|
|
||||||
diff --git a/src/dispatch.h b/src/dispatch.h
|
|
||||||
index 2133f8d..23f8030 100644
|
|
||||||
--- a/src/dispatch.h
|
|
||||||
+++ b/src/dispatch.h
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* This file is part of bino, a 3D video player.
|
|
||||||
*
|
|
||||||
- * Copyright (C) 2010, 2011, 2012, 2013, 2015
|
|
||||||
+ * Copyright (C) 2010, 2011, 2012, 2013, 2015, 2018
|
|
||||||
* Martin Lambers <marlam@marlam.de>
|
|
||||||
* Joe <cuchac@email.cz>
|
|
||||||
* Binocle <http://binocle.com> (author: Olivier Letz <oletz@binocle.com>)
|
|
||||||
@@ -143,6 +143,8 @@ public:
|
|
||||||
adjust_ghostbust, // float (relative adjustment)
|
|
||||||
set_subtitle_parallax, // float (absolute value)
|
|
||||||
adjust_subtitle_parallax, // float (relative adjustment)
|
|
||||||
+ set_vertical_pixel_shift_left, // float
|
|
||||||
+ set_vertical_pixel_shift_right, // float
|
|
||||||
// Volatile parameters
|
|
||||||
toggle_fullscreen, // no parameters
|
|
||||||
center, // no parameters
|
|
||||||
@@ -260,6 +262,8 @@ public:
|
|
||||||
parallax,
|
|
||||||
ghostbust,
|
|
||||||
subtitle_parallax,
|
|
||||||
+ vertical_pixel_shift_left,
|
|
||||||
+ vertical_pixel_shift_right,
|
|
||||||
// Volatile parameters
|
|
||||||
fullscreen,
|
|
||||||
center,
|
|
||||||
diff --git a/src/main.cpp b/src/main.cpp
|
|
||||||
index 474cdd0..aa232c7 100644
|
|
||||||
--- a/src/main.cpp
|
|
||||||
+++ b/src/main.cpp
|
|
||||||
@@ -337,6 +337,10 @@ int main(int argc, char *argv[])
|
|
||||||
options.push_back(&subtitle_shadow);
|
|
||||||
opt::val<float> subtitle_parallax("subtitle-parallax", '\0', opt::optional, -1.0f, +1.0f);
|
|
||||||
options.push_back(&subtitle_parallax);
|
|
||||||
+ opt::val<float> vertical_pixel_shift_left("vertical-pixel-shift-left", '\0', opt::optional, -99999.9f, +99999.9f, 0.0f);
|
|
||||||
+ options.push_back(&vertical_pixel_shift_left);
|
|
||||||
+ opt::val<float> vertical_pixel_shift_right("vertical-pixel-shift-right", '\0', opt::optional, -99999.9f, +99999.9f, 0.0f);
|
|
||||||
+ options.push_back(&vertical_pixel_shift_right);
|
|
||||||
opt::val<float> parallax("parallax", 'P', opt::optional, -1.0f, +1.0f);
|
|
||||||
options.push_back(¶llax);
|
|
||||||
opt::tuple<float> crosstalk("crosstalk", '\0', opt::optional, 0.0f, 1.0f, std::vector<float>(), 3);
|
|
||||||
@@ -767,6 +771,10 @@ int main(int argc, char *argv[])
|
|
||||||
input_data.params.set_ghostbust(ghostbust.value());
|
|
||||||
if (subtitle_parallax.is_set())
|
|
||||||
input_data.params.set_subtitle_parallax(subtitle_parallax.value());
|
|
||||||
+ if (vertical_pixel_shift_left.is_set())
|
|
||||||
+ input_data.params.set_vertical_pixel_shift_left(vertical_pixel_shift_left.value());
|
|
||||||
+ if (vertical_pixel_shift_right.is_set())
|
|
||||||
+ input_data.params.set_vertical_pixel_shift_right(vertical_pixel_shift_right.value());
|
|
||||||
|
|
||||||
int retval = 0;
|
|
||||||
std::vector<command_file*> command_files;
|
|
||||||
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
|
|
||||||
index 988417a..1563eef 100644
|
|
||||||
--- a/src/mainwindow.cpp
|
|
||||||
+++ b/src/mainwindow.cpp
|
|
||||||
@@ -666,6 +666,10 @@ void main_window::open(QStringList filenames,
|
|
||||||
input_data.params.set_source_aspect_ratio(initial_params.source_aspect_ratio());
|
|
||||||
if (initial_params.parallax_is_set())
|
|
||||||
input_data.params.set_parallax(initial_params.parallax());
|
|
||||||
+ if (initial_params.vertical_pixel_shift_left_is_set())
|
|
||||||
+ input_data.params.set_vertical_pixel_shift_left(initial_params.vertical_pixel_shift_left());
|
|
||||||
+ if (initial_params.vertical_pixel_shift_right_is_set())
|
|
||||||
+ input_data.params.set_vertical_pixel_shift_right(initial_params.vertical_pixel_shift_right());
|
|
||||||
if (initial_params.ghostbust_is_set())
|
|
||||||
input_data.params.set_ghostbust(initial_params.ghostbust());
|
|
||||||
if (initial_params.subtitle_parallax_is_set())
|
|
||||||
diff --git a/src/media_data.cpp b/src/media_data.cpp
|
|
||||||
index b4acfb0..93b032d 100644
|
|
||||||
--- a/src/media_data.cpp
|
|
||||||
+++ b/src/media_data.cpp
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* This file is part of bino, a 3D video player.
|
|
||||||
*
|
|
||||||
- * Copyright (C) 2010, 2011, 2012, 2013, 2015
|
|
||||||
+ * Copyright (C) 2010, 2011, 2012, 2013, 2015, 2018
|
|
||||||
* Martin Lambers <marlam@marlam.de>
|
|
||||||
* Joe <joe@wpj.cz>
|
|
||||||
* D. Matz <bandregent@yahoo.de>
|
|
||||||
@@ -125,6 +125,8 @@ parameters::parameters()
|
|
||||||
unset_parallax();
|
|
||||||
unset_ghostbust();
|
|
||||||
unset_subtitle_parallax();
|
|
||||||
+ unset_vertical_pixel_shift_left();
|
|
||||||
+ unset_vertical_pixel_shift_right();
|
|
||||||
// Volatile parameters
|
|
||||||
unset_fullscreen();
|
|
||||||
unset_center();
|
|
||||||
@@ -180,6 +182,8 @@ const float parameters::_source_aspect_ratio_default = 0.0f;
|
|
||||||
const float parameters::_parallax_default = 0.0f;
|
|
||||||
const float parameters::_ghostbust_default = 0.0f;
|
|
||||||
const float parameters::_subtitle_parallax_default = 0.0f;
|
|
||||||
+const float parameters::_vertical_pixel_shift_left_default = 0.0f;
|
|
||||||
+const float parameters::_vertical_pixel_shift_right_default = 0.0f;
|
|
||||||
// Volatile parameter defaults
|
|
||||||
const bool parameters::_fullscreen_default = false;
|
|
||||||
const bool parameters::_center_default = false;
|
|
||||||
@@ -575,6 +579,10 @@ void parameters::save(std::ostream &os) const
|
|
||||||
s11n::save(os, _ghostbust_set);
|
|
||||||
s11n::save(os, _subtitle_parallax);
|
|
||||||
s11n::save(os, _subtitle_parallax_set);
|
|
||||||
+ s11n::save(os, _vertical_pixel_shift_left);
|
|
||||||
+ s11n::save(os, _vertical_pixel_shift_left_set);
|
|
||||||
+ s11n::save(os, _vertical_pixel_shift_right);
|
|
||||||
+ s11n::save(os, _vertical_pixel_shift_right_set);
|
|
||||||
// Volatile parameters
|
|
||||||
s11n::save(os, _fullscreen);
|
|
||||||
s11n::save(os, _fullscreen_set);
|
|
||||||
@@ -680,6 +688,10 @@ void parameters::load(std::istream &is)
|
|
||||||
s11n::load(is, _ghostbust_set);
|
|
||||||
s11n::load(is, _subtitle_parallax);
|
|
||||||
s11n::load(is, _subtitle_parallax_set);
|
|
||||||
+ s11n::load(is, _vertical_pixel_shift_left);
|
|
||||||
+ s11n::load(is, _vertical_pixel_shift_left_set);
|
|
||||||
+ s11n::load(is, _vertical_pixel_shift_right);
|
|
||||||
+ s11n::load(is, _vertical_pixel_shift_right_set);
|
|
||||||
// Volatile parameters
|
|
||||||
s11n::load(is, _fullscreen);
|
|
||||||
s11n::load(is, _fullscreen_set);
|
|
||||||
@@ -879,6 +891,8 @@ void parameters::unset_video_parameters()
|
|
||||||
unset_parallax();
|
|
||||||
unset_ghostbust();
|
|
||||||
unset_subtitle_parallax();
|
|
||||||
+ unset_vertical_pixel_shift_left();
|
|
||||||
+ unset_vertical_pixel_shift_right();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string parameters::save_video_parameters() const
|
|
||||||
@@ -902,6 +916,10 @@ std::string parameters::save_video_parameters() const
|
|
||||||
s11n::save(oss, "ghostbust", _ghostbust);
|
|
||||||
if (!subtitle_parallax_is_default())
|
|
||||||
s11n::save(oss, "subtitle_parallax", _subtitle_parallax);
|
|
||||||
+ if (!vertical_pixel_shift_left_is_default())
|
|
||||||
+ s11n::save(oss, "vertical_pixel_shift_left", _vertical_pixel_shift_left);
|
|
||||||
+ if (!vertical_pixel_shift_right_is_default())
|
|
||||||
+ s11n::save(oss, "vertical_pixel_shift_right", _vertical_pixel_shift_right);
|
|
||||||
return oss.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -941,6 +959,12 @@ void parameters::load_video_parameters(const std::string &s)
|
|
||||||
} else if (name == "subtitle_parallax") {
|
|
||||||
s11n::load(value, _subtitle_parallax);
|
|
||||||
_subtitle_parallax_set = true;
|
|
||||||
+ } else if (name == "vertical_pixel_shift_left") {
|
|
||||||
+ s11n::load(value, _vertical_pixel_shift_left);
|
|
||||||
+ _vertical_pixel_shift_left_set = true;
|
|
||||||
+ } else if (name == "vertical_pixel_shift_right") {
|
|
||||||
+ s11n::load(value, _vertical_pixel_shift_right);
|
|
||||||
+ _vertical_pixel_shift_right_set = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/src/media_data.h b/src/media_data.h
|
|
||||||
index 30c7bec..1214f91 100644
|
|
||||||
--- a/src/media_data.h
|
|
||||||
+++ b/src/media_data.h
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* This file is part of bino, a 3D video player.
|
|
||||||
*
|
|
||||||
- * Copyright (C) 2010, 2011, 2012, 2013, 2015
|
|
||||||
+ * Copyright (C) 2010, 2011, 2012, 2013, 2015, 2018
|
|
||||||
* Martin Lambers <marlam@marlam.de>
|
|
||||||
* Joe <joe@wpj.cz>
|
|
||||||
* D. Matz <bandregent@yahoo.de>
|
|
||||||
@@ -205,6 +205,8 @@ public:
|
|
||||||
PARAMETER(float, parallax) // Parallax adjustment, -1 .. +1
|
|
||||||
PARAMETER(float, ghostbust) // Amount of crosstalk ghostbusting, 0 .. 1
|
|
||||||
PARAMETER(float, subtitle_parallax) // Subtitle parallax adjustment, -1 .. +1
|
|
||||||
+ PARAMETER(float, vertical_pixel_shift_left) // Vertical shift in pixels for left view
|
|
||||||
+ PARAMETER(float, vertical_pixel_shift_right) // Vertical shift in pixels for right view
|
|
||||||
// Volatile parameters
|
|
||||||
PARAMETER(bool, fullscreen) // Fullscreen mode
|
|
||||||
PARAMETER(bool, center) // Should the video be centered?
|
|
||||||
diff --git a/src/media_input.cpp b/src/media_input.cpp
|
|
||||||
index c1b8fcb..493708c 100644
|
|
||||||
--- a/src/media_input.cpp
|
|
||||||
+++ b/src/media_input.cpp
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* This file is part of bino, a 3D video player.
|
|
||||||
*
|
|
||||||
- * Copyright (C) 2010, 2011, 2012, 2015
|
|
||||||
+ * Copyright (C) 2010, 2011, 2012, 2015, 2018
|
|
||||||
* Martin Lambers <marlam@marlam.de>
|
|
||||||
* Frédéric Devernay <frederic.devernay@inrialpes.fr>
|
|
||||||
* Joe <cuchac@email.cz>
|
|
||||||
@@ -38,7 +38,8 @@
|
|
||||||
media_input::media_input() :
|
|
||||||
_active_video_stream(-1), _active_audio_stream(-1), _active_subtitle_stream(-1),
|
|
||||||
_have_active_video_read(false), _have_active_audio_read(false), _have_active_subtitle_read(false),
|
|
||||||
- _last_audio_data_size(0), _initial_skip(0), _duration(-1)
|
|
||||||
+ _last_audio_data_size(0), _initial_skip(0), _duration(-1),
|
|
||||||
+ _finished_first_frame_read(false)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -622,6 +623,26 @@ video_frame media_input::finish_video_frame_read()
|
|
||||||
get_video_stream(1, o1, s1);
|
|
||||||
video_frame f0 = _media_objects[o0].finish_video_frame_read(s0);
|
|
||||||
video_frame f1 = _media_objects[o1].finish_video_frame_read(s1);
|
|
||||||
+ if (!_finished_first_frame_read && is_device())
|
|
||||||
+ {
|
|
||||||
+ /* Try to keep both device streams in sync. This should only be
|
|
||||||
+ * relevant at the beginning of playback, i.e. the first frame read,
|
|
||||||
+ * when one device starts grabbing frames before the other does. */
|
|
||||||
+ while (f0.is_valid() && f1.is_valid()
|
|
||||||
+ && f1.presentation_time > f0.presentation_time + video_frame_duration() / 2)
|
|
||||||
+ {
|
|
||||||
+ msg::dbg("skipping frame from device %d stream %d because device %d stream %d is ahead", o0, s0, o1, s1);
|
|
||||||
+ _media_objects[o0].start_video_frame_read(s0, 1);
|
|
||||||
+ f0 = _media_objects[o0].finish_video_frame_read(s0);
|
|
||||||
+ }
|
|
||||||
+ while (f0.is_valid() && f1.is_valid()
|
|
||||||
+ && f0.presentation_time > f1.presentation_time + video_frame_duration() / 2)
|
|
||||||
+ {
|
|
||||||
+ msg::dbg("skipping frame from device %d stream %d because device %d stream %d is ahead", o1, s1, o0, s0);
|
|
||||||
+ _media_objects[o1].start_video_frame_read(s1, 1);
|
|
||||||
+ f1 = _media_objects[o1].finish_video_frame_read(s1);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
if (f0.is_valid() && f1.is_valid())
|
|
||||||
{
|
|
||||||
frame = _video_frame;
|
|
||||||
@@ -655,6 +676,7 @@ video_frame media_input::finish_video_frame_read()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_have_active_video_read = false;
|
|
||||||
+ _finished_first_frame_read = true;
|
|
||||||
return frame;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/media_input.h b/src/media_input.h
|
|
||||||
index 8ff3778..880bfe1 100644
|
|
||||||
--- a/src/media_input.h
|
|
||||||
+++ b/src/media_input.h
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* This file is part of bino, a 3D video player.
|
|
||||||
*
|
|
||||||
- * Copyright (C) 2010, 2011, 2012
|
|
||||||
+ * Copyright (C) 2010, 2011, 2012, 2018
|
|
||||||
* Martin Lambers <marlam@marlam.de>
|
|
||||||
* Joe <cuchac@email.cz>
|
|
||||||
*
|
|
||||||
@@ -53,6 +53,8 @@ private:
|
|
||||||
int64_t _initial_skip; // Initial portion of input to skip, in microseconds.
|
|
||||||
int64_t _duration; // Total combined duration of input.
|
|
||||||
|
|
||||||
+ bool _finished_first_frame_read; // Whether we have finished the first frame read from this input.
|
|
||||||
+
|
|
||||||
video_frame _video_frame; // Video frame template for currently active video stream.
|
|
||||||
audio_blob _audio_blob; // Audio blob template for currently active audio stream.
|
|
||||||
subtitle_box _subtitle_box; // Subtitle box template for currently active subtitle stream.
|
|
||||||
diff --git a/src/video_output.cpp b/src/video_output.cpp
|
|
||||||
index 10a5a25..b53d847 100644
|
|
||||||
--- a/src/video_output.cpp
|
|
||||||
+++ b/src/video_output.cpp
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* This file is part of bino, a 3D video player.
|
|
||||||
*
|
|
||||||
- * Copyright (C) 2010, 2011, 2012, 2013, 2015
|
|
||||||
+ * Copyright (C) 2010, 2011, 2012, 2013, 2015, 2018
|
|
||||||
* Martin Lambers <marlam@marlam.de>
|
|
||||||
* Frédéric Devernay <frederic.devernay@inrialpes.fr>
|
|
||||||
* Joe <cuchac@email.cz>
|
|
||||||
@@ -1282,6 +1282,10 @@ void video_output::display_current_frame(
|
|
||||||
glUniform1f(glGetUniformLocation(_render_prg, "parallax"),
|
|
||||||
_render_params.parallax() * 0.05f
|
|
||||||
* (_render_params.stereo_mode_swap() ? -1 : +1));
|
|
||||||
+ glUniform1f(glGetUniformLocation(_render_prg, "vertical_shift_left"),
|
|
||||||
+ _render_params.vertical_pixel_shift_left() / frame.height);
|
|
||||||
+ glUniform1f(glGetUniformLocation(_render_prg, "vertical_shift_right"),
|
|
||||||
+ _render_params.vertical_pixel_shift_right() / frame.height);
|
|
||||||
if (render_needs_subtitle(_render_params)) {
|
|
||||||
glActiveTexture(GL_TEXTURE2);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, (_subtitle[_active_index].is_valid()
|
|
||||||
diff --git a/src/video_output_qt.cpp b/src/video_output_qt.cpp
|
|
||||||
index e9350d5..b8fb604 100644
|
|
||||||
--- a/src/video_output_qt.cpp
|
|
||||||
+++ b/src/video_output_qt.cpp
|
|
||||||
@@ -1121,6 +1121,8 @@ void video_output_qt::receive_notification(const notification& note)
|
|
||||||
#endif // HAVE_LIBXNVCTRL
|
|
||||||
|| note.type == notification::crop_aspect_ratio
|
|
||||||
|| note.type == notification::parallax
|
|
||||||
+ || note.type == notification::vertical_pixel_shift_left
|
|
||||||
+ || note.type == notification::vertical_pixel_shift_right
|
|
||||||
|| note.type == notification::ghostbust)) {
|
|
||||||
_widget->redisplay();
|
|
||||||
}
|
|
||||||
diff --git a/src/video_output_render.fs.glsl b/src/video_output_render.fs.glsl
|
|
||||||
index 39f3498..e853f57 100644
|
|
||||||
--- a/src/video_output_render.fs.glsl
|
|
||||||
+++ b/src/video_output_render.fs.glsl
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
/*
|
|
||||||
* This file is part of bino, a 3D video player.
|
|
||||||
*
|
|
||||||
- * Copyright (C) 2010, 2011, 2012
|
|
||||||
+ * Copyright (C) 2010, 2011, 2012, 2018
|
|
||||||
* Martin Lambers <marlam@marlam.de>
|
|
||||||
* Frédéric Devernay <Frederic.Devernay@inrialpes.fr>
|
|
||||||
*
|
|
||||||
@@ -59,6 +59,8 @@
|
|
||||||
uniform sampler2D rgb_l;
|
|
||||||
uniform sampler2D rgb_r;
|
|
||||||
uniform float parallax;
|
|
||||||
+uniform float vertical_shift_left;
|
|
||||||
+uniform float vertical_shift_right;
|
|
||||||
|
|
||||||
#if defined(subtitle_enabled)
|
|
||||||
uniform sampler2D subtitle;
|
|
||||||
@@ -145,11 +147,11 @@ vec3 adjust_color(vec3 rgb)
|
|
||||||
|
|
||||||
vec3 tex_l(vec2 texcoord)
|
|
||||||
{
|
|
||||||
- return adjust_color(texture2D(rgb_l, texcoord + vec2(parallax, 0.0)).rgb);
|
|
||||||
+ return adjust_color(texture2D(rgb_l, texcoord + vec2(parallax, vertical_shift_left)).rgb);
|
|
||||||
}
|
|
||||||
vec3 tex_r(vec2 texcoord)
|
|
||||||
{
|
|
||||||
- return adjust_color(texture2D(rgb_r, texcoord - vec2(parallax, 0.0)).rgb);
|
|
||||||
+ return adjust_color(texture2D(rgb_r, texcoord + vec2(-parallax, vertical_shift_right)).rgb);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(subtitle_enabled)
|
|
16
PKGBUILD
16
PKGBUILD
|
@ -3,25 +3,19 @@
|
||||||
# Contributor: archtux <antonio dot arias99999 at gmail dot com>
|
# Contributor: archtux <antonio dot arias99999 at gmail dot com>
|
||||||
|
|
||||||
pkgname=bino
|
pkgname=bino
|
||||||
pkgver=1.6.7
|
pkgver=1.6.8
|
||||||
pkgrel=2
|
pkgrel=1
|
||||||
pkgdesc='3D video player with multi-display support'
|
pkgdesc='3D video player with multi-display support'
|
||||||
arch=('i686' 'x86_64')
|
arch=('x86_64')
|
||||||
url='https://bino3d.org/'
|
url='https://bino3d.org/'
|
||||||
license=('GPL3')
|
license=('GPL3')
|
||||||
depends=('ffmpeg' 'freealut' 'freeglut' 'glewmx' 'libass' 'qt5-base')
|
depends=('ffmpeg' 'freealut' 'freeglut' 'glewmx' 'libass' 'qt5-base')
|
||||||
optdepends=('lirc: infrared remote control')
|
optdepends=('lirc: infrared remote control')
|
||||||
source=(00700a3.patch https://bino3d.org/releases/bino-1.6.7.tar.xz{,.sig})
|
source=(https://bino3d.org/releases/bino-${pkgver}.tar.xz{,.sig})
|
||||||
sha512sums=('2923f3818cbbf979e5ba77d731a5d05525472a8ac7419a716bf2b298af6c8fe21f87fb63653460c729169ec76497a9a300d646cd308fd905e730d4fc65140ac8'
|
sha512sums=('d8cf5be356add4ed3fb36673038b5ffd92d0dc840798cc616fa4b11fec221c7f114347dfc7cdb7a3a24c5599b56301cddc99f84d3862d8e874612960281319cc'
|
||||||
'ae8f72b200100664b9fd55963371ce64a2f39e240676494d69b422d662f2295560ba458eb04707b82f88d3c6b3fab98a1ecb40d74799300f96b8eb8be680c9b8'
|
|
||||||
'SKIP')
|
'SKIP')
|
||||||
validpgpkeys=('2F61B4828BBA779AECB3F32703A2A4AB1E32FD34')
|
validpgpkeys=('2F61B4828BBA779AECB3F32703A2A4AB1E32FD34')
|
||||||
|
|
||||||
prepare() {
|
|
||||||
cd "${srcdir}/${pkgname}-${pkgver}"
|
|
||||||
patch -p1 -i ../00700a3.patch
|
|
||||||
}
|
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd "${srcdir}/${pkgname}-${pkgver}"
|
cd "${srcdir}/${pkgname}-${pkgver}"
|
||||||
./configure \
|
./configure \
|
||||||
|
|
Loading…
Reference in a new issue