Compare commits

..

9 Commits

Author SHA1 Message Date
Gilver 56a2e73176 Merge branch 'frawhide' into gil/add/vlc 2025-12-26 08:48:17 -06:00
Raboneko 7bb2f0ff0a bump: limine 2025-12-26 14:29:37 +00:00
Gilver f7915c8adf chore: Port spec changes from F43 2025-12-19 23:27:01 -06:00
Gilver 1ce7b2f873 Cleanup 2025-12-19 20:56:16 -06:00
Gilver fc3c1dcc3a cleanup: New macros and bump release down 2025-12-19 20:14:23 -06:00
Gilver 177153e227 feat: Handle Freeworld 2025-12-19 19:44:55 -06:00
Gilver 47bad035e5 cleanup: Remove Flatpak stuff, add patches 2025-12-19 19:36:48 -06:00
Gilver ec642693d1 ??? 2025-12-19 19:33:31 -06:00
Gilver 9f79730638 add: VLC 2025-12-19 19:32:57 -06:00
26 changed files with 4407 additions and 256 deletions
@@ -0,0 +1,38 @@
From 3039aec58203513f29edb03f84471ea941a0c226 Mon Sep 17 00:00:00 2001
From: Nicolas Chauvet <kwizart@gmail.com>
Date: Mon, 24 Sep 2018 18:28:26 +0200
Subject: [PATCH] Use @SYSTEM wide ciphers for gnutls
Gnutls upstream has support for system defined ciphers list
This is decribed at
https://fedoraproject.org/wiki/Packaging:CryptoPolicies
Also found on the debian wiki
https://wiki.debian.org/CryptoPolicy
Signed-off-by: Nicolas Chauvet <kwizart@gmail.com>
---
modules/misc/gnutls.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c
index 7b63cc34c4..3ca665f3d3 100644
--- a/modules/misc/gnutls.c
+++ b/modules/misc/gnutls.c
@@ -768,12 +768,14 @@ static void CloseServer (vlc_tls_creds_t *crd)
"hash functions and compression methods can be selected. " \
"Refer to GNU TLS documentation for detailed syntax.")
static const char *const priorities_values[] = {
+ "@SYSTEM",
"PERFORMANCE",
"NORMAL",
"SECURE128",
"SECURE256",
};
static const char *const priorities_text[] = {
+ N_("System (default to system crypto ciphers policy)"),
N_("Performance (prioritize faster ciphers)"),
N_("Normal"),
N_("Secure 128-bits (exclude 256-bits ciphers)"),
--
2.25.4
+775
View File
@@ -0,0 +1,775 @@
From 81d6d56df6e5a66ed99970e2c559539858f4a0b7 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 50a76c7a18e..e5af0ca5f2f 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 c7709e7a048eb69b656d7f9663debbc1dde1f591 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 e5af0ca5f2f..26166c084e5 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 99b14966182995314f5b29fd972d6a9000ea3e00 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 26166c084e5..ad8a40ab4ed 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 c44edb85e4f25cbc7a848211d2d3ca9f03bd46e6 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 4919ccf0e0e..52848de0658 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 b8ad80a20e9e84082dac2848070d251fa68412c7 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 33c6cae09ab..97f3188211d 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 58c05240c26b6eef56e7c5ab35b14ccd8377667f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <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 52848de0658..6bd58f5071d 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 3db6e677680a1a94e473fe9d9fc121af34cdcf2b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <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 ad8a40ab4ed..c74757c76ae 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 b5bb9bda03a06fc1cfd682dacb571b688b5558d9 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 3b355bb3fae..830dc0157e2 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 c708276954c..8bf8735885f 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 fa001cda7f6b22843438c39dfc078050bb54c72a 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 6bd58f5071d..757f93b4684 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 bb62989ccc12866d308e6f38dc1513de9cb1c6da 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 757f93b4684..ae746c99fc8 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 e020f9abb31809584e33d740593d6ae5a190771d 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 e1560a9312c..5260628364f 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 2e6809a0541..037ad7d4488 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
+28
View File
@@ -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
+82
View File
@@ -0,0 +1,82 @@
From a618e31cf209168ae420e95750734a37359969e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
Date: Sun, 7 Jul 2024 11:14:05 +0200
Subject: [PATCH] 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...
(adapted from commit 503c04fad9239420be26d67aab4d5f63c53eb4f7)
---
modules/codec/avcodec/avcommon_compat.h | 3 +++
modules/demux/avformat/mux.c | 18 ++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
index 9d16b3dc47d9..561ad83f99f9 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 8bf8735885f5..033a87bdaaad 100644
--- a/modules/demux/avformat/mux.c
+++ b/modules/demux/avformat/mux.c
@@ -74,11 +74,20 @@ 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 );
+#else
+static int IOWrite( void *opaque, const uint8_t *buf, int buf_size );
+#endif
static int64_t IOSeek( void *opaque, int64_t offset, int whence );
#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
+# if FF_API_AVIO_WRITE_NONCONST
static 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
#endif
/*****************************************************************************
@@ -411,8 +420,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 +526,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;
--
GitLab
File diff suppressed because it is too large Load Diff
+46
View File
@@ -0,0 +1,46 @@
From a945944c2d50cacfacdd5b16d4ea5e7b4766a9fc Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Mon, 16 Dec 2024 09:28:55 +0100
Subject: [PATCH] nfs: fix libnfs API v2 support
Introduced in libnfs 6.0.0.
Co-authored-by: ronnie sahlberg <ronniesahlberg@gmail.com>
Co-authored-by: Thomas Guillem <thomas@gllm.fr>
---
modules/access/nfs.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/modules/access/nfs.c b/modules/access/nfs.c
index f164cda86499..3510c3fe1f14 100644
--- a/modules/access/nfs.c
+++ b/modules/access/nfs.c
@@ -188,7 +188,8 @@ nfs_read_cb(int i_status, struct nfs_context *p_nfs, void *p_data,
else
{
p_sys->res.read.i_len = i_status;
- memcpy(p_sys->res.read.p_buf, p_data, i_status);
+ if (p_sys->res.read.p_buf != NULL && p_data != NULL)
+ memcpy(p_sys->res.read.p_buf, p_data, i_status);
}
}
@@ -208,9 +209,15 @@ FileRead(stream_t *p_access, void *p_buf, size_t i_len)
return 0;
p_sys->res.read.i_len = 0;
+#ifdef LIBNFS_API_V2
+ p_sys->res.read.p_buf = NULL;
+ if (nfs_read_async(p_sys->p_nfs, p_sys->p_nfsfh, p_buf, i_len, nfs_read_cb,
+ p_access) < 0)
+#else
p_sys->res.read.p_buf = p_buf;
if (nfs_read_async(p_sys->p_nfs, p_sys->p_nfsfh, i_len, nfs_read_cb,
p_access) < 0)
+#endif
{
msg_Err(p_access, "nfs_read_async failed");
return 0;
--
GitLab
+149
View File
@@ -0,0 +1,149 @@
From ba5dc03aecc1d96f81b76838f845ebde7348cf62 Mon Sep 17 00:00:00 2001
From: David Rosca <nowrep@gmail.com>
Date: Fri, 20 Dec 2024 20:24:36 +0100
Subject: [PATCH] avcodec: vaapi: Support VAAPI with latest FFmpeg
---
configure.ac | 20 +------------
modules/codec/Makefile.am | 2 +-
modules/codec/avcodec/avcommon_compat.h | 3 ++
modules/codec/avcodec/vaapi.c | 38 +++++++++++++++++++++++--
4 files changed, 41 insertions(+), 22 deletions(-)
diff --git a/configure.ac b/configure.ac
index 00afb063c455..089339e10e0b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2550,25 +2550,7 @@ AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
-
-have_avcodec_vaapi="no"
-AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
- VLC_SAVE_FLAGS
- CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
- CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
- AC_CHECK_HEADERS([libavcodec/vaapi.h], [
- AC_MSG_NOTICE([VA API acceleration activated])
- have_avcodec_vaapi="yes"
- ],[
- AS_IF([test -n "${enable_libva}"], [
- AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
- ], [
- AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
- ])
- ])
- VLC_RESTORE_FLAGS
-])
-AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
+AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"])
dnl
dnl dxva2 needs avcodec
diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am
index 6d9465fdaef9..dd04391c1bf7 100644
--- a/modules/codec/Makefile.am
+++ b/modules/codec/Makefile.am
@@ -416,7 +416,7 @@ libvaapi_plugin_la_SOURCES = \
codec/avcodec/vaapi.c hw/vaapi/vlc_vaapi.c hw/vaapi/vlc_vaapi.h
libvaapi_plugin_la_CPPFLAGS = $(AM_CPPFLAGS)
libvaapi_plugin_la_CFLAGS = $(AM_CFLAGS) $(AVCODEC_CFLAGS)
-libvaapi_plugin_la_LIBADD = $(LIBVA_LIBS)
+libvaapi_plugin_la_LIBADD = $(LIBVA_LIBS) $(AVCODEC_LIBS)
if HAVE_AVCODEC_VAAPI
if HAVE_VAAPI_DRM
codec_LTLIBRARIES += libvaapi_drm_plugin.la
diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
index ac02c06d2339..8ab6910f3250 100644
--- a/modules/codec/avcodec/avcommon_compat.h
+++ b/modules/codec/avcodec/avcommon_compat.h
@@ -84,6 +84,9 @@
#ifndef FF_API_AVIO_WRITE_NONCONST // removed in ffmpeg 7
# define FF_API_AVIO_WRITE_NONCONST (LIBAVFORMAT_VERSION_MAJOR < 61)
#endif
+#ifndef FF_API_STRUCT_VAAPI_CONTEXT
+# define FF_API_STRUCT_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
+#endif
#endif /* HAVE_LIBAVCODEC_AVCODEC_H */
diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c
index c83269e43f30..e203baaf9ee2 100644
--- a/modules/codec/avcodec/vaapi.c
+++ b/modules/codec/avcodec/vaapi.c
@@ -42,12 +42,25 @@
# include <va/va_drm.h>
#endif
#include <libavcodec/avcodec.h>
+#if FF_API_STRUCT_VAAPI_CONTEXT
#include <libavcodec/vaapi.h>
+#else
+#include <libavutil/hwcontext_vaapi.h>
+#endif
#include "avcodec.h"
#include "va.h"
#include "../../hw/vaapi/vlc_vaapi.h"
+#if !FF_API_STRUCT_VAAPI_CONTEXT
+struct vaapi_context
+{
+ VADisplay display;
+ VAConfigID config_id;
+ VAContextID context_id;
+};
+#endif
+
struct vlc_va_sys_t
{
struct vlc_vaapi_instance *va_inst;
@@ -145,8 +158,10 @@ static void Delete(vlc_va_t *va, void **hwctx)
(void) hwctx;
- vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id);
- vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id);
+ if (sys->hw_ctx.context_id != VA_INVALID_ID)
+ vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id);
+ if (sys->hw_ctx.config_id != VA_INVALID_ID)
+ vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id);
vlc_vaapi_ReleaseInstance(sys->va_inst);
free(sys);
}
@@ -196,6 +211,7 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *d
sys->hw_ctx.config_id = VA_INVALID_ID;
sys->hw_ctx.context_id = VA_INVALID_ID;
+#if FF_API_STRUCT_VAAPI_CONTEXT
sys->hw_ctx.config_id =
vlc_vaapi_CreateConfigChecked(o, sys->hw_ctx.display, i_profile,
VAEntrypointVLD, i_vlc_chroma);
@@ -211,6 +227,24 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *d
goto error;
ctx->hwaccel_context = &sys->hw_ctx;
+#else
+ AVBufferRef *hwdev_ref = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_VAAPI);
+ if (hwdev_ref == NULL)
+ goto error;
+
+ AVHWDeviceContext *hwdev_ctx = (void *) hwdev_ref->data;
+ AVVAAPIDeviceContext *vadev_ctx = hwdev_ctx->hwctx;
+ vadev_ctx->display = va_dpy;
+
+ if (av_hwdevice_ctx_init(hwdev_ref) < 0)
+ {
+ av_buffer_unref(&hwdev_ref);
+ goto error;
+ }
+
+ ctx->hw_device_ctx = hwdev_ref;
+#endif
+
va->sys = sys;
va->description = vaQueryVendorString(sys->hw_ctx.display);
va->get = Get;
--
GitLab
+11
View File
@@ -0,0 +1,11 @@
project pkg {
arches = ["x86_64", "aarch64", "i386"]
rpm {
spec = "vlc.spec"
extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"]
}
labels {
mock = 1
subrepo = "multimedia"
}
}
+19
View File
@@ -0,0 +1,19 @@
diff --git a/share/vlc.appdata.xml.in.in b/share/vlc.appdata.xml.in.in
index cc9c39a..3c55620 100644
--- a/share/vlc.appdata.xml.in.in
+++ b/share/vlc.appdata.xml.in.in
@@ -18,7 +18,7 @@
<url type="bugtracker">https://trac.videolan.org/vlc/</url>
<url type="donation">https://www.videolan.org/contribute.html</url>
<releases>
- <release version="@VERSION@" />
+ <release version="@VERSION@" date="@DATE@" />
</releases>
<provides>
<library>libvlc.so.5</library>
@@ -38,4 +38,5 @@
<image>http://images.videolan.org/vlc/screenshots/2.0.0/vlc-2.0-gnome3-debian.jpg</image>
</screenshot>
</screenshots>
+ <content_rating type="oars-1.1" />
</component>
+84
View File
@@ -0,0 +1,84 @@
From 6ea9b13fe82fae2b25b7371c6c36d6296db28ccb Mon Sep 17 00:00:00 2001
From: Antonio Larrosa <antonio.larrosa@gmail.com>
Date: Thu, 14 Feb 2019 10:09:30 +0100
Subject: [PATCH] Fix building vlc with libfdk-aac v2
When flushing the encoder, we now need to provide non-null buffer
parameters for everything, even if they are unused.
The encoderDelay parameter has been replaced by two, nDelay and
nDelayCore.
This is based on:
https://git.libav.org/?p=libav.git;a=commitdiff_plain;h=141c960e21d2860e354f9b90df136184dd00a9a8;hp=c8bca9fe466f810fd484e2c6db7ef7bc83b5a943
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
---
modules/codec/fdkaac.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/modules/codec/fdkaac.c b/modules/codec/fdkaac.c
index e0b3088c4a..3ac7b756a3 100644
--- a/modules/codec/fdkaac.c
+++ b/modules/codec/fdkaac.c
@@ -92,6 +92,11 @@ static void CloseEncoder(vlc_object_t *);
#define SIGNALING_COMPATIBLE 1
#define SIGNALING_HIERARCHICAL 2
+#define FDKENC_VER_AT_LEAST(vl0, vl1) \
+ (defined(AACENCODER_LIB_VL0) && \
+ ((AACENCODER_LIB_VL0 > vl0) || \
+ (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1)))
+
static const int pi_aot_values[] = { PROFILE_AAC_LC, PROFILE_AAC_HE, PROFILE_AAC_HE_v2, PROFILE_AAC_LD, PROFILE_AAC_ELD };
static const char *const ppsz_aot_descriptions[] =
{ N_("AAC-LC"), N_("HE-AAC"), N_("HE-AAC-v2"), N_("AAC-LD"), N_("AAC-ELD") };
@@ -288,7 +293,11 @@ static int OpenEncoder(vlc_object_t *p_this)
p_sys->i_maxoutputsize = 768*p_enc->fmt_in.audio.i_channels;
p_enc->fmt_in.audio.i_bitspersample = 16;
p_sys->i_frame_size = info.frameLength;
+#if FDKENC_VER_AT_LEAST(4, 0)
+ p_sys->i_encoderdelay = info.nDelay;
+#else
p_sys->i_encoderdelay = info.encoderDelay;
+#endif
p_enc->fmt_out.i_extra = info.confSize;
if (p_enc->fmt_out.i_extra) {
@@ -351,21 +360,27 @@ static block_t *EncodeAudio(encoder_t *p_enc, block_t *p_aout_buf)
int out_identifier = OUT_BITSTREAM_DATA;
int out_size, out_elem_size;
void *in_ptr, *out_ptr;
+ uint8_t dummy_buf[1];
if (unlikely(i_samples == 0)) {
// this forces the encoder to purge whatever is left in the internal buffer
+ /* Must be a non-null pointer, even if it's a dummy. We could use
+ * the address of anything else on the stack as well. */
+ in_ptr = dummy_buf;
+ in_size = 0;
+
in_args.numInSamples = -1;
} else {
in_ptr = p_buffer + (i_samples - i_samples_left)*p_enc->fmt_in.audio.i_channels;
in_size = 2*p_enc->fmt_in.audio.i_channels*i_samples_left;
- in_elem_size = 2;
in_args.numInSamples = p_enc->fmt_in.audio.i_channels*i_samples_left;
- in_buf.numBufs = 1;
- in_buf.bufs = &in_ptr;
- in_buf.bufferIdentifiers = &in_identifier;
- in_buf.bufSizes = &in_size;
- in_buf.bufElSizes = &in_elem_size;
}
+ in_elem_size = 2;
+ in_buf.numBufs = 1;
+ in_buf.bufs = &in_ptr;
+ in_buf.bufferIdentifiers = &in_identifier;
+ in_buf.bufSizes = &in_size;
+ in_buf.bufElSizes = &in_elem_size;
block_t *p_block;
p_block = block_Alloc(p_sys->i_maxoutputsize);
p_block->i_buffer = p_sys->i_maxoutputsize;
--
2.11.0
+239
View File
@@ -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
+49
View File
@@ -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;
+17
View File
@@ -0,0 +1,17 @@
diff -up vlc-3.0.21/modules/access/live555.cpp.orig vlc-3.0.21/modules/access/live555.cpp
--- vlc-3.0.21/modules/access/live555.cpp.orig 2024-06-05 17:56:07.000000000 +0200
+++ vlc-3.0.21/modules/access/live555.cpp 2024-12-06 11:41:08.633053039 +0100
@@ -236,8 +236,13 @@ struct demux_sys_t
bool b_no_data; /* if we never received any data */
int i_no_data_ti; /* consecutive number of TaskInterrupt */
+#if LIVEMEDIA_LIBRARY_VERSION_INT >= 1732752000
+ std::atomic_char event_rtsp;
+ std::atomic_char event_data;
+#else
char event_rtsp;
char event_data;
+#endif
bool b_get_param; /* Does the server support GET_PARAMETER */
bool b_paused; /* Are we paused? */
+11
View File
@@ -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
+1
View File
@@ -0,0 +1 @@
%vlc_plugindir %{_libdir}/vlc/plugins
+48
View File
@@ -0,0 +1,48 @@
Backport of https://code.videolan.org/videolan/vlc/-/merge_requests/3843
"Switch from deprecated MFX to VPL" for 3.0, as direct use of intel-mediasdk
is deprecated in favour of oneVPL.
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -2923,9 +2923,9 @@ fi
dnl
-dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
+dnl Intel oneAPI Video Processing Library
dnl
-PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
+PKG_ENABLE_MODULES_VLC([VPL], [qsv], [vpl], [Intel oneAPI Video Processing Library encoder], [auto])
dnl
dnl libfluidsynth (MIDI synthetizer) plugin
diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am
--- a/modules/codec/Makefile.am
+++ b/modules/codec/Makefile.am
@@ -610,9 +610,9 @@ codec_LTLIBRARIES += $(LTLIBdav1d)
codec_LTLIBRARIES += $(LTLIBcrystalhd)
libqsv_plugin_la_SOURCES = codec/qsv.c
-libqsv_plugin_la_CFLAGS = $(AM_CFLAGS) $(MFX_CFLAGS)
+libqsv_plugin_la_CFLAGS = $(AM_CFLAGS) $(VPL_CFLAGS)
libqsv_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'
-libqsv_plugin_la_LIBADD = $(MFX_LIBS)
+libqsv_plugin_la_LIBADD = $(VPL_LIBS)
EXTRA_LTLIBRARIES += libqsv_plugin.la
codec_LTLIBRARIES += $(LTLIBqsv)
diff --git a/modules/codec/qsv.c b/modules/codec/qsv.c
--- a/modules/codec/qsv.c
+++ b/modules/codec/qsv.c
@@ -33,7 +33,7 @@
#include <vlc_picture.h>
#include <vlc_codec.h>
-#include <mfx/mfxvideo.h>
+#include <vpl/mfxvideo.h>
#define SOUT_CFG_PREFIX "sout-qsv-"
--
GitLab
+1
View File
@@ -0,0 +1 @@
rpm.version(find(`\"name\":\"Linux\",\"latestVersion\":\"([\d.]+)\"`, get(`https://www.videolan.org/vlc/`), 1));
File diff suppressed because it is too large Load Diff
-17
View File
@@ -1,17 +0,0 @@
diff --git a/cmake/targets/BuildBrotli.cmake b/cmake/targets/BuildBrotli.cmake
index f9bc8d9601..8d9bfaf956 100644
--- a/cmake/targets/BuildBrotli.cmake
+++ b/cmake/targets/BuildBrotli.cmake
@@ -7,12 +7,6 @@ register_repository(
v1.1.0
)
-# Tests fail with "BrotliDecompressionError" when LTO is enabled
-# only on Linux x64 (non-baseline). It's a mystery.
-if(LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|X86_64|x64|X64|amd64|AMD64" AND NOT ENABLE_BASELINE)
- set(BROTLI_CMAKE_ARGS "-DCMAKE_C_FLAGS=-fno-lto")
-endif()
-
register_cmake_command(
TARGET
brotli
+1 -4
View File
@@ -1,8 +1,5 @@
project pkg {
rpm {
spec = "bun.spec"
}
labels {
updbranch = 1
spec = "bun-bin.spec"
}
}
+69
View File
@@ -0,0 +1,69 @@
%define debug_package %nil
%ifarch x86_64
%global a x64-baseline
%elifarch aarch64
%global a aarch64
%endif
%global appid sh.oven.bun
Name: bun-bin
Version: 1.3.5
Release: 1%?dist
Summary: Incredibly fast JavaScript runtime, bundler, test runner, and package manager all in one
License: MIT
URL: https://bun.sh
Source0: https://github.com/oven-sh/bun/releases/download/bun-v%version/bun-linux-%a.zip
Source1: sh.oven.bun.metainfo.xml
BuildRequires: unzip anda-srpm-macros terra-appstream-helper
%description
%summary.
%pkg_completion -bfz bun
%prep
%autosetup -n bun-linux-%a
cat<<EOF > LICENSE
MIT License
Copyright (c) Jarred Sumner
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
EOF
%install
declare -a shells=("zsh" "bash" "fish")
for s in "${shells[@]}"; do
SHELL=$s ./bun completions > bun.$s
done
install -Dpm755 bun -t %buildroot%_bindir
install -Dm644 bun.zsh %buildroot%zsh_completions_dir/_bun
install -Dm644 bun.bash -t %buildroot%bash_completions_dir
install -Dm644 bun.fish -t %buildroot%fish_completions_dir
ln -s bun %buildroot%_bindir/bunx
%terra_appstream -o %{SOURCE1}
%files
%license LICENSE
%_bindir/bun
%_bindir/bunx
%{_datadir}/metainfo/sh.oven.bun.metainfo.xml
@@ -1,24 +0,0 @@
From 1d33218cfda59b6656aca0a7d85236e93c37658b Mon Sep 17 00:00:00 2001
From: Carl Smedstad <carsme@archlinux.org>
Date: Thu, 25 Dec 2025 14:37:31 +0100
Subject: [PATCH 1/2] Fix webkit include paths
---
cmake/tools/SetupWebKit.cmake | 1 +
1 file changed, 1 insertion(+)
diff --git a/cmake/tools/SetupWebKit.cmake b/cmake/tools/SetupWebKit.cmake
index aa07c060ec..29c4def156 100644
--- a/cmake/tools/SetupWebKit.cmake
+++ b/cmake/tools/SetupWebKit.cmake
@@ -28,6 +28,7 @@ if(WEBKIT_LOCAL)
# make jsc-compile-debug jsc-copy-headers
include_directories(
${WEBKIT_PATH}
+ ${WEBKIT_PATH}/JavaScriptCore/Headers
${WEBKIT_PATH}/JavaScriptCore/Headers/JavaScriptCore
${WEBKIT_PATH}/JavaScriptCore/PrivateHeaders
${WEBKIT_PATH}/bmalloc/Headers
--
2.52.0
-204
View File
@@ -1,204 +0,0 @@
%global appid sh.oven.Bun
# Bun REQUIRES Clang, it uses flags GCC cannot support such as -glldb
%global toolchain clang
%if 0%{?fedora} >= 42
%global llvm_major 20
%global __cc clang-%{llvm_major}
%global __cxx clang++-%{llvm_major}
%global __cpp clang-cpp-%{llvm_major}
%endif
%global zig_version 0.15.2
# We love programs with multiple levels of bootstrapping
%bcond bootstrap 1
%bcond webkit 1
%bcond self_build %{without bootstrap}
Name: bun
Version: 1.3.5
Release: 2%?dist
Summary: Incredibly fast JavaScript runtime, bundler, test runner, and package manager all in one
License: MIT
URL: https://bun.sh
Source0: https://github.com/oven-sh/bun/archive/refs/tags/%{name}-v%{version}.tar.gz
Source1: sh.oven.Bun.metainfo.xml
Patch0: bun-fix-webkit-include-paths.patch
BuildRequires: anda-srpm-macros
%if %{with self_build}
BuildRequires: bun
%endif
BuildRequires: cargo
BuildRequires: cargo-rpm-macros
BuildRequires: ccache
BuildRequires: clang%{?llvm_major}
BuildRequires: cmake
BuildRequires: cmake-rpm-macros
%if %{with webkit}
BuildRequires: git-core
%endif
BuildRequires: golang
BuildRequires: glibc-common
BuildRequires: glibc-devel
BuildRequires: libatomic-static
BuildRequires: libicu-devel
BuildRequires: libdeflate-devel
BuildRequires: libstdc++-static
BuildRequires: libtool
BuildRequires: lld%{?llvm_major}
BuildRequires: llvm%{?llvm_major}
BuildRequires: mold
BuildRequires: ninja-build
BuildRequires: nodejs
BuildRequires: pkg-config
%if %{with webkit}
BuildRequires: perl(English)
BuildRequires: perl(FindBin)
BuildRequires: perl(JSON::PP)
BuildRequires: perl(Math::BigInt::Trace)
%endif
BuildRequires: perl(Math::BigInt)
BuildRequires: python3
BuildRequires: python3-devel
BuildRequires: ruby
BuildRequires: ruby-bundled-gems
BuildRequires: sed
BuildRequires: unzip
%if %{with bootstrap}
BuildRequires: yarnpkg-berry
%endif
BuildRequires: zig
Requires: c-ares
Requires: libarchive
Requires: libuv
Requires: mimalloc
Requires: (zlib-ng-compat or zlib)
Requires: zstd
Obsoletes: bun-bin <= 1.3.5
%description
%summary.
%package doc
Summary: Doc files for Bun.
%description doc
Documentation for Bun.
%pkg_completion -bfz bun
%prep
%autosetup -p1 -n %{name}-%{name}-v%{version}
%cargo_prep_online
%if %{with webkit}
git clone -c advice.detachedHead=false --recurse-submodules %{?_smp_mflags} https://github.com/oven-sh/WebKit.git vendor/WebKit --depth 1 -b autobuild-$(grep -Eom1 [a-f0-9]{40} cmake/tools/SetupWebKit.cmake)
%endif
%build
#CXXFLAGS="-Wno-unused-result ${CXXFLAGS}"
#export CFLAGS="-Wno-unused-command-line-argument -I%{_includedir}/pthread.h"
#export CXXFLAGS="-Wno-unused-command-line-argument -Wno-unused-result -Wno-missing-braces -Wno-reorder-ctor -Wno-unused-variable -Wno-unused-function -Wno-logical-op-parentheses -Wno-overloaded-virtual -fno-c++-static-destructors -include %{_includedir}/c++/*/cstdint"
%if %{with bootstrap}
%set_node_build_flags
%endif
# Force build Cargo config
export CARGO_HOME="%{_cargo_home}"
%if %{defined llvm_major}
export LLVM_DIR=%{_libdir}/llvm%{?llvm_major}/%{_lib}/cmake
%endif
%if %{with webkit}
pushd vendor/WebKit
%cmake \
-DCMAKE_BUILD_TYPE="Release" \
-Wno-dev \
-DPORT="JSCOnly" \
-DENABLE_STATIC_JSC="ON" \
-DALLOW_LINE_AND_COLUMN_NUMBER_IN_BUILTINS="ON" \
-DUSE_THIN_ARCHIVES="OFF" \
-DUSE_BUN_JSC_ADDITIONS="ON" \
-DUSE_BUN_EVENT_LOOP="ON" \
-DENABLE_FTL_JIT="ON" \
-DALLOW_LINE_AND_COLUMN_NUMBER_IN_BUILTINS="ON" \
-DJSEXPORT_PRIVATE="WTF_EXPORT_DECLARATION" \
-DUSE_VISIBILITY_ATTRIBUTE="1" \
-DENABLE_REMOTE_INSPECTOR="ON" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_CXX_FLAGS="$CXXFLAGS -fno-c++-static-destructors" \
-DCMAKE_C_COMPILER="$CC" \
-DCMAKE_CXX_COMPILER="$CXX" \
-DCMAKE_LINKER="ld.lld%{?llvm_major:-%{llvm_major}}" \
-DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -fuse-ld=lld%{?llvm_major:-%{llvm_major}}" \
-DBUILD_SHARED_LIBS:BOOL="OFF"
%cmake_build --target jsc
rm %{__cmake_builddir}/JavaScriptCore/DerivedSources/inspector/InspectorProtocolObjects.h
# Link system ICU libs
ln -s %{_libdir}/libicudata.so.77.1 %{__cmake_builddir}/lib/libicudata.a
ln -s %{_libdir}/libicui18n.so.77.1 %{__cmake_builddir}/lib/libicui18n.a
ln -s %{_libdir}/libicuuc.so.77.1 %{__cmake_builddir}/lib/libicuuc.a
popd
%endif
# Use system Zig if it is new enough
%if %["%{zig_version}" >= "0.15.2"]
rm -rf vendor/zig
mkdir -p vendor/zig
ln -sf /usr/lib/zig vendor/zig/lib
ln -sf /usr/bin/zig vendor/zig/zig
%else
%cmake \
%endif
%{!?with_bootstrap:%{?with_self_build:%{__bun}}}%{?with_bootstrap:%{__yarn_dlx} bun} ./scripts/glob-sources.mjs
%cmake \
-DCMAKE_BUILD_TYPE="Release" \
-DUSE_STATIC_LIBATOMIC="OFF" \
-DENABLE_CCACHE="ON" \
-DENABLE_LTO="ON" \
-DUSE_STATIC_SQLITE="OFF" \
%ifnarch x86_64_v3 x86_64_v4
-DENABLE_BASELINE="ON" \
%endif
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_COMPILER="$CC" \
-DCMAKE_CXX_COMPILER="$CXX" \
-DCMAKE_LINKER="ld.lld%{?llvm_major:-%{llvm_major}}" \
-DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -fuse-ld=lld%{?llvm_major:-%{llvm_major}}" \
-DCMAKE_AR="/usr/bin/llvm-ar%{?llvm_major:-%{llvm_major}}" \
-DLLD_PROGRAM="ld.lld%{?llvm_major:-%{llvm_major}}" \
-DUSE_STATIC_SQLITE="OFF" \
-DALWAYS_RUN \
%if %["%{zig version}" >= "0.15.2"]
-DZIG_PATH="/usr/bin/zig" \
%endif
-DBUILD_SHARED_LIBS:BOOL="OFF" \
%if %{with webkit}
-DWEBKIT_LOCAL="ON" \
-DWEBKIT_PATH="$PWD/vendor/WebKit/%{__cmake_builddir}"
%endif
%cmake_build --target %{name}
%install
%cmake_install
%terra_appstream -o %{SOURCE1}
%files
%doc README.md
%license LICENSE
%{_bindir}/bun
%{_bindir}/bunx
%{_datadir}/metainfo/sh.oven.Bun.metainfo.xml
%files doc
%doc docs/*
-6
View File
@@ -1,7 +1 @@
import anda/bump_extras.rhai as bump;
rpm.version(gh_rawfile("oven-sh/bun", "main", "LATEST"));
if rpm.changed {
rpm.global("zig_version", bump::bodhi("zig", as_bodhi_ver(labels.branch)));
}
+1 -1
View File
@@ -1,5 +1,5 @@
Name: limine
Version: 10.5.0
Version: 10.5.1
Release: 1%?dist
Summary: Modern, advanced, portable, multiprotocol bootloader
License: BSD-2-Clause