aboutsummaryrefslogtreecommitdiff
path: root/multimedia/bino
diff options
context:
space:
mode:
authorNiclas Zeising <zeising@FreeBSD.org>2017-11-18 19:38:30 +0000
committerNiclas Zeising <zeising@FreeBSD.org>2017-11-18 19:38:30 +0000
commit7614763208b8b08529b266a12e496fc9e6aee1af (patch)
tree73820240fcb0d2aba93c875962e5b707a18e6164 /multimedia/bino
parent55987928538ce3586f89f88725b7d302950239e2 (diff)
Notes
Diffstat (limited to 'multimedia/bino')
-rw-r--r--multimedia/bino/Makefile16
-rw-r--r--multimedia/bino/distinfo5
-rw-r--r--multimedia/bino/files/glew-fix-7098cd6a.patch208
-rw-r--r--multimedia/bino/files/patch-src_base_str.cpp20
-rw-r--r--multimedia/bino/files/patch-src_base_str.h10
-rw-r--r--multimedia/bino/files/patch-src_media__object.cpp216
-rw-r--r--multimedia/bino/pkg-plist4
7 files changed, 233 insertions, 246 deletions
diff --git a/multimedia/bino/Makefile b/multimedia/bino/Makefile
index 6e49fe6af23a..43a8f0999f4f 100644
--- a/multimedia/bino/Makefile
+++ b/multimedia/bino/Makefile
@@ -2,10 +2,9 @@
# $FreeBSD$
PORTNAME= bino
-PORTVERSION= 1.4.2
-PORTREVISION= 12
+PORTVERSION= 1.6.5
CATEGORIES= multimedia
-MASTER_SITES= http://download.savannah.nongnu.org/releases/bino/ http://levsha.me/ports/distfiles/
+MASTER_SITES= https://download.savannah.nongnu.org/releases/bino/
MAINTAINER= i@levsha.me
COMMENT= 3D video player with multi-display support
@@ -17,14 +16,17 @@ LIB_DEPENDS= libass.so:multimedia/libass \
libavformat.so:multimedia/ffmpeg \
libopenal.so:audio/openal-soft
-USES= desktop-file-utils gmake pkgconfig tar:xz
-USE_GL= glew
+USES= autoreconf desktop-file-utils gmake iconv pkgconfig tar:xz
+USE_GL= gl glu glew
GNU_CONFIGURE= yes
INSTALLS_ICONS= yes
-USE_QT4= moc_build opengl rcc_build
+USE_QT5= buildtools_build core gui opengl widgets
+USE_CXXSTD= c++11
# no port fow equalizer now, lirc detecting not working
-CONFIGURE_ARGS= --without-equalizer --without-liblircclient --docdir=${DOCSDIR}
+CONFIGURE_ARGS= --without-equalizer --without-lirc --docdir=${DOCSDIR}
+
+EXTRA_PATCHES= ${FILESDIR}/glew-fix-7098cd6a.patch
INFO= bino
diff --git a/multimedia/bino/distinfo b/multimedia/bino/distinfo
index 127bdc0d38a7..1efa37c1b6d0 100644
--- a/multimedia/bino/distinfo
+++ b/multimedia/bino/distinfo
@@ -1,2 +1,3 @@
-SHA256 (bino-1.4.2.tar.xz) = 6cd88eb16ffee30a3cbb9b5d313feb61b91068387ae846ff96d9e99dcb5c88b6
-SIZE (bino-1.4.2.tar.xz) = 794272
+TIMESTAMP = 1509794928
+SHA256 (bino-1.6.5.tar.xz) = 3254316d3ae81cc69643dcd823caaac1233704d91289272d0011ced5e5cdffe2
+SIZE (bino-1.6.5.tar.xz) = 825008
diff --git a/multimedia/bino/files/glew-fix-7098cd6a.patch b/multimedia/bino/files/glew-fix-7098cd6a.patch
new file mode 100644
index 000000000000..c21b19be7a38
--- /dev/null
+++ b/multimedia/bino/files/glew-fix-7098cd6a.patch
@@ -0,0 +1,208 @@
+From 7098cd6afb7ed805de085ed72a5a3ff56e529277 Mon Sep 17 00:00:00 2001
+From: Martin Lambers <marlam@marlam.de>
+Date: Sun, 18 Dec 2016 14:37:52 +0100
+Subject: Revert "Always use GLEWmx, do not fall back to GLEW."
+
+This reverts commit eaf9278782b32a13cea19d1be331cb74a6cddce9.
+---
+ configure.ac | 15 +++++++++++++--
+ src/Makefile.am | 8 ++++++--
+ src/video_output.h | 4 +++-
+ src/video_output_qt.cpp | 13 ++++++++-----
+ src/video_output_qt.h | 20 +++++++++++++-------
+ 5 files changed, 43 insertions(+), 17 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 52181ed..03c6b58 100644
+--- configure.ac
++++ configure.ac
+@@ -296,7 +296,9 @@ fi
+ AC_DEFINE_UNQUOTED([HAVE_LIBEQUALIZER], [$HAVE_LIBEQUALIZER], [Have Equalizer?])
+ AM_CONDITIONAL([HAVE_LIBEQUALIZER], [test "$HAVE_LIBEQUALIZER" = "1"])
+
+-dnl glewmx
++dnl glew
++dnl With Equalizer, we need glewmx, since that is what Equalizer uses.
++dnl Without Equalizer, glew (without mx) is ok to use, too.
+ PKG_CHECK_MODULES([libglewmx], [glewmx >= 1.6.0], [HAVE_LIBGLEWMX=1], [HAVE_LIBGLEWMX=0])
+ if test "$HAVE_LIBGLEWMX" != "1"; then
+ AC_MSG_WARN([required library libglewmx >= 1.6.0 not found:])
+@@ -304,6 +306,15 @@ if test "$HAVE_LIBGLEWMX" != "1"; then
+ AC_MSG_WARN([libglewmx is provided by glew; Debian package: libglewmx-dev])
+ fi
+ AM_CONDITIONAL([HAVE_LIBGLEWMX], [test "$HAVE_LIBGLEWMX" = "1"])
++if test "$HAVE_LIBGLEWMX" != "1" -a "$HAVE_LIBEQUALIZER" != "1"; then
++ AC_MSG_NOTICE([trying to use libglew instead of libglewmx])
++ PKG_CHECK_MODULES([libglew], [glew >= 1.6.0], [HAVE_LIBGLEW=1], [HAVE_LIBGLEW=0])
++ if test "$HAVE_LIBGLEW" != "1"; then
++ AC_MSG_WARN([required library libglew >= 1.6.0 not found:])
++ AC_MSG_WARN([$libglew_PKG_ERRORS])
++ AC_MSG_WARN([libglew is provided by glew; Debian package: libglew-dev])
++ fi
++fi
+
+ dnl libXNVCtrl
+ AC_ARG_WITH([xnvctrl],
+@@ -390,7 +401,7 @@ if test "$am_cv_func_iconv" != "yes" \
+ -o "$HAVE_LIBASS" != "1" \
+ -o "$HAVE_LIBOPENAL" != "1" \
+ -o "$HAVE_LIBQTOPENGL" != "1" \
+- -o "$HAVE_LIBGLEWMX" != "1" \
++ -o \( "$HAVE_LIBGLEWMX" != "1" -a "$HAVE_LIBGLEW" != "1" \) \
+ -o \( "$equalizer" = "yes" -a "$HAVE_LIBEQUALIZER" != "1" \) \
+ -o \( "$xnvctrl" = "yes" -a "$HAVE_LIBXNVCTRL" != "1" \) \
+ -o \( "$lirc" = "yes" -a "$HAVE_LIRC" != "1" \) ; then
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 6fc12bb..65cbae6 100644
+--- src/Makefile.am
++++ src/Makefile.am
+@@ -149,11 +149,15 @@ DEFS += -DHTMLDIR=\"$(htmldir)\" -DLOCALEDIR=\"$(localedir)\"
+
+ AM_CPPFLAGS = \
+ $(libavformat_CFLAGS) $(libavdevice_CFLAGS) $(libswscale_CFLAGS) $(libass_CFLAGS) \
+- $(libopenal_CFLAGS) $(libgl_CFLAGS) $(libglewmx_CFLAGS) $(libqtopengl_CFLAGS)
++ $(libopenal_CFLAGS) $(libgl_CFLAGS) $(libglewmx_CFLAGS) $(libglew_CFLAGS) $(libqtopengl_CFLAGS)
+
+ bino_LDADD = $(top_builddir)/src/base/libbase.a $(LIBINTL) $(LIBICONV) \
+ $(libavformat_LIBS) $(libavdevice_LIBS) $(libswscale_LIBS) $(libass_LIBS) \
+- $(libopenal_LIBS) $(libgl_LIBS) $(libglewmx_LIBS) $(libqtopengl_LIBS)
++ $(libopenal_LIBS) $(libgl_LIBS) $(libglewmx_LIBS) $(libglew_LIBS) $(libqtopengl_LIBS)
++
++if HAVE_LIBGLEWMX
++AM_CPPFLAGS += -DGLEW_MX
++endif
+
+ if HAVE_LIBEQUALIZER
+ bino_SOURCES += player_equalizer.h player_equalizer.cpp
+diff --git a/src/video_output.h b/src/video_output.h
+index 8430ddc..2fd72ce 100644
+--- src/video_output.h
++++ src/video_output.h
+@@ -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, 2016
+ * Martin Lambers <marlam@marlam.de>
+ * Frédéric Devernay <Frederic.Devernay@inrialpes.fr>
+ * Joe <cuchac@email.cz>
+@@ -128,7 +128,9 @@ private:
+ protected:
+ subtitle_renderer _subtitle_renderer;
+
++#ifdef GLEW_MX
+ virtual GLEWContext* glewGetContext() const = 0;
++#endif
+
+ // Get the total viewport size.
+ int full_display_width() const;
+diff --git a/src/video_output_qt.cpp b/src/video_output_qt.cpp
+index 0758892..ab82388 100644
+--- src/video_output_qt.cpp
++++ src/video_output_qt.cpp
+@@ -1,7 +1,7 @@
+ /*
+ * This file is part of bino, a 3D video player.
+ *
+- * Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015
++ * Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016
+ * Martin Lambers <marlam@marlam.de>
+ * Frédéric Devernay <frederic.devernay@inrialpes.fr>
+ * Joe <cuchac@email.cz>
+@@ -80,11 +80,13 @@ gl_thread::gl_thread(video_output_qt* vo_qt, video_output_qt_widget* vo_qt_widge
+ {
+ }
+
+-#if HAVE_X11
++#ifdef GLEW_MX
++# if HAVE_X11
+ GLXEWContext* gl_thread::glxewGetContext() const
+ {
+ return _vo_qt->glxewGetContext();
+ }
++# endif
+ #endif
+
+ void gl_thread::set_render(bool r)
+@@ -781,17 +783,18 @@ void video_output_qt::create_widget()
+ process_events();
+ }
+
+-#if HAVE_X11
++#ifdef GLEW_MX
++# if HAVE_X11
+ GLXEWContext* video_output_qt::glxewGetContext() const
+ {
+ return const_cast<GLXEWContext*>(&_glxew_context);
+ }
+-#endif
+-
++# endif
+ GLEWContext* video_output_qt::glewGetContext() const
+ {
+ return const_cast<GLEWContext*>(&_glew_context);
+ }
++#endif
+
+ bool video_output_qt::context_is_stereo() const
+ {
+diff --git a/src/video_output_qt.h b/src/video_output_qt.h
+index 1cc3174..089bac9 100644
+--- src/video_output_qt.h
++++ src/video_output_qt.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, 2016
+ * Martin Lambers <marlam@marlam.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+@@ -69,8 +69,10 @@ private:
+ public:
+ gl_thread(video_output_qt* vo_qt, video_output_qt_widget* vo_qt_widget);
+
+-#if HAVE_X11
++#ifdef GLEW_MX
++# if HAVE_X11
+ GLXEWContext* glxewGetContext() const;
++# endif
+ #endif
+
+ void set_render(bool r);
+@@ -166,10 +168,12 @@ protected:
+ class video_output_qt : public video_output
+ {
+ private:
+-#if HAVE_X11
++#ifdef GLEW_MX
++# if HAVE_X11
+ GLXEWContext _glxew_context;
+-#endif
++# endif
+ GLEWContext _glew_context;
++#endif
+ int _screen_width, _screen_height;
+ float _screen_pixel_aspect_ratio;
+ video_container_widget *_container_widget;
+@@ -192,10 +196,12 @@ private:
+ void resume_screensaver();
+
+ protected:
+-#if HAVE_X11
+- GLXEWContext* glxewGetContext() const;
+-#endif
++#ifdef GLEW_MX
++# if HAVE_X11
++ virtual GLXEWContext* glxewGetContext() const;
++# endif
+ virtual GLEWContext* glewGetContext() const;
++#endif
+ virtual bool context_is_stereo() const;
+ virtual void recreate_context(bool stereo);
+ virtual void trigger_resize(int w, int h);
+--
+cgit v1.0-41-gc330
+
diff --git a/multimedia/bino/files/patch-src_base_str.cpp b/multimedia/bino/files/patch-src_base_str.cpp
deleted file mode 100644
index f04ce6810f42..000000000000
--- a/multimedia/bino/files/patch-src_base_str.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/base/str.cpp.orig 2012-10-13 05:01:40 UTC
-+++ src/base/str.cpp
-@@ -77,7 +77,7 @@ static inline std::string uint_to_str(T
- do
- {
- // this assumes an ASCII-compatible character set
-- s.insert(0, 1, '0' + x % 10);
-+ s.insert((size_t)0, (size_t)1, (char)('0' + x % 10));
- x /= 10;
- }
- while (x != 0);
-@@ -94,7 +94,7 @@ static inline std::string int_to_str(T x
- do
- {
- // this assumes an ASCII-compatible character set
-- s.insert(0, 1, (negative ? ('0' - x % 10) : ('0' + x % 10)));
-+ s.insert((size_t)0, (size_t)1, (char)(negative ? ('0' - x % 10) : ('0' + x % 10)));
- x /= 10;
- }
- while (x != 0);
diff --git a/multimedia/bino/files/patch-src_base_str.h b/multimedia/bino/files/patch-src_base_str.h
new file mode 100644
index 000000000000..85445094f4fe
--- /dev/null
+++ b/multimedia/bino/files/patch-src_base_str.h
@@ -0,0 +1,10 @@
+--- src/base/str.h.orig 2017-11-04 13:56:43 UTC
++++ src/base/str.h
+@@ -31,6 +31,7 @@
+ #include <vector>
+ #include <cstdarg>
+ #include <cerrno>
++#include <ctime>
+
+ #ifdef __GNUC__
+ # define STR_AFP(a, b) __attribute__ ((format (printf, a, b)))
diff --git a/multimedia/bino/files/patch-src_media__object.cpp b/multimedia/bino/files/patch-src_media__object.cpp
deleted file mode 100644
index cfae5b68fe05..000000000000
--- a/multimedia/bino/files/patch-src_media__object.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-Some changes are identical to upstream:
-http://git.savannah.gnu.org/cgit/bino.git/commit/?id=bcba7045c99f
-http://git.savannah.gnu.org/cgit/bino.git/commit/?id=50b7109633fa
-http://git.savannah.gnu.org/cgit/bino.git/commit/?id=78023424d4cf
-
---- src/media_object.cpp.orig 2013-01-27 21:04:48 UTC
-+++ src/media_object.cpp
-@@ -56,6 +56,23 @@ extern "C"
-
- #include "media_object.h"
-
-+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(51, 42, 0)
-+#define AVPixelFormat PixelFormat
-+#define AV_PIX_FMT_BGRA PIX_FMT_BGRA
-+#define AV_PIX_FMT_YUV420P PIX_FMT_YUV420P
-+#define AV_PIX_FMT_YUV420P10 PIX_FMT_YUV420P10
-+#define AV_PIX_FMT_YUV422P PIX_FMT_YUV422P
-+#define AV_PIX_FMT_YUV422P10 PIX_FMT_YUV422P10
-+#define AV_PIX_FMT_YUV444P PIX_FMT_YUV444P
-+#define AV_PIX_FMT_YUV444P10 PIX_FMT_YUV444P10
-+#define AV_PIX_FMT_YUVJ420P PIX_FMT_YUVJ420P
-+#define AV_PIX_FMT_YUVJ422P PIX_FMT_YUVJ422P
-+#define AV_PIX_FMT_YUVJ444P PIX_FMT_YUVJ444P
-+#endif
-+
-+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 25, 0)
-+#define AV_CODEC_ID_TEXT CODEC_ID_TEXT
-+#endif
-
- // The read thread.
- // This thread reads packets from the AVFormatContext and stores them in the
-@@ -150,7 +167,8 @@ public:
- // Hide the FFmpeg stuff so that their messy header files cannot cause problems
- // in other source files.
-
--static const size_t audio_tmpbuf_size = (AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2;
-+static const size_t max_audio_frame_size = 19200; // 1 second of 48khz 32bit audio
-+static const size_t audio_tmpbuf_size = (max_audio_frame_size * 3) / 2;
-
- struct ffmpeg_stuff
- {
-@@ -422,20 +440,20 @@ void media_object::set_video_frame_templ
- video_frame_template.value_range = video_frame::u8_full;
- video_frame_template.chroma_location = video_frame::center;
- if (!_always_convert_to_bgra32
-- && (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P10))
-+ && (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P10))
- {
-- if (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10)
-+ if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10)
- {
- video_frame_template.layout = video_frame::yuv444p;
- }
-- else if (video_codec_ctx->pix_fmt == PIX_FMT_YUV422P
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10)
-+ else if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10)
- {
- video_frame_template.layout = video_frame::yuv422p;
- }
-@@ -448,9 +466,9 @@ void media_object::set_video_frame_templ
- {
- video_frame_template.color_space = video_frame::yuv709;
- }
-- if (video_codec_ctx->pix_fmt == PIX_FMT_YUV444P10
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV422P10
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUV420P10)
-+ if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV444P10
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV422P10
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUV420P10)
- {
- video_frame_template.value_range = video_frame::u10_mpeg;
- if (video_codec_ctx->color_range == AVCOL_RANGE_JPEG)
-@@ -477,15 +495,15 @@ void media_object::set_video_frame_templ
- }
- }
- else if (!_always_convert_to_bgra32
-- && (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ444P
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUVJ422P
-- || video_codec_ctx->pix_fmt == PIX_FMT_YUVJ420P))
-+ && (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ444P
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ422P
-+ || video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ420P))
- {
-- if (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ444P)
-+ if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ444P)
- {
- video_frame_template.layout = video_frame::yuv444p;
- }
-- else if (video_codec_ctx->pix_fmt == PIX_FMT_YUVJ422P)
-+ else if (video_codec_ctx->pix_fmt == AV_PIX_FMT_YUVJ422P)
- {
- video_frame_template.layout = video_frame::yuv422p;
- }
-@@ -879,7 +897,7 @@ void media_object::open(const std::strin
- {
- _ffmpeg->format_ctx->streams[i]->discard = AVDISCARD_ALL; // ignore by default; user must activate streams
- AVCodecContext *codec_ctx = _ffmpeg->format_ctx->streams[i]->codec;
-- AVCodec *codec = (codec_ctx->codec_id == CODEC_ID_TEXT
-+ AVCodec *codec = (codec_ctx->codec_id == AV_CODEC_ID_TEXT
- ? NULL : avcodec_find_decoder(codec_ctx->codec_id));
- // XXX: Sometimes the reported width and height for a video stream change after avcodec_open(),
- // but the original values seem to be correct. This seems to happen mostly with 1920x1080 video
-@@ -899,8 +917,8 @@ void media_object::open(const std::strin
- if (codec_ctx->lowres || (codec && (codec->capabilities & CODEC_CAP_DR1)))
- codec_ctx->flags |= CODEC_FLAG_EMU_EDGE;
- }
-- // Find and open the codec. CODEC_ID_TEXT is a special case: it has no decoder since it is unencoded raw data.
-- if (codec_ctx->codec_id != CODEC_ID_TEXT && (!codec || (e = avcodec_open2(codec_ctx, codec, NULL)) < 0))
-+ // Find and open the codec. AV_CODEC_ID_TEXT is a special case: it has no decoder since it is unencoded raw data.
-+ if (codec_ctx->codec_id != AV_CODEC_ID_TEXT && (!codec || (e = avcodec_open2(codec_ctx, codec, NULL)) < 0))
- {
- msg::wrn(_("%s stream %d: Cannot open %s: %s"), _url.c_str(), i,
- codec_ctx->codec_type == AVMEDIA_TYPE_VIDEO ? _("video codec")
-@@ -928,10 +946,15 @@ void media_object::open(const std::strin
- _ffmpeg->video_packets.push_back(AVPacket());
- av_init_packet(&(_ffmpeg->video_packets[j]));
- _ffmpeg->video_decode_threads.push_back(video_decode_thread(_url, _ffmpeg, j));
-+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 28, 1)
- _ffmpeg->video_frames.push_back(avcodec_alloc_frame());
- _ffmpeg->video_buffered_frames.push_back(avcodec_alloc_frame());
-- enum PixelFormat frame_fmt = (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32
-- ? PIX_FMT_BGRA : _ffmpeg->video_codec_ctxs[j]->pix_fmt);
-+#else
-+ _ffmpeg->video_frames.push_back(av_frame_alloc());
-+ _ffmpeg->video_buffered_frames.push_back(av_frame_alloc());
-+#endif
-+ enum AVPixelFormat frame_fmt = (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32
-+ ? AV_PIX_FMT_BGRA : _ffmpeg->video_codec_ctxs[j]->pix_fmt);
- int frame_bufsize = (avpicture_get_size(frame_fmt,
- _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height));
- _ffmpeg->video_buffers.push_back(static_cast<uint8_t *>(av_malloc(frame_bufsize)));
-@@ -944,20 +967,24 @@ void media_object::open(const std::strin
- if (_ffmpeg->video_frame_templates[j].layout == video_frame::bgra32)
- {
- // Initialize things needed for software pixel format conversion
-- int sws_bufsize = avpicture_get_size(PIX_FMT_BGRA,
-+ int sws_bufsize = avpicture_get_size(AV_PIX_FMT_BGRA,
- _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
-+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 28, 1)
- _ffmpeg->video_sws_frames.push_back(avcodec_alloc_frame());
-+#else
-+ _ffmpeg->video_sws_frames.push_back(av_frame_alloc());
-+#endif
- _ffmpeg->video_sws_buffers.push_back(static_cast<uint8_t *>(av_malloc(sws_bufsize)));
- if (!_ffmpeg->video_sws_frames[j] || !_ffmpeg->video_sws_buffers[j])
- {
- throw exc(HERE + ": " + strerror(ENOMEM));
- }
- avpicture_fill(reinterpret_cast<AVPicture *>(_ffmpeg->video_sws_frames[j]), _ffmpeg->video_sws_buffers[j],
-- PIX_FMT_BGRA, _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
-+ AV_PIX_FMT_BGRA, _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height);
- // Call sws_getCachedContext(NULL, ...) instead of sws_getContext(...) just to avoid a deprecation warning.
- _ffmpeg->video_sws_ctxs.push_back(sws_getCachedContext(NULL,
- _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, _ffmpeg->video_codec_ctxs[j]->pix_fmt,
-- _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, PIX_FMT_BGRA,
-+ _ffmpeg->video_codec_ctxs[j]->width, _ffmpeg->video_codec_ctxs[j]->height, AV_PIX_FMT_BGRA,
- SWS_POINT, NULL, NULL, NULL));
- if (!_ffmpeg->video_sws_ctxs[j])
- {
-@@ -1000,9 +1027,9 @@ void media_object::open(const std::strin
- int j = _ffmpeg->subtitle_streams.size() - 1;
- msg::dbg(_url + " stream " + str::from(i) + " is subtitle stream " + str::from(j) + ".");
- _ffmpeg->subtitle_codec_ctxs.push_back(codec_ctx);
-- // CODEC_ID_TEXT does not have any decoder; it is just UTF-8 text in the packet data.
-+ // AV_CODEC_ID_TEXT does not have any decoder; it is just UTF-8 text in the packet data.
- _ffmpeg->subtitle_codecs.push_back(
-- _ffmpeg->subtitle_codec_ctxs[j]->codec_id == CODEC_ID_TEXT ? NULL : codec);
-+ _ffmpeg->subtitle_codec_ctxs[j]->codec_id == AV_CODEC_ID_TEXT ? NULL : codec);
- _ffmpeg->subtitle_box_templates.push_back(subtitle_box());
- set_subtitle_box_template(j);
- _ffmpeg->subtitle_decode_threads.push_back(subtitle_decode_thread(_url, _ffmpeg, j));
-@@ -1505,7 +1532,7 @@ read_frame:
- // We need to buffer the data because FFmpeg will clubber it when decoding the next frame.
- av_picture_copy(reinterpret_cast<AVPicture *>(_ffmpeg->video_buffered_frames[_video_stream]),
- reinterpret_cast<AVPicture *>(_ffmpeg->video_frames[_video_stream]),
-- static_cast<enum PixelFormat>(_ffmpeg->video_codec_ctxs[_video_stream]->pix_fmt),
-+ static_cast<enum AVPixelFormat>(_ffmpeg->video_codec_ctxs[_video_stream]->pix_fmt),
- _ffmpeg->video_codec_ctxs[_video_stream]->width,
- _ffmpeg->video_codec_ctxs[_video_stream]->height);
- src_frame = _ffmpeg->video_buffered_frames[_video_stream];
-@@ -1776,8 +1803,8 @@ void subtitle_decode_thread::run()
- int got_subtitle;
- tmppacket = packet;
-
-- // CODEC_ID_TEXT does not have any decoder; it is just UTF-8 text in the packet data.
-- if (_ffmpeg->subtitle_codec_ctxs[_subtitle_stream]->codec_id == CODEC_ID_TEXT)
-+ // AV_CODEC_ID_TEXT does not have any decoder; it is just UTF-8 text in the packet data.
-+ if (_ffmpeg->subtitle_codec_ctxs[_subtitle_stream]->codec_id == AV_CODEC_ID_TEXT)
- {
- int64_t duration = packet.convergence_duration * 1000000
- * _ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[_subtitle_stream]]->time_base.num
-@@ -1937,9 +1964,9 @@ void media_object::seek(int64_t dest_pos
- }
- for (size_t i = 0; i < _ffmpeg->subtitle_streams.size(); i++)
- {
-- if (_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec->codec_id != CODEC_ID_TEXT)
-+ if (_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec->codec_id != AV_CODEC_ID_TEXT)
- {
-- // CODEC_ID_TEXT has no decoder, so we cannot flush its buffers
-+ // AV_CODEC_ID_TEXT has no decoder, so we cannot flush its buffers
- avcodec_flush_buffers(_ffmpeg->format_ctx->streams[_ffmpeg->subtitle_streams[i]]->codec);
- }
- _ffmpeg->subtitle_box_buffers[i].clear();
diff --git a/multimedia/bino/pkg-plist b/multimedia/bino/pkg-plist
index b29d5cb511ed..8c993511a559 100644
--- a/multimedia/bino/pkg-plist
+++ b/multimedia/bino/pkg-plist
@@ -36,10 +36,12 @@
%%DOCSDIR%%/input-layout-alternating-left-right.png
%%DOCSDIR%%/input-layout-alternating-right-left.png
%%DOCSDIR%%/output-type-alternating.png
+%%NLS%%share/locale/bg/LC_MESSAGES/bino.mo
+%%NLS%%share/locale/cs/LC_MESSAGES/bino.mo
%%NLS%%share/locale/de/LC_MESSAGES/bino.mo
%%NLS%%share/locale/fr/LC_MESSAGES/bino.mo
%%NLS%%share/locale/ru/LC_MESSAGES/bino.mo
-%%NLS%%share/locale/bg/LC_MESSAGES/bino.mo
+%%NLS%%share/locale/zh_cn/LC_MESSAGES/bino.mo
bin/bino
share/applications/bino.desktop
share/icons/hicolor/16x16/apps/bino.png