aboutsummaryrefslogtreecommitdiffstats
path: root/meta-multimedia/recipes-multimedia/vlc/vlc/4665.patch
blob: c9ef33358e75b4ce2778975d2cba9e35e72b777f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
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>
Upstream-Status: Backport [https://code.videolan.org/videolan/vlc/-/merge_requests/4665]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 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