aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2019-02-16 17:56:49 +0100
committerJakub Jirutka <jakub@jirutka.cz>2019-02-16 17:58:26 +0100
commit4822427c9ad333fb5b4432ffaf202b027ae239ad (patch)
tree537655504114fc03caa18df2396dee9ec33cbaac
parentcbbc982b376fc41a1ff9c63c32eaee23cdd0ba46 (diff)
downloadaports-4822427c9ad333fb5b4432ffaf202b027ae239ad.tar.bz2
aports-4822427c9ad333fb5b4432ffaf202b027ae239ad.tar.xz
testing/libde265: new aport
-rw-r--r--testing/libde265/APKBUILD46
-rw-r--r--testing/libde265/disable-tools.patch39
-rw-r--r--testing/libde265/export-only-decoder-api.patch290
-rw-r--r--testing/libde265/use-new-ffmpeg-enum-names.patch25
4 files changed, 400 insertions, 0 deletions
diff --git a/testing/libde265/APKBUILD b/testing/libde265/APKBUILD
new file mode 100644
index 0000000000..d5f037a7ae
--- /dev/null
+++ b/testing/libde265/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
+pkgname=libde265
+pkgver=1.0.3
+pkgrel=0
+pkgdesc="Open h.265 video codec implementation"
+url="https://github.com/strukturag/libde265"
+arch="all"
+license="LGPL-3.0-or-later"
+makedepends="autoconf automake libtool"
+options="!check" # no tests provided
+subpackages="$pkgname-dev"
+source="https://github.com/strukturag/libde265/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
+ export-only-decoder-api.patch
+ disable-tools.patch
+ use-new-ffmpeg-enum-names.patch
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+
+prepare() {
+ default_prepare
+ autoreconf -fvi
+}
+
+build() {
+ # This is en/decoder, so performance matters more than size.
+ export CPPFLAGS="${CPPFLAGS/-Os/-O2}"
+ export CXXFLAGS="${CXXFLAGS/-Os/-O2}"
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --disable-sherlock265
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="aff040638492d9d2391df20980e336eb5e42a3a602be0c310c24ba079125f2eb70fc11cbe98f98504408d829e3f158538e07ea701ab146bc53ceb5e52c8a3ea7 libde265-1.0.3.tar.gz
+b937024655020eaea60cc02110018a4b8a63c7fca5a3c14cf042952e6acc83cf39d8d5a23d16536738a374538e2a20c8130d62e0e82a2dbd86ccea9a01433d11 export-only-decoder-api.patch
+ec3d78eb5e0df13900fdc87711372de8dbf12371feeb885dd54e824b4e6370c8b19528ad1fe07aca410ab281665a64e1357d4ab88fc78fb68d2a9ebd18761bca disable-tools.patch
+6007f51114dcfaefed402ac88599add00f5a25d9e670f20e658d166843b4df3525e9f59556c50358fad85878d5bc2062616a1dede597f4664f46fe1f3baaef7d use-new-ffmpeg-enum-names.patch"
diff --git a/testing/libde265/disable-tools.patch b/testing/libde265/disable-tools.patch
new file mode 100644
index 0000000000..2376fef503
--- /dev/null
+++ b/testing/libde265/disable-tools.patch
@@ -0,0 +1,39 @@
+Description: Disable building of some internal tools that no longer link
+ because internal symbols are not exported.
+Author: Joachim Bauch <bauch@struktur.de>
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -8,10 +8,6 @@
+ SUBDIRS+=dec265
+ endif
+
+-SUBDIRS+=enc265
+-SUBDIRS+=tools
+-SUBDIRS+=acceleration-speed
+-
+ if ENABLE_SHERLOCK265
+ SUBDIRS+=sherlock265
+ endif
+--- a/dec265/Makefile.am
++++ b/dec265/Makefile.am
+@@ -1,5 +1,5 @@
+
+-bin_PROGRAMS = dec265 hdrcopy
++bin_PROGRAMS = dec265
+
+ AM_CPPFLAGS = -I../libde265
+
+@@ -9,12 +9,6 @@
+ dec265_LDADD = ../libde265/libde265.la -lstdc++
+ dec265_SOURCES = dec265.cc
+
+-hdrcopy_DEPENDENCIES = ../libde265/libde265.la
+-hdrcopy_CXXFLAGS =
+-hdrcopy_LDFLAGS =
+-hdrcopy_LDADD = ../libde265/libde265.la -lstdc++
+-hdrcopy_SOURCES = hdrcopy.cc
+-
+ if HAVE_VIDEOGFX
+ dec265_CXXFLAGS += $(VIDEOGFX_CFLAGS)
+ dec265_LDFLAGS += $(VIDEOGFX_LIBS)
+
diff --git a/testing/libde265/export-only-decoder-api.patch b/testing/libde265/export-only-decoder-api.patch
new file mode 100644
index 0000000000..b41effac4d
--- /dev/null
+++ b/testing/libde265/export-only-decoder-api.patch
@@ -0,0 +1,290 @@
+Description: Only export symbols defined in the decoder API.
+ The encoder API is not final yet, so upstream exports all symbols to make
+ development easier. For packaging we only want to expose the public API.
+Author: Joachim Bauch <bauch@struktur.de>
+
+Patch-Source: https://build.opensuse.org/package/view_file/home:jirutka/libde265/libde265-only_export_decoder_api.patch
+
+--- a/libde265/encoder/Makefile.am
++++ b/libde265/encoder/Makefile.am
+@@ -10,6 +10,18 @@
+ encpicbuf.h encpicbuf.cc \
+ sop.h sop.cc
+
++libde265_encoder_la_CFLAGS = \
++ $(CFLAG_VISIBILITY) \
++ -DLIBDE265_EXPORTS
++libde265_encoder_la_CXXFLAGS += \
++ $(CFLAG_VISIBILITY) \
++ -DLIBDE265_EXPORTS
++
++if HAVE_VISIBILITY
++ libde265_encoder_la_CFLAGS += -DHAVE_VISIBILITY
++ libde265_encoder_la_CXXFLAGS += -DHAVE_VISIBILITY
++endif
++
+ SUBDIRS=algo
+ libde265_encoder_la_LIBADD = algo/libde265_encoder_algo.la
+
+--- a/libde265/encoder/algo/Makefile.am
++++ b/libde265/encoder/algo/Makefile.am
+@@ -17,5 +17,13 @@
+ tb-rateestim.h tb-rateestim.cc \
+ pb-mv.h pb-mv.cc
+
++libde265_encoder_algo_la_CXXFLAGS += \
++ $(CFLAG_VISIBILITY) \
++ -DLIBDE265_EXPORTS
++
++if HAVE_VISIBILITY
++ libde265_encoder_algo_la_CXXFLAGS += -DHAVE_VISIBILITY
++endif
++
+ EXTRA_DIST = \
+ CMakeLists.txt
+--- a/configure.ac
++++ b/configure.ac
+@@ -50,9 +50,7 @@
+ fi
+ changequote([,])dnl
+
+-dnl gl_VISIBILITY
+-dnl : In encoder branch, we still export all library symbols :
+-HAVE_VISIBILITY=0
++gl_VISIBILITY
+ AM_CONDITIONAL([HAVE_VISIBILITY], [test "x$HAVE_VISIBILITY" != "x0"])
+
+ # Checks for header files.
+--- a/libde265/image-io.cc
++++ b/libde265/image-io.cc
+@@ -183,7 +183,7 @@
+ }
+
+
+-LIBDE265_API PacketSink_File::~PacketSink_File()
++PacketSink_File::~PacketSink_File()
+ {
+ if (mFH) {
+ fclose(mFH);
+@@ -191,7 +191,7 @@
+ }
+
+
+-LIBDE265_API void PacketSink_File::set_filename(const char* filename)
++void PacketSink_File::set_filename(const char* filename)
+ {
+ assert(mFH==NULL);
+
+@@ -199,7 +199,7 @@
+ }
+
+
+-LIBDE265_API void PacketSink_File::send_packet(const uint8_t* data, int n)
++void PacketSink_File::send_packet(const uint8_t* data, int n)
+ {
+ uint8_t startCode[3];
+ startCode[0] = 0;
+--- a/libde265/image-io.h
++++ b/libde265/image-io.h
+@@ -30,17 +30,17 @@
+ class ImageSource
+ {
+ public:
+- LIBDE265_API ImageSource();
+- virtual LIBDE265_API ~ImageSource() { }
++ ImageSource();
++ virtual ~ImageSource() { }
+
+ //enum ImageStatus { Available, Waiting, EndOfVideo };
+
+ //virtual ImageStatus get_status() = 0;
+- virtual LIBDE265_API de265_image* get_image(bool block=true) = 0;
+- virtual LIBDE265_API void skip_frames(int n) = 0;
++ virtual de265_image* get_image(bool block=true) = 0;
++ virtual void skip_frames(int n) = 0;
+
+- virtual LIBDE265_API int get_width() const = 0;
+- virtual LIBDE265_API int get_height() const = 0;
++ virtual int get_width() const = 0;
++ virtual int get_height() const = 0;
+ };
+
+
+@@ -48,17 +48,17 @@
+ class ImageSource_YUV : public ImageSource
+ {
+ public:
+- LIBDE265_API ImageSource_YUV();
+- virtual LIBDE265_API ~ImageSource_YUV();
++ ImageSource_YUV();
++ virtual ~ImageSource_YUV();
+
+- bool LIBDE265_API set_input_file(const char* filename, int w,int h);
++ bool set_input_file(const char* filename, int w,int h);
+
+ //virtual ImageStatus get_status();
+- virtual LIBDE265_API de265_image* get_image(bool block=true);
+- virtual LIBDE265_API void skip_frames(int n);
++ virtual de265_image* get_image(bool block=true);
++ virtual void skip_frames(int n);
+
+- virtual LIBDE265_API int get_width() const { return width; }
+- virtual LIBDE265_API int get_height() const { return height; }
++ virtual int get_width() const { return width; }
++ virtual int get_height() const { return height; }
+
+ private:
+ FILE* mFH;
+@@ -74,20 +74,20 @@
+ class ImageSink
+ {
+ public:
+- virtual LIBDE265_API ~ImageSink() { }
++ virtual ~ImageSink() { }
+
+- virtual LIBDE265_API void send_image(const de265_image* img) = 0;
++ virtual void send_image(const de265_image* img) = 0;
+ };
+
+ class ImageSink_YUV : public ImageSink
+ {
+ public:
+- LIBDE265_API ImageSink_YUV() : mFH(NULL) { }
+- LIBDE265_API ~ImageSink_YUV();
++ ImageSink_YUV() : mFH(NULL) { }
++ ~ImageSink_YUV();
+
+- bool LIBDE265_API set_filename(const char* filename);
++ bool set_filename(const char* filename);
+
+- virtual LIBDE265_API void send_image(const de265_image* img);
++ virtual void send_image(const de265_image* img);
+
+ private:
+ FILE* mFH;
+@@ -98,21 +98,21 @@
+ class PacketSink
+ {
+ public:
+- virtual LIBDE265_API ~PacketSink() { }
++ virtual ~PacketSink() { }
+
+- virtual LIBDE265_API void send_packet(const uint8_t* data, int n) = 0;
++ virtual void send_packet(const uint8_t* data, int n) = 0;
+ };
+
+
+ class PacketSink_File : public PacketSink
+ {
+ public:
+- LIBDE265_API PacketSink_File();
+- virtual LIBDE265_API ~PacketSink_File();
++ PacketSink_File();
++ virtual ~PacketSink_File();
+
+- LIBDE265_API void set_filename(const char* filename);
++ void set_filename(const char* filename);
+
+- virtual LIBDE265_API void send_packet(const uint8_t* data, int n);
++ virtual void send_packet(const uint8_t* data, int n);
+
+ private:
+ FILE* mFH;
+--- a/libde265/configparam.h
++++ b/libde265/configparam.h
+@@ -95,7 +95,7 @@
+ bool hasLongOption() const { return true; } //mLongOption!=NULL; }
+ std::string getLongOption() const { return mLongOption ? std::string(mLongOption) : get_name(); }
+
+- virtual LIBDE265_API bool processCmdLineArguments(char** argv, int* argc, int idx) { return false; }
++ virtual bool processCmdLineArguments(char** argv, int* argc, int idx) { return false; }
+
+
+
+@@ -132,7 +132,7 @@
+ virtual std::string get_default_string() const { return default_value ? "true":"false"; }
+
+ virtual std::string getTypeDescr() const { return "(boolean)"; }
+- virtual LIBDE265_API bool processCmdLineArguments(char** argv, int* argc, int idx) { set(true); return true; }
++ virtual bool processCmdLineArguments(char** argv, int* argc, int idx) { set(true); return true; }
+
+ bool set(bool v) { value_set=true; value=v; return true; }
+
+@@ -162,10 +162,10 @@
+ virtual bool has_default() const { return default_set; }
+
+ void set_default(std::string v) { default_value=v; default_set=true; }
+- virtual LIBDE265_API std::string get_default_string() const { return default_value; }
++ virtual std::string get_default_string() const { return default_value; }
+
+- virtual LIBDE265_API std::string getTypeDescr() const { return "(string)"; }
+- virtual LIBDE265_API bool processCmdLineArguments(char** argv, int* argc, int idx);
++ virtual std::string getTypeDescr() const { return "(string)"; }
++ virtual bool processCmdLineArguments(char** argv, int* argc, int idx);
+
+ bool set(std::string v) { value_set=true; value=v; return true; }
+
+@@ -201,10 +201,10 @@
+ virtual bool has_default() const { return default_set; }
+
+ void set_default(int v) { default_value=v; default_set=true; }
+- virtual LIBDE265_API std::string get_default_string() const;
++ virtual std::string get_default_string() const;
+
+- virtual LIBDE265_API std::string getTypeDescr() const;
+- virtual LIBDE265_API bool processCmdLineArguments(char** argv, int* argc, int idx);
++ virtual std::string getTypeDescr() const;
++ virtual bool processCmdLineArguments(char** argv, int* argc, int idx);
+
+ bool set(int v) {
+ if (is_valid(v)) { value_set=true; value=v; return true; }
+@@ -239,7 +239,7 @@
+ virtual std::vector<std::string> get_choice_names() const = 0;
+
+ virtual std::string getTypeDescr() const;
+- virtual LIBDE265_API bool processCmdLineArguments(char** argv, int* argc, int idx);
++ virtual bool processCmdLineArguments(char** argv, int* argc, int idx);
+
+ const char** get_choices_string_table() const;
+
+@@ -368,10 +368,10 @@
+ config_parameters() : param_string_table(NULL) { }
+ ~config_parameters() { delete[] param_string_table; }
+
+- void LIBDE265_API add_option(option_base* o);
++ void add_option(option_base* o);
+
+- void LIBDE265_API print_params() const;
+- bool LIBDE265_API parse_command_line_params(int* argc, char** argv, int* first_idx=NULL,
++ void print_params() const;
++ bool parse_command_line_params(int* argc, char** argv, int* first_idx=NULL,
+ bool ignore_unknown_options=false);
+
+
+--- a/libde265/quality.h
++++ b/libde265/quality.h
+@@ -26,11 +26,11 @@
+ #include <libde265/image.h>
+
+
+-LIBDE265_API uint32_t SSD(const uint8_t* img, int imgStride,
++uint32_t SSD(const uint8_t* img, int imgStride,
+ const uint8_t* ref, int refStride,
+ int width, int height);
+
+-LIBDE265_API uint32_t SAD(const uint8_t* img, int imgStride,
++uint32_t SAD(const uint8_t* img, int imgStride,
+ const uint8_t* ref, int refStride,
+ int width, int height);
+
+@@ -41,7 +41,7 @@
+ LIBDE265_API double PSNR(double mse);
+
+
+-LIBDE265_API uint32_t compute_distortion_ssd(const de265_image* img1, const de265_image* img2,
++uint32_t compute_distortion_ssd(const de265_image* img1, const de265_image* img2,
+ int x0, int y0, int log2size, int cIdx);
+
+ #endif
+
+
diff --git a/testing/libde265/use-new-ffmpeg-enum-names.patch b/testing/libde265/use-new-ffmpeg-enum-names.patch
new file mode 100644
index 0000000000..3a2facc440
--- /dev/null
+++ b/testing/libde265/use-new-ffmpeg-enum-names.patch
@@ -0,0 +1,25 @@
+From e5b8e2e703d608777afadc54955bd396e4211da0 Mon Sep 17 00:00:00 2001
+From: Dirk Farin <farin@struktur.de>
+Date: Thu, 19 Apr 2018 13:15:18 +0200
+Subject: [PATCH] use new FFMPEG enum names
+
+Patch-Source: https://build.opensuse.org/package/view_file/home:jirutka/libde265/libde265-use_new_FFMPEG_enum_names.patch
+---
+ sherlock265/VideoDecoder.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sherlock265/VideoDecoder.cc b/sherlock265/VideoDecoder.cc
+index 119f6152..b829e1c7 100644
+--- a/sherlock265/VideoDecoder.cc
++++ b/sherlock265/VideoDecoder.cc
+@@ -237,7 +237,7 @@ void VideoDecoder::convert_frame_swscale(const de265_image* img, QImage & qimg)
+ }
+ width = img->get_width();
+ height = img->get_height();
+- sws = sws_getContext(width, height, PIX_FMT_YUV420P, width, height, PIX_FMT_BGRA, SWS_FAST_BILINEAR, NULL, NULL, NULL);
++ sws = sws_getContext(width, height, AV_PIX_FMT_YUV420P, width, height, AV_PIX_FMT_BGRA, SWS_FAST_BILINEAR, NULL, NULL, NULL);
+ }
+
+ int stride[3];
+
+