summaryrefslogtreecommitdiff
path: root/media-libs/gst-plugins-good
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs/gst-plugins-good')
-rw-r--r--media-libs/gst-plugins-good/Manifest6
-rw-r--r--media-libs/gst-plugins-good/files/gst-plugins-good-1.20.0-lame-feature-option.patch23
-rw-r--r--media-libs/gst-plugins-good/files/gst-plugins-good-1.20.0-ldac-rtp-header.patch163
-rw-r--r--media-libs/gst-plugins-good/gst-plugins-good-1.18.6.ebuild49
-rw-r--r--media-libs/gst-plugins-good/gst-plugins-good-1.20.1.ebuild53
5 files changed, 294 insertions, 0 deletions
diff --git a/media-libs/gst-plugins-good/Manifest b/media-libs/gst-plugins-good/Manifest
index d526dcd48f9d..babfd332e2ef 100644
--- a/media-libs/gst-plugins-good/Manifest
+++ b/media-libs/gst-plugins-good/Manifest
@@ -1,5 +1,11 @@
+AUX gst-plugins-good-1.20.0-lame-feature-option.patch 721 BLAKE2B 857188fd4e6392fc87b75174123636b6d9178742b0f3d90cf17a3b756f3fdc5e19e16d7c22b74d58704caca914f393f75d73762672e2a14481404c030dba29b8 SHA512 e2860cd84627fef0b285e2910a9efc208bbe520b341894fd8e2216193d8610c1e3c4b3c6c5bbcb545bc0c6ad8eff71864fc35f4bb1f2507e131d02a4e39f9a2b
+AUX gst-plugins-good-1.20.0-ldac-rtp-header.patch 5748 BLAKE2B 00b9fdf873751d8566cc4951a9a0d887a61d3e7f433d6a72ccdc384c6267c0d076bbe8e12e80b8eeeb60d23ca0321353c3c300f22e99e3621cafe43a17639fbd SHA512 320c478ea792f9944ce3d80e7661014a23427bb74aefd6ac4f1fb80437868728d27ddfb5ee2b24ef6ff78aead2e71947bb367b50440e477f294b304b0d6e1bc0
DIST gst-plugins-good-1.16.3.tar.xz 3914676 BLAKE2B 52f18027f9d9a77e8b459a0a10fa7c1450dff2faf8a2a63134f833ad08b19985b7f0d3d2af4b766c9b8bf802d048fabd6f52ad5a7865eccd1fe0d26404b7b2de SHA512 3e0da4a4defc0ddea1c26dfc767fed732548654f4155452649777109a17d5b65b2fde895483a3e35dc1646de5a16e913cd2408f826251d46a99b7751b88dcb65
DIST gst-plugins-good-1.18.4.tar.xz 3277572 BLAKE2B 8acfb975d19eabc681184d0096328051a9a02e5f849599dbad1233a0e9254e1a2d2bef75d8afdc779a7ca01a71b15d1e83a843749c0ef5f7ab2b5818067ab898 SHA512 764c66383c93e57f9c5e7742002013e07e7b25750d6974d6c07744433e8ceb7570e829e68278e2bc5214f77158311a6b3bfb013d615cf66205d8d7a9e2d54b86
+DIST gst-plugins-good-1.18.6.tar.xz 3296552 BLAKE2B 551ae9cf9beb512ae418db20cd50dc8826ed60421a40d6c9c9fc558f32c9db2a9bada309a8075306542c53382ecb728dac3dd6252d1efc7255cffde0bea35895 SHA512 e0be5f1eaffe65d7871f23e42645fa4cee30953d16d54c4f4707c094859659cff1e4609b086afebaf08777b6d01dcba4f4b2b338e722bf729e9ed0482a2417a5
+DIST gst-plugins-good-1.20.1.tar.xz 3415220 BLAKE2B 62a0e0b4d60412350c3aad692e7b3d0dd5c7ebed098e21e7d4d7c599ffec9be5795c88cbdece0b219d1aad607ad1a0209a376a8f3543793c9c905cb1401e92c4 SHA512 6e56f6290465da03bfe162228829e51091896b2c5fe9d1d0718f663a3ab14edf5c790b37998a783981b9c77034252e7dee9fec5136f92ced44c4898e2fbd402e
EBUILD gst-plugins-good-1.16.3.ebuild 1407 BLAKE2B 7709616de2741cecd718c6dd6ac66e7f427b4f8ed80b5a07085a3cb5a3e2cfcc0ac36f28adbbb5c6f6f91f0e31768483462c5f390c672311d4f1c7d308dfac86 SHA512 e31d9ff7c2a665942970da87adedcb90ce31c9c8cecba2816af2d5a15edf7b07f0fdbba7b5bd1a0fb0973f2f8f685b64c54981f601927ca8b6b68b672303b8ad
EBUILD gst-plugins-good-1.18.4.ebuild 1107 BLAKE2B 7a482bd520673f9f380be8ef253e56bd9fcafea31f408e2932cc2b05976b5757c46bb047c101ade5d35569413c16753e763f34477d7322c9a9d10055401fedf9 SHA512 929a9e4832409b481744d4048b99dda4a3fd1578d78cd306a7f8e94fa6614955145d801ecf6f9f994942f8b6588d3e57955b398ef956651699d4f8168bd5d047
+EBUILD gst-plugins-good-1.18.6.ebuild 1113 BLAKE2B ed67c675ebaf80530bf9779f44e8934aa1c430b8b9b754edc6a3351395ea704eecacfbb4826759e167cf072e43819d7961f56a1e330dd63be13cd9041035a126 SHA512 dbe363637519cda3fe604d0ba5ceabefe4cf70f643b61e7a61758288c617dcfb782a42526e984f05ab1ee2e25d6bcde1fe59bd5fa278d4b71a7d0549e698aa8a
+EBUILD gst-plugins-good-1.20.1.ebuild 1169 BLAKE2B 4708d87bbecb2d6bcf45e5db89c0f9ca36ee255a286fc79ba3ad5895e1d2c0a687ccb8689716d0dea3de70cac98621fc864fff5931ad31da2a0268dccb274df0 SHA512 62404ae8a5d86d442bf18afb8e457d888430bf6ff35eb116e0ed48b8737e702f1a7e882afa7582c81783c7249c8e5e1ac117265111bf39f5ba23f007d26ccb64
MISC metadata.xml 267 BLAKE2B 331be70b2fa90cce1bf91ded1dac141de6a9bec40c1736bcb90d280ac7fabf22cfd0a701c7fd5864f007d1159954f7ee55701d5e68b47a1a9a217ca34b7ee619 SHA512 4dcdd6bc6d148a0e02a0f1b766bd0c5712d373d898c06078d8630e0067e858b815117392a11332b257156e95da6337494d99c2724d24cadb97432089908644b5
diff --git a/media-libs/gst-plugins-good/files/gst-plugins-good-1.20.0-lame-feature-option.patch b/media-libs/gst-plugins-good/files/gst-plugins-good-1.20.0-lame-feature-option.patch
new file mode 100644
index 000000000000..c431b1fb6bd7
--- /dev/null
+++ b/media-libs/gst-plugins-good/files/gst-plugins-good-1.20.0-lame-feature-option.patch
@@ -0,0 +1,23 @@
+commit d03971dac7b32a6ffcbf161853e017f65ae7c22f
+Author: Heiko Becker <heirecka@exherbo.org>
+Date: Fri Feb 11 21:35:54 2022 +0100
+
+ meson: Don't build lame plugin with -Dlame=disabled
+
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1686>
+
+diff --git a/ext/lame/meson.build b/ext/lame/meson.build
+index 2169fde6f4..3290f17e1e 100644
+--- a/ext/lame/meson.build
++++ b/ext/lame/meson.build
+@@ -1,5 +1,10 @@
++lame_dep = dependency('', required: false)
+ lame_option = get_option('lame')
+
++if lame_option.disabled()
++ subdir_done()
++endif
++
+ lame_extra_c_args = []
+ lame_dep = cc.find_library('mp3lame', required: false)
+ have_lame = cc.has_header_symbol('lame/lame.h', 'lame_init')
diff --git a/media-libs/gst-plugins-good/files/gst-plugins-good-1.20.0-ldac-rtp-header.patch b/media-libs/gst-plugins-good/files/gst-plugins-good-1.20.0-ldac-rtp-header.patch
new file mode 100644
index 000000000000..f1fc4601a23a
--- /dev/null
+++ b/media-libs/gst-plugins-good/files/gst-plugins-good-1.20.0-ldac-rtp-header.patch
@@ -0,0 +1,163 @@
+From cc3419daf60159394cd310c2405a78775b3f84db Mon Sep 17 00:00:00 2001
+From: Sanchayan Maity <sanchayan@asymptotic.io>
+Date: Thu, 24 Feb 2022 20:28:23 +0530
+Subject: [PATCH] rtp: ldac: Set frame count information in payload
+
+The RTP payload seems to be required as it carries the frame count
+information. Also, gst_rtp_base_payload_allocate_output_buffer had
+the second argument incorrect.
+
+Strangely some devices like Shanling MP4 and Sony XM3 would still
+work without this while some like the Sony XM4 do not.
+
+Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1797>
+---
+ .../docs/gst_plugins_cache.json | 2 +-
+ .../gst-plugins-good/gst/rtp/gstrtpldacpay.c | 63 ++++++++++++++++++-
+ .../gst-plugins-good/gst/rtp/gstrtpldacpay.h | 1 +
+ 3 files changed, 62 insertions(+), 4 deletions(-)
+
+diff --git a/docs/gst_plugins_cache.json b/docs/gst_plugins_cache.json
+index 88bff47243..003546d59d 100644
+--- a/docs/gst_plugins_cache.json
++++ b/docs/gst_plugins_cache.json
+@@ -14678,7 +14678,7 @@
+ "long-name": "RTP packet payloader",
+ "pad-templates": {
+ "sink": {
+- "caps": "audio/x-ldac:\n channels: [ 1, 2 ]\n rate: { (int)44100, (int)48000, (int)88200, (int)96000 }\n",
++ "caps": "audio/x-ldac:\n channels: [ 1, 2 ]\n eqmid: { (int)0, (int)1, (int)2 }\n rate: { (int)44100, (int)48000, (int)88200, (int)96000 }\n",
+ "direction": "sink",
+ "presence": "always"
+ },
+diff --git a/gst/rtp/gstrtpldacpay.c b/gst/rtp/gstrtpldacpay.c
+index 2b14b746fe..aa30673e7e 100644
+--- a/gst/rtp/gstrtpldacpay.c
++++ b/gst/rtp/gstrtpldacpay.c
+@@ -48,7 +48,7 @@
+ #include "gstrtpldacpay.h"
+ #include "gstrtputils.h"
+
+-#define GST_RTP_HEADER_LENGTH 12
++#define GST_RTP_LDAC_PAYLOAD_HEADER_SIZE 1
+ /* MTU size required for LDAC A2DP streaming */
+ #define GST_LDAC_MTU_REQUIRED 679
+
+@@ -64,6 +64,7 @@ static GstStaticPadTemplate gst_rtp_ldac_pay_sink_factory =
+ GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-ldac, "
+ "channels = (int) [ 1, 2 ], "
++ "eqmid = (int) { 0, 1, 2 }, "
+ "rate = (int) { 44100, 48000, 88200, 96000 }")
+ );
+
+@@ -81,6 +82,38 @@ static gboolean gst_rtp_ldac_pay_set_caps (GstRTPBasePayload * payload,
+ static GstFlowReturn gst_rtp_ldac_pay_handle_buffer (GstRTPBasePayload *
+ payload, GstBuffer * buffer);
+
++/**
++ * gst_rtp_ldac_pay_get_num_frames
++ * @eqmid: Encode Quality Mode Index
++ * @channels: Number of channels
++ *
++ * Returns: Number of LDAC frames per packet.
++ */
++static guint8
++gst_rtp_ldac_pay_get_num_frames (gint eqmid, gint channels)
++{
++ g_assert (channels == 1 || channels == 2);
++
++ switch (eqmid) {
++ /* Encode setting for High Quality */
++ case 0:
++ return 4 / channels;
++ /* Encode setting for Standard Quality */
++ case 1:
++ return 6 / channels;
++ /* Encode setting for Mobile use Quality */
++ case 2:
++ return 12 / channels;
++ default:
++ break;
++ }
++
++ g_assert_not_reached ();
++
++ /* If assertion gets compiled out */
++ return 6 / channels;
++}
++
+ static void
+ gst_rtp_ldac_pay_class_init (GstRtpLdacPayClass * klass)
+ {
+@@ -115,7 +148,7 @@ gst_rtp_ldac_pay_set_caps (GstRTPBasePayload * payload, GstCaps * caps)
+ {
+ GstRtpLdacPay *ldacpay = GST_RTP_LDAC_PAY (payload);
+ GstStructure *structure;
+- gint rate;
++ gint channels, eqmid, rate;
+
+ if (GST_RTP_BASE_PAYLOAD_MTU (ldacpay) < GST_LDAC_MTU_REQUIRED) {
+ GST_ERROR_OBJECT (ldacpay, "Invalid MTU %d, should be >= %d",
+@@ -129,6 +162,18 @@ gst_rtp_ldac_pay_set_caps (GstRTPBasePayload * payload, GstCaps * caps)
+ return FALSE;
+ }
+
++ if (!gst_structure_get_int (structure, "channels", &channels)) {
++ GST_ERROR_OBJECT (ldacpay, "Failed to get audio rate from caps");
++ return FALSE;
++ }
++
++ if (!gst_structure_get_int (structure, "eqmid", &eqmid)) {
++ GST_ERROR_OBJECT (ldacpay, "Failed to get eqmid from caps");
++ return FALSE;
++ }
++
++ ldacpay->frame_count = gst_rtp_ldac_pay_get_num_frames (eqmid, channels);
++
+ gst_rtp_base_payload_set_options (payload, "audio", TRUE, "X-GST-LDAC", rate);
+
+ return gst_rtp_base_payload_set_outcaps (payload, NULL);
+@@ -145,14 +190,26 @@ gst_rtp_ldac_pay_set_caps (GstRTPBasePayload * payload, GstCaps * caps)
+ static GstFlowReturn
+ gst_rtp_ldac_pay_handle_buffer (GstRTPBasePayload * payload, GstBuffer * buffer)
+ {
++ GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
+ GstRtpLdacPay *ldacpay = GST_RTP_LDAC_PAY (payload);
+ GstBuffer *outbuf;
+ GstClockTime outbuf_frame_duration, outbuf_pts;
++ guint8 *payload_data;
+ gsize buf_sz;
+
+ outbuf =
+ gst_rtp_base_payload_allocate_output_buffer (GST_RTP_BASE_PAYLOAD
+- (ldacpay), GST_RTP_HEADER_LENGTH, 0, 0);
++ (ldacpay), GST_RTP_LDAC_PAYLOAD_HEADER_SIZE, 0, 0);
++
++ /* Get payload */
++ gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp);
++
++ /* Write header and copy data into payload */
++ payload_data = gst_rtp_buffer_get_payload (&rtp);
++ /* Upper 3 fragment bits not used, ref A2DP v13, 4.3.4 */
++ payload_data[0] = ldacpay->frame_count & 0x0f;
++
++ gst_rtp_buffer_unmap (&rtp);
+
+ outbuf_pts = GST_BUFFER_PTS (buffer);
+ outbuf_frame_duration = GST_BUFFER_DURATION (buffer);
+diff --git a/gst/rtp/gstrtpldacpay.h b/gst/rtp/gstrtpldacpay.h
+index 0865ce7ade..0134491752 100644
+--- a/gst/rtp/gstrtpldacpay.h
++++ b/gst/rtp/gstrtpldacpay.h
+@@ -42,6 +42,7 @@ typedef struct _GstRtpLdacPayClass GstRtpLdacPayClass;
+
+ struct _GstRtpLdacPay {
+ GstRTPBasePayload base;
++ guint8 frame_count;
+ };
+
+ struct _GstRtpLdacPayClass {
+--
+GitLab
+
diff --git a/media-libs/gst-plugins-good/gst-plugins-good-1.18.6.ebuild b/media-libs/gst-plugins-good/gst-plugins-good-1.18.6.ebuild
new file mode 100644
index 000000000000..e1f8658bcad6
--- /dev/null
+++ b/media-libs/gst-plugins-good/gst-plugins-good-1.18.6.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+GST_ORG_MODULE="gst-plugins-good"
+
+inherit flag-o-matic gstreamer-meson
+
+DESCRIPTION="Basepack of plugins for GStreamer"
+HOMEPAGE="https://gstreamer.freedesktop.org/"
+
+LICENSE="LGPL-2.1+"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="+orc"
+
+RDEPEND="
+ >=media-libs/gst-plugins-base-${PV}:${SLOT}[${MULTILIB_USEDEP}]
+ >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}]
+ >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
+ orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}
+ >=dev-util/gtk-doc-am-1.12
+"
+
+DOCS="AUTHORS ChangeLog NEWS README RELEASE"
+
+multilib_src_configure() {
+ GST_PLUGINS_NOAUTO="bz2"
+ local emesonargs=(
+ -Dbz2=enabled
+
+ # gst-plugins-ximagesrc
+ -Dximagesrc=disabled
+ -Dximagesrc-xshm=disabled
+ -Dximagesrc-xfixes=disabled
+ -Dximagesrc-xdamage=disabled
+
+ # gst-plugins-v4l2
+ -Dv4l2=disabled
+ )
+
+ gstreamer_multilib_src_configure
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ find "${ED}" -name '*.la' -delete || die
+}
diff --git a/media-libs/gst-plugins-good/gst-plugins-good-1.20.1.ebuild b/media-libs/gst-plugins-good/gst-plugins-good-1.20.1.ebuild
new file mode 100644
index 000000000000..de6939296c03
--- /dev/null
+++ b/media-libs/gst-plugins-good/gst-plugins-good-1.20.1.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+GST_ORG_MODULE="gst-plugins-good"
+
+inherit flag-o-matic gstreamer-meson
+
+DESCRIPTION="Basepack of plugins for GStreamer"
+HOMEPAGE="https://gstreamer.freedesktop.org/"
+
+LICENSE="LGPL-2.1+"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="+orc"
+
+RDEPEND="
+ >=media-libs/gst-plugins-base-${PV}:${SLOT}[${MULTILIB_USEDEP}]
+ >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}]
+ >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
+ orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}"
+BDEPEND=""
+
+DOCS=( AUTHORS ChangeLog NEWS README.md RELEASE )
+
+# Fixes backported to 1.20.1, to be removed in 1.20.2+
+PATCHES=(
+)
+
+multilib_src_configure() {
+ GST_PLUGINS_NOAUTO="bz2"
+
+ local emesonargs=(
+ -Dbz2=enabled
+
+ # gst-plugins-ximagesrc
+ -Dximagesrc=disabled
+ -Dximagesrc-xshm=disabled
+ -Dximagesrc-xfixes=disabled
+ -Dximagesrc-xdamage=disabled
+
+ # gst-plugins-v4l2
+ -Dv4l2=disabled
+ )
+
+ gstreamer_multilib_src_configure
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ find "${ED}" -name '*.la' -delete || die
+}