1
0
forked from pool/qt6-webengine

103 Commits

Author SHA256 Message Date
1e3888cc0b Accepting request 1303309 from KDE:Qt6
- Add patch:
  * QtWebEngine_6.9.2_QTBUG-139424.patch (QTBUG-139424, boo#1249354)

OBS-URL: https://build.opensuse.org/request/show/1303309
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=46
2025-09-10 15:29:52 +00:00
Christophe Marin
8d6ca1e542 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=99 2025-09-09 08:02:13 +00:00
Christophe Marin
ac58e9b48b Upstream commit ddcd30454aa6338d898c9d20c8feb48f36632e16 replaces internal code with usage of EGL_MESA_drm_image, which has been deprecated for a while and removed in Mesa 25.2 20590ca771
This breaks applications using qtwebengine on wayland. Fix it by reverting the commit. Note that this hasn't been fixed in Qt 6.10 tree either, so this patch needs to be refreshed if Qt 6.10 releases without this fixed.

- Add patch:
  * QtWebEngine_6.9.2_QTBUG-139424.patch (QTBUG-139424)

OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=98
2025-09-09 07:57:02 +00:00
e68c3ef9ac Accepting request 1301735 from KDE:Qt6
Update to 6.9.2 (forwarded request 1301562 from krop)

OBS-URL: https://build.opensuse.org/request/show/1301735
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=45
2025-08-29 16:35:20 +00:00
Christophe Marin
871b1b953e Update to 6.9.2
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=96
2025-08-28 07:28:21 +00:00
67de30acf5 Accepting request 1282588 from KDE:Qt6
Qt 6.9.1 (forwarded request 1282452 from krop)

OBS-URL: https://build.opensuse.org/request/show/1282588
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=44
2025-06-05 18:32:44 +00:00
Christophe Marin
8bbf774567 Qt 6.9.1
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=94
2025-06-04 07:59:02 +00:00
878775ce9d Accepting request 1274939 from KDE:Qt6
OBS-URL: https://build.opensuse.org/request/show/1274939
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=43
2025-05-07 17:15:06 +00:00
Christophe Marin
82cf726a24 Backport various fixes (still building)
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=92
2025-05-06 13:13:47 +00:00
d7285c934f Accepting request 1266670 from KDE:Qt6
Qt 6.9.0

OBS-URL: https://build.opensuse.org/request/show/1266670
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=42
2025-04-07 15:35:30 +00:00
Christophe Marin
6b5df14583 15.6 build fix?
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=90
2025-04-04 07:58:36 +00:00
Christophe Marin
5cfae856d9 Qt 6.9.0
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=89
2025-04-02 19:29:45 +00:00
5dbaf4716e Accepting request 1253480 from KDE:Qt6
OBS-URL: https://build.opensuse.org/request/show/1253480
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=41
2025-03-17 21:15:01 +00:00
Christophe Marin
ab9c7fb46c - Add patches:
* qtwebengine-glibc_2.41.patch (boo#1238826)
  * qtwebengine-ffmpeg-playback-fix.patch (QTBUG-130273, QTBUG-132762)

OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=87
2025-03-16 09:34:00 +00:00
85c41c263a Accepting request 1251672 from KDE:Qt6
- Ignore private QML imports

OBS-URL: https://build.opensuse.org/request/show/1251672
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=40
2025-03-10 16:58:17 +00:00
Christophe Marin
d019830e39 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=85 2025-03-10 08:30:14 +00:00
Christophe Marin
abe736383f OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=84 2025-03-09 23:55:34 +00:00
Christophe Marin
8b6e9a70cc - Ignore private QML imports
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=83
2025-03-09 22:51:57 +00:00
8a92913f4f Accepting request 1242076 from KDE:Qt6
Qt 6.8.2 + pyside (forwarded request 1241751 from krop)

OBS-URL: https://build.opensuse.org/request/show/1242076
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=39
2025-02-03 20:41:25 +00:00
Christophe Marin
fba5ce3a55 Qt 6.8.2 + pyside
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=81
2025-02-01 08:45:27 +00:00
4bb483f304 Accepting request 1233456 from KDE:Qt6
- Add patch to avoid CVE-2024-40896 (boo#1234820)
  * 0001-Build-system-remove-libxml2-compilation-test.patch

OBS-URL: https://build.opensuse.org/request/show/1233456
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=38
2024-12-29 10:55:47 +00:00
Christophe Marin
5c6b2a7b2f - Add patch to avoid CVE-2024-40896 (boo#1234820)
* 0001-Build-system-remove-libxml2-compilation-test.patch

OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=79
2024-12-26 16:42:21 +00:00
8c9317fc93 Accepting request 1228217 from KDE:Qt6
Qt 6.8.1 (forwarded request 1227981 from krop)

OBS-URL: https://build.opensuse.org/request/show/1228217
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=37
2024-12-05 16:05:46 +00:00
Christophe Marin
823fd2aafc Qt 6.8.1
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=77
2024-12-04 08:27:55 +00:00
a64441533e Accepting request 1207640 from KDE:Qt6
Qt 6.8.0 (forwarded request 1206590 from krop)

OBS-URL: https://build.opensuse.org/request/show/1207640
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=36
2024-10-17 16:38:06 +00:00
Christophe Marin
f671112101 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=75 2024-10-13 18:11:04 +00:00
Christophe Marin
fa678e4b0a Qt 6.8.0
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=74
2024-10-13 18:05:48 +00:00
1380cc76ac Accepting request 1205156 from KDE:Qt6
Qt 6.7.3

OBS-URL: https://build.opensuse.org/request/show/1205156
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=35
2024-10-03 16:02:27 +00:00
Christophe Marin
3ecbefb9fa Qt 6.7.3
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=72
2024-10-01 17:50:13 +00:00
c668077061 Accepting request 1192339 from KDE:Qt6
- Add patch to build qtwebengine with ffmpeg 7 (picked from Arch)
  * qtwebengine-ffmpeg-7.patch

OBS-URL: https://build.opensuse.org/request/show/1192339
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=34
2024-08-13 11:23:00 +00:00
ca722c464e Accepting request 1182620 from KDE:Qt6
Qt 6.7.1 + pyside 6.7.1 (forwarded request 1181766 from krop)

OBS-URL: https://build.opensuse.org/request/show/1182620
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=33
2024-06-24 18:49:59 +00:00
Christophe Marin
8f9e76e287 Qt 6.7.1 + pyside 6.7.1
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=68
2024-06-22 12:30:16 +00:00
b1aaabd827 Accepting request 1176155 from KDE:Qt6
Qt 6.7.1

OBS-URL: https://build.opensuse.org/request/show/1176155
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=32
2024-05-27 09:46:26 +00:00
Christophe Marin
ca73d7675f OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=66 2024-05-23 08:51:13 +00:00
Christophe Marin
17b08a5491 Accepting request 1175612 from home:krop:Qt6:Release
Qt 6.7.1

OBS-URL: https://build.opensuse.org/request/show/1175612
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=65
2024-05-23 08:31:51 +00:00
7bdbd0cd81 Accepting request 1174770 from KDE:Qt6
- Backport Ninja 1.12 compatibility patch (and adjust paths)
  Add-missing-dependencies.patch from upstream (forwarded request 1174729 from mathletic)

OBS-URL: https://build.opensuse.org/request/show/1174770
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=31
2024-05-20 16:11:00 +00:00
70ebb6b0d9 Accepting request 1174729 from home:mathletic:branches:KDE:Qt6
- Backport Ninja 1.12 compatibility patch (and adjust paths)
  Add-missing-dependencies.patch from upstream

OBS-URL: https://build.opensuse.org/request/show/1174729
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=63
2024-05-17 06:33:10 +00:00
5fa1814e3e Accepting request 1165812 from KDE:Qt6
Qt 6.7.0. qtwebengine is still building (forwarded request 1164304 from krop)

OBS-URL: https://build.opensuse.org/request/show/1165812
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=30
2024-04-08 15:38:05 +00:00
Christophe Marin
009e1a3c4c OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=61 2024-04-06 12:13:03 +00:00
Christophe Marin
9ba7c0e191 Accepting request 1164304 from home:krop:Qt6:Release
Qt 6.7.0. qtwebengine is still building

OBS-URL: https://build.opensuse.org/request/show/1164304
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=60
2024-04-06 12:11:19 +00:00
c004e70a58 Accepting request 1162405 from KDE:Qt6
Qt 6.6.3. Not built yet (forwarded request 1162337 from krop)

OBS-URL: https://build.opensuse.org/request/show/1162405
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=29
2024-03-28 12:53:15 +00:00
Christophe Marin
bd3af03c49 Qt 6.6.3. Not built yet
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=58
2024-03-26 22:00:58 +00:00
d9eaeb45d3 Accepting request 1147242 from KDE:Qt6
Qt 6.6.2 (finally) (forwarded request 1146775 from krop)

OBS-URL: https://build.opensuse.org/request/show/1147242
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=28
2024-02-18 19:24:23 +00:00
Christophe Marin
6ab02e02af Accepting request 1146775 from home:krop:Qt6:Release
Qt 6.6.2 (finally)

OBS-URL: https://build.opensuse.org/request/show/1146775
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=56
2024-02-16 23:09:59 +00:00
6149139a75 Accepting request 1136999 from KDE:Qt6
OBS-URL: https://build.opensuse.org/request/show/1136999
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=27
2024-01-05 20:44:03 +00:00
Christophe Marin
982f3a0ca5 Accepting request 1134672 from home:michals:Calibre
- On Leap build with re2-10 even when re2-11 is available (bsc#1217257).
  re2-11 pulls in system abseil which is incompatible with bundled abseil
  causing build failure.

OBS-URL: https://build.opensuse.org/request/show/1134672
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=54
2024-01-05 08:49:06 +00:00
1c8162638e Accepting request 1134292 from KDE:Qt6
- Add patch to force pdf_attributions.qdoc to be generated before
  qtpdf, fixing a race condition that made the docs subpackage
  build not reproducible (boo#1217774):
  * 0001-Fix-race-condition-generating-docs.patch (forwarded request 1134211 from alarrosa)

OBS-URL: https://build.opensuse.org/request/show/1134292
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=26
2023-12-20 20:03:32 +00:00
97d1b8b8c4 Accepting request 1134211 from home:alarrosa:branches:KDE:Qt6
- Add patch to force pdf_attributions.qdoc to be generated before
  qtpdf, fixing a race condition that made the docs subpackage
  build not reproducible (boo#1217774):
  * 0001-Fix-race-condition-generating-docs.patch

OBS-URL: https://build.opensuse.org/request/show/1134211
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=52
2023-12-20 15:59:35 +00:00
8839e4cc3e Accepting request 1130437 from KDE:Qt6
Qt 6.6.1 (forwarded request 1129814 from krop)

OBS-URL: https://build.opensuse.org/request/show/1130437
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=25
2023-12-04 22:00:31 +00:00
Christophe Marin
a7127aa504 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=50 2023-12-02 10:43:56 +00:00
Christophe Marin
3337ddd486 Accepting request 1129814 from home:krop:Qt6:Release
Qt 6.6.1

OBS-URL: https://build.opensuse.org/request/show/1129814
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=49
2023-12-02 10:42:55 +00:00
4cc8928a51 Accepting request 1116963 from KDE:Qt6
Qt 6.6.0. Not built yet (forwarded request 1116657 from krop)

OBS-URL: https://build.opensuse.org/request/show/1116963
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=24
2023-10-13 21:14:37 +00:00
Christophe Marin
8aa43d8aee OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=47 2023-10-11 11:52:15 +00:00
Christophe Marin
d974358bd8 Accepting request 1116657 from home:krop:Qt6:Release
Qt 6.6.0. Not built yet

OBS-URL: https://build.opensuse.org/request/show/1116657
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=46
2023-10-11 11:50:28 +00:00
6416e85028 Accepting request 1114521 from KDE:Qt6
Qt 6.5.3 (forwarded request 1114130 from krop)

OBS-URL: https://build.opensuse.org/request/show/1114521
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=23
2023-10-02 18:05:55 +00:00
Christophe Marin
66a6e44375 Accepting request 1114130 from home:krop:Qt6:Release
Qt 6.5.3

OBS-URL: https://build.opensuse.org/request/show/1114130
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=44
2023-09-30 07:59:37 +00:00
9786fe5c08 Accepting request 1103039 from KDE:Qt6
Fix the factory build

OBS-URL: https://build.opensuse.org/request/show/1103039
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=22
2023-08-09 15:25:52 +00:00
Christophe Marin
de7da852db Fix the factory build
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=42
2023-08-08 20:43:36 +00:00
d64e245335 Accepting request 1100019 from KDE:Qt6
Qt 6.5.2 (forwarded request 1099849 from krop)

OBS-URL: https://build.opensuse.org/request/show/1100019
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=21
2023-07-26 11:23:03 +00:00
Christophe Marin
4450b9c47a Accepting request 1099849 from home:krop:Qt6:Release
Qt 6.5.2

OBS-URL: https://build.opensuse.org/request/show/1099849
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=40
2023-07-22 06:50:32 +00:00
0ceaff41fa Accepting request 1097562 from KDE:Qt6
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1097562
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=20
2023-07-08 20:47:27 +00:00
Christophe Marin
ec8f331a19 Update build requirements
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=38
2023-06-30 15:16:25 +00:00
0e2c0071ea Accepting request 1089114 from KDE:Qt6
Qt 6.5.1 (forwarded request 1088916 from krop)

OBS-URL: https://build.opensuse.org/request/show/1089114
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=19
2023-05-28 17:22:19 +00:00
Luca Beltrame
11c309d2f3 Qt 6.5.1
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=36
2023-05-26 05:58:59 +00:00
ceb87f5114 Accepting request 1077352 from KDE:Qt6
Update to 6.5.0 (forwarded request 1077258 from Vogtinator)

OBS-URL: https://build.opensuse.org/request/show/1077352
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=18
2023-04-05 19:32:17 +00:00
Christophe Marin
7d972c5079 Update to 6.5.0
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=34
2023-04-04 19:39:23 +00:00
442ce141e9 Accepting request 1075160 from KDE:Qt6
- Add upstream change:
  * qtwebengine-gcc13.patch

OBS-URL: https://build.opensuse.org/request/show/1075160
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=17
2023-03-29 21:27:44 +00:00
Christophe Marin
c87498652a gcc13 fix
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=32
2023-03-29 08:36:06 +00:00
0f6e77b0d9 Accepting request 1072426 from KDE:Qt6
Update to 6.4.3 (forwarded request 1072393 from krop)

OBS-URL: https://build.opensuse.org/request/show/1072426
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=16
2023-03-17 16:03:33 +00:00
Christophe Marin
584820a5c7 Accepting request 1072393 from home:krop:Qt6:Release
Update to 6.4.3

OBS-URL: https://build.opensuse.org/request/show/1072393
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=30
2023-03-16 14:42:39 +00:00
95ee9b7e3c Accepting request 1057287 from KDE:Qt6
Qt 6.4.2 (forwarded request 1057253 from krop)

OBS-URL: https://build.opensuse.org/request/show/1057287
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=15
2023-01-11 13:34:17 +00:00
Christophe Marin
8f0994e420 Accepting request 1057253 from KDE:Qt:6.4
Qt 6.4.2

OBS-URL: https://build.opensuse.org/request/show/1057253
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=28
2023-01-10 08:52:28 +00:00
4d80e97137 Accepting request 1036934 from KDE:Qt6
Update to 6.4.1

OBS-URL: https://build.opensuse.org/request/show/1036934
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=14
2022-11-21 14:29:24 +00:00
f27cdbf8e3 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=26 2022-11-20 12:05:24 +00:00
5e95d339fb Accepting request 1036897 from KDE:Qt:6.4
Qt 6.4.1

OBS-URL: https://build.opensuse.org/request/show/1036897
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=25
2022-11-20 11:58:44 +00:00
f48a49e67b Accepting request 1007994 from KDE:Qt6
- Update disk constraints for qt6-webengine:docs (forwarded request 1007993 from cgiboudeaux)

OBS-URL: https://build.opensuse.org/request/show/1007994
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=13
2022-10-07 23:22:50 +00:00
35cd96da90 Accepting request 1007993 from KDE:Qt:6.4
- Update disk constraints for qt6-webengine:docs

OBS-URL: https://build.opensuse.org/request/show/1007993
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=23
2022-10-04 20:12:02 +00:00
414810451e Accepting request 1007337 from KDE:Qt6
Qt 6.4.0

OBS-URL: https://build.opensuse.org/request/show/1007337
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=12
2022-10-01 15:43:26 +00:00
aaa6935b95 Qt 6.4.0
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=21
2022-09-30 18:33:06 +00:00
528eba56e1 Accepting request 1003829 from KDE:Qt6
Qt 6.3.2 (forwarded request 1003797 from cgiboudeaux)

OBS-URL: https://build.opensuse.org/request/show/1003829
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=11
2022-09-15 20:59:40 +00:00
4213784a76 Qt 6.3.2
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=19
2022-09-15 11:41:45 +00:00
1050f45d2e Accepting request 993776 from KDE:Qt6
- Remove python2 from buildrequires - it's a left over from qt5

OBS-URL: https://build.opensuse.org/request/show/993776
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=10
2022-08-09 13:27:09 +00:00
a878f44f00 Add back comment
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=17
2022-08-08 12:52:40 +00:00
ba37b3a8a1 Accepting request 993761 from home:coolo:branches:openSUSE:Factory
- Remove python2 from buildrequires - it's a left over from qt5

OBS-URL: https://build.opensuse.org/request/show/993761
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=16
2022-08-08 12:50:59 +00:00
fa1d891539 Accepting request 983759 from KDE:Qt6
Qt 6.3.1 (forwarded request 983727 from cgiboudeaux)

OBS-URL: https://build.opensuse.org/request/show/983759
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=9
2022-06-20 13:37:49 +00:00
5fd236fbc5 Qt 6.3.1
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=14
2022-06-19 17:48:41 +00:00
259ef13b0e Accepting request 970816 from KDE:Qt6
Qt 6.3.0 (forwarded request 970780 from cgiboudeaux)

OBS-URL: https://build.opensuse.org/request/show/970816
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=8
2022-04-20 14:56:12 +00:00
2062c034e8 Qt 6.3.0
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=12
2022-04-19 12:13:12 +00:00
93bc022725 Accepting request 966962 from KDE:Qt6
- Add security fixes:
  * CVE-2022-0971-qtwebengine-5.15.patch (CVE-2022-0971, boo#1197163)
  * CVE-2022-1096-qtwebengine-6.2.patch (CVE-2022-1096, boo#1197552)

OBS-URL: https://build.opensuse.org/request/show/966962
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=7
2022-04-05 17:55:39 +00:00
b0e3afbb77 OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=10 2022-04-05 08:58:35 +00:00
ab745e1633 Accepting request 966949 from KDE:Qt:6.2
- Add security fixes:
  * CVE-2022-0971-qtwebengine-5.15.patch (CVE-2022-0971, boo#1197163)
  * CVE-2022-1096-qtwebengine-5.15.patch (CVE-2022-1096, boo#1197552)

OBS-URL: https://build.opensuse.org/request/show/966949
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=9
2022-04-05 07:50:17 +00:00
4278480ac9 Accepting request 965415 from KDE:Qt6
Qt 6.2.4 (forwarded request 965385 from cgiboudeaux)

OBS-URL: https://build.opensuse.org/request/show/965415
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=6
2022-03-29 16:14:48 +00:00
d6b0a883f2 Qt 6.2.4
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=7
2022-03-28 14:07:00 +00:00
774ca570c2 Accepting request 950514 from KDE:Qt6
Qt 6.2.3 (forwarded request 950484 from cgiboudeaux)

OBS-URL: https://build.opensuse.org/request/show/950514
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=5
2022-02-02 21:40:35 +00:00
bcb8fee157 Qt 6.2.3
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=6
2022-02-01 16:30:27 +00:00
a0a5e45c03 Accepting request 939063 from KDE:Qt6
OBS-URL: https://build.opensuse.org/request/show/939063
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=4
2021-12-10 20:52:41 +00:00
04c192d266 Accepting request 939027 from home:Guillaume_G:branches:openSUSE:Factory:ARM
- Update _constraints on arm and set requirements for
  qt6-webengine:docs

OBS-URL: https://build.opensuse.org/request/show/939027
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=5
2021-12-10 09:40:26 +00:00
c6945e6385 Accepting request 936327 from KDE:Qt6
Qt 6.2.2 (forwarded request 936299 from cgiboudeaux)

OBS-URL: https://build.opensuse.org/request/show/936327
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=3
2021-12-08 21:09:14 +00:00
7f73b8e7fd Qt 6.2.2
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=4
2021-12-07 17:02:14 +00:00
d22260808a Accepting request 928725 from KDE:Qt6
Qt 6.2.1

OBS-URL: https://build.opensuse.org/request/show/928725
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=2
2021-11-04 15:09:31 +00:00
7fe94ec738 Qt 6.2.1 (forward)
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=3
2021-11-02 09:40:19 +00:00
d15c016e56 Accepting request 922705 from KDE:Qt6
Qt 6.2.0

OBS-URL: https://build.opensuse.org/request/show/922705
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qt6-webengine?expand=0&rev=1
2021-10-04 16:40:08 +00:00
5957a3226b forward
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-webengine?expand=0&rev=1
2021-10-01 21:13:35 +00:00
8 changed files with 455 additions and 679 deletions

View File

@@ -0,0 +1,19 @@
Don't use xnnpack on ARM with QtWebEngine 6.8.0
Bug ref: https://bugreports.qt.io/browse/QTBUG-129985
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 9b9be814d..7f76ec696 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -566,6 +566,10 @@ foreach(arch ${archs})
list(APPEND gnArgArg libyuv_use_sve=false)
endif()
endif()
+ if(cpu MATCHES "arm.*")
+ # https://bugreports.qt.io/browse/QTBUG-129985
+ list(APPEND gnArgArg build_webnn_with_xnnpack=false)
+ endif()
unset(cpu)
endif()

View File

@@ -0,0 +1,161 @@
Revert upstream change https://code.qt.io/cgit/qt/qtwebengine.git/commit/?id=ddcd30454aa6338d898c9d20c8feb48f36632e16
which causes rendering issues with Mesa 25.2
https://bugreports.qt.io/browse/QTBUG-139424
https://bugzilla.opensuse.org/1249354
diff --git b/src/core/ozone/egl_helper.cpp a/src/core/ozone/egl_helper.cpp
index 1ed679d2390d..d12280f2be45 100644
--- b/src/core/ozone/egl_helper.cpp
+++ a/src/core/ozone/egl_helper.cpp
@@ -58,14 +58,90 @@ static const char *getEGLErrorString(uint32_t error)
QT_BEGIN_NAMESPACE
+class ScopedGLContext
+{
+public:
+ ScopedGLContext(QOffscreenSurface *surface, EGLHelper::EGLFunctions *eglFun)
+ : m_context(new QOpenGLContext()), m_eglFun(eglFun)
+ {
+ if ((m_previousEGLContext = m_eglFun->eglGetCurrentContext())) {
+ m_previousEGLDrawSurface = m_eglFun->eglGetCurrentSurface(EGL_DRAW);
+ m_previousEGLReadSurface = m_eglFun->eglGetCurrentSurface(EGL_READ);
+ m_previousEGLDisplay = m_eglFun->eglGetCurrentDisplay();
+ }
+
+ if (!m_context->create()) {
+ qWarning("Failed to create OpenGL context.");
+ return;
+ }
+
+ Q_ASSERT(surface->isValid());
+ if (!m_context->makeCurrent(surface)) {
+ qWarning("Failed to make OpenGL context current.");
+ return;
+ }
+ }
+
+ ~ScopedGLContext()
+ {
+ if (!m_textures.empty()) {
+ auto *glFun = m_context->functions();
+ glFun->glDeleteTextures(m_textures.size(), m_textures.data());
+ }
+
+ if (m_previousEGLContext) {
+ // Make sure the scoped context is not current when restoring the previous
+ // EGL context otherwise the QOpenGLContext destructor resets the restored
+ // current context.
+ m_context->doneCurrent();
+
+ m_eglFun->eglMakeCurrent(m_previousEGLDisplay, m_previousEGLDrawSurface,
+ m_previousEGLReadSurface, m_previousEGLContext);
+ if (m_eglFun->eglGetError() != EGL_SUCCESS)
+ qWarning("Failed to restore EGL context.");
+ }
+ }
+
+ bool isValid() const { return m_context->isValid() && (m_context->surface() != nullptr); }
+
+ EGLContext eglContext() const
+ {
+ QNativeInterface::QEGLContext *nativeInterface =
+ m_context->nativeInterface<QNativeInterface::QEGLContext>();
+ return nativeInterface->nativeContext();
+ }
+
+ uint createTexture(int width, int height)
+ {
+ auto *glFun = m_context->functions();
+
+ uint glTexture;
+ glFun->glGenTextures(1, &glTexture);
+ glFun->glBindTexture(GL_TEXTURE_2D, glTexture);
+ glFun->glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE,
+ NULL);
+ glFun->glBindTexture(GL_TEXTURE_2D, 0);
+
+ m_textures.push_back(glTexture);
+ return glTexture;
+ }
+
+private:
+ QScopedPointer<QOpenGLContext> m_context;
+ EGLHelper::EGLFunctions *m_eglFun;
+ EGLContext m_previousEGLContext = nullptr;
+ EGLSurface m_previousEGLDrawSurface = nullptr;
+ EGLSurface m_previousEGLReadSurface = nullptr;
+ EGLDisplay m_previousEGLDisplay = nullptr;
+ std::vector<uint> m_textures;
+};
+
EGLHelper::EGLFunctions::EGLFunctions()
{
QOpenGLContext *context = OzoneUtilQt::getQOpenGLContext();
eglCreateImage =
reinterpret_cast<PFNEGLCREATEIMAGEPROC>(context->getProcAddress("eglCreateImage"));
- eglCreateDRMImageMESA = reinterpret_cast<PFNEGLCREATEDRMIMAGEMESAPROC>(
- context->getProcAddress("eglCreateDRMImageMESA"));
eglDestroyImage =
reinterpret_cast<PFNEGLDESTROYIMAGEPROC>(context->getProcAddress("eglDestroyImage"));
eglExportDMABUFImageMESA = reinterpret_cast<PFNEGLEXPORTDMABUFIMAGEMESAPROC>(
@@ -122,7 +198,6 @@ EGLHelper::EGLHelper()
const char *displayExtensions = m_functions->eglQueryString(m_eglDisplay, EGL_EXTENSIONS);
m_isDmaBufSupported = strstr(displayExtensions, "EGL_EXT_image_dma_buf_import")
&& strstr(displayExtensions, "EGL_EXT_image_dma_buf_import_modifiers")
- && strstr(displayExtensions, "EGL_MESA_drm_image")
&& strstr(displayExtensions, "EGL_MESA_image_dma_buf_export");
}
@@ -143,17 +218,19 @@ void EGLHelper::queryDmaBuf(const int width, const int height, int *fd, int *str
if (!m_isDmaBufSupported)
return;
- // clang-format off
- EGLint attribs[] = {
- EGL_WIDTH, width,
- EGL_HEIGHT, height,
- EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
- EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SHARE_MESA,
- EGL_NONE
- };
- // clang-format on
+ ScopedGLContext context(m_offscreenSurface.get(), m_functions.get());
+ if (!context.isValid())
+ return;
- EGLImage eglImage = m_functions->eglCreateDRMImageMESA(m_eglDisplay, attribs);
+ EGLContext eglContext = context.eglContext();
+ if (!eglContext) {
+ qWarning("EGL: No EGLContext.");
+ return;
+ }
+
+ uint64_t textureId = context.createTexture(width, height);
+ EGLImage eglImage = m_functions->eglCreateImage(m_eglDisplay, eglContext, EGL_GL_TEXTURE_2D,
+ (EGLClientBuffer)textureId, NULL);
if (eglImage == EGL_NO_IMAGE) {
qWarning("EGL: Failed to create EGLImage: %s", getLastEGLErrorString());
return;
diff --git b/src/core/ozone/egl_helper.h a/src/core/ozone/egl_helper.h
index 7594e1f84699..a1a1aa0d667e 100644
--- b/src/core/ozone/egl_helper.h
+++ a/src/core/ozone/egl_helper.h
@@ -11,7 +11,6 @@
#include <EGL/eglext.h>
#undef eglCreateImage
-#undef eglCreateDRMImageMESA
#undef eglDestroyImage
#undef eglExportDMABUFImageMESA
#undef eglExportDMABUFImageQueryMESA
@@ -34,7 +33,6 @@ public:
EGLFunctions();
PFNEGLCREATEIMAGEPROC eglCreateImage;
- PFNEGLCREATEDRMIMAGEMESAPROC eglCreateDRMImageMESA;
PFNEGLDESTROYIMAGEPROC eglDestroyImage;
PFNEGLEXPORTDMABUFIMAGEMESAPROC eglExportDMABUFImageMESA;
PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC eglExportDMABUFImageQueryMESA;

View File

@@ -1,3 +1,113 @@
-------------------------------------------------------------------
Fri Sep 5 14:49:50 UTC 2025 - llyyr <llyyr@yukari.in>
- Add patch:
* QtWebEngine_6.9.2_QTBUG-139424.patch (QTBUG-139424, boo#1249354)
-------------------------------------------------------------------
Wed Aug 27 07:16:09 UTC 2025 - Christophe Marin <christophe@krop.fr>
- Update to 6.9.2:
* https://www.qt.io/blog/qt-6.9.2-released
* Patched with security patches up to Chromium version up
to 139.0.7258.67
-------------------------------------------------------------------
Tue Jun 3 07:49:35 UTC 2025 - Christophe Marin <christophe@krop.fr>
- Update to 6.9.1:
* https://www.qt.io/blog/qt-6.9.1-released
- Drop patches, merged upstream:
* 0001-Do-not-force-gl-egl-ANGLE-backend-on-Linux.patch
* 0001-Do-not-list-GLX-frame-buffer-configurations-unnecess.patch
* 0001-NativeSkiaOutputDeviceOpenGL-Fix-leaking-X11-Pixmap.patch
* 0001-NativeSkiaOutputDeviceVulkan-Use-minimal-set-of-usag.patch
* 0001-Add-default-and-gl-ANGLE-implementation-support-to-O.patch
* 0001-Avoid-crash-due-to-long-dictionary-commands.patch
* 0001-angle-Always-use-primary-GPU.patch
* 0001-gbm-Add-fallback-for-drmPrimeHandleToFD.patch
* qtwebengine-glibc_2.41.patch
* qtwebengine-pipewire-1.4.patch
-------------------------------------------------------------------
Tue May 6 09:02:19 UTC 2025 - Christophe Marin <christophe@krop.fr>
- Add upstream fixes:
* 0001-Do-not-force-gl-egl-ANGLE-backend-on-Linux.patch (QTBUG-135786)
* 0001-gbm-Add-fallback-for-drmPrimeHandleToFD.patch (QTBUG-135935)
* 0001-Do-not-list-GLX-frame-buffer-configurations-unnecess.patch (QTBUG-135647)
* 0001-angle-Always-use-primary-GPU.patch
* 0001-NativeSkiaOutputDeviceOpenGL-Fix-leaking-X11-Pixmap.patch (QTBUG-135047)
* 0001-NativeSkiaOutputDeviceVulkan-Use-minimal-set-of-usag.patch (QTBUG-123607)
* 0001-Add-default-and-gl-ANGLE-implementation-support-to-O.patch (QTBUG-129769)
* 0001-Avoid-crash-due-to-long-dictionary-commands.patch
-------------------------------------------------------------------
Fri Apr 4 07:57:10 UTC 2025 - Christophe Marin <christophe@krop.fr>
- openjpeg2 is too old for Leap 15 builds, use the embedded one
-------------------------------------------------------------------
Wed Apr 2 11:03:45 UTC 2025 - Christophe Marin <christophe@krop.fr>
- Update to 6.9.0:
* https://www.qt.io/blog/qt-6.9-released
- Drop patches, merged upstream:
* 0001-Build-system-remove-libxml2-compilation-test.patch
* qtwebengine-ffmpeg-playback-fix.patch
- Add patch:
* qtwebengine-pipewire-1.4.patch
-------------------------------------------------------------------
Sat Mar 15 09:39:07 UTC 2025 - Christophe Marin <christophe@krop.fr>
- Add patches:
* qtwebengine-glibc_2.41.patch (boo#1238826)
* qtwebengine-ffmpeg-playback-fix.patch (QTBUG-130273, QTBUG-132762)
-------------------------------------------------------------------
Sun Mar 9 22:51:10 UTC 2025 - Christophe Marin <christophe@krop.fr>
- Ignore private QML imports
-------------------------------------------------------------------
Fri Jan 31 10:23:03 UTC 2025 - Christophe Marin <christophe@krop.fr>
- Update to 6.8.2
https://www.qt.io/blog/qt-6.8.2-released
-------------------------------------------------------------------
Thu Dec 26 12:14:18 UTC 2024 - Christophe Marin <christophe@krop.fr>
- Add patch to avoid CVE-2024-40896 (boo#1234820)
* 0001-Build-system-remove-libxml2-compilation-test.patch
-------------------------------------------------------------------
Mon Dec 2 13:02:17 UTC 2024 - Christophe Marin <christophe@krop.fr>
- Update to 6.8.1:
* https://www.qt.io/blog/qt-6.8.1-released
-------------------------------------------------------------------
Sun Oct 13 16:56:37 UTC 2024 - Christophe Marin <christophe@krop.fr>
- Add patch to avoid a build failure on ARM (QTBUG-129985):
* QtWebEngine_6.8_skip_xnnpack.patch
-------------------------------------------------------------------
Tue Oct 8 09:29:57 UTC 2024 - Christophe Marin <christophe@krop.fr>
- Update to 6.8.0:
* https://www.qt.io/blog/qt-6.8-released
- Drop patch:
* qtwebengine-ffmpeg-7.patch
-------------------------------------------------------------------
Sat Sep 28 08:23:12 UTC 2024 - Christophe Marin <christophe@krop.fr>
- Update to 6.7.3
* https://www.qt.io/blog/qt-6.7.3-released
-------------------------------------------------------------------
Wed Aug 7 12:39:11 UTC 2024 - Christophe Marin <christophe@krop.fr>

View File

@@ -1,7 +1,7 @@
#
# spec file for package qt6-webengine
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,8 +16,8 @@
#
%define real_version 6.7.2
%define short_version 6.7
%define real_version 6.9.2
%define short_version 6.9
%define tar_name qtwebengine-everywhere-src
%define tar_suffix %{nil}
#
@@ -28,6 +28,9 @@
%define pkg_suffix -docs
%endif
#
# Private QML imports
%global __requires_exclude qt6qmlimport\\((BrowserUtils|frequencymonitor|FrequencyMonitor|performancemonitor).*
#
%if 0%{?suse_version} > 1500
# The antique version in Leap 15 is too old for building chromium
%bcond_without system_harfbuzz
@@ -35,9 +38,24 @@
%bcond_without system_icu
# and so is tiff...
%bcond_without system_tiff
# Leap 15's ffmpeg is too old since 6.8.0
%bcond_without system_ffmpeg
# openjpeg2 is too old and doesn't know opj_decoder_set_strict_mode
%bcond_without system_openjpeg2
# and python 3.6 is also too old for this QtWE version
%define pyver python3
%else
%{?sle15_python_module_pythons}
%define pyver python311
%endif
#
# Note about required versions:
# qtwebengine supports building against the latest LTS release. This (potentially) allows submitting
# updates to Leap
%global lts_version 6.8.0
#
Name: qt6-webengine%{?pkg_suffix}
Version: 6.7.2
Version: 6.9.2
Release: 0
Summary: Web browser engine for Qt applications
License: GPL-2.0-only OR LGPL-3.0-only OR GPL-3.0-only
@@ -47,16 +65,18 @@ Source99: qt6-webengine-rpmlintrc
# Patches 0-100 are upstream patches #
# Patches 100-200 are openSUSE and/or non-upstream(able) patches #
Patch100: rtc-dont-use-h264.patch
Patch101: qtwebengine-ffmpeg-7.patch
#
# Chromium/blink don't support PowerPC and zSystems and build fails on
# 32 bits archs (https://bugreports.qt.io/browse/QTBUG-102143)
ExclusiveArch: aarch64 x86_64 %x86_64 riscv64
Patch101: QtWebEngine_6.8_skip_xnnpack.patch
Patch102: QtWebEngine_6.9.2_QTBUG-139424.patch
BuildRequires: %{pyver}
BuildRequires: %{pyver}-devel
BuildRequires: %{pyver}-html5lib
BuildRequires: %{pyver}-importlib-metadata
BuildRequires: Mesa-KHR-devel
BuildRequires: bison
# Not pulled automatically on Leap
BuildRequires: cups-config
BuildRequires: cups-devel
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: gperf
BuildRequires: krb5-devel
@@ -66,37 +86,37 @@ BuildRequires: memory-constraints
BuildRequires: nodejs-default
BuildRequires: pipewire-devel
BuildRequires: pkgconfig
BuildRequires: python3-devel
BuildRequires: python3-html5lib
BuildRequires: python3-importlib-metadata
BuildRequires: qt6-core-private-devel
BuildRequires: qt6-gui-private-devel
BuildRequires: qt6-qml-private-devel
BuildRequires: qt6-quick-private-devel
BuildRequires: qt6-quickwidgets-private-devel
BuildRequires: qt6-widgets-private-devel
BuildRequires: qt6-core-private-devel >= %{lts_version}
BuildRequires: qt6-gui-private-devel >= %{lts_version}
BuildRequires: qt6-qml-private-devel >= %{lts_version}
BuildRequires: qt6-quick-private-devel >= %{lts_version}
BuildRequires: qt6-quickwidgets-private-devel >= %{lts_version}
BuildRequires: qt6-widgets-private-devel >= %{lts_version}
BuildRequires: snappy-devel
BuildRequires: cmake(Qt6Core) = %{real_version}
BuildRequires: cmake(Qt6Designer) = %{real_version}
BuildRequires: cmake(Qt6Gui) = %{real_version}
BuildRequires: cmake(Qt6GuiTools) = %{real_version}
BuildRequires: cmake(Qt6Network) = %{real_version}
BuildRequires: cmake(Qt6OpenGL) = %{real_version}
BuildRequires: cmake(Qt6OpenGLWidgets) = %{real_version}
BuildRequires: cmake(Qt6Positioning) = %{real_version}
BuildRequires: cmake(Qt6PrintSupport) = %{real_version}
BuildRequires: cmake(Qt6Qml) = %{real_version}
BuildRequires: cmake(Qt6QmlModels) = %{real_version}
BuildRequires: cmake(Qt6QmlTools) = %{real_version}
BuildRequires: cmake(Qt6Quick) = %{real_version}
BuildRequires: cmake(Qt6QuickControls2) = %{real_version}
BuildRequires: cmake(Qt6QuickTest) = %{real_version}
BuildRequires: cmake(Qt6QuickWidgets) = %{real_version}
BuildRequires: cmake(Qt6WebChannel) = %{real_version}
BuildRequires: cmake(Qt6WebChannelQuick) = %{real_version}
BuildRequires: cmake(Qt6WebSockets) = %{real_version}
BuildRequires: cmake(Qt6Widgets) = %{real_version}
BuildRequires: cmake(Qt6WidgetsTools) = %{real_version}
BuildRequires: cmake(Qt6Core) >= %{lts_version}
BuildRequires: cmake(Qt6Designer) >= %{lts_version}
BuildRequires: cmake(Qt6Gui) >= %{lts_version}
BuildRequires: cmake(Qt6GuiTools) >= %{lts_version}
# Only needed for tests, no need to have it
# BuildRequires: cmake(Qt6HttpServer)
BuildRequires: cmake(Qt6Network) >= %{lts_version}
BuildRequires: cmake(Qt6OpenGL) >= %{lts_version}
BuildRequires: cmake(Qt6OpenGLWidgets) >= %{lts_version}
BuildRequires: cmake(Qt6Positioning) >= %{lts_version}
BuildRequires: cmake(Qt6PrintSupport) >= %{lts_version}
BuildRequires: cmake(Qt6Qml) >= %{lts_version}
BuildRequires: cmake(Qt6QmlModels) >= %{lts_version}
BuildRequires: cmake(Qt6QmlTools) >= %{lts_version}
BuildRequires: cmake(Qt6Quick) >= %{lts_version}
BuildRequires: cmake(Qt6QuickControls2) >= %{lts_version}
BuildRequires: cmake(Qt6QuickTest) >= %{lts_version}
BuildRequires: cmake(Qt6QuickWidgets) >= %{lts_version}
BuildRequires: cmake(Qt6Svg) >= %{lts_version}
BuildRequires: cmake(Qt6WebChannel) >= %{lts_version}
BuildRequires: cmake(Qt6WebChannelQuick) >= %{lts_version}
BuildRequires: cmake(Qt6WebSockets) >= %{lts_version}
BuildRequires: cmake(Qt6Widgets) >= %{lts_version}
BuildRequires: cmake(Qt6WidgetsTools) >= %{lts_version}
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(epoxy)
@@ -107,20 +127,24 @@ BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.32.0
BuildRequires: pkgconfig(glproto)
%if %{with system_harfbuzz}
BuildRequires: pkgconfig(harfbuzz)
BuildRequires: pkgconfig(harfbuzz) >= 4.3.0
%endif
%if %{with system_icu}
BuildRequires: pkgconfig(icu-i18n) >= 71
BuildRequires: pkgconfig(icu-uc) >= 71
%endif
BuildRequires: pkgconfig(lcms2)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
%if %{with system_ffmpeg}
BuildRequires: pkgconfig(libavcodec) >= 60.31.102
BuildRequires: pkgconfig(libavformat) >= 60.16.100
BuildRequires: pkgconfig(libavutil) >= 58.29.100
%endif
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libevent)
%if %{with system_openjpeg2}
BuildRequires: pkgconfig(libopenjp2)
%endif
BuildRequires: pkgconfig(libpci)
BuildRequires: pkgconfig(libpulse) >= 0.9.10
%if %{with system_tiff}
@@ -155,8 +179,10 @@ BuildRequires: pkgconfig(xshmfence)
BuildRequires: pkgconfig(xt)
BuildRequires: pkgconfig(xtst)
BuildRequires: pkgconfig(zlib)
# Picked from chromium.spec
BuildRequires: (python3 >= 3.7 or python3-dataclasses)
# Chromium/blink don't support PowerPC and zSystems and build fails on
# 32 bits archs (https://bugreports.qt.io/browse/QTBUG-102143)
ExclusiveArch: aarch64 x86_64 %{x86_64} riscv64
%if "%{qt6_flavor}" == "docs"
BuildRequires: qt6-tools
%{qt6_doc_packages}
@@ -194,8 +220,8 @@ QML files and plugins from the Qt 6 Pdf module
%package -n qt6-pdf-devel
Summary: Development files for the Qt 6 Pdf library
Requires: libQt6Pdf6 = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6Network) = %{real_version}
Requires: cmake(Qt6Gui) >= %{lts_version}
Requires: cmake(Qt6Network) >= %{lts_version}
%description -n qt6-pdf-devel
Development files for the Qt 6 Pdf library.
@@ -217,11 +243,11 @@ The Qt6 PdfQuick library.
%package -n qt6-pdfquick-devel
Summary: Development files for the Qt 6 PdfQuick library
Requires: libQt6PdfQuick6 = %{version}
Requires: qt6-pdf-private-devel = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6Qml) = %{real_version}
Requires: cmake(Qt6Quick) = %{real_version}
%requires_eq qt6-quick-private-devel
Requires: qt6-quick-private-devel >= %{lts_version}
Requires: cmake(Qt6Gui) >= %{lts_version}
Requires: cmake(Qt6PdfPrivate) = %{real_version}
Requires: cmake(Qt6Qml) >= %{lts_version}
Requires: cmake(Qt6Quick) >= %{lts_version}
%description -n qt6-pdfquick-devel
Development files for the Qt 6 PdfQuick library.
@@ -243,9 +269,9 @@ The Qt6 PdfWidgets library.
%package -n qt6-pdfwidgets-devel
Summary: Development files for the Qt 6 PdfWidgets library
Requires: libQt6PdfWidgets6 = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6Gui) >= %{lts_version}
Requires: cmake(Qt6Pdf) = %{real_version}
Requires: cmake(Qt6Widgets) = %{real_version}
Requires: cmake(Qt6Widgets) >= %{lts_version}
%description -n qt6-pdfwidgets-devel
Development files for the Qt 6 PdfWidgets library.
@@ -268,11 +294,11 @@ The Qt6 WebEngineCore library.
%package -n qt6-webenginecore-devel
Summary: Development files for the Qt 6 WebEngineCore library
Requires: libQt6WebEngineCore6 = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6Network) = %{real_version}
Requires: cmake(Qt6Positioning) = %{real_version}
Requires: cmake(Qt6Quick) = %{real_version}
Requires: cmake(Qt6WebChannel) = %{real_version}
Requires: cmake(Qt6Gui) >= %{lts_version}
Requires: cmake(Qt6Network) >= %{lts_version}
Requires: cmake(Qt6Positioning) >= %{lts_version}
Requires: cmake(Qt6Quick) >= %{lts_version}
Requires: cmake(Qt6WebChannel) >= %{lts_version}
%description -n qt6-webenginecore-devel
Development files for the Qt 6 WebEngineCore library.
@@ -295,10 +321,10 @@ The Qt6 WebEngineQuick library.
%package -n qt6-webenginequick-devel
Summary: Development files for the Qt 6 WebEngineQuick library
Requires: libQt6WebEngineQuick6 = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6Qml) = %{real_version}
Requires: cmake(Qt6Quick) = %{real_version}
Requires: cmake(Qt6WebChannelQuick) = %{real_version}
Requires: cmake(Qt6Gui) >= %{lts_version}
Requires: cmake(Qt6Qml) >= %{lts_version}
Requires: cmake(Qt6Quick) >= %{lts_version}
Requires: cmake(Qt6WebChannelQuick) >= %{lts_version}
Requires: cmake(Qt6WebEngineCore) = %{real_version}
%description -n qt6-webenginequick-devel
@@ -321,12 +347,12 @@ The Qt6 WebEngineWidgets library.
%package -n qt6-webenginewidgets-devel
Summary: Development files for the Qt 6 WebEngineWidgets library
Requires: libQt6WebEngineWidgets6 = %{version}
Requires: cmake(Qt6Gui) = %{real_version}
Requires: cmake(Qt6PrintSupport) = %{real_version}
Requires: cmake(Qt6Quick) = %{real_version}
Requires: cmake(Qt6QuickWidgets) = %{real_version}
Requires: cmake(Qt6Gui) >= %{lts_version}
Requires: cmake(Qt6PrintSupport) >= %{lts_version}
Requires: cmake(Qt6Quick) >= %{lts_version}
Requires: cmake(Qt6QuickWidgets) >= %{lts_version}
Requires: cmake(Qt6WebEngineCore) = %{real_version}
Requires: cmake(Qt6Widgets) = %{real_version}
Requires: cmake(Qt6Widgets) >= %{lts_version}
%description -n qt6-webenginewidgets-devel
Development files for the Qt 6 WebEngineWidgets library.
@@ -346,11 +372,6 @@ ABI or API guarantees.
%prep
%autosetup -p1 -n %{tar_name}-%{real_version}%{tar_suffix}
%if %{pkg_vcmp pkgconfig(libavcodec) <= 5}
# The ffmpeg 7 compatibility patch would break build with older ffmpeg
%patch -P101 -p1 -R
%endif
%build
%if %{no_flavor}
# Determine the right number of parallel processes based on the available memory
@@ -364,27 +385,38 @@ export NINJAFLAGS="%{?_smp_mflags}"
%cmake_qt6 \
-DCMAKE_TOOLCHAIN_FILE:STRING="%{_qt6_cmakedir}/Qt6/qt.toolchain.cmake" \
-DFEATURE_qtpdf_build:BOOL=ON \
-DFEATURE_webengine_developer_build:BOOL=OFF \
-DFEATURE_webengine_embedded_build:BOOL=OFF \
-DFEATURE_webengine_extensions:BOOL=ON \
-DFEATURE_webengine_kerberos:BOOL=ON \
-DFEATURE_webengine_native_spellchecker:BOOL=OFF \
-DFEATURE_webengine_printing_and_pdf:BOOL=ON \
-DFEATURE_webengine_proprietary_codecs:BOOL=ON \
-DFEATURE_webengine_system_ffmpeg:BOOL=ON \
%if 0%{?suse_version} == 1500
-DPython3_EXECUTABLE=%{_bindir}/python3.11 \
%endif
-DFEATURE_qtpdf_build:BOOL=TRUE \
-DFEATURE_webengine_developer_build:BOOL=FALSE \
-DFEATURE_webengine_embedded_build:BOOL=FALSE \
-DFEATURE_webengine_extensions:BOOL=TRUE \
-DFEATURE_webengine_kerberos:BOOL=TRUE \
-DFEATURE_webengine_native_spellchecker:BOOL=FALSE \
-DFEATURE_webengine_printing_and_pdf:BOOL=TRUE \
-DFEATURE_webengine_proprietary_codecs:BOOL=TRUE \
%if %{with system_ffmpeg}
-DFEATURE_webengine_system_ffmpeg:BOOL=TRUE \
%else
-DFEATURE_webengine_system_ffmpeg:BOOL=FALSE \
%endif
%if %{without system_harfbuzz}
-DFEATURE_webengine-system-harfbuzz:BOOL=OFF \
-DFEATURE_webengine_system_harfbuzz:BOOL=FALSE \
%endif
%if %{with system_icu}
-DFEATURE_webengine_system_icu:BOOL=ON \
-DFEATURE_webengine_system_icu:BOOL=TRUE \
%else
-DFEATURE_webengine_system_icu:BOOL=OFF \
-DFEATURE_webengine_system_icu:BOOL=FALSE \
%endif
-DFEATURE_webengine_system_libevent:BOOL=ON \
-DFEATURE_webengine_webrtc:BOOL=ON \
-DFEATURE_webengine_webrtc_pipewire:BOOL=ON \
-DQT_BUILD_EXAMPLES:BOOL=ON
%if %{without system_openjpeg2}
-DFEATURE_webengine_system_libopenjpeg2:BOOL=FALSE \
%endif
-DFEATURE_webengine_system_libevent:BOOL=TRUE \
-DFEATURE_webengine_webrtc:BOOL=TRUE \
-DFEATURE_webengine_webrtc_pipewire:BOOL=TRUE \
-DQT_BUILD_EXAMPLES:BOOL=TRUE \
-DQT_GENERATE_SBOM:BOOL=FALSE
%{qt6_build}
@@ -401,6 +433,12 @@ rm -r %{buildroot}%{_qt6_cmakedir}/Qt6Qml/QmlPlugins
# This shouldn't be needed
rm -r %{buildroot}%{_qt6_cmakedir}/Qt6BuildInternals
# E: files-duplicated-waste
%fdupes %{buildroot}%{_qt6_examplesdir}
# Hunspell dictionaries will be converted and added there when installing the package
mkdir -p %{buildroot}%{_qt6_datadir}/qtwebengine_dictionaries
%ldconfig_scriptlets -n libQt6Pdf6
%ldconfig_scriptlets -n libQt6PdfQuick6
%ldconfig_scriptlets -n libQt6PdfWidgets6
@@ -408,13 +446,26 @@ rm -r %{buildroot}%{_qt6_cmakedir}/Qt6BuildInternals
%ldconfig_scriptlets -n libQt6WebEngineQuick6
%ldconfig_scriptlets -n libQt6WebEngineWidgets6
%filetriggerin -- %{_datadir}/hunspell
# Convert Hunspell dictionaries on package installation
while read filename ; do
case "$filename" in
*.dic)
bdicname=%{_qt6_datadir}/qtwebengine_dictionaries/`basename -s .dic "$filename"`.bdic
%{_qt6_libexecdir}/qwebengine_convert_dict "$filename" "$bdicname" &> /dev/null || :
;;
esac
done
%files
%dir %{_qt6_datadir}/qtwebengine_dictionaries
%dir %{_qt6_pluginsdir}/designer
%{_qt6_datadir}/resources/
%{_qt6_translationsdir}/qtwebengine_locales/
%{_qt6_libexecdir}/QtWebEngineProcess
%{_qt6_libexecdir}/qwebengine_convert_dict
%{_qt6_libexecdir}/webenginedriver
%{_qt6_pluginsdir}/designer/libqwebengineview.so
%{_qt6_translationsdir}/qtwebengine_locales/
%files imports
%{_qt6_qmldir}/QtWebEngine/
@@ -440,6 +491,7 @@ rm -r %{buildroot}%{_qt6_cmakedir}/Qt6BuildInternals
%exclude %{_qt6_includedir}/QtPdf/%{real_version}
%files -n qt6-pdf-private-devel
%{_qt6_cmakedir}/Qt6PdfPrivate/
%{_qt6_includedir}/QtPdf/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_pdf_private.pri
@@ -458,6 +510,7 @@ rm -r %{buildroot}%{_qt6_cmakedir}/Qt6BuildInternals
%exclude %{_qt6_includedir}/QtPdfQuick/%{real_version}
%files -n qt6-pdfquick-private-devel
%{_qt6_cmakedir}/Qt6PdfQuickPrivate/
%{_qt6_includedir}/QtPdfQuick/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_pdfquick_private.pri
@@ -476,6 +529,7 @@ rm -r %{buildroot}%{_qt6_cmakedir}/Qt6BuildInternals
%exclude %{_qt6_includedir}/QtPdfWidgets/%{real_version}
%files -n qt6-pdfwidgets-private-devel
%{_qt6_cmakedir}/Qt6PdfWidgetsPrivate/
%{_qt6_includedir}/QtPdfWidgets/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_pdfwidgets_private.pri
@@ -497,13 +551,13 @@ rm -r %{buildroot}%{_qt6_cmakedir}/Qt6BuildInternals
%{_qt6_libdir}/libQt6WebEngineCore.prl
%{_qt6_libdir}/libQt6WebEngineCore.so
%{_qt6_libexecdir}/gn
%{_qt6_libexecdir}/qwebengine_convert_dict
%{_qt6_metatypesdir}/qt6webenginecore_*_metatypes.json
%{_qt6_mkspecsdir}/modules/qt_lib_webenginecore.pri
%{_qt6_pkgconfigdir}/Qt6WebEngineCore.pc
%exclude %{_qt6_includedir}/QtWebEngineCore/%{real_version}
%files -n qt6-webenginecore-private-devel
%{_qt6_cmakedir}/Qt6WebEngineCore*Private/
%{_qt6_includedir}/QtWebEngineCore/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_webenginecore_private.pri
@@ -530,6 +584,7 @@ rm -r %{buildroot}%{_qt6_cmakedir}/Qt6BuildInternals
%exclude %{_qt6_includedir}/QtWebEngineQuick/%{real_version}
%files -n qt6-webenginequick-private-devel
%{_qt6_cmakedir}/Qt6WebEngineQuick*Private/
%{_qt6_includedir}/QtWebEngineQuick/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_webenginequick_private.pri
%{_qt6_mkspecsdir}/modules/qt_lib_webenginequickdelegatesqml_private.pri
@@ -549,6 +604,7 @@ rm -r %{buildroot}%{_qt6_cmakedir}/Qt6BuildInternals
%exclude %{_qt6_includedir}/QtWebEngineWidgets/%{real_version}
%files -n qt6-webenginewidgets-private-devel
%{_qt6_cmakedir}/Qt6WebEngineWidgetsPrivate/
%{_qt6_includedir}/QtWebEngineWidgets/%{real_version}/
%{_qt6_mkspecsdir}/modules/qt_lib_webenginewidgets_private.pri

BIN
qtwebengine-everywhere-src-6.7.2.tar.xz (Stored with Git LFS)

Binary file not shown.

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:99cb0792abc2e39b299d73d8e2aa076b9ebcd55c3f4a4b5fd514eef5a62d03ab
size 672191852

View File

@@ -1,574 +0,0 @@
From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
From: Dale Curtis <dalecurtis@chromium.org>
Date: Sat, 2 Apr 2022 05:13:53 +0000
Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
commits)
https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526
Created with:
roll-dep src/third_party/ffmpeg
Fixed: 1293918
Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#988253}
---
.../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
media/ffmpeg/ffmpeg_common.cc | 11 +++----
media/filters/audio_file_reader.cc | 9 +++---
media/filters/audio_file_reader_unittest.cc | 6 ++--
.../filters/audio_video_metadata_extractor.cc | 11 +++++--
.../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++--
...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +-
media/filters/ffmpeg_audio_decoder.cc | 13 +++++----
8 files changed, 51 insertions(+), 37 deletions(-)
diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
index c535d2b..62ddbc8 100644
--- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
+++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
}
- codec_context->channels = config.channel_count;
+ codec_context->ch_layout.nb_channels = config.channel_count;
codec_context->sample_rate = config.samples_per_second;
if (config.extra_data) {
@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
case cdm::kAudioFormatPlanarS16:
case cdm::kAudioFormatPlanarF32: {
const int decoded_size_per_channel =
- decoded_audio_size / av_frame.channels;
- for (int i = 0; i < av_frame.channels; ++i) {
+ decoded_audio_size / av_frame.ch_layout.nb_channels;
+ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
memcpy(output_buffer, av_frame.extended_data[i],
decoded_size_per_channel);
output_buffer += decoded_size_per_channel;
@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
// Success!
decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
samples_per_second_ = config.samples_per_second;
- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
+ bytes_per_frame_ =
+ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
output_timestamp_helper_ =
std::make_unique<AudioTimestampHelper>(config.samples_per_second);
is_initialized_ = true;
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->channels;
+ channels_ = codec_context_->ch_layout.nb_channels;
av_sample_format_ = codec_context_->sample_fmt;
return true;
@@ -291,7 +292,8 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
for (auto& frame : audio_frames) {
int decoded_audio_size = 0;
if (frame->sample_rate != samples_per_second_ ||
- frame->channels != channels_ || frame->format != av_sample_format_) {
+ frame->ch_layout.nb_channels != channels_ ||
+ frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
<< " Sample Rate: " << frame->sample_rate << " vs "
<< samples_per_second_
@@ -302,7 +304,7 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
}
decoded_audio_size = av_samples_get_buffer_size(
- nullptr, codec_context_->channels, frame->nb_samples,
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
codec_context_->sample_fmt, 1);
if (!decoded_audio_size)
continue;
@@ -322,7 +324,7 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
AVFrame* frame) {
*total_size += av_samples_get_buffer_size(
- nullptr, codec_context_->channels, frame->nb_samples,
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
codec_context_->sample_fmt, 1);
audio_frames->emplace_back(av_frame_clone(frame));
return true;
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
index 2665355..910f9ad 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
@@ -336,10 +336,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
codec_context->sample_fmt, codec_context->codec_id);
ChannelLayout channel_layout =
- codec_context->channels > 8
+ codec_context->ch_layout.nb_channels > 8
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
- codec_context->channels);
+ : ChannelLayoutToChromeChannelLayout(
+ codec_context->ch_layout.u.mask,
+ codec_context->ch_layout.nb_channels);
switch (codec) {
// For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does
@@ -391,7 +392,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
extra_data, encryption_scheme, seek_preroll,
codec_context->delay);
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
- config->SetChannelsForDiscrete(codec_context->channels);
+ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
// These are bitstream formats unknown to ffmpeg, so they don't have
@@ -460,7 +461,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
// said information to decode.
- codec_context->channels = config.channels();
+ codec_context->ch_layout.nb_channels = config.channels();
codec_context->sample_rate = config.samples_per_second();
if (config.extra_data().empty()) {
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
index 777eabc..2b58dd7 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
// Verify the channel layout is supported by Chrome. Acts as a sanity check
// against invalid files. See http://crbug.com/171962
- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
- codec_context_->channels) ==
+ if (ChannelLayoutToChromeChannelLayout(
+ codec_context_->ch_layout.u.mask,
+ codec_context_->ch_layout.nb_channels) ==
CHANNEL_LAYOUT_UNSUPPORTED) {
return false;
}
// Store initial values to guard against midstream configuration changes.
- channels_ = codec_context_->channels;
+ channels_ = codec_context_->ch_layout.nb_channels;
audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
sample_rate_ = codec_context_->sample_rate;
av_sample_format_ = codec_context_->sample_fmt;
@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
if (frames_read < 0)
return false;
- const int channels = frame->channels;
+ const int channels = frame->ch_layout.nb_channels;
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
frame->format != av_sample_format_) {
DLOG(ERROR) << "Unsupported midstream configuration change!"
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
index 76b41aa..e26b6cd 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
audio_profile_ != stream_codec_parameters_->profile ||
sample_rate_index_ != sample_rate_index ||
- channel_configuration_ != stream_codec_parameters_->channels ||
+ channel_configuration_ !=
+ stream_codec_parameters_->ch_layout.nb_channels ||
frame_length_ != header_plus_packet_size) {
header_generated_ =
GenerateAdtsHeader(stream_codec_parameters_->codec_id,
0, // layer
stream_codec_parameters_->profile, sample_rate_index,
0, // private stream
- stream_codec_parameters_->channels,
+ stream_codec_parameters_->ch_layout.nb_channels,
0, // originality
0, // home
0, // copyrighted_stream
@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
codec_ = stream_codec_parameters_->codec_id;
audio_profile_ = stream_codec_parameters_->profile;
sample_rate_index_ = sample_rate_index;
- channel_configuration_ = stream_codec_parameters_->channels;
+ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
frame_length_ = header_plus_packet_size;
}
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
index 3b46f7f..1897eb0 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
test_parameters_.codec_id = AV_CODEC_ID_AAC;
test_parameters_.profile = FF_PROFILE_AAC_MAIN;
- test_parameters_.channels = 2;
+ test_parameters_.ch_layout.nb_channels = 2;
test_parameters_.extradata = extradata_header_;
test_parameters_.extradata_size = sizeof(extradata_header_);
}
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
index bf3ed00..d564ee9 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
@@ -29,7 +29,7 @@ namespace media {
// Return the number of channels from the data in |frame|.
static inline int DetermineChannels(AVFrame* frame) {
- return frame->channels;
+ return frame->ch_layout.nb_channels;
}
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
@@ -243,7 +243,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
// Translate unsupported into discrete layouts for discrete configurations;
// ffmpeg does not have a labeled discrete configuration internally.
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
- codec_context_->channel_layout, codec_context_->channels);
+ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
channel_layout = CHANNEL_LAYOUT_DISCRETE;
@@ -360,11 +360,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
// Success!
av_sample_format_ = codec_context_->sample_fmt;
- if (codec_context_->channels != config.channels()) {
+ if (codec_context_->ch_layout.nb_channels != config.channels()) {
MEDIA_LOG(ERROR, media_log_)
<< "Audio configuration specified " << config.channels()
<< " channels, but FFmpeg thinks the file contains "
- << codec_context_->channels << " channels";
+ << codec_context_->ch_layout.nb_channels << " channels";
ReleaseFFmpegResources();
state_ = DecoderState::kUninitialized;
return false;
@@ -415,7 +415,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
if (frame->nb_samples <= 0)
return AVERROR(EINVAL);
- if (s->channels != channels) {
+ if (s->ch_layout.nb_channels != channels) {
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
return AVERROR(EINVAL);
}
@@ -448,7 +448,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
ChannelLayout channel_layout =
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
? CHANNEL_LAYOUT_DISCRETE
- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
+ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
+ s->ch_layout.nb_channels);
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
DLOG(ERROR) << "Unsupported channel layout.";
commit 62274859104bd828373ae406aa9309e610449ac5
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Fri Mar 22 19:56:55 2024 +0000
Replace deprecated use of AVCodecContext::reordered_opaque
We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context
now to trigger timestamp propagation.
Bug: 330573128
Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308
Commit-Queue: Ted (Chromium) Meyer <tmathmeyer@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1277051}
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
index 910f9ad..8be165c 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
@@ -411,7 +411,9 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
// TODO(dalecurtis): Just use the profile from the codec context if ffmpeg
// ever starts supporting xHE-AAC.
- if (codec_context->profile == FF_PROFILE_UNKNOWN) {
+ constexpr uint8_t kXHEAAc = 41;
+ if (codec_context->profile == FF_PROFILE_UNKNOWN ||
+ codec_context->profile == kXHEAAc) {
// Errors aren't fatal here, so just drop any MediaLog messages.
NullMediaLog media_log;
mp4::AAC aac_parser;
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
index 05dcb1c..866f446 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
@@ -90,16 +90,16 @@ FFMPEG_TEST_CASE(Cr62127,
PIPELINE_ERROR_DECODE,
PIPELINE_ERROR_DECODE);
FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK);
-FFMPEG_TEST_CASE(Cr100492,
- "security/100492.webm",
- DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED);
+FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK);
FFMPEG_TEST_CASE(Cr101458,
"security/101458.webm",
PIPELINE_ERROR_DECODE,
PIPELINE_ERROR_DECODE);
-FFMPEG_TEST_CASE(Cr108416, "security/108416.webm", PIPELINE_OK, PIPELINE_OK);
+FFMPEG_TEST_CASE(Cr108416,
+ "security/108416.webm",
+ PIPELINE_ERROR_DECODE,
+ PIPELINE_ERROR_DECODE);
FFMPEG_TEST_CASE(Cr110849,
"security/110849.mkv",
DEMUXER_ERROR_COULD_NOT_OPEN,
@@ -154,7 +154,10 @@ FFMPEG_TEST_CASE(Cr234630b,
"security/234630b.mov",
DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
-FFMPEG_TEST_CASE(Cr242786, "security/242786.webm", PIPELINE_OK, PIPELINE_OK);
+FFMPEG_TEST_CASE(Cr242786,
+ "security/242786.webm",
+ PIPELINE_OK,
+ PIPELINE_ERROR_DECODE);
// Test for out-of-bounds access with slightly corrupt file (detection logic
// thinks it's a MONO file, but actually contains STEREO audio).
FFMPEG_TEST_CASE(Cr275590,
@@ -372,8 +375,8 @@ FFMPEG_TEST_CASE(WEBM_2,
DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
FFMPEG_TEST_CASE(WEBM_4,
"security/out.webm.68798.1929",
- DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED);
+ PIPELINE_OK,
+ PIPELINE_OK);
FFMPEG_TEST_CASE(WEBM_5, "frame_size_change.webm", PIPELINE_OK, PIPELINE_OK);
// General MKV test cases.
diff --git a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
index a7b2533..ba3c308 100644
--- a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
+++ b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
@@ -484,7 +484,7 @@ constexpr TestParams kXheAacTestParams[] = {
}},
0,
29400,
- CHANNEL_LAYOUT_MONO,
+ CHANNEL_LAYOUT_UNSUPPORTED,
AudioCodecProfile::kXHE_AAC},
#endif
{AudioCodec::kAAC,
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
index 2b58dd7..9d37f32 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
@@ -243,18 +243,10 @@ bool AudioFileReader::OnNewFrame(
// silence from being output. In the case where we are also discarding some
// portion of the packet (as indicated by a negative pts), we further want to
// adjust the duration downward by however much exists before zero.
-#if BUILDFLAG(USE_SYSTEM_FFMPEG)
- if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
-#else
if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG)
const base::TimeDelta pkt_duration = ConvertFromTimeBase(
glue_->format_context()->streams[stream_index_]->time_base,
-#if BUILDFLAG(USE_SYSTEM_FFMPEG)
- frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
-#else
frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG)
const base::TimeDelta frame_duration =
base::Seconds(frames_read / static_cast<double>(sample_rate_));
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
index a1c633d..5784fe1 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
@@ -61,15 +61,14 @@ class AudioFileReaderTest : public testing::Test {
// Verify packets are consistent across demuxer runs. Reads the first few
// packets and then seeks back to the start timestamp and verifies that the
// hashes match on the packets just read.
- void VerifyPackets() {
- const int kReads = 3;
+ void VerifyPackets(int packet_reads) {
const int kTestPasses = 2;
AVPacket packet;
base::TimeDelta start_timestamp;
std::vector<std::string> packet_md5_hashes_;
for (int i = 0; i < kTestPasses; ++i) {
- for (int j = 0; j < kReads; ++j) {
+ for (int j = 0; j < packet_reads; ++j) {
ASSERT_TRUE(reader_->ReadPacketForTesting(&packet));
// On the first pass save the MD5 hash of each packet, on subsequent
@@ -98,7 +97,8 @@ class AudioFileReaderTest : public testing::Test {
int sample_rate,
base::TimeDelta duration,
int frames,
- int expected_frames) {
+ int expected_frames,
+ int packet_reads = 3) {
Initialize(fn);
ASSERT_TRUE(reader_->Open());
EXPECT_EQ(channels, reader_->channels());
@@ -112,7 +112,7 @@ class AudioFileReaderTest : public testing::Test {
EXPECT_EQ(reader_->HasKnownDuration(), false);
}
if (!packet_verification_disabled_)
- ASSERT_NO_FATAL_FAILURE(VerifyPackets());
+ ASSERT_NO_FATAL_FAILURE(VerifyPackets(packet_reads));
ReadAndVerify(hash, expected_frames);
}
@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
}
TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
- RunTestFailingDecode("midstream_config_change.mp3", 42624);
+ RunTestFailingDecode("midstream_config_change.mp3", 0);
}
#endif
@@ -229,7 +229,7 @@ TEST_F(AudioFileReaderTest, VorbisInvalidChannelLayout) {
TEST_F(AudioFileReaderTest, WaveValidFourChannelLayout) {
RunTest("4ch.wav", "131.71,38.02,130.31,44.89,135.98,42.52,", 4, 44100,
- base::Microseconds(100001), 4411, 4410);
+ base::Microseconds(100001), 4411, 4410, /*packet_reads=*/2);
}
TEST_F(AudioFileReaderTest, ReadPartialMP3) {
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
index e62b2af..ab39796 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
@@ -125,7 +125,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
}
FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log)
- : media_log_(media_log) {
+ : media_log_(media_log), timestamp_map_(128) {
DVLOG(1) << __func__;
DETACH_FROM_SEQUENCE(sequence_checker_);
}
@@ -204,10 +204,6 @@ int FFmpegVideoDecoder::GetVideoBuffer(struct AVCodecContext* codec_context,
frame->linesize[plane] = layout->planes()[plane].stride;
}
- // This seems unsafe, given threaded decoding. However, `reordered_opaque` is
- // also going away upstream, so we need a whole new mechanism either way.
- frame->reordered_opaque = codec_context->reordered_opaque;
-
// This will be freed by `ReleaseVideoBufferImpl`.
auto* opaque = new OpaqueData(fb_priv, frame_pool_, data, allocation_size,
std::move(*layout));
@@ -354,8 +350,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
DCHECK(packet->data);
DCHECK_GT(packet->size, 0);
- // Let FFmpeg handle presentation timestamp reordering.
- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds();
+ const int64_t timestamp = buffer.timestamp().InMicroseconds();
+ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId();
+ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp));
+ packet->opaque = reinterpret_cast<void*>(timestamp_id.GetUnsafeValue());
}
FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame,
@@ -414,7 +412,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) {
}
gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect);
- const auto pts = base::Microseconds(frame->reordered_opaque);
+ const auto ts_id = TimestampId(reinterpret_cast<size_t>(frame->opaque));
+ const auto ts_lookup = timestamp_map_.Get(ts_id);
+ if (ts_lookup == timestamp_map_.end()) {
+ return false;
+ }
+ const auto pts = base::Microseconds(std::get<1>(*ts_lookup));
auto video_frame = VideoFrame::WrapExternalDataWithLayout(
opaque->layout, visible_rect, natural_size, opaque->data, opaque->size,
pts);
@@ -489,8 +492,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config,
codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config);
codec_context_->thread_type =
FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME);
+
codec_context_->opaque = this;
codec_context_->get_buffer2 = GetVideoBufferImpl;
+ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE;
if (decode_nalus_)
codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
index 60cb9d5..4fa8628 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
@@ -7,10 +7,12 @@
#include <memory>
+#include "base/containers/lru_cache.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/sequence_checker.h"
+#include "base/types/id_type.h"
#include "media/base/supported_video_decoder_config.h"
#include "media/base/video_decoder.h"
#include "media/base/video_decoder_config.h"
@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
// FFmpeg structures owned by this object.
std::unique_ptr<AVCodecContext, ScopedPtrAVFreeContext> codec_context_;
+ // The gist here is that timestamps need to be 64 bits to store microsecond
+ // precision. A 32 bit integer would overflow at ~35 minutes at this level of
+ // precision. We can't cast the timestamp to the void ptr object used by the
+ // opaque field in ffmpeg then, because it would lose data on a 32 bit build.
+ // However, we don't actually have 2^31 timestamped frames in a single
+ // playback, so it's fine to use the 32 bit value as a key in a map which
+ // contains the actual timestamps. Additionally, we've in the past set 128
+ // outstanding frames for re-ordering as a limit for cross-thread decoding
+ // tasks, so we'll do that here too with the LRU cache.
+ using TimestampId = base::IdType<int64_t, size_t, 0>;
+
+ TimestampId::Generator timestamp_id_generator_;
+ base::LRUCache<TimestampId, int64_t> timestamp_map_;
+
VideoDecoderConfig config_;
scoped_refptr<FrameBufferPool> frame_pool_;
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
index f67718c..fe42aef 100644
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
@@ -229,7 +229,6 @@ int H264DecoderImpl::AVGetBuffer2(AVCodecContext* context,
int total_size = y_size + 2 * uv_size;
av_frame->format = context->pix_fmt;
- av_frame->reordered_opaque = context->reordered_opaque;
// Create a VideoFrame object, to keep a reference to the buffer.
// TODO(nisse): The VideoFrame's timestamp and rotation info is not used.
@@ -377,8 +376,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image,
return WEBRTC_VIDEO_CODEC_ERROR;
}
packet->size = static_cast<int>(input_image.size());
- int64_t frame_timestamp_us = input_image.ntp_time_ms_ * 1000; // ms -> μs
- av_context_->reordered_opaque = frame_timestamp_us;
int result = avcodec_send_packet(av_context_.get(), packet.get());
@@ -395,10 +392,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image,
return WEBRTC_VIDEO_CODEC_ERROR;
}
- // We don't expect reordering. Decoded frame timestamp should match
- // the input one.
- RTC_DCHECK_EQ(av_frame_->reordered_opaque, frame_timestamp_us);
-
// TODO(sakal): Maybe it is possible to get QP directly from FFmpeg.
h264_bitstream_parser_.ParseBitstream(input_image);
absl::optional<int> qp = h264_bitstream_parser_.GetLastSliceQp();

View File

@@ -4,20 +4,24 @@ Subject: Don't require open264 when proprietary_codecs are supported
Amended on 2024-01-30: also disable h265
diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
index 5a1c43c8888..d867f7e5330 100644
index 66ed8434ff0..cbd78d582e6 100644
--- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
+++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
@@ -186,11 +186,10 @@ declare_args() {
#
@@ -184,7 +184,7 @@ declare_args() {
# Enabling H264 when building with MSVC is currently not supported, see
# bugs.webrtc.org/9213#c13 for more info.
- rtc_use_h264 =
rtc_use_h264 =
- proprietary_codecs && !is_android && !is_ios && !(is_win && !is_clang)
+ rtc_use_h264 = false
+ false
# Enable to use H265
# Use system OpenH264
rtc_system_openh264 = false
@@ -193,7 +193,7 @@ declare_args() {
if (build_with_chromium) {
rtc_use_h265 = enable_hevc_parser_and_hw_decoder
} else {
- rtc_use_h265 = proprietary_codecs
+ rtc_use_h265 = false
}
# Enable this flag to make webrtc::Mutex be implemented by absl::Mutex.
rtc_use_absl_mutex = false