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
|
||||
pkgdesc = 3D video player with multi-display support
|
||||
pkgver = 1.6.7
|
||||
pkgrel = 2
|
||||
pkgver = 1.6.8
|
||||
pkgrel = 1
|
||||
url = https://bino3d.org/
|
||||
arch = i686
|
||||
arch = x86_64
|
||||
license = GPL3
|
||||
depends = ffmpeg
|
||||
|
@ -13,12 +12,10 @@ pkgbase = bino
|
|||
depends = libass
|
||||
depends = qt5-base
|
||||
optdepends = lirc: infrared remote control
|
||||
source = 00700a3.patch
|
||||
source = https://bino3d.org/releases/bino-1.6.7.tar.xz
|
||||
source = https://bino3d.org/releases/bino-1.6.7.tar.xz.sig
|
||||
source = https://bino3d.org/releases/bino-1.6.8.tar.xz
|
||||
source = https://bino3d.org/releases/bino-1.6.8.tar.xz.sig
|
||||
validpgpkeys = 2F61B4828BBA779AECB3F32703A2A4AB1E32FD34
|
||||
sha512sums = 2923f3818cbbf979e5ba77d731a5d05525472a8ac7419a716bf2b298af6c8fe21f87fb63653460c729169ec76497a9a300d646cd308fd905e730d4fc65140ac8
|
||||
sha512sums = ae8f72b200100664b9fd55963371ce64a2f39e240676494d69b422d662f2295560ba458eb04707b82f88d3c6b3fab98a1ecb40d74799300f96b8eb8be680c9b8
|
||||
sha512sums = d8cf5be356add4ed3fb36673038b5ffd92d0dc840798cc616fa4b11fec221c7f114347dfc7cdb7a3a24c5599b56301cddc99f84d3862d8e874612960281319cc
|
||||
sha512sums = SKIP
|
||||
|
||||
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>
|
||||
|
||||
pkgname=bino
|
||||
pkgver=1.6.7
|
||||
pkgrel=2
|
||||
pkgver=1.6.8
|
||||
pkgrel=1
|
||||
pkgdesc='3D video player with multi-display support'
|
||||
arch=('i686' 'x86_64')
|
||||
arch=('x86_64')
|
||||
url='https://bino3d.org/'
|
||||
license=('GPL3')
|
||||
depends=('ffmpeg' 'freealut' 'freeglut' 'glewmx' 'libass' 'qt5-base')
|
||||
optdepends=('lirc: infrared remote control')
|
||||
source=(00700a3.patch https://bino3d.org/releases/bino-1.6.7.tar.xz{,.sig})
|
||||
sha512sums=('2923f3818cbbf979e5ba77d731a5d05525472a8ac7419a716bf2b298af6c8fe21f87fb63653460c729169ec76497a9a300d646cd308fd905e730d4fc65140ac8'
|
||||
'ae8f72b200100664b9fd55963371ce64a2f39e240676494d69b422d662f2295560ba458eb04707b82f88d3c6b3fab98a1ecb40d74799300f96b8eb8be680c9b8'
|
||||
source=(https://bino3d.org/releases/bino-${pkgver}.tar.xz{,.sig})
|
||||
sha512sums=('d8cf5be356add4ed3fb36673038b5ffd92d0dc840798cc616fa4b11fec221c7f114347dfc7cdb7a3a24c5599b56301cddc99f84d3862d8e874612960281319cc'
|
||||
'SKIP')
|
||||
validpgpkeys=('2F61B4828BBA779AECB3F32703A2A4AB1E32FD34')
|
||||
|
||||
prepare() {
|
||||
cd "${srcdir}/${pkgname}-${pkgver}"
|
||||
patch -p1 -i ../00700a3.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${pkgname}-${pkgver}"
|
||||
./configure \
|
||||
|
|
Loading…
Reference in a new issue