mirror of
git://git.yoctoproject.org/meta-raspberrypi.git
synced 2025-07-19 21:09:03 +02:00
omxplaye: Fix build with userland graphic driver
- Upgrade to latest omxplayer with ffmpeg 4.x - drop backported patches which are not needed - Make vc4 support patch conditionally apply only when vc4graphics is used Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
parent
7c94afee2b
commit
10cee099bc
|
@ -1,233 +0,0 @@
|
||||||
From 3e085f3e5ff4b45672ccb43b4556ddf86f805c1f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Matt Oliver <protogonoi@gmail.com>
|
|
||||||
Date: Wed, 12 Sep 2018 22:47:20 -0700
|
|
||||||
Subject: [PATCH] openssl: Support version 1.1.0
|
|
||||||
|
|
||||||
Fixes #5675
|
|
||||||
|
|
||||||
Upstream-Status: Backport
|
|
||||||
|
|
||||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
||||||
---
|
|
||||||
configure | 3 +-
|
|
||||||
libavformat/tls_openssl.c | 163 +++++++++++++++++++++++---------------
|
|
||||||
2 files changed, 102 insertions(+), 64 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/configure b/configure
|
|
||||||
index 592df195ac..cc5c8e70fc 100755
|
|
||||||
--- a/configure
|
|
||||||
+++ b/configure
|
|
||||||
@@ -5788,7 +5788,8 @@ enabled omx && { check_header OMX_Core.h ||
|
|
||||||
add_cflags -isystem/opt/vc/include/IL ; }
|
|
||||||
check_header OMX_Core.h ; } ||
|
|
||||||
die "ERROR: OpenMAX IL headers not found"; }
|
|
||||||
-enabled openssl && { use_pkg_config openssl openssl/ssl.h SSL_library_init ||
|
|
||||||
+enabled openssl && { use_pkg_config openssl openssl/ssl.h OPENSSL_init_ssl ||
|
|
||||||
+ use_pkg_config openssl openssl/ssl.h SSL_library_init ||
|
|
||||||
check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
|
|
||||||
check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
|
|
||||||
check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
|
|
||||||
diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c
|
|
||||||
index 46eb3e68c7..c551ac74e2 100644
|
|
||||||
--- a/libavformat/tls_openssl.c
|
|
||||||
+++ b/libavformat/tls_openssl.c
|
|
||||||
@@ -43,6 +43,9 @@ typedef struct TLSContext {
|
|
||||||
TLSShared tls_shared;
|
|
||||||
SSL_CTX *ctx;
|
|
||||||
SSL *ssl;
|
|
||||||
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
|
|
||||||
+ BIO_METHOD* url_bio_method;
|
|
||||||
+#endif
|
|
||||||
} TLSContext;
|
|
||||||
|
|
||||||
#if HAVE_THREADS
|
|
||||||
@@ -63,6 +66,87 @@ static unsigned long openssl_thread_id(void)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+static int url_bio_create(BIO *b)
|
|
||||||
+{
|
|
||||||
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
|
|
||||||
+ BIO_set_init(b, 1);
|
|
||||||
+ BIO_set_data(b, NULL);
|
|
||||||
+ BIO_set_flags(b, 0);
|
|
||||||
+#else
|
|
||||||
+ b->init = 1;
|
|
||||||
+ b->ptr = NULL;
|
|
||||||
+ b->flags = 0;
|
|
||||||
+#endif
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int url_bio_destroy(BIO *b)
|
|
||||||
+{
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
|
|
||||||
+#define GET_BIO_DATA(x) BIO_get_data(x);
|
|
||||||
+#else
|
|
||||||
+#define GET_BIO_DATA(x) (x)->ptr;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+static int url_bio_bread(BIO *b, char *buf, int len)
|
|
||||||
+{
|
|
||||||
+ URLContext *h;
|
|
||||||
+ int ret;
|
|
||||||
+ h = GET_BIO_DATA(b);
|
|
||||||
+ ret = ffurl_read(h, buf, len);
|
|
||||||
+ if (ret >= 0)
|
|
||||||
+ return ret;
|
|
||||||
+ BIO_clear_retry_flags(b);
|
|
||||||
+ if (ret == AVERROR_EXIT)
|
|
||||||
+ return 0;
|
|
||||||
+ return -1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int url_bio_bwrite(BIO *b, const char *buf, int len)
|
|
||||||
+{
|
|
||||||
+ URLContext *h;
|
|
||||||
+ int ret;
|
|
||||||
+ h = GET_BIO_DATA(b);
|
|
||||||
+ ret = ffurl_write(h, buf, len);
|
|
||||||
+ if (ret >= 0)
|
|
||||||
+ return ret;
|
|
||||||
+ BIO_clear_retry_flags(b);
|
|
||||||
+ if (ret == AVERROR_EXIT)
|
|
||||||
+ return 0;
|
|
||||||
+ return -1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static long url_bio_ctrl(BIO *b, int cmd, long num, void *ptr)
|
|
||||||
+{
|
|
||||||
+ if (cmd == BIO_CTRL_FLUSH) {
|
|
||||||
+ BIO_clear_retry_flags(b);
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int url_bio_bputs(BIO *b, const char *str)
|
|
||||||
+{
|
|
||||||
+ return url_bio_bwrite(b, str, strlen(str));
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#if OPENSSL_VERSION_NUMBER < 0x1010000fL
|
|
||||||
+static BIO_METHOD url_bio_method = {
|
|
||||||
+ .type = BIO_TYPE_SOURCE_SINK,
|
|
||||||
+ .name = "urlprotocol bio",
|
|
||||||
+ .bwrite = url_bio_bwrite,
|
|
||||||
+ .bread = url_bio_bread,
|
|
||||||
+ .bputs = url_bio_bputs,
|
|
||||||
+ .bgets = NULL,
|
|
||||||
+ .ctrl = url_bio_ctrl,
|
|
||||||
+ .create = url_bio_create,
|
|
||||||
+ .destroy = url_bio_destroy,
|
|
||||||
+};
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
int ff_openssl_init(void)
|
|
||||||
{
|
|
||||||
avpriv_lock_avformat();
|
|
||||||
@@ -128,73 +212,14 @@ static int tls_close(URLContext *h)
|
|
||||||
SSL_CTX_free(c->ctx);
|
|
||||||
if (c->tls_shared.tcp)
|
|
||||||
ffurl_close(c->tls_shared.tcp);
|
|
||||||
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
|
|
||||||
+ if (c->url_bio_method)
|
|
||||||
+ BIO_meth_free(c->url_bio_method);
|
|
||||||
+#endif
|
|
||||||
ff_openssl_deinit();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int url_bio_create(BIO *b)
|
|
||||||
-{
|
|
||||||
- b->init = 1;
|
|
||||||
- b->ptr = NULL;
|
|
||||||
- b->flags = 0;
|
|
||||||
- return 1;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static int url_bio_destroy(BIO *b)
|
|
||||||
-{
|
|
||||||
- return 1;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static int url_bio_bread(BIO *b, char *buf, int len)
|
|
||||||
-{
|
|
||||||
- URLContext *h = b->ptr;
|
|
||||||
- int ret = ffurl_read(h, buf, len);
|
|
||||||
- if (ret >= 0)
|
|
||||||
- return ret;
|
|
||||||
- BIO_clear_retry_flags(b);
|
|
||||||
- if (ret == AVERROR_EXIT)
|
|
||||||
- return 0;
|
|
||||||
- return -1;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static int url_bio_bwrite(BIO *b, const char *buf, int len)
|
|
||||||
-{
|
|
||||||
- URLContext *h = b->ptr;
|
|
||||||
- int ret = ffurl_write(h, buf, len);
|
|
||||||
- if (ret >= 0)
|
|
||||||
- return ret;
|
|
||||||
- BIO_clear_retry_flags(b);
|
|
||||||
- if (ret == AVERROR_EXIT)
|
|
||||||
- return 0;
|
|
||||||
- return -1;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static long url_bio_ctrl(BIO *b, int cmd, long num, void *ptr)
|
|
||||||
-{
|
|
||||||
- if (cmd == BIO_CTRL_FLUSH) {
|
|
||||||
- BIO_clear_retry_flags(b);
|
|
||||||
- return 1;
|
|
||||||
- }
|
|
||||||
- return 0;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static int url_bio_bputs(BIO *b, const char *str)
|
|
||||||
-{
|
|
||||||
- return url_bio_bwrite(b, str, strlen(str));
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static BIO_METHOD url_bio_method = {
|
|
||||||
- .type = BIO_TYPE_SOURCE_SINK,
|
|
||||||
- .name = "urlprotocol bio",
|
|
||||||
- .bwrite = url_bio_bwrite,
|
|
||||||
- .bread = url_bio_bread,
|
|
||||||
- .bputs = url_bio_bputs,
|
|
||||||
- .bgets = NULL,
|
|
||||||
- .ctrl = url_bio_ctrl,
|
|
||||||
- .create = url_bio_create,
|
|
||||||
- .destroy = url_bio_destroy,
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **options)
|
|
||||||
{
|
|
||||||
TLSContext *p = h->priv_data;
|
|
||||||
@@ -240,8 +265,20 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
|
|
||||||
ret = AVERROR(EIO);
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
+#if OPENSSL_VERSION_NUMBER >= 0x1010000fL
|
|
||||||
+ p->url_bio_method = BIO_meth_new(BIO_TYPE_SOURCE_SINK, "urlprotocol bio");
|
|
||||||
+ BIO_meth_set_write(p->url_bio_method, url_bio_bwrite);
|
|
||||||
+ BIO_meth_set_read(p->url_bio_method, url_bio_bread);
|
|
||||||
+ BIO_meth_set_puts(p->url_bio_method, url_bio_bputs);
|
|
||||||
+ BIO_meth_set_ctrl(p->url_bio_method, url_bio_ctrl);
|
|
||||||
+ BIO_meth_set_create(p->url_bio_method, url_bio_create);
|
|
||||||
+ BIO_meth_set_destroy(p->url_bio_method, url_bio_destroy);
|
|
||||||
+ bio = BIO_new(p->url_bio_method);
|
|
||||||
+ BIO_set_data(bio, c->tcp);
|
|
||||||
+#else
|
|
||||||
bio = BIO_new(&url_bio_method);
|
|
||||||
bio->ptr = c->tcp;
|
|
||||||
+#endif
|
|
||||||
SSL_set_bio(p->ssl, bio, bio);
|
|
||||||
if (!c->listen && !c->numerichost)
|
|
||||||
SSL_set_tlsext_host_name(p->ssl, c->host);
|
|
||||||
--
|
|
||||||
2.19.0
|
|
||||||
|
|
|
@ -1,223 +0,0 @@
|
||||||
From db251a3d71020ef15094158ccd69d2c32ddd194d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Khem Raj <raj.khem@gmail.com>
|
|
||||||
Date: Wed, 12 Sep 2018 23:55:42 -0700
|
|
||||||
Subject: [PATCH] rtmpdh: Stop using OpenSSL-provided DH functions to support
|
|
||||||
1.1.0
|
|
||||||
|
|
||||||
DH (struct dh_st) was made private in the 1.1 series, instead
|
|
||||||
DH is now done the same way as with gcrypt / libgmp.
|
|
||||||
|
|
||||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
||||||
---
|
|
||||||
libavformat/rtmpdh.c | 95 +++++++++++++++++++++-----------------------
|
|
||||||
libavformat/rtmpdh.h | 14 +++----
|
|
||||||
2 files changed, 52 insertions(+), 57 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libavformat/rtmpdh.c b/libavformat/rtmpdh.c
|
|
||||||
index 1876fd44f9..8eb088237b 100644
|
|
||||||
--- a/libavformat/rtmpdh.c
|
|
||||||
+++ b/libavformat/rtmpdh.c
|
|
||||||
@@ -54,7 +54,6 @@
|
|
||||||
"F71C35FDAD44CFD2D74F9208BE258FF324943328F67329C0" \
|
|
||||||
"FFFFFFFFFFFFFFFF"
|
|
||||||
|
|
||||||
-#if CONFIG_GMP || CONFIG_GCRYPT
|
|
||||||
#if CONFIG_GMP
|
|
||||||
#define bn_new(bn) \
|
|
||||||
do { \
|
|
||||||
@@ -93,7 +92,6 @@
|
|
||||||
else \
|
|
||||||
ret = 1; \
|
|
||||||
} while (0)
|
|
||||||
-#define bn_modexp(bn, y, q, p) mpz_powm(bn, y, q, p)
|
|
||||||
#define bn_random(bn, num_bits) \
|
|
||||||
do { \
|
|
||||||
int bits = num_bits; \
|
|
||||||
@@ -104,6 +102,11 @@
|
|
||||||
} \
|
|
||||||
mpz_fdiv_r_2exp(bn, bn, num_bits); \
|
|
||||||
} while (0)
|
|
||||||
+static int bn_modexp(FFBigNum bn, FFBigNum y, FFBigNum q, FFBigNum p)
|
|
||||||
+{
|
|
||||||
+ mpz_powm(bn, y, q, p);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
#elif CONFIG_GCRYPT
|
|
||||||
#define bn_new(bn) \
|
|
||||||
do { \
|
|
||||||
@@ -125,13 +128,42 @@
|
|
||||||
#define bn_bn2bin(bn, buf, len) gcry_mpi_print(GCRYMPI_FMT_USG, buf, len, NULL, bn)
|
|
||||||
#define bn_bin2bn(bn, buf, len) gcry_mpi_scan(&bn, GCRYMPI_FMT_USG, buf, len, NULL)
|
|
||||||
#define bn_hex2bn(bn, buf, ret) ret = (gcry_mpi_scan(&bn, GCRYMPI_FMT_HEX, buf, 0, 0) == 0)
|
|
||||||
-#define bn_modexp(bn, y, q, p) gcry_mpi_powm(bn, y, q, p)
|
|
||||||
#define bn_random(bn, num_bits) gcry_mpi_randomize(bn, num_bits, GCRY_WEAK_RANDOM)
|
|
||||||
+static int bn_modexp(FFBigNum bn, FFBigNum y, FFBigNum q, FFBigNum p)
|
|
||||||
+{
|
|
||||||
+ gcry_mpi_powm(bn, y, q, p);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+#elif CONFIG_OPENSSL
|
|
||||||
+#define bn_new(bn) bn = BN_new()
|
|
||||||
+#define bn_free(bn) BN_free(bn)
|
|
||||||
+#define bn_set_word(bn, w) BN_set_word(bn, w)
|
|
||||||
+#define bn_cmp(a, b) BN_cmp(a, b)
|
|
||||||
+#define bn_copy(to, from) BN_copy(to, from)
|
|
||||||
+#define bn_sub_word(bn, w) BN_sub_word(bn, w)
|
|
||||||
+#define bn_cmp_1(bn) BN_cmp(bn, BN_value_one())
|
|
||||||
+#define bn_num_bytes(bn) BN_num_bytes(bn)
|
|
||||||
+#define bn_bn2bin(bn, buf, len) BN_bn2bin(bn, buf)
|
|
||||||
+#define bn_bin2bn(bn, buf, len) bn = BN_bin2bn(buf, len, 0)
|
|
||||||
+#define bn_hex2bn(bn, buf, ret) ret = BN_hex2bn(&bn, buf)
|
|
||||||
+#define bn_random(bn, num_bits) BN_rand(bn, num_bits, 0, 0)
|
|
||||||
+static int bn_modexp(FFBigNum bn, FFBigNum y, FFBigNum q, FFBigNum p)
|
|
||||||
+{
|
|
||||||
+ BN_CTX *ctx = BN_CTX_new();
|
|
||||||
+ if (!ctx)
|
|
||||||
+ return AVERROR(ENOMEM);
|
|
||||||
+ if (!BN_mod_exp(bn, y, q, p, ctx)) {
|
|
||||||
+ BN_CTX_free(ctx);
|
|
||||||
+ return AVERROR(EINVAL);
|
|
||||||
+ }
|
|
||||||
+ BN_CTX_free(ctx);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_BYTES 18000
|
|
||||||
|
|
||||||
-#define dh_new() av_malloc(sizeof(FF_DH))
|
|
||||||
+#define dh_new() av_mallocz(sizeof(FF_DH))
|
|
||||||
|
|
||||||
static FFBigNum dh_generate_key(FF_DH *dh)
|
|
||||||
{
|
|
||||||
@@ -152,7 +184,8 @@ static FFBigNum dh_generate_key(FF_DH *dh)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- bn_modexp(dh->pub_key, dh->g, dh->priv_key, dh->p);
|
|
||||||
+ if (bn_modexp(dh->pub_key, dh->g, dh->priv_key, dh->p) < 0)
|
|
||||||
+ return NULL;
|
|
||||||
|
|
||||||
return dh->pub_key;
|
|
||||||
}
|
|
||||||
@@ -161,12 +194,16 @@ static int dh_compute_key(FF_DH *dh, FFBigNum pub_key_bn,
|
|
||||||
uint32_t secret_key_len, uint8_t *secret_key)
|
|
||||||
{
|
|
||||||
FFBigNum k;
|
|
||||||
+ int ret;
|
|
||||||
|
|
||||||
bn_new(k);
|
|
||||||
if (!k)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
- bn_modexp(k, pub_key_bn, dh->priv_key, dh->p);
|
|
||||||
+ if ((ret = bn_modexp(k, pub_key_bn, dh->priv_key, dh->p)) < 0) {
|
|
||||||
+ bn_free(k);
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
bn_bn2bin(k, secret_key, secret_key_len);
|
|
||||||
bn_free(k);
|
|
||||||
|
|
||||||
@@ -184,48 +221,6 @@ void ff_dh_free(FF_DH *dh)
|
|
||||||
bn_free(dh->priv_key);
|
|
||||||
av_free(dh);
|
|
||||||
}
|
|
||||||
-#elif CONFIG_OPENSSL
|
|
||||||
-#define bn_new(bn) bn = BN_new()
|
|
||||||
-#define bn_free(bn) BN_free(bn)
|
|
||||||
-#define bn_set_word(bn, w) BN_set_word(bn, w)
|
|
||||||
-#define bn_cmp(a, b) BN_cmp(a, b)
|
|
||||||
-#define bn_copy(to, from) BN_copy(to, from)
|
|
||||||
-#define bn_sub_word(bn, w) BN_sub_word(bn, w)
|
|
||||||
-#define bn_cmp_1(bn) BN_cmp(bn, BN_value_one())
|
|
||||||
-#define bn_num_bytes(bn) BN_num_bytes(bn)
|
|
||||||
-#define bn_bn2bin(bn, buf, len) BN_bn2bin(bn, buf)
|
|
||||||
-#define bn_bin2bn(bn, buf, len) bn = BN_bin2bn(buf, len, 0)
|
|
||||||
-#define bn_hex2bn(bn, buf, ret) ret = BN_hex2bn(&bn, buf)
|
|
||||||
-#define bn_modexp(bn, y, q, p) \
|
|
||||||
- do { \
|
|
||||||
- BN_CTX *ctx = BN_CTX_new(); \
|
|
||||||
- if (!ctx) \
|
|
||||||
- return AVERROR(ENOMEM); \
|
|
||||||
- if (!BN_mod_exp(bn, y, q, p, ctx)) { \
|
|
||||||
- BN_CTX_free(ctx); \
|
|
||||||
- return AVERROR(EINVAL); \
|
|
||||||
- } \
|
|
||||||
- BN_CTX_free(ctx); \
|
|
||||||
- } while (0)
|
|
||||||
-
|
|
||||||
-#define dh_new() DH_new()
|
|
||||||
-#define dh_generate_key(dh) DH_generate_key(dh)
|
|
||||||
-
|
|
||||||
-static int dh_compute_key(FF_DH *dh, FFBigNum pub_key_bn,
|
|
||||||
- uint32_t secret_key_len, uint8_t *secret_key)
|
|
||||||
-{
|
|
||||||
- if (secret_key_len < DH_size(dh))
|
|
||||||
- return AVERROR(EINVAL);
|
|
||||||
- return DH_compute_key(secret_key, pub_key_bn, dh);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-void ff_dh_free(FF_DH *dh)
|
|
||||||
-{
|
|
||||||
- if (!dh)
|
|
||||||
- return;
|
|
||||||
- DH_free(dh);
|
|
||||||
-}
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
static int dh_is_valid_public_key(FFBigNum y, FFBigNum p, FFBigNum q)
|
|
||||||
{
|
|
||||||
@@ -254,8 +249,10 @@ static int dh_is_valid_public_key(FFBigNum y, FFBigNum p, FFBigNum q)
|
|
||||||
* random data.
|
|
||||||
*/
|
|
||||||
/* y must fulfill y^q mod p = 1 */
|
|
||||||
- bn_modexp(bn, y, q, p);
|
|
||||||
+ if ((ret = bn_modexp(bn, y, q, p)) < 0)
|
|
||||||
+ goto fail;
|
|
||||||
|
|
||||||
+ ret = AVERROR(EINVAL);
|
|
||||||
if (bn_cmp_1(bn))
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
diff --git a/libavformat/rtmpdh.h b/libavformat/rtmpdh.h
|
|
||||||
index 2b250f595d..188aad7a45 100644
|
|
||||||
--- a/libavformat/rtmpdh.h
|
|
||||||
+++ b/libavformat/rtmpdh.h
|
|
||||||
@@ -26,7 +26,6 @@
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
-#if CONFIG_GMP || CONFIG_GCRYPT
|
|
||||||
#if CONFIG_GMP
|
|
||||||
#include <gmp.h>
|
|
||||||
|
|
||||||
@@ -35,6 +34,12 @@ typedef mpz_ptr FFBigNum;
|
|
||||||
#include <gcrypt.h>
|
|
||||||
|
|
||||||
typedef gcry_mpi_t FFBigNum;
|
|
||||||
+
|
|
||||||
+#elif CONFIG_OPENSSL
|
|
||||||
+#include <openssl/bn.h>
|
|
||||||
+#include <openssl/dh.h>
|
|
||||||
+
|
|
||||||
+typedef BIGNUM *FFBigNum;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct FF_DH {
|
|
||||||
@@ -45,13 +50,6 @@ typedef struct FF_DH {
|
|
||||||
long length;
|
|
||||||
} FF_DH;
|
|
||||||
|
|
||||||
-#elif CONFIG_OPENSSL
|
|
||||||
-#include <openssl/bn.h>
|
|
||||||
-#include <openssl/dh.h>
|
|
||||||
-
|
|
||||||
-typedef BIGNUM *FFBigNum;
|
|
||||||
-typedef DH FF_DH;
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize a Diffie-Hellmann context.
|
|
||||||
--
|
|
||||||
2.19.0
|
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
From 6616f39fec0aa6270a707c8d0eb0f78c4b616eb9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rahul Chaudhry <rahulchaudhry@chromium.org>
|
|
||||||
Date: Wed, 18 Apr 2018 16:40:28 -0700
|
|
||||||
Subject: [PATCH] swresample/arm: avoid conditional branch to PLT in THUMB-2.
|
|
||||||
|
|
||||||
On Wed, Apr 18, 2018 at 3:46 PM, Michael Niedermayer
|
|
||||||
<michael@niedermayer.cc> wrote:
|
|
||||||
> please make sure this works on apple based arm (unless you know it works)
|
|
||||||
> (ive tested qemu linux based)
|
|
||||||
>
|
|
||||||
> Also please add a commit message
|
|
||||||
|
|
||||||
If by 'apple based arm' you mean llvm/clang assembler, then yes, I've verified
|
|
||||||
that the assembly works with armv7a-cros-linux-gnueabi-clang (version 7.0.0).
|
|
||||||
|
|
||||||
Updated patch with new commit message is attached.
|
|
||||||
|
|
||||||
Thanks,
|
|
||||||
Rahul
|
|
||||||
>From 2e3318acf266b519e98b680102a07196d6ddbf93 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rahul Chaudhry <rahulchaudhry@chromium.org>
|
|
||||||
Date: Wed, 18 Apr 2018 16:29:39 -0700
|
|
||||||
Subject: [PATCH] swresample/arm: remove unintentional relocation.
|
|
||||||
|
|
||||||
Branch to global symbol results in reference to PLT, and when compiling
|
|
||||||
for THUMB-2 - in a R_ARM_THM_JUMP19 relocation. Some linkers don't
|
|
||||||
support this relocation (ld.gold), while others can end up truncating
|
|
||||||
the relocation to fit (ld.bfd).
|
|
||||||
|
|
||||||
Convert this branch through PLT into a direct branch that the assembler
|
|
||||||
can resolve locally.
|
|
||||||
|
|
||||||
See https://github.com/android-ndk/ndk/issues/337 for background.
|
|
||||||
|
|
||||||
The current workaround is to disable neon during gstreamer build,
|
|
||||||
which is not optimal and can be reverted after this patch:
|
|
||||||
https://github.com/freedesktop/gstreamer-cerbero/commit/41556c415739fbc3a72c7eaee7e70a565b719b2f
|
|
||||||
---
|
|
||||||
libswresample/arm/audio_convert_neon.S | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libswresample/arm/audio_convert_neon.S b/libswresample/arm/audio_convert_neon.S
|
|
||||||
index 1f88316dde..7729514701 100644
|
|
||||||
--- a/libswresample/arm/audio_convert_neon.S
|
|
||||||
+++ b/libswresample/arm/audio_convert_neon.S
|
|
||||||
@@ -22,6 +22,7 @@
|
|
||||||
#include "libavutil/arm/asm.S"
|
|
||||||
|
|
||||||
function swri_oldapi_conv_flt_to_s16_neon, export=1
|
|
||||||
+_swri_oldapi_conv_flt_to_s16_neon:
|
|
||||||
subs r2, r2, #8
|
|
||||||
vld1.32 {q0}, [r1,:128]!
|
|
||||||
vcvt.s32.f32 q8, q0, #31
|
|
||||||
@@ -66,6 +67,7 @@ function swri_oldapi_conv_flt_to_s16_neon, export=1
|
|
||||||
endfunc
|
|
||||||
|
|
||||||
function swri_oldapi_conv_fltp_to_s16_2ch_neon, export=1
|
|
||||||
+_swri_oldapi_conv_fltp_to_s16_2ch_neon:
|
|
||||||
ldm r1, {r1, r3}
|
|
||||||
subs r2, r2, #8
|
|
||||||
vld1.32 {q0}, [r1,:128]!
|
|
||||||
@@ -133,8 +135,8 @@ function swri_oldapi_conv_fltp_to_s16_nch_neon, export=1
|
|
||||||
cmp r3, #2
|
|
||||||
itt lt
|
|
||||||
ldrlt r1, [r1]
|
|
||||||
- blt X(swri_oldapi_conv_flt_to_s16_neon)
|
|
||||||
- beq X(swri_oldapi_conv_fltp_to_s16_2ch_neon)
|
|
||||||
+ blt _swri_oldapi_conv_flt_to_s16_neon
|
|
||||||
+ beq _swri_oldapi_conv_fltp_to_s16_2ch_neon
|
|
||||||
|
|
||||||
push {r4-r8, lr}
|
|
||||||
cmp r3, #4
|
|
||||||
--
|
|
||||||
2.19.0
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ DEPENDS = "libpcre libav virtual/egl boost freetype dbus openssl libssh libomxil
|
||||||
|
|
||||||
PR = "r4"
|
PR = "r4"
|
||||||
|
|
||||||
SRCREV_default = "7f3faf6cadac913013248de759462bcff92f0102"
|
SRCREV_default = "b4bbef8fac5e8c2ddafa895f98456ba715b39c6b"
|
||||||
|
|
||||||
# omxplayer builds its own copy of ffmpeg from source instead of using the
|
# omxplayer builds its own copy of ffmpeg from source instead of using the
|
||||||
# system's ffmpeg library. This isn't ideal but it's ok for now. We do however
|
# system's ffmpeg library. This isn't ideal but it's ok for now. We do however
|
||||||
|
@ -19,11 +19,11 @@ SRCREV_default = "7f3faf6cadac913013248de759462bcff92f0102"
|
||||||
# fetching the latest commit on a release branch (which is what the checkout job
|
# fetching the latest commit on a release branch (which is what the checkout job
|
||||||
# in Makefile.ffmpeg in the omxplayer source tree does).
|
# in Makefile.ffmpeg in the omxplayer source tree does).
|
||||||
#
|
#
|
||||||
# This SRCREV corresponds to the v3.1.10 release of ffmpeg.
|
# This SRCREV corresponds to the v4.0.3 release of ffmpeg.
|
||||||
SRCREV_ffmpeg = "afa34cb36edca0ff809b7e58474bbce12271ecba"
|
SRCREV_ffmpeg = "fcbd117df3077bad495e99e20f01cf93737bce76"
|
||||||
|
|
||||||
SRC_URI = "git://github.com/popcornmix/omxplayer.git;protocol=git;branch=master \
|
SRC_URI = "git://github.com/popcornmix/omxplayer.git;protocol=git;branch=master \
|
||||||
git://source.ffmpeg.org/ffmpeg;branch=release/3.1;protocol=git;depth=1;name=ffmpeg;destsuffix=git/ffmpeg \
|
git://github.com/FFmpeg/FFmpeg;branch=release/4.0;protocol=git;depth=1;name=ffmpeg;destsuffix=git/ffmpeg \
|
||||||
file://0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch \
|
file://0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch \
|
||||||
file://0003-Remove-strip-step-in-Makefile.patch \
|
file://0003-Remove-strip-step-in-Makefile.patch \
|
||||||
file://0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch \
|
file://0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch \
|
||||||
|
@ -32,12 +32,11 @@ SRC_URI = "git://github.com/popcornmix/omxplayer.git;protocol=git;branch=master
|
||||||
file://0005-Don-t-require-internet-connection-during-build.patch \
|
file://0005-Don-t-require-internet-connection-during-build.patch \
|
||||||
file://0006-Prevent-ffmpeg-configure-compile-race-condition.patch \
|
file://0006-Prevent-ffmpeg-configure-compile-race-condition.patch \
|
||||||
file://0001-Specify-cc-cxx-and-ld-variables-from-environment.patch \
|
file://0001-Specify-cc-cxx-and-ld-variables-from-environment.patch \
|
||||||
file://0001-openssl-Support-version-1.1.0.patch;patchdir=ffmpeg \
|
|
||||||
file://0001-swresample-arm-avoid-conditional-branch-to-PLT-in-TH.patch;patchdir=ffmpeg \
|
|
||||||
file://0001-rtmpdh-Stop-using-OpenSSL-provided-DH-functions-to-s.patch;patchdir=ffmpeg \
|
|
||||||
file://cross-crompile-ffmpeg.patch \
|
file://cross-crompile-ffmpeg.patch \
|
||||||
file://0001-Fix-build-with-vc4-driver.patch \
|
|
||||||
"
|
"
|
||||||
|
|
||||||
|
SRC_URI_append = "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", " file://0001-Fix-build-with-vc4-driver.patch ", "", d)}"
|
||||||
|
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
COMPATIBLE_MACHINE = "^rpi$"
|
COMPATIBLE_MACHINE = "^rpi$"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user