parent
18fee87946
commit
b257d7ef0e
@ -1 +1 @@
|
||||
SOURCES/vlc-3.0.20.tar.xz
|
||||
SOURCES/vlc-3.0.21.tar.xz
|
||||
|
@ -1 +1 @@
|
||||
b834516ab701bf6311980ed5d67b77c834fdebe7 SOURCES/vlc-3.0.20.tar.xz
|
||||
be8557fc2f4be58caebe4a8b1d70f03dc6b95792 SOURCES/vlc-3.0.21.tar.xz
|
||||
|
@ -1,177 +0,0 @@
|
||||
From 1e2918115ca2f5c4ffde00dc02ad89525714f6c2 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Guillem <thomas@gllm.fr>
|
||||
Date: Tue, 5 Dec 2023 09:23:35 +0100
|
||||
Subject: [PATCH 1/5] input: fix incompatible-pointer-types assignment
|
||||
|
||||
Fixes #28441
|
||||
---
|
||||
src/input/input_internal.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/input/input_internal.h b/src/input/input_internal.h
|
||||
index d29731edca1b..ea02f39f5add 100644
|
||||
--- a/src/input/input_internal.h
|
||||
+++ b/src/input/input_internal.h
|
||||
@@ -117,7 +117,7 @@ typedef struct input_thread_private_t
|
||||
|
||||
/* Title infos FIXME multi-input (not easy) ? */
|
||||
int i_title;
|
||||
- const input_title_t **title;
|
||||
+ input_title_t * const *title;
|
||||
|
||||
int i_title_offset;
|
||||
int i_seekpoint_offset;
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From adcf4e66e2ce2c382bb97957c91bfde040f4f3ca Mon Sep 17 00:00:00 2001
|
||||
From: Zhao Zhili <quinkblack@foxmail.com>
|
||||
Date: Thu, 1 Mar 2018 14:25:59 +0800
|
||||
Subject: [PATCH 2/5] yadif: fix variable type
|
||||
|
||||
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
|
||||
(cherry picked from commit 77b86f4452be4dbe0d56a9cd1b66da61b116da60)
|
||||
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
|
||||
---
|
||||
modules/video_filter/deinterlace/yadif.h | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/modules/video_filter/deinterlace/yadif.h b/modules/video_filter/deinterlace/yadif.h
|
||||
index 4bc592ba9307..af16443d0804 100644
|
||||
--- a/modules/video_filter/deinterlace/yadif.h
|
||||
+++ b/modules/video_filter/deinterlace/yadif.h
|
||||
@@ -140,10 +140,10 @@ static void yadif_filter_line_c(uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8
|
||||
}
|
||||
|
||||
static void yadif_filter_line_c_16bit(uint8_t *dst8, uint8_t *prev8, uint8_t *cur8, uint8_t *next8, int w, int prefs, int mrefs, int parity, int mode) {
|
||||
- uint8_t *dst = (uint8_t *)dst8;
|
||||
- uint8_t *prev = (uint8_t *)prev8;
|
||||
- uint8_t *cur = (uint8_t *)cur8;
|
||||
- uint8_t *next = (uint8_t *)next8;
|
||||
+ uint16_t *dst = (uint16_t *)dst8;
|
||||
+ uint16_t *prev = (uint16_t *)prev8;
|
||||
+ uint16_t *cur = (uint16_t *)cur8;
|
||||
+ uint16_t *next = (uint16_t *)next8;
|
||||
int x;
|
||||
uint16_t *prev2= parity ? prev : cur ;
|
||||
uint16_t *next2= parity ? cur : next;
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 45198e5328ff2b2f4eb2fb76add0789fec26270f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
|
||||
Date: Sun, 3 Mar 2019 09:59:10 +0200
|
||||
Subject: [PATCH 3/5] swscale: avoid invalid pointer conversion
|
||||
|
||||
(cherry picked from commit ab00e6c59d42e05ab08893091783d8b5febc0058)
|
||||
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
|
||||
---
|
||||
modules/video_chroma/swscale.c | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/modules/video_chroma/swscale.c b/modules/video_chroma/swscale.c
|
||||
index 8993d11ec5dd..11897527355c 100644
|
||||
--- a/modules/video_chroma/swscale.c
|
||||
+++ b/modules/video_chroma/swscale.c
|
||||
@@ -588,8 +588,9 @@ static void Convert( filter_t *p_filter, struct SwsContext *ctx,
|
||||
{
|
||||
filter_sys_t *p_sys = p_filter->p_sys;
|
||||
uint8_t palette[AVPALETTE_SIZE];
|
||||
- uint8_t *src[4]; int src_stride[4];
|
||||
- uint8_t *dst[4]; int dst_stride[4];
|
||||
+ uint8_t *src[4], *dst[4];
|
||||
+ const uint8_t *csrc[4];
|
||||
+ int src_stride[4], dst_stride[4];
|
||||
|
||||
GetPixels( src, src_stride, p_sys->desc_in, &p_filter->fmt_in.video,
|
||||
p_src, i_plane_count, b_swap_uvi );
|
||||
@@ -606,11 +607,14 @@ static void Convert( filter_t *p_filter, struct SwsContext *ctx,
|
||||
GetPixels( dst, dst_stride, p_sys->desc_out, &p_filter->fmt_out.video,
|
||||
p_dst, i_plane_count, b_swap_uvo );
|
||||
|
||||
+ for (size_t i = 0; i < ARRAY_SIZE(src); i++)
|
||||
+ csrc[i] = src[i];
|
||||
+
|
||||
#if LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0)
|
||||
- sws_scale( ctx, src, src_stride, 0, i_height,
|
||||
+ sws_scale( ctx, csrc, src_stride, 0, i_height,
|
||||
dst, dst_stride );
|
||||
#else
|
||||
- sws_scale_ordered( ctx, src, src_stride, 0, i_height,
|
||||
+ sws_scale_ordered( ctx, csrc, src_stride, 0, i_height,
|
||||
dst, dst_stride );
|
||||
#endif
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 4431076ad4a21fdcabd3f7ef1d61c45891689b0c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
|
||||
Date: Sun, 3 Mar 2019 17:20:04 +0200
|
||||
Subject: [PATCH 4/5] dynamicoverlay: fix variable shadowing
|
||||
|
||||
(cherry picked from commit d42e05d6b2c061ae352c131d5aebf8c8d8aa6d35)
|
||||
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
|
||||
---
|
||||
modules/spu/dynamicoverlay/dynamicoverlay_commands.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
|
||||
index a93462925e8a..a85f9aafb0b9 100644
|
||||
--- a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
|
||||
+++ b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
|
||||
@@ -899,12 +899,11 @@ static const commanddesc_static_t p_commands[] =
|
||||
void RegisterCommand( filter_t *p_filter )
|
||||
{
|
||||
filter_sys_t *p_sys = (filter_sys_t*) p_filter->p_sys;
|
||||
- size_t i_index = 0;
|
||||
|
||||
p_sys->i_commands = ARRAY_SIZE(p_commands);
|
||||
p_sys->pp_commands = (commanddesc_t **) calloc( p_sys->i_commands, sizeof(commanddesc_t*) );
|
||||
if( !p_sys->pp_commands ) return;
|
||||
- for( i_index = 0; i_index < p_sys->i_commands; i_index ++ )
|
||||
+ for( size_t i_index = 0; i_index < p_sys->i_commands; i_index ++ )
|
||||
{
|
||||
p_sys->pp_commands[i_index] = (commanddesc_t *) malloc( sizeof(commanddesc_t) );
|
||||
if( !p_sys->pp_commands[i_index] ) return;
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From fda14fc7c013eb75291df10cc8b88336c51328ad Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
|
||||
Date: Mon, 26 Feb 2018 20:43:03 +0200
|
||||
Subject: [PATCH 5/5] dynamicoverlay: fix memory corruption
|
||||
|
||||
Font alpha is 8-bits, not 32-bits.
|
||||
|
||||
(cherry picked from commit 6f14081af7325d334a53126c4eea52bc30fc08a0)
|
||||
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
|
||||
---
|
||||
modules/spu/dynamicoverlay/dynamicoverlay_commands.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
|
||||
index a85f9aafb0b9..7a71c6f2373a 100644
|
||||
--- a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
|
||||
+++ b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
|
||||
@@ -234,8 +234,12 @@ static int parser_SetTextAlpha( char *psz_command, char *psz_end,
|
||||
skip_space( &psz_command );
|
||||
if( isdigit( (unsigned char)*psz_command ) )
|
||||
{
|
||||
- if( parse_digit( &psz_command, &p_params->fontstyle.i_font_alpha ) == VLC_EGENERIC )
|
||||
+ int32_t value;
|
||||
+
|
||||
+ if( parse_digit( &psz_command, &value ) == VLC_EGENERIC )
|
||||
return VLC_EGENERIC;
|
||||
+
|
||||
+ p_params->fontstyle.i_font_alpha = value;
|
||||
}
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,375 +0,0 @@
|
||||
From 770789f265761fc7ab2de69ca105fec4ad93d9e2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
|
||||
Date: Mon, 26 Feb 2018 20:36:29 +0200
|
||||
Subject: [PATCH 1/9] chromaprint: missing cast
|
||||
|
||||
(cherry picked from commit 7bd5bab3e43ae187f7219db61ed85d06d2ba0547)
|
||||
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
---
|
||||
modules/stream_out/chromaprint.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules/stream_out/chromaprint.c b/modules/stream_out/chromaprint.c
|
||||
index 80ec31ba2590..c76cbda3c2bb 100644
|
||||
--- a/modules/stream_out/chromaprint.c
|
||||
+++ b/modules/stream_out/chromaprint.c
|
||||
@@ -231,7 +231,7 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_sys_t *id,
|
||||
if ( !p_sys->b_finished && id->i_samples > 0 && p_buf->i_buffer )
|
||||
{
|
||||
if(! chromaprint_feed( p_sys->p_chromaprint_ctx,
|
||||
- p_buf->p_buffer,
|
||||
+ (int16_t *)p_buf->p_buffer,
|
||||
p_buf->i_buffer / BYTESPERSAMPLE ) )
|
||||
msg_Warn( p_stream, "feed error" );
|
||||
id->i_samples -= i_samples;
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 6179d6b843f2a93af6a3d51c4244766e3eba9e77 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
|
||||
Date: Sun, 14 Apr 2019 09:41:38 +0300
|
||||
Subject: [PATCH 2/9] win32: wrap {g,s}etsockopt()
|
||||
|
||||
char * can alias anything, and Winsock relies on that. Unfortunately,
|
||||
the compiler still issues warnings. This works around that.
|
||||
|
||||
(cherry picked from commit 36715d9b79f34824e126c2bc3aee2f1c1c16af46)
|
||||
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
---
|
||||
include/vlc_network.h | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/include/vlc_network.h b/include/vlc_network.h
|
||||
index 010454a01c09..e39ffd0bacaa 100644
|
||||
--- a/include/vlc_network.h
|
||||
+++ b/include/vlc_network.h
|
||||
@@ -183,6 +183,22 @@ VLC_API int vlc_close(int);
|
||||
|
||||
/** @} */
|
||||
|
||||
+#ifdef _WIN32
|
||||
+static inline int vlc_getsockopt(int s, int level, int name,
|
||||
+ void *val, socklen_t *len)
|
||||
+{
|
||||
+ return getsockopt(s, level, name, (char *)val, len);
|
||||
+}
|
||||
+#define getsockopt vlc_getsockopt
|
||||
+
|
||||
+static inline int vlc_setsockopt(int s, int level, int name,
|
||||
+ const void *val, socklen_t len)
|
||||
+{
|
||||
+ return setsockopt(s, level, name, (const char *)val, len);
|
||||
+}
|
||||
+#define setsockopt vlc_setsockopt
|
||||
+#endif
|
||||
+
|
||||
/* Portable network names/addresses resolution layer */
|
||||
|
||||
#define NI_MAXNUMERICHOST 64
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 3391108f9709f0d77d9297c94371cf9cd30f2cbe Mon Sep 17 00:00:00 2001
|
||||
From: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
Date: Thu, 7 Dec 2023 15:43:04 +0100
|
||||
Subject: [PATCH 3/9] netsync: use char for temporary local buffer
|
||||
|
||||
On Windows recvfrom/revc/sendto expects a char*.
|
||||
---
|
||||
modules/control/netsync.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/modules/control/netsync.c b/modules/control/netsync.c
|
||||
index 2a6a1a6a2bf8..8c91034d7cf2 100644
|
||||
--- a/modules/control/netsync.c
|
||||
+++ b/modules/control/netsync.c
|
||||
@@ -181,7 +181,7 @@ static void *Master(void *handle)
|
||||
intf_sys_t *sys = intf->p_sys;
|
||||
for (;;) {
|
||||
struct pollfd ufd = { .fd = sys->fd, .events = POLLIN, };
|
||||
- uint64_t data[2];
|
||||
+ char data[16];
|
||||
|
||||
if (poll(&ufd, 1, -1) < 0)
|
||||
continue;
|
||||
@@ -198,8 +198,8 @@ static void *Master(void *handle)
|
||||
if (master_system < 0)
|
||||
continue;
|
||||
|
||||
- data[0] = hton64(mdate());
|
||||
- data[1] = hton64(master_system);
|
||||
+ SetQWBE(&data[0], mdate());
|
||||
+ SetQWBE(&data[8], master_system);
|
||||
|
||||
/* Reply to the sender */
|
||||
sendto(sys->fd, data, 16, 0,
|
||||
@@ -224,7 +224,7 @@ static void *Slave(void *handle)
|
||||
|
||||
for (;;) {
|
||||
struct pollfd ufd = { .fd = sys->fd, .events = POLLIN, };
|
||||
- uint64_t data[2];
|
||||
+ char data[16];
|
||||
|
||||
vlc_tick_t system = GetPcrSystem(sys->input);
|
||||
if (system < 0)
|
||||
@@ -233,7 +233,7 @@ static void *Slave(void *handle)
|
||||
/* Send clock request to the master */
|
||||
const vlc_tick_t send_date = mdate();
|
||||
|
||||
- data[0] = hton64(system);
|
||||
+ SetQWBE(&data[0], system);
|
||||
send(sys->fd, data, 8, 0);
|
||||
|
||||
/* Don't block */
|
||||
@@ -244,8 +244,8 @@ static void *Slave(void *handle)
|
||||
if (recv(sys->fd, data, 16, 0) < 16)
|
||||
goto wait;
|
||||
|
||||
- const vlc_tick_t master_date = ntoh64(data[0]);
|
||||
- const vlc_tick_t master_system = ntoh64(data[1]);
|
||||
+ const vlc_tick_t master_date = GetQWBE(&data[0]);
|
||||
+ const vlc_tick_t master_system = GetQWBE(&data[8]);
|
||||
const vlc_tick_t diff_date = receive_date -
|
||||
((receive_date - send_date) / 2 + master_date);
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 27e584d7b9add8dbbb82b7227228e1ec1e25a089 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
Date: Tue, 3 Jan 2023 13:23:00 +0100
|
||||
Subject: [PATCH 4/9] access/dtv: move the lfind() Windows hack in the module
|
||||
|
||||
So that we don't have to include search.h each time vlc_fixups.h is used.
|
||||
|
||||
The Win32 prototype of lfind() expects an unsigned* for 'nelp', not a size_t*.
|
||||
|
||||
(cherry picked from commit 7c43bcba27b6fe256456d93a9d32e10648f08da8)
|
||||
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
---
|
||||
include/vlc_fixups.h | 3 +++
|
||||
modules/access/dtv/access.c | 5 +++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h
|
||||
index 37f788933779..861cb4cc5063 100644
|
||||
--- a/include/vlc_fixups.h
|
||||
+++ b/include/vlc_fixups.h
|
||||
@@ -501,8 +501,11 @@ void *tsearch( const void *key, void **rootp, int(*cmp)(const void *, const void
|
||||
void *tfind( const void *key, const void **rootp, int(*cmp)(const void *, const void *) );
|
||||
void *tdelete( const void *key, void **rootp, int(*cmp)(const void *, const void *) );
|
||||
void twalk( const void *root, void(*action)(const void *nodep, VISIT which, int depth) );
|
||||
+#ifndef _WIN32
|
||||
+/* the Win32 prototype of lfind() expects an unsigned* for 'nmemb' */
|
||||
void *lfind( const void *key, const void *base, size_t *nmemb,
|
||||
size_t size, int(*cmp)(const void *, const void *) );
|
||||
+#endif
|
||||
#endif /* HAVE_SEARCH_H */
|
||||
#ifndef HAVE_TDESTROY
|
||||
void tdestroy( void *root, void (*free_node)(void *nodep) );
|
||||
diff --git a/modules/access/dtv/access.c b/modules/access/dtv/access.c
|
||||
index d9756c7b4885..c6ca5005883c 100644
|
||||
--- a/modules/access/dtv/access.c
|
||||
+++ b/modules/access/dtv/access.c
|
||||
@@ -32,6 +32,11 @@
|
||||
#ifdef HAVE_SEARCH_H
|
||||
#include <search.h>
|
||||
#endif
|
||||
+#if defined(_WIN32)
|
||||
+/* the Win32 prototype of lfind() expects an unsigned* for 'nelp' */
|
||||
+# define lfind(a,b,c,d,e) \
|
||||
+ lfind((a),(b), &(unsigned){ (*(c) > UINT_MAX) ? UINT_MAX : *(c) }, (d),(e))
|
||||
+#endif
|
||||
|
||||
#include "dtv/dtv.h"
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 5a9ca37a95b6e85e6beaaefba9aa4a886a45411c Mon Sep 17 00:00:00 2001
|
||||
From: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
Date: Mon, 15 Jul 2019 12:41:29 +0200
|
||||
Subject: [PATCH 5/9] vlc_common: fix swab() calls on win32 that don't use
|
||||
const on source pointer
|
||||
|
||||
(cherry picked from commit a9e0b1124e19225b903a2926951781e84002c410)
|
||||
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
---
|
||||
include/vlc_common.h | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/include/vlc_common.h b/include/vlc_common.h
|
||||
index 8090b277150d..089878581763 100644
|
||||
--- a/include/vlc_common.h
|
||||
+++ b/include/vlc_common.h
|
||||
@@ -947,6 +947,11 @@ static inline void SetQWLE (void *p, uint64_t qw)
|
||||
# define O_NONBLOCK 0
|
||||
# endif
|
||||
|
||||
+/* the mingw32 swab() and win32 _swab() prototypes expect a char* instead of a
|
||||
+ const void* */
|
||||
+# define swab(a,b,c) swab((char*) (a), (char*) (b), (c))
|
||||
+
|
||||
+
|
||||
# include <tchar.h>
|
||||
#endif /* _WIN32 */
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From b758e19479a80604e3feb470b197e4a13a203a85 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
Date: Wed, 10 Jul 2019 08:23:45 +0200
|
||||
Subject: [PATCH 6/9] avcodec: encoder: fix MPEG4 matrix passed as const
|
||||
|
||||
lavc expects a pointer that it will free in avcodec_free_context().
|
||||
|
||||
(cherry picked from commit d86c4c87aa78130a4fd00294e25df865d0e2b327)
|
||||
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
---
|
||||
modules/codec/avcodec/encoder.c | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
|
||||
index 2b1c3604713d..4919ccf0e0e4 100644
|
||||
--- a/modules/codec/avcodec/encoder.c
|
||||
+++ b/modules/codec/avcodec/encoder.c
|
||||
@@ -588,8 +588,14 @@ int InitVideoEnc( vlc_object_t *p_this )
|
||||
|
||||
if ( p_sys->b_mpeg4_matrix )
|
||||
{
|
||||
- p_context->intra_matrix = mpeg4_default_intra_matrix;
|
||||
- p_context->inter_matrix = mpeg4_default_non_intra_matrix;
|
||||
+ p_context->intra_matrix = av_malloc( sizeof(mpeg4_default_intra_matrix) );
|
||||
+ if ( p_context->intra_matrix )
|
||||
+ memcpy( p_context->intra_matrix, mpeg4_default_intra_matrix,
|
||||
+ sizeof(mpeg4_default_intra_matrix));
|
||||
+ p_context->inter_matrix = av_malloc( sizeof(mpeg4_default_non_intra_matrix) );
|
||||
+ if ( p_context->inter_matrix )
|
||||
+ memcpy( p_context->inter_matrix, mpeg4_default_non_intra_matrix,
|
||||
+ sizeof(mpeg4_default_non_intra_matrix));
|
||||
}
|
||||
|
||||
if ( p_sys->b_pre_me )
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 55be3ce60795a09d13861c5637c1fe7aebc5ce8b Mon Sep 17 00:00:00 2001
|
||||
From: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
Date: Thu, 7 Dec 2023 14:18:22 +0100
|
||||
Subject: [PATCH 7/9] smb: fix potential string to wide string copy
|
||||
|
||||
The type of net_resource depends on the UNICODE define.
|
||||
---
|
||||
modules/access/smb.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/access/smb.c b/modules/access/smb.c
|
||||
index 5fe56f0c9dfe..6add2a3e6278 100644
|
||||
--- a/modules/access/smb.c
|
||||
+++ b/modules/access/smb.c
|
||||
@@ -524,7 +524,7 @@ static void Win32AddConnection( stream_t *p_access, const char *psz_server,
|
||||
const char *psz_pwd, const char *psz_domain )
|
||||
{
|
||||
char psz_remote[MAX_PATH];
|
||||
- NETRESOURCE net_resource;
|
||||
+ NETRESOURCEA net_resource;
|
||||
DWORD i_result;
|
||||
VLC_UNUSED( psz_domain );
|
||||
|
||||
@@ -544,7 +544,7 @@ static void Win32AddConnection( stream_t *p_access, const char *psz_server,
|
||||
|
||||
net_resource.lpRemoteName = psz_remote;
|
||||
|
||||
- i_result = WNetAddConnection2( &net_resource, psz_pwd, psz_user, 0 );
|
||||
+ i_result = WNetAddConnection2A( &net_resource, psz_pwd, psz_user, 0 );
|
||||
|
||||
if( i_result != NO_ERROR )
|
||||
{
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 5ae924bf212dce64a6424561d92426dbcc2cf3a0 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
Date: Wed, 6 Dec 2023 14:45:46 +0100
|
||||
Subject: [PATCH 8/9] dxva2: add missing mask initializers
|
||||
|
||||
---
|
||||
modules/codec/avcodec/dxva2.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
|
||||
index 18b872fe0fe3..2e6809a05410 100644
|
||||
--- a/modules/codec/avcodec/dxva2.c
|
||||
+++ b/modules/codec/avcodec/dxva2.c
|
||||
@@ -84,12 +84,12 @@ DEFINE_GUID(DXVA_Intel_H264_NoFGT_ClearVideo, 0x604F8E68, 0x4951, 0x4c54,
|
||||
|
||||
/* XXX Preferred format must come first */
|
||||
static const d3d9_format_t d3d_formats[] = {
|
||||
- { "YV12", MAKEFOURCC('Y','V','1','2'), VLC_CODEC_YV12 },
|
||||
- { "NV12", MAKEFOURCC('N','V','1','2'), VLC_CODEC_NV12 },
|
||||
- //{ "IMC3", MAKEFOURCC('I','M','C','3'), VLC_CODEC_YV12 },
|
||||
- { "P010", MAKEFOURCC('P','0','1','0'), VLC_CODEC_P010 },
|
||||
+ { "YV12", MAKEFOURCC('Y','V','1','2'), VLC_CODEC_YV12, 0,0,0 },
|
||||
+ { "NV12", MAKEFOURCC('N','V','1','2'), VLC_CODEC_NV12, 0,0,0 },
|
||||
+ //{ "IMC3", MAKEFOURCC('I','M','C','3'), VLC_CODEC_YV12, 0,0,0 },
|
||||
+ { "P010", MAKEFOURCC('P','0','1','0'), VLC_CODEC_P010, 0,0,0 },
|
||||
|
||||
- { NULL, 0, 0 }
|
||||
+ { NULL, 0, 0, 0,0,0 }
|
||||
};
|
||||
|
||||
static const d3d9_format_t *D3dFindFormat(D3DFORMAT format)
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 08c7a66780740679ba1b0abe9e30e73afc6bc271 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
Date: Wed, 6 Dec 2023 07:48:29 +0100
|
||||
Subject: [PATCH 9/9] win32/modules: use cast with GetProcAddress function
|
||||
pointers
|
||||
|
||||
---
|
||||
src/text/url.c | 3 ++-
|
||||
src/win32/plugin.c | 3 ++-
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/text/url.c b/src/text/url.c
|
||||
index b962eb31f849..2eb4b8d10817 100644
|
||||
--- a/src/text/url.c
|
||||
+++ b/src/text/url.c
|
||||
@@ -892,7 +892,8 @@ static int IdnToAscii(DWORD flags, LPCWSTR str, int len, LPWSTR buf, int size)
|
||||
int (WINAPI *IdnToAsciiReal)(DWORD, LPCWSTR, int, LPWSTR, int);
|
||||
int ret = 0;
|
||||
|
||||
- IdnToAsciiReal = GetProcAddress(h, "IdnToAscii");
|
||||
+ IdnToAsciiReal = (int (WINAPI *)(DWORD, LPCWSTR, int, LPWSTR, int))
|
||||
+ GetProcAddress(h, "IdnToAscii");
|
||||
if (IdnToAsciiReal != NULL)
|
||||
ret = IdnToAsciiReal(flags, str, len, buf, size);
|
||||
else
|
||||
diff --git a/src/win32/plugin.c b/src/win32/plugin.c
|
||||
index 1a65521fca75..b5c336eb99ca 100644
|
||||
--- a/src/win32/plugin.c
|
||||
+++ b/src/win32/plugin.c
|
||||
@@ -45,7 +45,8 @@ static BOOL WINAPI SetThreadErrorModeFallback(DWORD mode, DWORD *oldmode)
|
||||
|
||||
BOOL (WINAPI *SetThreadErrorModeReal)(DWORD, DWORD *);
|
||||
|
||||
- SetThreadErrorModeReal = GetProcAddress(h, "SetThreadErrorMode");
|
||||
+ SetThreadErrorModeReal = (BOOL (WINAPI *)(DWORD, DWORD *))
|
||||
+ GetProcAddress(h, "SetThreadErrorMode");
|
||||
if (SetThreadErrorModeReal != NULL)
|
||||
return SetThreadErrorModeReal(mode, oldmode);
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
@ -0,0 +1,853 @@
|
||||
From a4645b577c71e58db09ee6888f270fb3d0cfd61e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
|
||||
Date: Sat, 5 May 2018 15:28:15 +0300
|
||||
Subject: [PATCH 01/11] avcodec: avoid signedness mismatch warning
|
||||
|
||||
Bitmask should be unsigned, but ffmpeg seems confused with itself.
|
||||
|
||||
(cherry picked from commit 8544233e7fde2965435e32a445494898440ecc30)
|
||||
---
|
||||
modules/codec/avcodec/audio.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
|
||||
index 50a76c7a18e1..e5af0ca5f2f8 100644
|
||||
--- a/modules/codec/avcodec/audio.c
|
||||
+++ b/modules/codec/avcodec/audio.c
|
||||
@@ -593,9 +593,9 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
|
||||
uint32_t pi_order_src[i_order_max];
|
||||
|
||||
int i_channels_src = 0;
|
||||
- int64_t channel_layout =
|
||||
+ uint64_t channel_layout =
|
||||
p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
|
||||
- av_get_default_channel_layout( p_sys->p_context->channels );
|
||||
+ (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
|
||||
|
||||
if( channel_layout )
|
||||
{
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 2d51293c3f8e0bfa2b73112acf4dacb62b40ac57 Mon Sep 17 00:00:00 2001
|
||||
From: Ilkka Ollakka <ileoo@videolan.org>
|
||||
Date: Wed, 5 Jul 2023 12:51:34 +0300
|
||||
Subject: [PATCH 02/11] avcodec: use p_dec->fmt_out instead of context channels
|
||||
on audio channel-count
|
||||
|
||||
reduces the need of ifdefs when adding ch_layout support
|
||||
|
||||
(cherry picked from commit bddf5ba19111d1cc4463d9876c4bc4ba75f82d7f)
|
||||
---
|
||||
modules/codec/avcodec/audio.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
|
||||
index e5af0ca5f2f8..26166c084e51 100644
|
||||
--- a/modules/codec/avcodec/audio.c
|
||||
+++ b/modules/codec/avcodec/audio.c
|
||||
@@ -484,15 +484,15 @@ static block_t * ConvertAVFrame( decoder_t *p_dec, AVFrame *frame )
|
||||
/* Interleave audio if required */
|
||||
if( av_sample_fmt_is_planar( ctx->sample_fmt ) )
|
||||
{
|
||||
- p_block = block_Alloc(frame->linesize[0] * ctx->channels);
|
||||
+ p_block = block_Alloc(frame->linesize[0] * p_dec->fmt_out.audio.i_channels );
|
||||
if ( likely(p_block) )
|
||||
{
|
||||
- const void *planes[ctx->channels];
|
||||
- for (int i = 0; i < ctx->channels; i++)
|
||||
+ const void *planes[p_dec->fmt_out.audio.i_channels];
|
||||
+ for (int i = 0; i < p_dec->fmt_out.audio.i_channels; i++)
|
||||
planes[i] = frame->extended_data[i];
|
||||
|
||||
aout_Interleave(p_block->p_buffer, planes, frame->nb_samples,
|
||||
- ctx->channels, p_dec->fmt_out.audio.i_format);
|
||||
+ p_dec->fmt_out.audio.i_channels, p_dec->fmt_out.audio.i_format);
|
||||
p_block->i_nb_samples = frame->nb_samples;
|
||||
}
|
||||
av_frame_free(&frame);
|
||||
@@ -511,7 +511,7 @@ static block_t * ConvertAVFrame( decoder_t *p_dec, AVFrame *frame )
|
||||
{
|
||||
aout_ChannelExtract( p_buffer->p_buffer,
|
||||
p_dec->fmt_out.audio.i_channels,
|
||||
- p_block->p_buffer, ctx->channels,
|
||||
+ p_block->p_buffer, p_dec->fmt_out.audio.i_channels,
|
||||
p_block->i_nb_samples, p_sys->pi_extraction,
|
||||
p_dec->fmt_out.audio.i_bitspersample );
|
||||
p_buffer->i_nb_samples = p_block->i_nb_samples;
|
||||
@@ -600,13 +600,13 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
|
||||
if( channel_layout )
|
||||
{
|
||||
for( unsigned i = 0; i < i_order_max
|
||||
- && i_channels_src < p_sys->p_context->channels; i++ )
|
||||
+ && i_channels_src < p_dec->fmt_out.audio.i_channels; i++ )
|
||||
{
|
||||
if( channel_layout & pi_channels_map[i][0] )
|
||||
pi_order_src[i_channels_src++] = pi_channels_map[i][1];
|
||||
}
|
||||
|
||||
- if( i_channels_src != p_sys->p_context->channels && b_trust )
|
||||
+ if( i_channels_src != p_dec->fmt_out.audio.i_channels && b_trust )
|
||||
msg_Err( p_dec, "Channel layout not understood" );
|
||||
|
||||
/* Detect special dual mono case */
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 1e5bd8a6f5fbf2c07071cefb1b24aceff058760d Mon Sep 17 00:00:00 2001
|
||||
From: Ilkka Ollakka <ileoo@videolan.org>
|
||||
Date: Wed, 5 Jul 2023 13:33:09 +0300
|
||||
Subject: [PATCH 03/11] avcodec: audio decoder to use ch_layout
|
||||
|
||||
(cherry picked from commit 496f0f2a659c1339d1e37330d446e9b6ce96e76b)
|
||||
---
|
||||
modules/codec/avcodec/audio.c | 42 ++++++++++++++++++++++++++++-------
|
||||
1 file changed, 34 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
|
||||
index 26166c084e51..ad8a40ab4ed6 100644
|
||||
--- a/modules/codec/avcodec/audio.c
|
||||
+++ b/modules/codec/avcodec/audio.c
|
||||
@@ -139,7 +139,11 @@ static int OpenAudioCodec( decoder_t *p_dec )
|
||||
}
|
||||
|
||||
ctx->sample_rate = p_dec->fmt_in.audio.i_rate;
|
||||
+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
+ av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels );
|
||||
+#else
|
||||
ctx->channels = p_dec->fmt_in.audio.i_channels;
|
||||
+#endif
|
||||
ctx->block_align = p_dec->fmt_in.audio.i_blockalign;
|
||||
ctx->bit_rate = p_dec->fmt_in.i_bitrate;
|
||||
ctx->bits_per_coded_sample = p_dec->fmt_in.audio.i_bitspersample;
|
||||
@@ -395,12 +399,17 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block )
|
||||
ret = avcodec_receive_frame( ctx, frame );
|
||||
if( ret == 0 )
|
||||
{
|
||||
+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
+ int channels = frame->ch_layout.nb_channels;
|
||||
+#else
|
||||
+ int channels = ctx->channels;
|
||||
+#endif
|
||||
/* checks and init from first decoded frame */
|
||||
- if( ctx->channels <= 0 || ctx->channels > INPUT_CHAN_MAX
|
||||
+ if( channels <= 0 || channels > INPUT_CHAN_MAX
|
||||
|| ctx->sample_rate <= 0 )
|
||||
{
|
||||
msg_Warn( p_dec, "invalid audio properties channels count %d, sample rate %d",
|
||||
- ctx->channels, ctx->sample_rate );
|
||||
+ channels, ctx->sample_rate );
|
||||
goto drop;
|
||||
}
|
||||
else if( p_dec->fmt_out.audio.i_rate != (unsigned int)ctx->sample_rate )
|
||||
@@ -580,6 +589,16 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
|
||||
p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate;
|
||||
|
||||
/* */
|
||||
+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
+ if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels &&
|
||||
+ p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask )
|
||||
+ return;
|
||||
+ if( b_trust )
|
||||
+ {
|
||||
+ p_sys->i_previous_channels = p_sys->p_context->ch_layout.nb_channels;
|
||||
+ p_sys->i_previous_layout = p_sys->p_context->ch_layout.u.mask;
|
||||
+ }
|
||||
+#else
|
||||
if( p_sys->i_previous_channels == p_sys->p_context->channels &&
|
||||
p_sys->i_previous_layout == p_sys->p_context->channel_layout )
|
||||
return;
|
||||
@@ -588,25 +607,32 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
|
||||
p_sys->i_previous_channels = p_sys->p_context->channels;
|
||||
p_sys->i_previous_layout = p_sys->p_context->channel_layout;
|
||||
}
|
||||
+#endif
|
||||
|
||||
const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map);
|
||||
uint32_t pi_order_src[i_order_max];
|
||||
|
||||
int i_channels_src = 0;
|
||||
- uint64_t channel_layout =
|
||||
+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
+ uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
|
||||
+ int channel_count = p_sys->p_context->ch_layout.nb_channels;
|
||||
+#else
|
||||
+ uint64_t channel_layout_mask =
|
||||
p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
|
||||
(uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
|
||||
+ int channel_count = p_sys->p_context->channels;
|
||||
+#endif
|
||||
|
||||
- if( channel_layout )
|
||||
+ if( channel_layout_mask )
|
||||
{
|
||||
for( unsigned i = 0; i < i_order_max
|
||||
- && i_channels_src < p_dec->fmt_out.audio.i_channels; i++ )
|
||||
+ && i_channels_src < channel_count; i++ )
|
||||
{
|
||||
- if( channel_layout & pi_channels_map[i][0] )
|
||||
+ if( channel_layout_mask & pi_channels_map[i][0] )
|
||||
pi_order_src[i_channels_src++] = pi_channels_map[i][1];
|
||||
}
|
||||
|
||||
- if( i_channels_src != p_dec->fmt_out.audio.i_channels && b_trust )
|
||||
+ if( i_channels_src != channel_count && b_trust )
|
||||
msg_Err( p_dec, "Channel layout not understood" );
|
||||
|
||||
/* Detect special dual mono case */
|
||||
@@ -638,7 +664,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
|
||||
{
|
||||
msg_Warn( p_dec, "no channel layout found");
|
||||
p_dec->fmt_out.audio.i_physical_channels = 0;
|
||||
- p_dec->fmt_out.audio.i_channels = p_sys->p_context->channels;
|
||||
+ p_dec->fmt_out.audio.i_channels = channel_count;
|
||||
}
|
||||
|
||||
aout_FormatPrepare( &p_dec->fmt_out.audio );
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 1fbf3f028cffed87cb257a45668760370db267cf Mon Sep 17 00:00:00 2001
|
||||
From: Ilkka Ollakka <ileoo@videolan.org>
|
||||
Date: Tue, 4 Jul 2023 16:52:38 +0300
|
||||
Subject: [PATCH 04/11] avcodec: use p_enc audio channels instead of context
|
||||
channels in encoder
|
||||
|
||||
Allows to have less conditions in code when adding new ch_layout use
|
||||
|
||||
(cherry-picked from commit 29747a8abb98ba53a64aa6761983891eeed2e0e4)
|
||||
---
|
||||
modules/codec/avcodec/encoder.c | 24 ++++++++++++------------
|
||||
1 file changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
|
||||
index 4919ccf0e0e4..52848de06587 100644
|
||||
--- a/modules/codec/avcodec/encoder.c
|
||||
+++ b/modules/codec/avcodec/encoder.c
|
||||
@@ -790,7 +790,7 @@ int InitVideoEnc( vlc_object_t *p_this )
|
||||
}
|
||||
}
|
||||
}
|
||||
- if( i_channels_src != p_context->channels )
|
||||
+ if( i_channels_src != p_enc->fmt_out.audio.i_channels )
|
||||
msg_Err( p_enc, "Channel layout not understood" );
|
||||
|
||||
p_sys->i_channels_to_reorder =
|
||||
@@ -897,7 +897,7 @@ int InitVideoEnc( vlc_object_t *p_this )
|
||||
if( ret )
|
||||
{
|
||||
if( p_enc->fmt_in.i_cat != AUDIO_ES ||
|
||||
- (p_context->channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
|
||||
+ (p_enc->fmt_out.audio.i_channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
|
||||
&& i_codec_id != AV_CODEC_ID_MP3) )
|
||||
errmsg:
|
||||
{
|
||||
@@ -922,7 +922,7 @@ errmsg:
|
||||
goto error;
|
||||
}
|
||||
|
||||
- if( p_context->channels > 2 )
|
||||
+ if( p_enc->fmt_out.audio.i_channels > 2 )
|
||||
{
|
||||
p_context->channels = 2;
|
||||
p_context->channel_layout = channel_mask[p_context->channels][1];
|
||||
@@ -1028,7 +1028,7 @@ errmsg:
|
||||
p_context->frame_size :
|
||||
AV_INPUT_BUFFER_MIN_SIZE;
|
||||
p_sys->i_buffer_out = av_samples_get_buffer_size(NULL,
|
||||
- p_sys->p_context->channels, p_sys->i_frame_size,
|
||||
+ p_enc->fmt_out.audio.i_channels, p_sys->i_frame_size,
|
||||
p_sys->p_context->sample_fmt, DEFAULT_ALIGN);
|
||||
p_sys->p_buffer = av_malloc( p_sys->i_buffer_out );
|
||||
if ( unlikely( p_sys->p_buffer == NULL ) )
|
||||
@@ -1278,7 +1278,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
|
||||
{
|
||||
block_t *p_block = NULL;
|
||||
//How much we need to copy from new packet
|
||||
- const size_t leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes;
|
||||
+ const size_t leftover = leftover_samples * p_enc->fmt_out.audio.i_channels * p_sys->i_sample_bytes;
|
||||
|
||||
av_frame_unref( p_sys->frame );
|
||||
p_sys->frame->format = p_sys->p_context->sample_fmt;
|
||||
@@ -1301,7 +1301,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
|
||||
// We need to deinterleave from p_aout_buf to p_buffer the leftover bytes
|
||||
if( p_sys->b_planar )
|
||||
aout_Deinterleave( p_sys->p_interleave_buf, p_sys->p_buffer,
|
||||
- p_sys->i_frame_size, p_sys->p_context->channels, p_enc->fmt_in.i_codec );
|
||||
+ p_sys->i_frame_size, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec );
|
||||
else
|
||||
memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer, leftover);
|
||||
|
||||
@@ -1319,7 +1319,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
|
||||
memset( p_sys->p_buffer + (leftover+buffer_delay), 0, padding_size );
|
||||
buffer_delay += padding_size;
|
||||
}
|
||||
- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels,
|
||||
+ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels,
|
||||
p_sys->p_context->sample_fmt, p_sys->b_planar ? p_sys->p_interleave_buf : p_sys->p_buffer,
|
||||
p_sys->i_buffer_out,
|
||||
DEFAULT_ALIGN) < 0 )
|
||||
@@ -1349,7 +1349,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
||||
|
||||
//i_bytes_left is amount of bytes we get
|
||||
i_samples_left = p_aout_buf ? p_aout_buf->i_nb_samples : 0;
|
||||
- buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_sys->p_context->channels;
|
||||
+ buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels;
|
||||
|
||||
//p_sys->i_buffer_out = p_sys->i_frame_size * chan * p_sys->i_sample_bytes
|
||||
//Calculate how many bytes we would need from current buffer to fill frame
|
||||
@@ -1418,12 +1418,12 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
||||
p_sys->frame->channels = p_sys->p_context->channels;
|
||||
|
||||
const int in_bytes = p_sys->frame->nb_samples *
|
||||
- p_sys->p_context->channels * p_sys->i_sample_bytes;
|
||||
+ p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes;
|
||||
|
||||
if( p_sys->b_planar )
|
||||
{
|
||||
aout_Deinterleave( p_sys->p_buffer, p_aout_buf->p_buffer,
|
||||
- p_sys->frame->nb_samples, p_sys->p_context->channels, p_enc->fmt_in.i_codec );
|
||||
+ p_sys->frame->nb_samples, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec );
|
||||
|
||||
}
|
||||
else
|
||||
@@ -1431,7 +1431,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
||||
memcpy(p_sys->p_buffer, p_aout_buf->p_buffer, in_bytes);
|
||||
}
|
||||
|
||||
- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels,
|
||||
+ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels,
|
||||
p_sys->p_context->sample_fmt,
|
||||
p_sys->p_buffer,
|
||||
p_sys->i_buffer_out,
|
||||
@@ -1457,7 +1457,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
||||
if( p_aout_buf->i_nb_samples > 0 )
|
||||
{
|
||||
memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer,
|
||||
- p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_sys->p_context->channels);
|
||||
+ p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels);
|
||||
p_sys->i_samples_delay += p_aout_buf->i_nb_samples;
|
||||
}
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From a1a3edd4eacc813e5b4c3a6f353b92f4069fbc1a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
|
||||
Date: Tue, 23 Apr 2024 13:13:30 +0700
|
||||
Subject: [PATCH 05/11] codec: avcodec: map AYUV as RAWVIDEO with ffmpeg 6.0
|
||||
|
||||
(cherry picked from commit 955ef939467a628eb8da08e0d5eaefc9a3484cba)
|
||||
---
|
||||
modules/codec/avcodec/fourcc.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c
|
||||
index 33c6cae09abc..97f3188211d3 100644
|
||||
--- a/modules/codec/avcodec/fourcc.c
|
||||
+++ b/modules/codec/avcodec/fourcc.c
|
||||
@@ -182,8 +182,12 @@ static const struct vlc_avcodec_fourcc video_codecs[] =
|
||||
/* AV_CODEC_ID_V210X */
|
||||
{ VLC_CODEC_TMV, AV_CODEC_ID_TMV },
|
||||
{ VLC_CODEC_V210, AV_CODEC_ID_V210 },
|
||||
-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
|
||||
+#if LIBAVCODEC_VERSION_MICRO >= 100
|
||||
+# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 42, 102 )
|
||||
+ { VLC_CODEC_VUYA, AV_CODEC_ID_RAWVIDEO },
|
||||
+# elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 )
|
||||
{ VLC_CODEC_VUYA, AV_CODEC_ID_AYUV },
|
||||
+# endif
|
||||
#endif
|
||||
/* AV_CODEC_ID_DPX */
|
||||
{ VLC_CODEC_MAD, AV_CODEC_ID_MAD },
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From da6f67588dacf60c7563fd720cc75e1912215a45 Mon Sep 17 00:00:00 2001
|
||||
From: Francois Cartegnie <fcvlcdev@free.fr>
|
||||
Date: Thu, 13 Jun 2024 12:21:58 +0700
|
||||
Subject: [PATCH 06/11] avcodec: encoder: fix channel_layout conditionals
|
||||
|
||||
---
|
||||
modules/codec/avcodec/encoder.c | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
|
||||
index 52848de06587..6bd58f5071d2 100644
|
||||
--- a/modules/codec/avcodec/encoder.c
|
||||
+++ b/modules/codec/avcodec/encoder.c
|
||||
@@ -43,12 +43,13 @@
|
||||
#include <vlc_cpu.h>
|
||||
|
||||
#include <libavcodec/avcodec.h>
|
||||
-#include <libavutil/channel_layout.h>
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "avcommon.h"
|
||||
|
||||
-#if LIBAVUTIL_VERSION_CHECK( 52,2,6,0,0 )
|
||||
+#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
|
||||
+
|
||||
+#if API_CHANNEL_LAYOUT
|
||||
# include <libavutil/channel_layout.h>
|
||||
#endif
|
||||
|
||||
@@ -157,6 +158,7 @@ struct encoder_sys_t
|
||||
|
||||
|
||||
/* Taken from audio.c*/
|
||||
+#if API_CHANNEL_LAYOUT
|
||||
static const uint64_t pi_channels_map[][2] =
|
||||
{
|
||||
{ AV_CH_FRONT_LEFT, AOUT_CHAN_LEFT },
|
||||
@@ -193,6 +195,7 @@ static const uint32_t channel_mask[][2] = {
|
||||
{AOUT_CHANS_7_1, AV_CH_LAYOUT_7POINT1},
|
||||
{AOUT_CHANS_8_1, AV_CH_LAYOUT_OCTAGONAL},
|
||||
};
|
||||
+#endif
|
||||
|
||||
static const char *const ppsz_enc_options[] = {
|
||||
"keyint", "bframes", "vt", "qmin", "qmax", "codec", "hq",
|
||||
@@ -746,7 +749,7 @@ int InitVideoEnc( vlc_object_t *p_this )
|
||||
p_context->time_base.num = 1;
|
||||
p_context->time_base.den = p_context->sample_rate;
|
||||
p_context->channels = p_enc->fmt_out.audio.i_channels;
|
||||
-#if LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 0)
|
||||
+#if API_CHANNEL_LAYOUT
|
||||
p_context->channel_layout = channel_mask[p_context->channels][1];
|
||||
|
||||
/* Setup Channel ordering for multichannel audio
|
||||
@@ -925,7 +928,9 @@ errmsg:
|
||||
if( p_enc->fmt_out.audio.i_channels > 2 )
|
||||
{
|
||||
p_context->channels = 2;
|
||||
+#if API_CHANNEL_LAYOUT
|
||||
p_context->channel_layout = channel_mask[p_context->channels][1];
|
||||
+#endif
|
||||
|
||||
/* Change fmt_in in order to ask for a channels conversion */
|
||||
p_enc->fmt_in.audio.i_channels =
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 8e2d209d0897138ba13372ab49c0ee7cef7c316c Mon Sep 17 00:00:00 2001
|
||||
From: Francois Cartegnie <fcvlcdev@free.fr>
|
||||
Date: Sat, 17 Aug 2024 11:22:33 +0700
|
||||
Subject: [PATCH 07/11] codec: avcodec: fix audio channel_layout conditionals
|
||||
|
||||
---
|
||||
modules/codec/avcodec/audio.c | 23 +++++++++++++++--------
|
||||
1 file changed, 15 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
|
||||
index ad8a40ab4ed6..c74757c76ae5 100644
|
||||
--- a/modules/codec/avcodec/audio.c
|
||||
+++ b/modules/codec/avcodec/audio.c
|
||||
@@ -41,8 +41,11 @@
|
||||
#include <libavcodec/avcodec.h>
|
||||
#include <libavutil/mem.h>
|
||||
|
||||
-#include <libavutil/channel_layout.h>
|
||||
+#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
|
||||
|
||||
+#if API_CHANNEL_LAYOUT
|
||||
+# include <libavutil/channel_layout.h>
|
||||
+#endif
|
||||
|
||||
/*****************************************************************************
|
||||
* decoder_sys_t : decoder descriptor
|
||||
@@ -598,7 +601,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
|
||||
p_sys->i_previous_channels = p_sys->p_context->ch_layout.nb_channels;
|
||||
p_sys->i_previous_layout = p_sys->p_context->ch_layout.u.mask;
|
||||
}
|
||||
-#else
|
||||
+#elif API_CHANNEL_LAYOUT
|
||||
if( p_sys->i_previous_channels == p_sys->p_context->channels &&
|
||||
p_sys->i_previous_layout == p_sys->p_context->channel_layout )
|
||||
return;
|
||||
@@ -612,15 +615,19 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
|
||||
const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map);
|
||||
uint32_t pi_order_src[i_order_max];
|
||||
|
||||
- int i_channels_src = 0;
|
||||
+ int i_channels_src = 0, channel_count;
|
||||
+ uint64_t channel_layout_mask;
|
||||
#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
- uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
|
||||
- int channel_count = p_sys->p_context->ch_layout.nb_channels;
|
||||
-#else
|
||||
- uint64_t channel_layout_mask =
|
||||
+ channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
|
||||
+ channel_count = p_sys->p_context->ch_layout.nb_channels;
|
||||
+#elif API_CHANNEL_LAYOUT
|
||||
+ channel_layout_mask =
|
||||
p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
|
||||
(uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
|
||||
- int channel_count = p_sys->p_context->channels;
|
||||
+ channel_count = p_sys->p_context->channels;
|
||||
+#else
|
||||
+ channel_layout_mask = NULL;
|
||||
+ channel_count = p_sys->p_context->channels;
|
||||
#endif
|
||||
|
||||
if( channel_layout_mask )
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From cc5306f9b4eaac1b684747d65c04901008423f61 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
|
||||
Date: Tue, 23 Apr 2024 13:14:53 +0700
|
||||
Subject: [PATCH 08/11] demux/mux: avformat: use ch_layout from ffmpeg 5.1
|
||||
|
||||
merger pick from commit a55ec32ab3760d9edb6f05481cd3a981aa42878d
|
||||
and fixup 195f0c98599b55950c49a62f98d9d3495be310df
|
||||
---
|
||||
modules/demux/avformat/demux.c | 4 ++++
|
||||
modules/demux/avformat/mux.c | 4 ++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
|
||||
index 3b355bb3faec..830dc0157e2b 100644
|
||||
--- a/modules/demux/avformat/demux.c
|
||||
+++ b/modules/demux/avformat/demux.c
|
||||
@@ -401,7 +401,11 @@ int avformat_OpenDemux( vlc_object_t *p_this )
|
||||
es_format_Init( &es_fmt, AUDIO_ES, fcc );
|
||||
es_fmt.i_original_fourcc = CodecTagToFourcc( cp->codec_tag );
|
||||
es_fmt.i_bitrate = cp->bit_rate;
|
||||
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
|
||||
+ es_fmt.audio.i_channels = cp->ch_layout.nb_channels;
|
||||
+#else
|
||||
es_fmt.audio.i_channels = cp->channels;
|
||||
+#endif
|
||||
es_fmt.audio.i_rate = cp->sample_rate;
|
||||
es_fmt.audio.i_bitspersample = cp->bits_per_coded_sample;
|
||||
es_fmt.audio.i_blockalign = cp->block_align;
|
||||
diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
|
||||
index c708276954ce..8bf8735885f5 100644
|
||||
--- a/modules/demux/avformat/mux.c
|
||||
+++ b/modules/demux/avformat/mux.c
|
||||
@@ -267,7 +267,11 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
|
||||
{
|
||||
case AUDIO_ES:
|
||||
codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
|
||||
+ av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels );
|
||||
+#else
|
||||
codecpar->channels = fmt->audio.i_channels;
|
||||
+#endif
|
||||
codecpar->sample_rate = fmt->audio.i_rate;
|
||||
stream->time_base = (AVRational){1, codecpar->sample_rate};
|
||||
if (fmt->i_bitrate == 0) {
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From ad413ab9c0d8522cb79f7df3640249998902b6ca Mon Sep 17 00:00:00 2001
|
||||
From: Ilkka Ollakka <ileoo@videolan.org>
|
||||
Date: Tue, 4 Jul 2023 16:53:43 +0300
|
||||
Subject: [PATCH 09/11] avcodec: add handling of new ch_layout in audio encoder
|
||||
|
||||
conditioned to avcodec version where is it added
|
||||
|
||||
(cherry picked from commit c4302ca59dd79efd7208a45a3fcdc44388fd03a8)
|
||||
---
|
||||
modules/codec/avcodec/encoder.c | 15 +++++++++++++--
|
||||
1 file changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
|
||||
index 6bd58f5071d2..757f93b46845 100644
|
||||
--- a/modules/codec/avcodec/encoder.c
|
||||
+++ b/modules/codec/avcodec/encoder.c
|
||||
@@ -927,11 +927,14 @@ errmsg:
|
||||
|
||||
if( p_enc->fmt_out.audio.i_channels > 2 )
|
||||
{
|
||||
+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
+ av_channel_layout_default( &p_context->ch_layout, 2 );
|
||||
+#else
|
||||
p_context->channels = 2;
|
||||
-#if API_CHANNEL_LAYOUT
|
||||
+# if API_CHANNEL_LAYOUT
|
||||
p_context->channel_layout = channel_mask[p_context->channels][1];
|
||||
+# endif
|
||||
#endif
|
||||
-
|
||||
/* Change fmt_in in order to ask for a channels conversion */
|
||||
p_enc->fmt_in.audio.i_channels =
|
||||
p_enc->fmt_out.audio.i_channels = 2;
|
||||
@@ -1288,8 +1291,12 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
|
||||
av_frame_unref( p_sys->frame );
|
||||
p_sys->frame->format = p_sys->p_context->sample_fmt;
|
||||
p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay;
|
||||
+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
+ av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
|
||||
+#else
|
||||
p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
|
||||
p_sys->frame->channels = p_sys->p_context->channels;
|
||||
+#endif
|
||||
|
||||
p_sys->frame->pts = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den /
|
||||
CLOCK_FREQ / p_sys->p_context->time_base.num;
|
||||
@@ -1419,8 +1426,12 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
|
||||
p_sys->frame->pts = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den /
|
||||
CLOCK_FREQ / p_sys->p_context->time_base.num;
|
||||
|
||||
+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
+ av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
|
||||
+#else
|
||||
p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
|
||||
p_sys->frame->channels = p_sys->p_context->channels;
|
||||
+#endif
|
||||
|
||||
const int in_bytes = p_sys->frame->nb_samples *
|
||||
p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes;
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 416eeca68bfb67b244827a45a4392bddb8cc0ce8 Mon Sep 17 00:00:00 2001
|
||||
From: Ilkka Ollakka <ileoo@videolan.org>
|
||||
Date: Tue, 4 Jul 2023 16:55:28 +0300
|
||||
Subject: [PATCH 10/11] avcodec: use ch_layout for channel layout in audio
|
||||
encoder
|
||||
|
||||
channels and channel_layout has been deprecated in FFMPEG 5.1 and will be removed eventually
|
||||
|
||||
also always create the mapping, as ch_layout is always there
|
||||
|
||||
(cherry picked from commit b73dc8841d999c6be9de718cd2cd3aeb13279792)
|
||||
---
|
||||
modules/codec/avcodec/encoder.c | 53 ++++++++++++++-------------------
|
||||
1 file changed, 22 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
|
||||
index 757f93b46845..ae746c99fc89 100644
|
||||
--- a/modules/codec/avcodec/encoder.c
|
||||
+++ b/modules/codec/avcodec/encoder.c
|
||||
@@ -183,6 +183,7 @@ static const uint64_t pi_channels_map[][2] =
|
||||
{ AV_CH_STEREO_RIGHT, 0 },
|
||||
};
|
||||
|
||||
+# if !LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
static const uint32_t channel_mask[][2] = {
|
||||
{0,0},
|
||||
{AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO},
|
||||
@@ -195,6 +196,7 @@ static const uint32_t channel_mask[][2] = {
|
||||
{AOUT_CHANS_7_1, AV_CH_LAYOUT_7POINT1},
|
||||
{AOUT_CHANS_8_1, AV_CH_LAYOUT_OCTAGONAL},
|
||||
};
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
static const char *const ppsz_enc_options[] = {
|
||||
@@ -748,49 +750,36 @@ int InitVideoEnc( vlc_object_t *p_this )
|
||||
date_Set( &p_sys->buffer_date, AV_NOPTS_VALUE );
|
||||
p_context->time_base.num = 1;
|
||||
p_context->time_base.den = p_context->sample_rate;
|
||||
- p_context->channels = p_enc->fmt_out.audio.i_channels;
|
||||
-#if API_CHANNEL_LAYOUT
|
||||
- p_context->channel_layout = channel_mask[p_context->channels][1];
|
||||
|
||||
- /* Setup Channel ordering for multichannel audio
|
||||
+ /* Setup Channel ordering for audio
|
||||
* as VLC channel order isn't same as libavcodec expects
|
||||
*/
|
||||
|
||||
p_sys->i_channels_to_reorder = 0;
|
||||
|
||||
- /* Specified order
|
||||
+ /* Create channel layout for avcodec
|
||||
* Copied from audio.c
|
||||
*/
|
||||
- const unsigned i_order_max = 8 * sizeof(p_context->channel_layout);
|
||||
- uint32_t pi_order_dst[AOUT_CHAN_MAX] = { };
|
||||
+#if API_CHANNEL_LAYOUT
|
||||
+ uint32_t pi_order_dst[AOUT_CHAN_MAX] = { 0 };
|
||||
uint32_t order_mask = 0;
|
||||
int i_channels_src = 0;
|
||||
-
|
||||
- if( p_context->channel_layout )
|
||||
- {
|
||||
- msg_Dbg( p_enc, "Creating channel order for reordering");
|
||||
- for( unsigned i = 0; i < sizeof(pi_channels_map)/sizeof(*pi_channels_map); i++ )
|
||||
- {
|
||||
- if( p_context->channel_layout & pi_channels_map[i][0] )
|
||||
- {
|
||||
- msg_Dbg( p_enc, "%d %"PRIx64" mapped to %"PRIx64"", i_channels_src, pi_channels_map[i][0], pi_channels_map[i][1]);
|
||||
- pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
|
||||
- order_mask |= pi_channels_map[i][1];
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
+ msg_Dbg( p_enc, "Creating channel order for reordering");
|
||||
+# if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
|
||||
+ av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels );
|
||||
+ uint64_t channel_mask = p_context->ch_layout.u.mask;
|
||||
+# else
|
||||
+ p_context->channels = p_enc->fmt_out.audio.i_channels;
|
||||
+ p_context->channel_layout = channel_mask[p_context->channels][1];
|
||||
+ uint64_t channel_mask = p_context->channel_layout;
|
||||
+# endif
|
||||
+ for( unsigned i = 0; i < sizeof(pi_channels_map)/sizeof(*pi_channels_map); i++ )
|
||||
{
|
||||
- msg_Dbg( p_enc, "Creating default channel order for reordering");
|
||||
- /* Create default order */
|
||||
- for( unsigned int i = 0; i < __MIN( i_order_max, (unsigned)p_sys->p_context->channels ); i++ )
|
||||
+ if( channel_mask & pi_channels_map[i][0] )
|
||||
{
|
||||
- if( i < sizeof(pi_channels_map)/sizeof(*pi_channels_map) )
|
||||
- {
|
||||
- msg_Dbg( p_enc, "%d channel is %"PRIx64"", i_channels_src, pi_channels_map[i][1]);
|
||||
- pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
|
||||
- order_mask |= pi_channels_map[i][1];
|
||||
- }
|
||||
+ msg_Dbg( p_enc, "%d %"PRIx64" mapped to %"PRIx64"", i_channels_src, pi_channels_map[i][0], pi_channels_map[i][1]);
|
||||
+ pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
|
||||
+ order_mask |= pi_channels_map[i][1];
|
||||
}
|
||||
}
|
||||
if( i_channels_src != p_enc->fmt_out.audio.i_channels )
|
||||
@@ -799,6 +788,8 @@ int InitVideoEnc( vlc_object_t *p_this )
|
||||
p_sys->i_channels_to_reorder =
|
||||
aout_CheckChannelReorder( NULL, pi_order_dst, order_mask,
|
||||
p_sys->pi_reorder_layout );
|
||||
+#else
|
||||
+ p_context->channels = p_enc->fmt_out.audio.i_channels;
|
||||
#endif
|
||||
|
||||
if ( p_enc->fmt_out.i_codec == VLC_CODEC_MP4A )
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From c493ec18c5f3d10ba5a967e81b80d03e79f2d8b7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
|
||||
Date: Mon, 12 Aug 2024 19:32:42 +0700
|
||||
Subject: [PATCH 11/11] codec: avcodec: bypass removed define for Intel
|
||||
workarounds
|
||||
|
||||
adapted from cherry picked commit 1280728ad305f00ceba3491ce11bf66107017a6c
|
||||
---
|
||||
modules/codec/avcodec/d3d11va.c | 4 ++++
|
||||
modules/codec/avcodec/dxva2.c | 4 ++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
|
||||
index e1560a9312cc..5260628364f0 100644
|
||||
--- a/modules/codec/avcodec/d3d11va.c
|
||||
+++ b/modules/codec/avcodec/d3d11va.c
|
||||
@@ -55,6 +55,10 @@
|
||||
#define D3D_DecoderSurface ID3D11VideoDecoderOutputView
|
||||
#include "directx_va.h"
|
||||
|
||||
+#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
|
||||
+# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/
|
||||
+#endif
|
||||
+
|
||||
static int Open(vlc_va_t *, AVCodecContext *, const AVPixFmtDescriptor *, enum PixelFormat,
|
||||
const es_format_t *, picture_sys_t *p_sys);
|
||||
static void Close(vlc_va_t *, void **);
|
||||
diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
|
||||
index 2e6809a05410..037ad7d44887 100644
|
||||
--- a/modules/codec/avcodec/dxva2.c
|
||||
+++ b/modules/codec/avcodec/dxva2.c
|
||||
@@ -43,6 +43,10 @@
|
||||
#define D3D_DecoderSurface IDirect3DSurface9
|
||||
#include "directx_va.h"
|
||||
|
||||
+#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
|
||||
+# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/
|
||||
+#endif
|
||||
+
|
||||
static int Open(vlc_va_t *, AVCodecContext *, const AVPixFmtDescriptor *, enum PixelFormat,
|
||||
const es_format_t *, picture_sys_t *p_sys);
|
||||
static void Close(vlc_va_t *, void **);
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
|
||||
Date: Thu, 15 Aug 2024 12:09:56 +0200
|
||||
Subject: mux: avformat: fix avio callbacks signature with ffmpeg 6.1
|
||||
|
||||
API signature changes introduced depending on a positive define,
|
||||
then removed later, making it break prior or post removal...
|
||||
---
|
||||
modules/codec/avcodec/avcommon_compat.h | 3 +++
|
||||
modules/demux/avformat/mux.c | 19 +++++++++++++++++--
|
||||
2 files changed, 20 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
|
||||
index 9d16b3d..561ad83 100644
|
||||
--- a/modules/codec/avcodec/avcommon_compat.h
|
||||
+++ b/modules/codec/avcodec/avcommon_compat.h
|
||||
@@ -77,6 +77,9 @@
|
||||
#ifndef FF_MAX_B_FRAMES
|
||||
# define FF_MAX_B_FRAMES 16 // FIXME: remove this
|
||||
#endif
|
||||
+#ifndef FF_API_AVIO_WRITE_NONCONST // removed in ffmpeg 7
|
||||
+# define FF_API_AVIO_WRITE_NONCONST (LIBAVFORMAT_VERSION_MAJOR < 61)
|
||||
+#endif
|
||||
|
||||
#endif /* HAVE_LIBAVCODEC_AVCODEC_H */
|
||||
|
||||
diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
|
||||
index 8bf8735..4994647 100644
|
||||
--- a/modules/demux/avformat/mux.c
|
||||
+++ b/modules/demux/avformat/mux.c
|
||||
@@ -74,12 +74,18 @@ static int AddStream( sout_mux_t *, sout_input_t * );
|
||||
static void DelStream( sout_mux_t *, sout_input_t * );
|
||||
static int Mux ( sout_mux_t * );
|
||||
|
||||
+#if FF_API_AVIO_WRITE_NONCONST
|
||||
static int IOWrite( void *opaque, uint8_t *buf, int buf_size );
|
||||
-static int64_t IOSeek( void *opaque, int64_t offset, int whence );
|
||||
#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
|
||||
static int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size,
|
||||
- enum AVIODataMarkerType type, int64_t time);
|
||||
+ enum AVIODataMarkerType type, int64_t time);
|
||||
+#endif
|
||||
+#else
|
||||
+static int IOWrite( void *opaque, const uint8_t *buf, int buf_size );
|
||||
+int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size,
|
||||
+ enum AVIODataMarkerType type, int64_t time);
|
||||
#endif
|
||||
+static int64_t IOSeek( void *opaque, int64_t offset, int whence );
|
||||
|
||||
/*****************************************************************************
|
||||
* Open
|
||||
@@ -411,8 +417,13 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
|
||||
}
|
||||
|
||||
#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
|
||||
+#if FF_API_AVIO_WRITE_NONCONST
|
||||
int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size,
|
||||
enum AVIODataMarkerType type, int64_t time)
|
||||
+#else
|
||||
+int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size,
|
||||
+ enum AVIODataMarkerType type, int64_t time)
|
||||
+#endif
|
||||
{
|
||||
VLC_UNUSED(time);
|
||||
|
||||
@@ -512,7 +523,11 @@ static int Control( sout_mux_t *p_mux, int i_query, va_list args )
|
||||
/*****************************************************************************
|
||||
* I/O wrappers for libavformat
|
||||
*****************************************************************************/
|
||||
+#if FF_API_AVIO_WRITE_NONCONST
|
||||
static int IOWrite( void *opaque, uint8_t *buf, int buf_size )
|
||||
+#else
|
||||
+static int IOWrite( void *opaque, const uint8_t *buf, int buf_size )
|
||||
+#endif
|
||||
{
|
||||
sout_mux_t *p_mux = opaque;
|
||||
sout_mux_sys_t *p_sys = p_mux->p_sys;
|
||||
|
@ -0,0 +1,28 @@
|
||||
From a761e1c202b632e7865d18fcf11a2b9e285ea9ae Mon Sep 17 00:00:00 2001
|
||||
From: Tristan Matthews <tmatth@videolan.org>
|
||||
Date: Wed, 1 Feb 2023 23:39:36 -0500
|
||||
Subject: [PATCH] opus_header: fix channel mapping family 1 parsing
|
||||
|
||||
Fixes #27808
|
||||
|
||||
(cherry picked from commit 79fa6af0a98921f9d34933761f4fe20ef6c35309)
|
||||
---
|
||||
modules/codec/opus_header.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules/codec/opus_header.c b/modules/codec/opus_header.c
|
||||
index 4069a5cf4613..b134b20b625b 100644
|
||||
--- a/modules/codec/opus_header.c
|
||||
+++ b/modules/codec/opus_header.c
|
||||
@@ -205,7 +205,7 @@ int opus_header_parse(const unsigned char *packet, int len, OpusHeader *h)
|
||||
h->nb_coupled = ch;
|
||||
|
||||
/* Multi-stream support */
|
||||
- if(h->channel_mapping == 2)
|
||||
+ if(h->channel_mapping <= 2)
|
||||
{
|
||||
if (h->nb_coupled + h->nb_streams > 255)
|
||||
return 0;
|
||||
--
|
||||
GitLab
|
||||
|
@ -0,0 +1,239 @@
|
||||
From 1c27f57498b7e0f52acc7b4520c4172a2462632d Mon Sep 17 00:00:00 2001
|
||||
From: Juliane de Sartiges <jill@videolabs.io>
|
||||
Date: Wed, 27 Jul 2022 09:32:25 +0200
|
||||
Subject: [PATCH] freerdp: update to freerdp2 api
|
||||
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
modules/access/rdp.c | 85 ++++++++++++++++++++------------------------
|
||||
2 files changed, 40 insertions(+), 47 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index b454198157..cb23a9b2ab 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -2094,7 +2094,7 @@ PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client su
|
||||
|
||||
dnl RDP/Remote Desktop access module
|
||||
dnl
|
||||
-PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )
|
||||
+PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp2 >= 2.0.0], (RDP/Remote Desktop client support) )
|
||||
|
||||
dnl
|
||||
dnl Real RTSP plugin
|
||||
diff --git a/modules/access/rdp.c b/modules/access/rdp.c
|
||||
index 0c39663c64..04ae005938 100644
|
||||
--- a/modules/access/rdp.c
|
||||
+++ b/modules/access/rdp.c
|
||||
@@ -45,18 +45,6 @@
|
||||
# include <freerdp/version.h>
|
||||
#endif
|
||||
|
||||
-#if !defined(FREERDP_VERSION_MAJOR) || \
|
||||
- (defined(FREERDP_VERSION_MAJOR) && !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1)))
|
||||
-# define SoftwareGdi sw_gdi
|
||||
-# define Fullscreen fullscreen
|
||||
-# define ServerHostname hostname
|
||||
-# define Username username
|
||||
-# define Password password
|
||||
-# define ServerPort port
|
||||
-# define EncryptionMethods encryption
|
||||
-# define ContextSize context_size
|
||||
-#endif
|
||||
-
|
||||
#include <errno.h>
|
||||
#ifdef HAVE_POLL
|
||||
# include <poll.h>
|
||||
@@ -75,6 +63,8 @@
|
||||
|
||||
#define CFG_PREFIX "rdp-"
|
||||
|
||||
+#define FREERDP_PIXEL_BPP(_format) (_format >> 24)
|
||||
+
|
||||
/*****************************************************************************
|
||||
* Module descriptor
|
||||
*****************************************************************************/
|
||||
@@ -139,11 +129,12 @@ typedef struct vlcrdp_context_t vlcrdp_context_t;
|
||||
|
||||
/* updates handlers */
|
||||
|
||||
-static void desktopResizeHandler( rdpContext *p_context )
|
||||
+static BOOL desktopResizeHandler( rdpContext *p_context )
|
||||
{
|
||||
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context;
|
||||
demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
|
||||
rdpGdi *p_gdi = p_context->gdi;
|
||||
+ int i_colordepth = FREERDP_PIXEL_BPP( p_gdi->dstFormat );
|
||||
|
||||
if ( p_sys->es )
|
||||
{
|
||||
@@ -151,11 +142,13 @@ static void desktopResizeHandler( rdpContext *p_context )
|
||||
p_sys->es = NULL;
|
||||
}
|
||||
|
||||
- /* Now init and fill es format */
|
||||
vlc_fourcc_t i_chroma;
|
||||
- switch( p_gdi->bytesPerPixel )
|
||||
+ /* Now init and fill es format */
|
||||
+ switch ( i_colordepth )
|
||||
{
|
||||
default:
|
||||
+ msg_Dbg( p_vlccontext->p_demux, "invalid color depth %d", i_colordepth);
|
||||
+ /* fallthrough */
|
||||
case 16:
|
||||
i_chroma = VLC_CODEC_RGB16;
|
||||
break;
|
||||
@@ -163,7 +156,7 @@ static void desktopResizeHandler( rdpContext *p_context )
|
||||
i_chroma = VLC_CODEC_RGB24;
|
||||
break;
|
||||
case 32:
|
||||
- i_chroma = VLC_CODEC_RGB32;
|
||||
+ i_chroma = VLC_CODEC_ARGB;
|
||||
break;
|
||||
}
|
||||
es_format_t fmt;
|
||||
@@ -176,7 +169,7 @@ static void desktopResizeHandler( rdpContext *p_context )
|
||||
fmt.video.i_height = p_gdi->height;
|
||||
fmt.video.i_frame_rate_base = 1000;
|
||||
fmt.video.i_frame_rate = 1000 * p_sys->f_fps;
|
||||
- p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * p_gdi->bytesPerPixel;
|
||||
+ p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * (i_colordepth >> 3);
|
||||
|
||||
if ( p_sys->p_block )
|
||||
p_sys->p_block = block_Realloc( p_sys->p_block, 0, p_sys->i_framebuffersize );
|
||||
@@ -184,20 +177,21 @@ static void desktopResizeHandler( rdpContext *p_context )
|
||||
p_sys->p_block = block_Alloc( p_sys->i_framebuffersize );
|
||||
|
||||
p_sys->es = es_out_Add( p_vlccontext->p_demux->out, &fmt );
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
-static void beginPaintHandler( rdpContext *p_context )
|
||||
+static BOOL beginPaintHandler( rdpContext *p_context )
|
||||
{
|
||||
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context;
|
||||
demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
|
||||
rdpGdi *p_gdi = p_context->gdi;
|
||||
- p_gdi->primary->hdc->hwnd->invalid->null = 1;
|
||||
- p_gdi->primary->hdc->hwnd->ninvalid = 0;
|
||||
+ p_gdi->primary->hdc->hwnd->invalid->null = TRUE;
|
||||
if ( ! p_sys->p_block && p_sys->i_framebuffersize )
|
||||
p_sys->p_block = block_Alloc( p_sys->i_framebuffersize );
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
-static void endPaintHandler( rdpContext *p_context )
|
||||
+static BOOL endPaintHandler( rdpContext *p_context )
|
||||
{
|
||||
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context;
|
||||
demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
|
||||
@@ -208,11 +202,12 @@ static void endPaintHandler( rdpContext *p_context )
|
||||
p_sys->p_block->i_buffer = p_sys->i_framebuffersize;
|
||||
memcpy( p_sys->p_block->p_buffer, p_gdi->primary_buffer, p_sys->p_block->i_buffer );
|
||||
}
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
/* instance handlers */
|
||||
|
||||
-static bool preConnectHandler( freerdp *p_instance )
|
||||
+static BOOL preConnectHandler( freerdp *p_instance )
|
||||
{
|
||||
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context;
|
||||
demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;
|
||||
@@ -229,49 +224,54 @@ static bool preConnectHandler( freerdp *p_instance )
|
||||
p_instance->settings->EncryptionMethods =
|
||||
var_InheritBool( p_vlccontext->p_demux, CFG_PREFIX "encrypt" );
|
||||
|
||||
- return true;
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
-static bool postConnectHandler( freerdp *p_instance )
|
||||
+static BOOL postConnectHandler( freerdp *p_instance )
|
||||
{
|
||||
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context;
|
||||
|
||||
msg_Dbg( p_vlccontext->p_demux, "connected to desktop %dx%d (%d bpp)",
|
||||
-#if defined(FREERDP_VERSION_MAJOR) && (FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1))
|
||||
p_instance->settings->DesktopWidth,
|
||||
p_instance->settings->DesktopHeight,
|
||||
p_instance->settings->ColorDepth
|
||||
-#else
|
||||
- p_instance->settings->width,
|
||||
- p_instance->settings->height,
|
||||
- p_instance->settings->color_depth
|
||||
-#endif
|
||||
);
|
||||
|
||||
p_instance->update->DesktopResize = desktopResizeHandler;
|
||||
p_instance->update->BeginPaint = beginPaintHandler;
|
||||
p_instance->update->EndPaint = endPaintHandler;
|
||||
+ UINT32 format;
|
||||
+ switch ( p_instance->settings->ColorDepth )
|
||||
+ {
|
||||
+ default:
|
||||
+ msg_Dbg( p_vlccontext->p_demux, "no valid pixel format found for color depth %d bpp", p_instance->settings->ColorDepth);
|
||||
+ /* fallthrough */
|
||||
+ case 16:
|
||||
+ format = PIXEL_FORMAT_RGB16;
|
||||
+ break;
|
||||
+ case 24:
|
||||
+ format = PIXEL_FORMAT_RGB24;
|
||||
+ break;
|
||||
+ case 32:
|
||||
+ format = PIXEL_FORMAT_ARGB32;
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
gdi_init( p_instance,
|
||||
- CLRBUF_16BPP |
|
||||
-#if defined(FREERDP_VERSION_MAJOR) && defined(FREERDP_VERSION_MINOR) && \
|
||||
- !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2))
|
||||
- CLRBUF_24BPP |
|
||||
-#endif
|
||||
- CLRBUF_32BPP, NULL );
|
||||
+ format );
|
||||
|
||||
desktopResizeHandler( p_instance->context );
|
||||
- return true;
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
-static bool authenticateHandler( freerdp *p_instance, char** ppsz_username,
|
||||
+static BOOL authenticateHandler( freerdp *p_instance, char** ppsz_username,
|
||||
char** ppsz_password, char** ppsz_domain )
|
||||
{
|
||||
VLC_UNUSED(ppsz_domain);
|
||||
vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context;
|
||||
*ppsz_username = var_InheritString( p_vlccontext->p_demux, CFG_PREFIX "user" );
|
||||
*ppsz_password = var_InheritString( p_vlccontext->p_demux, CFG_PREFIX "password" );
|
||||
- return true;
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -432,10 +432,6 @@ static int Open( vlc_object_t *p_this )
|
||||
if ( p_sys->f_fps <= 0 ) p_sys->f_fps = 1.0;
|
||||
p_sys->i_frame_interval = 1000000 / p_sys->f_fps;
|
||||
|
||||
-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2
|
||||
- freerdp_channels_global_init();
|
||||
-#endif
|
||||
-
|
||||
p_sys->p_instance = freerdp_new();
|
||||
if ( !p_sys->p_instance )
|
||||
{
|
||||
@@ -512,9 +508,6 @@ static void Close( vlc_object_t *p_this )
|
||||
|
||||
freerdp_disconnect( p_sys->p_instance );
|
||||
freerdp_free( p_sys->p_instance );
|
||||
-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2
|
||||
- freerdp_channels_global_uninit();
|
||||
-#endif
|
||||
|
||||
if ( p_sys->p_block )
|
||||
block_Release( p_sys->p_block );
|
||||
--
|
||||
2.45.2
|
||||
|
@ -0,0 +1,49 @@
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 78b9ce2..b9c1563 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -910,9 +910,9 @@ AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
|
||||
|
||||
|
||||
dnl
|
||||
-dnl Domain name i18n support via GNU libidn
|
||||
+dnl Domain name i18n support via GNU libidn2
|
||||
dnl
|
||||
-PKG_CHECK_MODULES([IDN], [libidn], [
|
||||
+PKG_CHECK_MODULES([IDN], [libidn2], [
|
||||
have_libidn="yes"
|
||||
AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.])
|
||||
], [
|
||||
diff --git a/src/text/url.c b/src/text/url.c
|
||||
index 2eb4b8d..467b7f3 100644
|
||||
--- a/src/text/url.c
|
||||
+++ b/src/text/url.c
|
||||
@@ -873,7 +873,7 @@ char *vlc_uri_fixup(const char *str)
|
||||
}
|
||||
|
||||
#if defined (HAVE_IDN)
|
||||
-# include <idna.h>
|
||||
+# include <idn2.h>
|
||||
#elif defined (_WIN32)
|
||||
# include <windows.h>
|
||||
# include <vlc_charset.h>
|
||||
@@ -914,16 +914,13 @@ static char *vlc_idna_to_ascii (const char *idn)
|
||||
#if defined (HAVE_IDN)
|
||||
char *adn;
|
||||
|
||||
- switch (idna_to_ascii_8z(idn, &adn, IDNA_ALLOW_UNASSIGNED))
|
||||
+ switch (idn2_to_ascii_8z(idn, &adn, IDN2_ALLOW_UNASSIGNED|IDN2_NFC_INPUT|IDN2_NONTRANSITIONAL))
|
||||
{
|
||||
- case IDNA_SUCCESS:
|
||||
+ case IDN2_OK:
|
||||
return adn;
|
||||
- case IDNA_MALLOC_ERROR:
|
||||
+ case IDN2_MALLOC:
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
- case IDNA_DLOPEN_ERROR:
|
||||
- errno = ENOSYS;
|
||||
- return NULL;
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return NULL;
|
@ -0,0 +1,11 @@
|
||||
--- ./share/lua/intf/modules/httprequests.lua.Orig 2023-08-05 06:03:51.000000000 -0400
|
||||
+++ ./share/lua/intf/modules/httprequests.lua 2024-05-28 14:02:41.569002601 -0400
|
||||
@@ -34,7 +34,7 @@
|
||||
what = common.us_tonumber(what)
|
||||
end
|
||||
if type(what) == "number" then
|
||||
- return math.floor(what*math.pow(10,precision)+0.5) / math.pow(10,precision)
|
||||
+ return math.floor(what*(10^precision)+0.5) / (10^precision)
|
||||
end
|
||||
return nil
|
||||
end
|
Loading…
Reference in new issue