depot/third_party/nixpkgs/pkgs/servers/misc/oven-media-engine/support-ffmpeg-7.patch
Default email 159e378cbb Project import generated by Copybara.
GitOrigin-RevId: c04d5652cfa9742b1d519688f65d1bbccea9eb7e
2024-09-19 17:19:46 +03:00

829 lines
42 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 6ca213328dc9f63cd9b39768b4c1d5953c71219c Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 19:25:57 +0200
Subject: [PATCH 01/12] Update ffmpeg version to 7.0
---
misc/prerequisites.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/misc/prerequisites.sh b/misc/prerequisites.sh
index a647558d3..eb4505cdc 100755
--- a/misc/prerequisites.sh
+++ b/misc/prerequisites.sh
@@ -13,7 +13,7 @@ OPUS_VERSION=1.3.1
VPX_VERSION=1.11.0
FDKAAC_VERSION=2.0.2
NASM_VERSION=2.15.05
-FFMPEG_VERSION=5.0.1
+FFMPEG_VERSION=7.0
JEMALLOC_VERSION=5.3.0
PCRE2_VERSION=10.39
OPENH264_VERSION=2.4.0
From 80b015e5374a2e4aa3f850a6797ff066860caa3d Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 19:26:26 +0200
Subject: [PATCH 02/12] ffmpeg Update: stream->codecpar->channel_layout to
ch_layout
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
```
[ 17/505| 3%] [static] libapi_server.a: C++ projects/api_server/controllers/v1/vhosts/apps/output_profiles/output_profiles_controller.cpp => intermediates/RELEASE/objs/api_server/controllers/v1/vhosts/apps/output_profiles/output_profiles_controller.o
In file included from projects/providers/multiplex/multiplex_stream.h:11,
from projects/providers/multiplex/multiplex_application.h:16,
from projects/api_server/controllers/v1/vhosts/apps/multiplex_channels/multiplex_channels_controller.cpp:13:
projects/modules/ffmpeg/ffmpeg_conv.h: In static member function static bool ffmpeg::Conv::ToMediaTrack(AVStream*, std::shared_ptr<MediaTrack>):
projects/modules/ffmpeg/ffmpeg_conv.h:375:130: error: AVCodecParameters {aka struct AVCodecParameters} has no member named channel_layout; did you mean ch_layout?
375 | media_track->GetChannel().SetLayout(ffmpeg::Conv::ToAudioChannelLayout(stream->codecpar->channel_layout));
| ^~~~~~~~~~~~~~
| ch_layout
```
---
src/projects/modules/ffmpeg/ffmpeg_conv.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/projects/modules/ffmpeg/ffmpeg_conv.h b/src/projects/modules/ffmpeg/ffmpeg_conv.h
index 115864a05..c7eb3da34 100644
--- a/src/projects/modules/ffmpeg/ffmpeg_conv.h
+++ b/src/projects/modules/ffmpeg/ffmpeg_conv.h
@@ -373,7 +373,7 @@ namespace ffmpeg
case cmn::MediaType::Audio:
media_track->SetSampleRate(stream->codecpar->sample_rate);
media_track->GetSample().SetFormat(ffmpeg::Conv::ToAudioSampleFormat(stream->codecpar->format));
- media_track->GetChannel().SetLayout(ffmpeg::Conv::ToAudioChannelLayout(stream->codecpar->channel_layout));
+ media_track->GetChannel().SetLayout(ffmpeg::Conv::ToAudioChannelLayout(stream->codecpar->ch_layout));
break;
default:
break;
From 29d3b3dbd7f3d0d05b71cb5f5f41f3396304b389 Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 19:26:26 +0200
Subject: [PATCH 03/12] ffmpeg Update: Replace deprecated channel_layout with
ch_layout.u.mask
```
/**
* Audio only. The channel layout bitmask. May be 0 if the channel layout is
* unknown or unspecified, otherwise the number of bits set must be equal to
* the channels field.
* @deprecated use ch_layout
*/
attribute_deprecated
uint64_t channel_layout;
```
---
src/projects/modules/ffmpeg/ffmpeg_conv.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/projects/modules/ffmpeg/ffmpeg_conv.h b/src/projects/modules/ffmpeg/ffmpeg_conv.h
index c7eb3da34..1be2ccb90 100644
--- a/src/projects/modules/ffmpeg/ffmpeg_conv.h
+++ b/src/projects/modules/ffmpeg/ffmpeg_conv.h
@@ -373,7 +373,7 @@ namespace ffmpeg
case cmn::MediaType::Audio:
media_track->SetSampleRate(stream->codecpar->sample_rate);
media_track->GetSample().SetFormat(ffmpeg::Conv::ToAudioSampleFormat(stream->codecpar->format));
- media_track->GetChannel().SetLayout(ffmpeg::Conv::ToAudioChannelLayout(stream->codecpar->ch_layout));
+ media_track->GetChannel().SetLayout(ffmpeg::Conv::ToAudioChannelLayout(stream->codecpar->ch_layout.u.mask));
break;
default:
break;
@@ -493,7 +493,7 @@ namespace ffmpeg
media_frame->SetMediaType(media_type);
media_frame->SetBytesPerSample(::av_get_bytes_per_sample(static_cast<AVSampleFormat>(frame->format)));
media_frame->SetNbSamples(frame->nb_samples);
- media_frame->GetChannels().SetLayout(ffmpeg::Conv::ToAudioChannelLayout(frame->channel_layout));
+ media_frame->GetChannels().SetLayout(ffmpeg::Conv::ToAudioChannelLayout(frame->ch_layout.u.mask));
media_frame->SetSampleRate(frame->sample_rate);
media_frame->SetFormat(frame->format);
media_frame->SetDuration(frame->pkt_duration);
From 86d3cd217e6b59ee6ab85400548ccc2697045f21 Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 19:46:33 +0200
Subject: [PATCH 04/12] ffmpeg Update: Replace deprecated frame->pkt_duration
with duration
```
/**
* duration of the corresponding packet, expressed in
* AVStream->time_base units, 0 if unknown.
* - encoding: unused
* - decoding: Read by user.
*
* @deprecated use duration instead
*/
attribute_deprecated
int64_t pkt_duration;
```
---
src/projects/modules/ffmpeg/ffmpeg_conv.h | 4 ++--
src/projects/transcoder/codec/decoder/decoder_aac.cpp | 6 +++---
src/projects/transcoder/codec/decoder/decoder_avc.cpp | 4 ++--
.../transcoder/codec/decoder/decoder_avc_nilogan.cpp | 4 ++--
src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp | 4 ++--
src/projects/transcoder/codec/decoder/decoder_avc_qsv.cpp | 4 ++--
src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp | 4 ++--
src/projects/transcoder/codec/decoder/decoder_hevc.cpp | 4 ++--
.../transcoder/codec/decoder/decoder_hevc_nilogan.cpp | 4 ++--
src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp | 4 ++--
src/projects/transcoder/codec/decoder/decoder_hevc_qsv.cpp | 4 ++--
src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp | 4 ++--
src/projects/transcoder/codec/decoder/decoder_mp3.cpp | 6 +++---
src/projects/transcoder/codec/decoder/decoder_opus.cpp | 6 +++---
src/projects/transcoder/codec/decoder/decoder_vp8.cpp | 2 +-
15 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/src/projects/modules/ffmpeg/ffmpeg_conv.h b/src/projects/modules/ffmpeg/ffmpeg_conv.h
index 1be2ccb90..06d4107c8 100644
--- a/src/projects/modules/ffmpeg/ffmpeg_conv.h
+++ b/src/projects/modules/ffmpeg/ffmpeg_conv.h
@@ -478,7 +478,7 @@ namespace ffmpeg
media_frame->SetHeight(frame->height);
media_frame->SetFormat(frame->format);
media_frame->SetPts((frame->pts == AV_NOPTS_VALUE) ? -1LL : frame->pts);
- media_frame->SetDuration(frame->pkt_duration);
+ media_frame->SetDuration(frame->duration);
AVFrame* moved_frame = av_frame_alloc();
av_frame_move_ref(moved_frame, frame);
@@ -496,7 +496,7 @@ namespace ffmpeg
media_frame->GetChannels().SetLayout(ffmpeg::Conv::ToAudioChannelLayout(frame->ch_layout.u.mask));
media_frame->SetSampleRate(frame->sample_rate);
media_frame->SetFormat(frame->format);
- media_frame->SetDuration(frame->pkt_duration);
+ media_frame->SetDuration(frame->duration);
media_frame->SetPts((frame->pts == AV_NOPTS_VALUE) ? -1LL : frame->pts);
AVFrame* moved_frame = av_frame_alloc();
diff --git a/src/projects/transcoder/codec/decoder/decoder_aac.cpp b/src/projects/transcoder/codec/decoder/decoder_aac.cpp
index c1302d50a..1fbefdae3 100644
--- a/src/projects/transcoder/codec/decoder/decoder_aac.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_aac.cpp
@@ -215,16 +215,16 @@ void DecoderAAC::CodecThread()
}
// If there is no duration, the duration is calculated by timebase.
- if (_frame->pkt_duration <= 0LL)
+ if (_frame->duration <= 0LL)
{
- _frame->pkt_duration = ffmpeg::Conv::GetDurationPerFrame(cmn::MediaType::Audio, GetRefTrack(), _frame);
+ _frame->duration = ffmpeg::Conv::GetDurationPerFrame(cmn::MediaType::Audio, GetRefTrack(), _frame);
}
// If the decoded audio frame does not have a PTS, Increase frame duration time in PTS of previous frame
if(_frame->pts == AV_NOPTS_VALUE)
{
- _frame->pts = _last_pkt_pts + _frame->pkt_duration;
+ _frame->pts = _last_pkt_pts + _frame->duration;
}
auto output_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Audio, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc.cpp b/src/projects/transcoder/codec/decoder/decoder_avc.cpp
index 1ec6f185e..b7339e71c 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc.cpp
@@ -270,9 +270,9 @@ void DecoderAVC::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp b/src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp
index 50b829a93..7bb959102 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp
@@ -292,9 +292,9 @@ void DecoderAVCxNILOGAN::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp b/src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp
index d6a444901..d5b82f2f6 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp
@@ -271,9 +271,9 @@ void DecoderAVCxNV::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / (double) GetRefTrack()->GetTimeBase().GetExpr() );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / (double) GetRefTrack()->GetTimeBase().GetExpr() );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc_qsv.cpp b/src/projects/transcoder/codec/decoder/decoder_avc_qsv.cpp
index 541040a2d..595065866 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc_qsv.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc_qsv.cpp
@@ -210,9 +210,9 @@ void DecoderAVCxQSV::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp b/src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp
index b4bc8b896..494c5f910 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp
@@ -295,9 +295,9 @@ void DecoderAVCxXMA::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_hevc.cpp b/src/projects/transcoder/codec/decoder/decoder_hevc.cpp
index eea80b21b..0c58fec8c 100755
--- a/src/projects/transcoder/codec/decoder/decoder_hevc.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_hevc.cpp
@@ -261,9 +261,9 @@ void DecoderHEVC::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_hevc_nilogan.cpp b/src/projects/transcoder/codec/decoder/decoder_hevc_nilogan.cpp
index e5868db24..60a68ef87 100644
--- a/src/projects/transcoder/codec/decoder/decoder_hevc_nilogan.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_hevc_nilogan.cpp
@@ -257,9 +257,9 @@ void DecoderHEVCxNILOGAN::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp b/src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp
index 76f7f5ed1..44fe91828 100644
--- a/src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp
@@ -260,9 +260,9 @@ void DecoderHEVCxNV::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_hevc_qsv.cpp b/src/projects/transcoder/codec/decoder/decoder_hevc_qsv.cpp
index c7ec0d137..c8531e0ba 100644
--- a/src/projects/transcoder/codec/decoder/decoder_hevc_qsv.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_hevc_qsv.cpp
@@ -208,9 +208,9 @@ void DecoderHEVCxQSV::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp b/src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp
index 521dc12ef..1f971b4f6 100644
--- a/src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp
@@ -295,9 +295,9 @@ void DecoderHEVCxXMA::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- if(_frame->pkt_duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
+ if(_frame->duration <= 0LL && _context->framerate.num > 0 && _context->framerate.den > 0)
{
- _frame->pkt_duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
+ _frame->duration = (int64_t)( ((double)_context->framerate.den / (double)_context->framerate.num) / ((double) GetRefTrack()->GetTimeBase().GetNum() / (double) GetRefTrack()->GetTimeBase().GetDen()) );
}
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_mp3.cpp b/src/projects/transcoder/codec/decoder/decoder_mp3.cpp
index a53c2f831..c7301a1cf 100644
--- a/src/projects/transcoder/codec/decoder/decoder_mp3.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_mp3.cpp
@@ -215,16 +215,16 @@ void DecoderMP3::CodecThread()
}
// If there is no duration, the duration is calculated by timebase.
- if (_frame->pkt_duration <= 0LL)
+ if (_frame->duration <= 0LL)
{
- _frame->pkt_duration = ffmpeg::Conv::GetDurationPerFrame(cmn::MediaType::Audio, GetRefTrack(), _frame);
+ _frame->duration = ffmpeg::Conv::GetDurationPerFrame(cmn::MediaType::Audio, GetRefTrack(), _frame);
}
// If the decoded audio frame does not have a PTS, Increase frame duration time in PTS of previous frame
if(_frame->pts == AV_NOPTS_VALUE)
{
- _frame->pts = _last_pkt_pts + _frame->pkt_duration;
+ _frame->pts = _last_pkt_pts + _frame->duration;
}
auto output_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Audio, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_opus.cpp b/src/projects/transcoder/codec/decoder/decoder_opus.cpp
index 031db5f06..2d43143e9 100644
--- a/src/projects/transcoder/codec/decoder/decoder_opus.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_opus.cpp
@@ -215,16 +215,16 @@ void DecoderOPUS::CodecThread()
}
// If there is no duration, the duration is calculated by timebase.
- if (_frame->pkt_duration <= 0LL)
+ if (_frame->duration <= 0LL)
{
- _frame->pkt_duration = ffmpeg::Conv::GetDurationPerFrame(cmn::MediaType::Audio, GetRefTrack(), _frame);
+ _frame->duration = ffmpeg::Conv::GetDurationPerFrame(cmn::MediaType::Audio, GetRefTrack(), _frame);
}
// If the decoded audio frame does not have a PTS, Increase frame duration time in PTS of previous frame
if(_frame->pts == AV_NOPTS_VALUE)
{
- _frame->pts = _last_pkt_pts + _frame->pkt_duration;
+ _frame->pts = _last_pkt_pts + _frame->duration;
}
auto output_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Audio, _frame);
diff --git a/src/projects/transcoder/codec/decoder/decoder_vp8.cpp b/src/projects/transcoder/codec/decoder/decoder_vp8.cpp
index c52edb977..616147a7a 100644
--- a/src/projects/transcoder/codec/decoder/decoder_vp8.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_vp8.cpp
@@ -253,7 +253,7 @@ void DecoderVP8::CodecThread()
}
// If there is no duration, the duration is calculated by framerate and timebase.
- _frame->pkt_duration = (_frame->pkt_duration <= 0LL) ? ffmpeg::Conv::GetDurationPerFrame(cmn::MediaType::Video, GetRefTrack()) : _frame->pkt_duration;
+ _frame->duration = (_frame->duration <= 0LL) ? ffmpeg::Conv::GetDurationPerFrame(cmn::MediaType::Video, GetRefTrack()) : _frame->duration;
auto decoded_frame = ffmpeg::Conv::ToMediaFrame(cmn::MediaType::Video, _frame);
::av_frame_unref(_frame);
From f469e7e18344243248585b3b5478aba95454231e Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 20:26:32 +0200
Subject: [PATCH 05/12] ffmpeg Update: Replace deprecated
av_get_channel_layout_string with av_get_channel_layout_describe
```
/**
* Return a description of a channel layout.
* If nb_channels is <= 0, it is guessed from the channel_layout.
*
* @param buf put here the string containing the channel layout
* @param buf_size size in bytes of the buffer
* @param nb_channels number of channels
* @param channel_layout channel layout bitset
* @deprecated use av_channel_layout_describe()
*/
attribute_deprecated
void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout);
```
---
src/projects/modules/ffmpeg/ffmpeg_conv.h | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/projects/modules/ffmpeg/ffmpeg_conv.h b/src/projects/modules/ffmpeg/ffmpeg_conv.h
index 06d4107c8..05981c542 100644
--- a/src/projects/modules/ffmpeg/ffmpeg_conv.h
+++ b/src/projects/modules/ffmpeg/ffmpeg_conv.h
@@ -701,11 +701,12 @@ namespace ffmpeg
}
else
{
- char channel_layout[16]{};
- ::av_get_channel_layout_string(channel_layout, OV_COUNTOF(channel_layout), parameters->channels, parameters->channel_layout);
+ char channel_layout_buf[16]{};
+
+ ::av_channel_layout_describe(&parameters->ch_layout, channel_layout_buf, OV_COUNTOF(channel_layout_buf));
// 48000 Hz, stereo, fltp,
- message.AppendFormat("%d Hz, %s(%d), %s, ", parameters->sample_rate, channel_layout, parameters->channels, ::av_get_sample_fmt_name(static_cast<AVSampleFormat>(parameters->format)));
+ message.AppendFormat("%d Hz, %s(%d), %s, ", parameters->sample_rate, channel_layout_buf, parameters->channels, ::av_get_sample_fmt_name(static_cast<AVSampleFormat>(parameters->format)));
}
message.AppendFormat("%d kbps, ", (parameters->bit_rate / 1024));
From a73e2efb2466d18fc15fdeccb0c5da031bcec643 Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 20:31:15 +0200
Subject: [PATCH 06/12] ffmpeg Update: Replace deprecated channels with
ch_layout.nb_channels
```
/**
* Audio only. The number of audio channels.
* @deprecated use ch_layout.nb_channels
*/
attribute_deprecated
int channels;
```
---
src/projects/modules/ffmpeg/ffmpeg_conv.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/projects/modules/ffmpeg/ffmpeg_conv.h b/src/projects/modules/ffmpeg/ffmpeg_conv.h
index 05981c542..7b199f08a 100644
--- a/src/projects/modules/ffmpeg/ffmpeg_conv.h
+++ b/src/projects/modules/ffmpeg/ffmpeg_conv.h
@@ -702,11 +702,10 @@ namespace ffmpeg
else
{
char channel_layout_buf[16]{};
-
::av_channel_layout_describe(&parameters->ch_layout, channel_layout_buf, OV_COUNTOF(channel_layout_buf));
// 48000 Hz, stereo, fltp,
- message.AppendFormat("%d Hz, %s(%d), %s, ", parameters->sample_rate, channel_layout_buf, parameters->channels, ::av_get_sample_fmt_name(static_cast<AVSampleFormat>(parameters->format)));
+ message.AppendFormat("%d Hz, %s(%d), %s, ", parameters->sample_rate, channel_layout_buf, parameters->ch_layout.nb_channels, ::av_get_sample_fmt_name(static_cast<AVSampleFormat>(parameters->format)));
}
message.AppendFormat("%d kbps, ", (parameters->bit_rate / 1024));
@@ -790,7 +789,7 @@ namespace ffmpeg
break;
case cmn::MediaType::Audio: {
- codecpar->channels = static_cast<int>(media_track->GetChannel().GetCounts());
+ codecpar->ch_layout.nb_channels = static_cast<int>(media_track->GetChannel().GetCounts());
codecpar->channel_layout = ToAVChannelLayout(media_track->GetChannel().GetLayout());
codecpar->sample_rate = media_track->GetSample().GetRateNum();
codecpar->frame_size = (media_track->GetAudioSamplesPerFrame()!=0)?media_track->GetAudioSamplesPerFrame():1024;
From f0334563e0aa1baf038c8c93111b2517e1a7f7be Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 20:49:52 +0200
Subject: [PATCH 07/12] ffmpeg Update: Replace deprecated channel_layout with
ch_layout struct
---
src/projects/modules/ffmpeg/ffmpeg_conv.h | 13 +++++++++----
src/projects/modules/segment_writer/writer.cpp | 8 ++++++--
.../transcoder/codec/encoder/encoder_aac.cpp | 8 ++++++--
.../transcoder/codec/encoder/encoder_ffopus.cpp | 10 +++++++---
src/projects/transcoder/filter/filter_resampler.cpp | 2 +-
5 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/src/projects/modules/ffmpeg/ffmpeg_conv.h b/src/projects/modules/ffmpeg/ffmpeg_conv.h
index 7b199f08a..f67932f63 100644
--- a/src/projects/modules/ffmpeg/ffmpeg_conv.h
+++ b/src/projects/modules/ffmpeg/ffmpeg_conv.h
@@ -789,10 +789,15 @@ namespace ffmpeg
break;
case cmn::MediaType::Audio: {
- codecpar->ch_layout.nb_channels = static_cast<int>(media_track->GetChannel().GetCounts());
- codecpar->channel_layout = ToAVChannelLayout(media_track->GetChannel().GetLayout());
- codecpar->sample_rate = media_track->GetSample().GetRateNum();
- codecpar->frame_size = (media_track->GetAudioSamplesPerFrame()!=0)?media_track->GetAudioSamplesPerFrame():1024;
+ uint64_t channel_layout = ToAVChannelLayout(media_track->GetChannel().GetLayout());
+ codecpar->ch_layout = {
+ .order = AVChannelOrder::AV_CHANNEL_ORDER_NATIVE,
+ .nb_channels = static_cast<int>(media_track->GetChannel().GetCounts()),
+ .u = {.mask = channel_layout}
+ };
+
+ codecpar->sample_rate = media_track->GetSample().GetRateNum();
+ codecpar->frame_size = (media_track->GetAudioSamplesPerFrame()!=0)?media_track->GetAudioSamplesPerFrame():1024;
}
break;
diff --git a/src/projects/modules/segment_writer/writer.cpp b/src/projects/modules/segment_writer/writer.cpp
index 1fb8fd94d..6e2dc42b7 100644
--- a/src/projects/modules/segment_writer/writer.cpp
+++ b/src/projects/modules/segment_writer/writer.cpp
@@ -256,13 +256,17 @@ bool Writer::FillCodecParameters(const std::shared_ptr<const Track> &track, AVCo
codec_parameters->codec_type = AVMEDIA_TYPE_AUDIO;
codec_parameters->codec_id = AvCodecIdFromMediaCodecId(media_track->GetCodecId());
codec_parameters->bit_rate = media_track->GetBitrate();
- codec_parameters->channels = static_cast<int>(media_track->GetChannel().GetCounts());
- codec_parameters->channel_layout = AvChannelLayoutFromAudioChannelLayout(media_track->GetChannel().GetLayout());
codec_parameters->sample_rate = media_track->GetSample().GetRateNum();
codec_parameters->frame_size = 1024;
codec_parameters->format = static_cast<int>(media_track->GetSample().GetFormat());
codec_parameters->codec_tag = 0;
+ codec_parameters->ch_layout = {
+ .order = AVChannelOrder::AV_CHANNEL_ORDER_NATIVE,
+ .nb_channels = static_cast<int>(media_track->GetChannel().GetCounts()),
+ .u = {.mask = static_cast<uint64_t>(AvChannelLayoutFromAudioChannelLayout(media_track->GetChannel().GetLayout()))}
+ };
+
std::shared_ptr<ov::Data> extra_data = nullptr;
if (media_track->GetCodecId() == cmn::MediaCodecId::Aac)
{
diff --git a/src/projects/transcoder/codec/encoder/encoder_aac.cpp b/src/projects/transcoder/codec/encoder/encoder_aac.cpp
index 238de1541..91e5eefd3 100644
--- a/src/projects/transcoder/codec/encoder/encoder_aac.cpp
+++ b/src/projects/transcoder/codec/encoder/encoder_aac.cpp
@@ -15,8 +15,12 @@ bool EncoderAAC::SetCodecParams()
_codec_context->bit_rate = GetRefTrack()->GetBitrate();
_codec_context->sample_fmt = (AVSampleFormat)GetSupportedFormat();
_codec_context->sample_rate = GetRefTrack()->GetSampleRate();
- _codec_context->channel_layout = static_cast<uint64_t>(GetRefTrack()->GetChannel().GetLayout());
- _codec_context->channels = GetRefTrack()->GetChannel().GetCounts();
+
+ _codec_context->ch_layout = {
+ .order = AVChannelOrder::AV_CHANNEL_ORDER_NATIVE,
+ .nb_channels = static_cast<int>(GetRefTrack()->GetChannel().GetCounts()),
+ .u = {.mask = static_cast<uint64_t>(GetRefTrack()->GetChannel().GetLayout())}
+ };
_bitstream_format = cmn::BitstreamFormat::AAC_ADTS;
diff --git a/src/projects/transcoder/codec/encoder/encoder_ffopus.cpp b/src/projects/transcoder/codec/encoder/encoder_ffopus.cpp
index c70021b18..3c0a53812 100644
--- a/src/projects/transcoder/codec/encoder/encoder_ffopus.cpp
+++ b/src/projects/transcoder/codec/encoder/encoder_ffopus.cpp
@@ -15,9 +15,13 @@ bool EncoderFFOPUS::SetCodecParams()
_codec_context->bit_rate = GetRefTrack()->GetBitrate();
_codec_context->sample_fmt = (AVSampleFormat)GetSupportedFormat();
_codec_context->sample_rate = GetRefTrack()->GetSampleRate();
- _codec_context->channel_layout = static_cast<uint64_t>(GetRefTrack()->GetChannel().GetLayout());
- _codec_context->channels = GetRefTrack()->GetChannel().GetCounts();
-
+
+ _codec_context->ch_layout = {
+ .order = AVChannelOrder::AV_CHANNEL_ORDER_NATIVE,
+ .nb_channels = static_cast<int>(GetRefTrack()->GetChannel().GetCounts()),
+ .u = {.mask = static_cast<uint64_t>(GetRefTrack()->GetChannel().GetLayout())}
+ };
+
// Support Frequency
// 4000 - OPUS_BANDWIDTH_NARROWBAND (8kHz) (2~8 kbps)
// 6000 - OPUS_BANDWIDTH_MEDIUMBAND (12kHz)
diff --git a/src/projects/transcoder/filter/filter_resampler.cpp b/src/projects/transcoder/filter/filter_resampler.cpp
index beda3b993..9bf3f33fd 100644
--- a/src/projects/transcoder/filter/filter_resampler.cpp
+++ b/src/projects/transcoder/filter/filter_resampler.cpp
@@ -248,7 +248,7 @@ void FilterResampler::WorkerThread()
if (ret < 0)
{
logte("An error occurred while feeding the audio filtergraph: pts: %lld, linesize: %d, srate: %d, layout: %d, channels: %d, format: %d, rq: %d",
- _frame->pts, _frame->linesize[0], _frame->sample_rate, _frame->channel_layout, _frame->channels, _frame->format, _input_buffer.Size());
+ _frame->pts, _frame->linesize[0], _frame->sample_rate, _frame->ch_layout.u.mask, _frame->ch_layout.nb_channels, _frame->format, _input_buffer.Size());
continue;
}
From 555e779e02311a31dfd6a8ee7e65c21e1e0a3b8c Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 21:01:39 +0200
Subject: [PATCH 08/12] ffmpeg Update: Drop depreacted avcodec_close and use
avcodec_free_context only
---
src/projects/transcoder/codec/decoder/decoder_avc.cpp | 1 -
src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp | 1 -
src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp | 1 -
src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp | 1 -
src/projects/transcoder/codec/decoder/decoder_hevc.cpp | 1 -
src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp | 1 -
src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp | 1 -
src/projects/transcoder/codec/decoder/decoder_vp8.cpp | 1 -
8 files changed, 8 deletions(-)
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc.cpp b/src/projects/transcoder/codec/decoder/decoder_avc.cpp
index b7339e71c..760f02622 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc.cpp
@@ -92,7 +92,6 @@ bool DecoderAVC::InitCodec()
void DecoderAVC::UninitCodec()
{
- ::avcodec_close(_context);
::avcodec_free_context(&_context);
_context = nullptr;
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp b/src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp
index 7bb959102..7c6bbcd0d 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc_nilogan.cpp
@@ -117,7 +117,6 @@ bool DecoderAVCxNILOGAN::InitCodec()
it seems that dynamic resolution is supported
void DecoderAVCxNILOGAN::UninitCodec()
{
- ::avcodec_close(_context);
::avcodec_free_context(&_context);
_context = nullptr;
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp b/src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp
index d5b82f2f6..83c3da39e 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc_nv.cpp
@@ -99,7 +99,6 @@ bool DecoderAVCxNV::InitCodec()
void DecoderAVCxNV::UninitCodec()
{
- ::avcodec_close(_context);
::avcodec_free_context(&_context);
_context = nullptr;
diff --git a/src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp b/src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp
index 494c5f910..22d8fdfe9 100644
--- a/src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_avc_xma.cpp
@@ -111,7 +111,6 @@ bool DecoderAVCxXMA::InitCodec()
void DecoderAVCxXMA::UninitCodec()
{
- ::avcodec_close(_context);
::avcodec_free_context(&_context);
_context = nullptr;
diff --git a/src/projects/transcoder/codec/decoder/decoder_hevc.cpp b/src/projects/transcoder/codec/decoder/decoder_hevc.cpp
index 0c58fec8c..88d0d5e6a 100755
--- a/src/projects/transcoder/codec/decoder/decoder_hevc.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_hevc.cpp
@@ -84,7 +84,6 @@ bool DecoderHEVC::InitCodec()
void DecoderHEVC::UninitCodec()
{
- ::avcodec_close(_context);
::avcodec_free_context(&_context);
_context = nullptr;
diff --git a/src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp b/src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp
index 44fe91828..36dab687d 100644
--- a/src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_hevc_nv.cpp
@@ -93,7 +93,6 @@ bool DecoderHEVCxNV::InitCodec()
void DecoderHEVCxNV::UninitCodec()
{
- ::avcodec_close(_context);
::avcodec_free_context(&_context);
_context = nullptr;
diff --git a/src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp b/src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp
index 1f971b4f6..2c1e27a78 100644
--- a/src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_hevc_xma.cpp
@@ -111,7 +111,6 @@ bool DecoderHEVCxXMA::InitCodec()
void DecoderHEVCxXMA::UninitCodec()
{
- ::avcodec_close(_context);
::avcodec_free_context(&_context);
_context = nullptr;
diff --git a/src/projects/transcoder/codec/decoder/decoder_vp8.cpp b/src/projects/transcoder/codec/decoder/decoder_vp8.cpp
index 616147a7a..464b1c27d 100644
--- a/src/projects/transcoder/codec/decoder/decoder_vp8.cpp
+++ b/src/projects/transcoder/codec/decoder/decoder_vp8.cpp
@@ -83,7 +83,6 @@ bool DecoderVP8::InitCodec()
void DecoderVP8::UninitCodec()
{
- ::avcodec_close(_context);
::avcodec_free_context(&_context);
_context = nullptr;
From 9685274797362b8f3235464e1c4902465389dec9 Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 25 May 2024 22:19:24 +0200
Subject: [PATCH 09/12] ffmpeg Update: Change buffer to const in OnWrite
function declaration
---
src/projects/modules/segment_writer/writer.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/projects/modules/segment_writer/writer.h b/src/projects/modules/segment_writer/writer.h
index ca06dcf37..c87b25b0d 100644
--- a/src/projects/modules/segment_writer/writer.h
+++ b/src/projects/modules/segment_writer/writer.h
@@ -120,7 +120,7 @@ class Writer
int DecideBufferSize() const;
int OnWrite(const uint8_t *buf, int buf_size);
- static int OnWrite(void *opaque, uint8_t *buf, int buf_size)
+ static int OnWrite(void *opaque, const uint8_t *buf, int buf_size)
{
return (static_cast<Writer *>(opaque))->OnWrite(buf, buf_size);
}
From 70ec85fcfebc8a2969756f117687bca64abdbb77 Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 15 Jun 2024 15:54:07 +0200
Subject: [PATCH 10/12] Drop unsupported ffmpeg v7 configuration flags
Disabling lzo isn't allowed anymore https://github.com/FFmpeg/FFmpeg/commit/df272928ff8041f87b92f4cf8dbf12a28fe9cdf7
Couldn't find commits for the other two. But I suspect they are now
enabled by default.
---
misc/prerequisites.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/misc/prerequisites.sh b/misc/prerequisites.sh
index eb4505cdc..9766a50a6 100755
--- a/misc/prerequisites.sh
+++ b/misc/prerequisites.sh
@@ -316,8 +316,8 @@ install_ffmpeg()
--extra-ldflags="${ADDI_LDFLAGS} -L${PREFIX}/lib -Wl,-rpath,${PREFIX}/lib " \
--extra-libs=-ldl ${ADDI_EXTRA_LIBS} \
${ADDI_LICENSE} \
- --disable-everything --disable-programs --disable-avdevice --disable-dwt --disable-lsp --disable-lzo --disable-faan --disable-pixelutils \
- --enable-shared --enable-zlib --enable-libopus --enable-libvpx --enable-libfdk_aac --enable-libopenh264 --enable-openssl --enable-network --enable-libsrt --enable-dct --enable-rdft ${ADDI_LIBS} \
+ --disable-everything --disable-programs --disable-avdevice --disable-dwt --disable-lsp --disable-faan --disable-pixelutils \
+ --enable-shared --enable-zlib --enable-libopus --enable-libvpx --enable-libfdk_aac --enable-libopenh264 --enable-openssl --enable-network --enable-libsrt ${ADDI_LIBS} \
${ADDI_HWACCEL} \
--enable-ffmpeg \
--enable-encoder=libvpx_vp8,libopus,libfdk_aac,libopenh264,mjpeg,png${ADDI_ENCODER} \
From ac60ded1c973593285177fe5757e82b6ea91be77 Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 15 Jun 2024 15:55:11 +0200
Subject: [PATCH 11/12] Ignore the included uid in the jemalloc tar archive
Otherwise this fails with `Cannot change ownership to uid 66878, gid
100: Invalid argument`, at least with podman.
---
misc/prerequisites.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/misc/prerequisites.sh b/misc/prerequisites.sh
index 9766a50a6..5d11048a1 100755
--- a/misc/prerequisites.sh
+++ b/misc/prerequisites.sh
@@ -348,7 +348,7 @@ install_jemalloc()
(DIR=${TEMP_PATH}/jemalloc && \
mkdir -p ${DIR} && \
cd ${DIR} && \
- curl -sSLf https://github.com/jemalloc/jemalloc/releases/download/${JEMALLOC_VERSION}/jemalloc-${JEMALLOC_VERSION}.tar.bz2 | tar -jx --strip-components=1 && \
+ curl -sSLf https://github.com/jemalloc/jemalloc/releases/download/${JEMALLOC_VERSION}/jemalloc-${JEMALLOC_VERSION}.tar.bz2 | tar -jx --strip-components=1 --no-same-owner && \
./configure --prefix="${PREFIX}" && \
make -j$(nproc) && \
sudo make install_include install_lib && \
From 9b01f66afa8f45deee945baab4dbbef542a6618c Mon Sep 17 00:00:00 2001
From: hashworks <mail@hashworks.net>
Date: Sat, 6 Jul 2024 01:43:08 +0200
Subject: [PATCH 12/12] ffmpeg Update: Replace deprecated frame->pkt_duration
with duration in transcoder context
---
src/projects/transcoder/transcoder_context.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/projects/transcoder/transcoder_context.h b/src/projects/transcoder/transcoder_context.h
index a34a635a9..a1e198e22 100644
--- a/src/projects/transcoder/transcoder_context.h
+++ b/src/projects/transcoder/transcoder_context.h
@@ -78,7 +78,7 @@ class MediaFrame
if (_priv_data)
{
- _priv_data->pkt_duration = duration;
+ _priv_data->duration = duration;
}
}