qt5-webengine: revbump for ffmpeg6
This commit is contained in:
parent
f6702e5958
commit
cb235885d0
4 changed files with 205 additions and 3 deletions
|
@ -0,0 +1,11 @@
|
||||||
|
--- a/src/3rdparty/chromium/media/filters/BUILD.gn 2023-02-27 13:32:59.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/media/filters/BUILD.gn 2023-04-02 17:21:39.204066384 -0400
|
||||||
|
@@ -96,6 +96,8 @@
|
||||||
|
"//ui/gfx/geometry:geometry",
|
||||||
|
]
|
||||||
|
|
||||||
|
+ cflags_cc = [ "-std=c++14" ]
|
||||||
|
+
|
||||||
|
libs = []
|
||||||
|
|
||||||
|
if (proprietary_codecs) {
|
179
srcpkgs/qt5-webengine/patches/ffmepg5.patch
Normal file
179
srcpkgs/qt5-webengine/patches/ffmepg5.patch
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
--- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc 2023-04-02 16:50:57.732547446 -0400
|
||||||
|
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc 2023-04-02 16:50:09.486478995 -0400
|
||||||
|
@@ -57,6 +57,8 @@
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
+constexpr int64_t kRelativeTsBase = static_cast<int64_t>(0x7ffeffffffffffff);
|
||||||
|
+
|
||||||
|
void SetAVStreamDiscard(AVStream* stream, AVDiscard discard) {
|
||||||
|
DCHECK(stream);
|
||||||
|
stream->discard = discard;
|
||||||
|
@@ -90,24 +92,12 @@
|
||||||
|
|
||||||
|
static base::TimeDelta ExtractStartTime(AVStream* stream) {
|
||||||
|
// The default start time is zero.
|
||||||
|
- base::TimeDelta start_time;
|
||||||
|
+ base::TimeDelta start_time = kNoTimestamp;
|
||||||
|
|
||||||
|
// First try to use the |start_time| value as is.
|
||||||
|
if (stream->start_time != kNoFFmpegTimestamp)
|
||||||
|
start_time = ConvertFromTimeBase(stream->time_base, stream->start_time);
|
||||||
|
|
||||||
|
- // Next try to use the first DTS value, for codecs where we know PTS == DTS
|
||||||
|
- // (excludes all H26x codecs). The start time must be returned in PTS.
|
||||||
|
- if (stream->first_dts != kNoFFmpegTimestamp &&
|
||||||
|
- stream->codecpar->codec_id != AV_CODEC_ID_HEVC &&
|
||||||
|
- stream->codecpar->codec_id != AV_CODEC_ID_H264 &&
|
||||||
|
- stream->codecpar->codec_id != AV_CODEC_ID_MPEG4) {
|
||||||
|
- const base::TimeDelta first_pts =
|
||||||
|
- ConvertFromTimeBase(stream->time_base, stream->first_dts);
|
||||||
|
- if (first_pts < start_time)
|
||||||
|
- start_time = first_pts;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
return start_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -408,11 +398,11 @@
|
||||||
|
scoped_refptr<DecoderBuffer> buffer;
|
||||||
|
|
||||||
|
if (type() == DemuxerStream::TEXT) {
|
||||||
|
- int id_size = 0;
|
||||||
|
+ size_t id_size = 0;
|
||||||
|
uint8_t* id_data = av_packet_get_side_data(
|
||||||
|
packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size);
|
||||||
|
|
||||||
|
- int settings_size = 0;
|
||||||
|
+ size_t settings_size = 0;
|
||||||
|
uint8_t* settings_data = av_packet_get_side_data(
|
||||||
|
packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size);
|
||||||
|
|
||||||
|
@@ -424,7 +414,7 @@
|
||||||
|
buffer = DecoderBuffer::CopyFrom(packet->data, packet->size,
|
||||||
|
side_data.data(), side_data.size());
|
||||||
|
} else {
|
||||||
|
- int side_data_size = 0;
|
||||||
|
+ size_t side_data_size = 0;
|
||||||
|
uint8_t* side_data = av_packet_get_side_data(
|
||||||
|
packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
|
||||||
|
|
||||||
|
@@ -485,7 +475,7 @@
|
||||||
|
packet->size - data_offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
- int skip_samples_size = 0;
|
||||||
|
+ size_t skip_samples_size = 0;
|
||||||
|
const uint32_t* skip_samples_ptr =
|
||||||
|
reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
|
||||||
|
packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
|
||||||
|
@@ -1587,6 +1577,8 @@
|
||||||
|
for (const auto& stream : streams_) {
|
||||||
|
if (!stream || stream->IsEnabled() != enabled)
|
||||||
|
continue;
|
||||||
|
+ if (stream->av_stream()->start_time == AV_NOPTS_VALUE)
|
||||||
|
+ continue;
|
||||||
|
if (!lowest_start_time_stream ||
|
||||||
|
stream->start_time() < lowest_start_time_stream->start_time()) {
|
||||||
|
lowest_start_time_stream = stream.get();
|
||||||
|
@@ -1604,6 +1596,8 @@
|
||||||
|
if (stream && stream->type() == DemuxerStream::VIDEO &&
|
||||||
|
stream->IsEnabled()) {
|
||||||
|
video_stream = stream.get();
|
||||||
|
+ if (stream->av_stream()->start_time == AV_NOPTS_VALUE)
|
||||||
|
+ continue;
|
||||||
|
if (video_stream->start_time() <= seek_time) {
|
||||||
|
return video_stream;
|
||||||
|
}
|
||||||
|
diff -Naurp qtwebengine-5.15.10.orig/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h qtwebengine-5.15.10/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h
|
||||||
|
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h 2022-05-23 06:38:40.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h 2022-07-11 22:12:47.917192788 -0500
|
||||||
|
@@ -29,6 +29,7 @@ extern "C" {
|
||||||
|
#include <libavformat/avformat.h>
|
||||||
|
#include <libavformat/avio.h>
|
||||||
|
#include <libavutil/avutil.h>
|
||||||
|
+#include <libavutil/channel_layout.h>
|
||||||
|
#include <libavutil/imgutils.h>
|
||||||
|
#include <libavutil/log.h>
|
||||||
|
#include <libavutil/mastering_display_metadata.h>
|
||||||
|
diff -Naurp qtwebengine-5.15.10.orig/src/3rdparty/chromium/media/filters/audio_file_reader.cc qtwebengine-5.15.10/src/3rdparty/chromium/media/filters/audio_file_reader.cc
|
||||||
|
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc 2022-05-23 06:38:40.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc 2022-07-11 22:12:47.917192788 -0500
|
||||||
|
@@ -85,7 +85,7 @@ bool AudioFileReader::OpenDemuxer() {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AudioFileReader::OpenDecoder() {
|
||||||
|
- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
|
||||||
|
+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
|
||||||
|
if (codec) {
|
||||||
|
// MP3 decodes to S16P which we don't support, tell it to use S16 instead.
|
||||||
|
if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P)
|
||||||
|
diff -Naurp qtwebengine-5.15.10.orig/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc qtwebengine-5.15.10/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
|
||||||
|
--- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc 2022-05-23 06:38:40.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc 2022-07-11 22:12:47.917192788 -0500
|
||||||
|
@@ -329,7 +329,7 @@ bool FFmpegAudioDecoder::ConfigureDecode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
|
||||||
|
+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
|
||||||
|
if (!codec ||
|
||||||
|
avcodec_open2(codec_context_.get(), codec, &codec_options) < 0) {
|
||||||
|
DLOG(ERROR) << "Could not initialize audio decoder: "
|
||||||
|
diff -Naurp qtwebengine-5.15.10.orig/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc qtwebengine-5.15.10/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc
|
||||||
|
--- a/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc 2022-05-23 06:38:40.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc 2022-07-11 22:12:47.918192779 -0500
|
||||||
|
@@ -59,7 +59,6 @@ static int64_t AVIOSeekOperation(void* o
|
||||||
|
}
|
||||||
|
|
||||||
|
void FFmpegGlue::InitializeFFmpeg() {
|
||||||
|
- av_register_all();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void LogContainer(bool is_local_file,
|
||||||
|
@@ -95,9 +94,6 @@ FFmpegGlue::FFmpegGlue(FFmpegURLProtocol
|
||||||
|
// Enable fast, but inaccurate seeks for MP3.
|
||||||
|
format_context_->flags |= AVFMT_FLAG_FAST_SEEK;
|
||||||
|
|
||||||
|
- // Ensures we can read out various metadata bits like vp8 alpha.
|
||||||
|
- format_context_->flags |= AVFMT_FLAG_KEEP_SIDE_DATA;
|
||||||
|
-
|
||||||
|
// Ensures format parsing errors will bail out. From an audit on 11/2017, all
|
||||||
|
// instances were real failures. Solves bugs like http://crbug.com/710791.
|
||||||
|
format_context_->error_recognition |= AV_EF_EXPLODE;
|
||||||
|
diff -Naurp qtwebengine-5.15.10.orig/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc qtwebengine-5.15.10/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
|
||||||
|
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc 2022-05-23 06:38:40.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc 2022-07-11 22:12:47.918192779 -0500
|
||||||
|
@@ -391,7 +391,7 @@ bool FFmpegVideoDecoder::ConfigureDecode
|
||||||
|
if (decode_nalus_)
|
||||||
|
codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
|
||||||
|
|
||||||
|
- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
|
||||||
|
+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
|
||||||
|
if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) {
|
||||||
|
ReleaseFFmpegResources();
|
||||||
|
return false;
|
||||||
|
diff -Naurp qtwebengine-5.15.10.orig/src/3rdparty/chromium/media/filters/media_file_checker.cc qtwebengine-5.15.10/src/3rdparty/chromium/media/filters/media_file_checker.cc
|
||||||
|
--- a/src/3rdparty/chromium/media/filters/media_file_checker.cc 2022-05-23 06:38:40.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/media/filters/media_file_checker.cc 2022-07-11 22:12:47.918192779 -0500
|
||||||
|
@@ -68,7 +68,7 @@ bool MediaFileChecker::Start(base::TimeD
|
||||||
|
auto context = AVStreamToAVCodecContext(format_context->streams[i]);
|
||||||
|
if (!context)
|
||||||
|
continue;
|
||||||
|
- AVCodec* codec = avcodec_find_decoder(cp->codec_id);
|
||||||
|
+ const AVCodec* codec = avcodec_find_decoder(cp->codec_id);
|
||||||
|
if (codec && avcodec_open2(context.get(), codec, nullptr) >= 0) {
|
||||||
|
auto loop = std::make_unique<FFmpegDecodingLoop>(context.get());
|
||||||
|
stream_contexts[i] = {std::move(context), std::move(loop)};
|
||||||
|
diff -Naurp qtwebengine-5.15.10.orig/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc qtwebengine-5.15.10/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
|
||||||
|
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc 2022-05-23 06:38:40.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc 2022-07-11 22:12:47.918192779 -0500
|
||||||
|
@@ -203,7 +203,7 @@ int32_t H264DecoderImpl::InitDecode(cons
|
||||||
|
// a pointer |this|.
|
||||||
|
av_context_->opaque = this;
|
||||||
|
|
||||||
|
- AVCodec* codec = avcodec_find_decoder(av_context_->codec_id);
|
||||||
|
+ const AVCodec* codec = avcodec_find_decoder(av_context_->codec_id);
|
||||||
|
if (!codec) {
|
||||||
|
// This is an indication that FFmpeg has not been initialized or it has not
|
||||||
|
// been compiled/initialized with the correct set of codecs.
|
12
srcpkgs/qt5-webengine/patches/string.patch
Normal file
12
srcpkgs/qt5-webengine/patches/string.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
--- a/src/3rdparty/chromium/gpu/command_buffer/service/program_manager.cc 2023-11-09 06:32:20.000000000 -0500
|
||||||
|
+++ b/src/3rdparty/chromium/gpu/command_buffer/service/program_manager.cc 2024-07-05 09:41:50.248682928 -0400
|
||||||
|
@@ -620,7 +620,7 @@
|
||||||
|
output += hashed_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return output + input.as_string();
|
||||||
|
+ return output + std::string(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Program::UpdateLogInfo() {
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
# Template file for 'qt5-webengine'
|
# Template file for 'qt5-webengine'
|
||||||
pkgname=qt5-webengine
|
pkgname=qt5-webengine
|
||||||
version=5.15.16
|
version=5.15.16
|
||||||
revision=1
|
revision=2
|
||||||
_version="${version}-lts"
|
_version="${version}-lts"
|
||||||
_chromium_commit=207c2ac45ca3386d153770c6b0d2ea2ec21ca880
|
_chromium_commit=207c2ac45ca3386d153770c6b0d2ea2ec21ca880
|
||||||
archs="x86_64* i686* armv[67]* ppc64* aarch64*"
|
archs="x86_64* i686* armv[67]* ppc64* aarch64*"
|
||||||
create_wrksrc=yes
|
create_wrksrc=yes
|
||||||
build_style=qmake
|
build_style=qmake
|
||||||
configure_args="--
|
configure_args="--
|
||||||
-webengine-icu -webengine-ffmpeg -webengine-opus -webengine-webp
|
-webengine-icu -system-ffmpeg -webengine-opus -webengine-webp
|
||||||
-webengine-pepper-plugins -webengine-printing-and-pdf -webengine-proprietary-codecs
|
-webengine-pepper-plugins -webengine-printing-and-pdf -webengine-proprietary-codecs
|
||||||
-webengine-pulseaudio -webengine-spellchecker -webengine-webrtc -webengine-geolocation
|
-webengine-pulseaudio -webengine-spellchecker -webengine-webrtc -webengine-geolocation
|
||||||
-webengine-kerberos -no-webengine-embedded-build $(vopt_if sndio '' '-no')-webengine-sndio
|
-webengine-kerberos -no-webengine-embedded-build $(vopt_if sndio '' '-no')-webengine-sndio
|
||||||
|
@ -19,7 +19,7 @@ hostmakedepends="qt5-qmake gperf ninja qt5-host-tools flex pkg-config nodejs
|
||||||
libjpeg-turbo-devel libpng-devel libwebp-devel freetype-devel
|
libjpeg-turbo-devel libpng-devel libwebp-devel freetype-devel
|
||||||
harfbuzz-devel"
|
harfbuzz-devel"
|
||||||
makedepends="qt5-webchannel-devel qt5-location-devel qt5-tools-devel qt5-devel
|
makedepends="qt5-webchannel-devel qt5-location-devel qt5-tools-devel qt5-devel
|
||||||
qt5-declarative-devel libevent-devel snappy-devel icu-devel ffmpeg-devel
|
qt5-declarative-devel libevent-devel snappy-devel icu-devel ffmpeg6-devel
|
||||||
libwebp-devel opus-devel cups-devel nss-devel minizip-devel libxslt-devel
|
libwebp-devel opus-devel cups-devel nss-devel minizip-devel libxslt-devel
|
||||||
libvpx-devel re2-devel libXtst-devel libXcursor-devel libXcomposite-devel
|
libvpx-devel re2-devel libXtst-devel libXcursor-devel libXcomposite-devel
|
||||||
jsoncpp-devel harfbuzz-devel lcms2-devel protobuf-devel pulseaudio-devel
|
jsoncpp-devel harfbuzz-devel lcms2-devel protobuf-devel pulseaudio-devel
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue