mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-25 19:40:35 -09:00
Added four upstream patches backported from FreeRDP 3.x.
The remaining build error:
/home/bernd/buildroot/output/build/freerdp-2.11.7-18-g0ee17e2f8e49d56ab5b90d5160fa8f87ffc445e0/
channels/client/tables.c:129:22:
error: initialization of ‘UINT (*)(void)’ {aka ‘unsigned int (*)(void)’}
from incompatible pointer type ‘UINT (*)(void *)’ {aka ‘unsigned int (*)(void *)’}
[-Wincompatible-pointer-types]
129 | { "oss", "", oss_freerdp_rdpsnd_client_subsystem_entry },
is fixed by adding -Wno-incompatible-pointer-types to CFLAGS due to
tables.c being dynamically created during the build and backporting the
supposed upstream fix
fe6d861a5c
is too invasive.
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
147 lines
5.7 KiB
Diff
147 lines
5.7 KiB
Diff
From 83bda60872d2f8f4230de53a645112d8239b67ba Mon Sep 17 00:00:00 2001
|
|
From: Armin Novak <armin.novak@thincast.com>
|
|
Date: Wed, 7 Jun 2023 11:46:07 +0200
|
|
Subject: [PATCH] fix ffmpeg deprecations
|
|
|
|
Upstream: https://github.com/FreeRDP/FreeRDP/commit/d0c5b1ae4289c7f3cde3fbc031cb4a3160df05ff
|
|
|
|
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
|
|
---
|
|
libfreerdp/codec/dsp_ffmpeg.c | 54 +++++++++++++++++++++++++++--------
|
|
1 file changed, 42 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/libfreerdp/codec/dsp_ffmpeg.c b/libfreerdp/codec/dsp_ffmpeg.c
|
|
index 80df18833..22d6ce215 100644
|
|
--- a/libfreerdp/codec/dsp_ffmpeg.c
|
|
+++ b/libfreerdp/codec/dsp_ffmpeg.c
|
|
@@ -225,18 +225,17 @@ static void ffmpeg_close_context(FREERDP_DSP_CONTEXT* context)
|
|
static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
|
|
{
|
|
int ret;
|
|
- int layout;
|
|
- const AUDIO_FORMAT* format;
|
|
|
|
if (!context || context->isOpen)
|
|
return FALSE;
|
|
|
|
- format = &context->format;
|
|
+ const AUDIO_FORMAT* format = &context->format;
|
|
|
|
if (!format)
|
|
return FALSE;
|
|
-
|
|
- layout = av_get_default_channel_layout(format->nChannels);
|
|
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
|
|
+ const int layout = av_get_default_channel_layout(format->nChannels);
|
|
+#endif
|
|
context->id = ffmpeg_get_avcodec(format);
|
|
|
|
if (ffmpeg_codec_is_filtered(context->id, context->encoder))
|
|
@@ -270,8 +269,12 @@ static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
|
|
break;
|
|
}
|
|
|
|
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
|
|
context->context->channels = format->nChannels;
|
|
context->context->channel_layout = layout;
|
|
+#else
|
|
+ av_channel_layout_default(&context->context->ch_layout, format->nChannels);
|
|
+#endif
|
|
context->context->sample_rate = format->nSamplesPerSec;
|
|
context->context->block_align = format->nBlockAlign;
|
|
context->context->bit_rate = format->nAvgBytesPerSec * 8;
|
|
@@ -314,8 +317,12 @@ static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
|
|
if (!context->rcontext)
|
|
goto fail;
|
|
|
|
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
|
|
context->frame->channel_layout = layout;
|
|
context->frame->channels = format->nChannels;
|
|
+#else
|
|
+ av_channel_layout_default(&context->frame->ch_layout, format->nChannels);
|
|
+#endif
|
|
context->frame->sample_rate = format->nSamplesPerSec;
|
|
context->frame->format = AV_SAMPLE_FMT_S16;
|
|
|
|
@@ -330,13 +337,21 @@ static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
|
|
context->resampled->sample_rate = format->nSamplesPerSec;
|
|
}
|
|
|
|
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
|
|
context->resampled->channel_layout = layout;
|
|
context->resampled->channels = format->nChannels;
|
|
+#else
|
|
+ av_channel_layout_default(&context->resampled->ch_layout, format->nChannels);
|
|
+#endif
|
|
|
|
if (context->context->frame_size > 0)
|
|
{
|
|
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
|
|
context->buffered->channel_layout = context->resampled->channel_layout;
|
|
context->buffered->channels = context->resampled->channels;
|
|
+#else
|
|
+ av_channel_layout_copy(&context->buffered->ch_layout, &context->resampled->ch_layout);
|
|
+#endif
|
|
context->buffered->format = context->resampled->format;
|
|
context->buffered->nb_samples = context->context->frame_size;
|
|
|
|
@@ -477,14 +492,20 @@ static BOOL ffmpeg_fill_frame(AVFrame* frame, const AUDIO_FORMAT* inputFormat, c
|
|
size_t size)
|
|
{
|
|
int ret, bpp;
|
|
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
|
|
frame->channels = inputFormat->nChannels;
|
|
+ frame->channel_layout = av_get_default_channel_layout(frame->channels);
|
|
+#else
|
|
+ av_channel_layout_default(&frame->ch_layout, inputFormat->nChannels);
|
|
+#endif
|
|
frame->sample_rate = inputFormat->nSamplesPerSec;
|
|
frame->format = ffmpeg_sample_format(inputFormat);
|
|
- frame->channel_layout = av_get_default_channel_layout(frame->channels);
|
|
+
|
|
bpp = av_get_bytes_per_sample(frame->format);
|
|
frame->nb_samples = size / inputFormat->nChannels / bpp;
|
|
|
|
- if ((ret = avcodec_fill_audio_frame(frame, frame->channels, frame->format, data, size, 1)) < 0)
|
|
+ if ((ret = avcodec_fill_audio_frame(frame, inputFormat->nChannels, frame->format, data, size,
|
|
+ 1)) < 0)
|
|
{
|
|
const char* err = av_err2str(ret);
|
|
WLog_ERR(TAG, "Error during audio frame fill %s [%d]", err, ret);
|
|
@@ -566,7 +587,12 @@ static BOOL ffmpeg_decode(AVCodecContext* dec_ctx, AVPacket* pkt, AVFrame* frame
|
|
}
|
|
|
|
{
|
|
- const size_t data_size = resampled->channels * resampled->nb_samples * 2;
|
|
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
|
|
+ const size_t channels = resampled->channels;
|
|
+#else
|
|
+ const size_t channels = resampled->ch_layout.nb_channels;
|
|
+#endif
|
|
+ const size_t data_size = channels * resampled->nb_samples * 2;
|
|
Stream_EnsureRemainingCapacity(out, data_size);
|
|
Stream_Write(out, resampled->data[0], data_size);
|
|
}
|
|
@@ -661,10 +687,14 @@ BOOL freerdp_dsp_ffmpeg_encode(FREERDP_DSP_CONTEXT* context, const AUDIO_FORMAT*
|
|
if (inSamples + (int)context->bufferedSamples > context->context->frame_size)
|
|
inSamples = context->context->frame_size - (int)context->bufferedSamples;
|
|
|
|
- rc =
|
|
- av_samples_copy(context->buffered->extended_data, context->resampled->extended_data,
|
|
- (int)context->bufferedSamples, copied, inSamples,
|
|
- context->context->channels, context->context->sample_fmt);
|
|
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
|
|
+ const int channels = context->context->channels;
|
|
+#else
|
|
+ const int channels = context->context->ch_layout.nb_channels;
|
|
+#endif
|
|
+ rc = av_samples_copy(context->buffered->extended_data,
|
|
+ context->resampled->extended_data, (int)context->bufferedSamples,
|
|
+ copied, inSamples, channels, context->context->sample_fmt);
|
|
rest -= inSamples;
|
|
copied += inSamples;
|
|
context->bufferedSamples += (UINT32)inSamples;
|
|
--
|
|
2.47.3
|
|
|