diff --git a/dev-php/pecl-redis/Manifest b/dev-php/pecl-redis/Manifest
new file mode 100644
index 0000000..d15d9c4
--- /dev/null
+++ b/dev-php/pecl-redis/Manifest
@@ -0,0 +1,3 @@
+DIST redis-6.2.0.tgz 379865 BLAKE2B 3ed8776d1e53e3a1b08e5d18511ccf3ed1f896d0ae28b54ce47615d58ca4c9cbc29c00b2a10301cd7e9fd533f54335bbf3878f8f59ddff82ad2b16da03d45e77 SHA512 fd4d79cd4f7a3d25c865ae52daea4e6d9e805f55c3b7004633ac23ed6724a30b85ed3034bddee86c42146b39215309cb9c96f5659b248e6b859295cdf10e02f1
+EBUILD pecl-redis-6.2.0.ebuild 1425 BLAKE2B e025a961acf4c518dcf7b3553b03b6a3c933fdfb7592931e801420abc4053140ad58b3dfb9e7fbb749b19a04b33f1462bc0ac033033b057c039e7d9f89945c74 SHA512 14a0f6fe2d5774960ddb875c0e3334c38f43031aaaf7f2d0051624584e2dc7959c4410468c8e67a78ef26e54d7e565f2b6ec919dcc27889f3d17ead71f158324
+MISC metadata.xml 384 BLAKE2B 4a1a6b326526bb3f5b9d9d57158d6abbfe3c65b1cfc11980ce849d5f7278558ee0daf580aefc521939aae175cd8e2cb990e046fce8faf6774348b24fa6465ef8 SHA512 851e1fb9f6612105640028262a4821f0da5b1ee5949fdd99067e821ce1d22c41888ee53e102becc93c918a605c2b8dbb2d493cd7cad516530912fec652011364
diff --git a/dev-php/pecl-redis/metadata.xml b/dev-php/pecl-redis/metadata.xml
new file mode 100644
index 0000000..381f530
--- /dev/null
+++ b/dev-php/pecl-redis/metadata.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ php-bugs@gentoo.org
+ PHP
+
+
+
diff --git a/dev-php/pecl-redis/pecl-redis-6.2.0.ebuild b/dev-php/pecl-redis/pecl-redis-6.2.0.ebuild
new file mode 100644
index 0000000..1140daf
--- /dev/null
+++ b/dev-php/pecl-redis/pecl-redis-6.2.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PHP_EXT_NAME="redis"
+USE_PHP="php8-1 php8-2 php8-3 php8-4"
+PHP_EXT_NEEDED_USE="json(+)?,session(-)?"
+MY_P="${PN/pecl-/}-${PV/_rc/RC}"
+PHP_EXT_PECL_FILENAME="${MY_P}.tgz"
+PHP_EXT_S="${WORKDIR}/${MY_P}"
+
+inherit php-ext-pecl-r3
+
+DESCRIPTION="PHP extension for interfacing with Redis"
+LICENSE="PHP-3.01"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~arm64"
+IUSE="igbinary +json lz4 +session zstd"
+
+DEPEND="
+ igbinary? ( >=dev-php/igbinary-3.0.1-r1[php_targets_php8-2(-)?,php_targets_php8-3(-)?] )
+ lz4? ( app-arch/lz4:= )
+ zstd? ( app-arch/zstd:= )
+"
+RDEPEND="${DEPEND}
+ !dev-php/pecl-redis:7"
+
+# The test suite requires network access.
+RESTRICT=test
+
+S="${WORKDIR}/${MY_P}"
+
+src_configure() {
+ local PHP_EXT_ECONF_ARGS=(
+ --enable-redis
+ --disable-redis-lzf
+ --disable-redis-msgpack
+ $(use_enable igbinary redis-igbinary)
+ $(use_enable json redis-json)
+ $(use_enable lz4 redis-lz4)
+ $(use_with lz4 liblz4)
+ $(use_enable session redis-session)
+ $(use_enable zstd redis-zstd)
+ $(use_with zstd libzstd)
+ )
+ php-ext-source-r3_src_configure
+}
+
+src_test() {
+ local slot
+ for slot in $(php_get_slots); do
+ php_init_slot_env "${slot}"
+ # Run tests for Redis class
+ ${PHPCLI} -d extension=modules/redis.so \
+ tests/TestRedis.php \
+ --class Redis \
+ --host ${PECL_REDIS_HOST} || die 'test suite failed'
+ done
+}
diff --git a/media-tv/tvheadend/Manifest b/media-tv/tvheadend/Manifest
deleted file mode 100644
index 27385c1..0000000
--- a/media-tv/tvheadend/Manifest
+++ /dev/null
@@ -1,7 +0,0 @@
-AUX tvheadend-4.0.9-use_system_queue.patch 296 BLAKE2B 0986117969d9bb3463123e984aba7a73c8caf89b16f0c10e870a9b49857f8c946958a31900d99c5d332f5635cbd49ae544c2cc97f1e8a211c352bcaba965fe76 SHA512 56180b9c2fbb092530963229213805ec63e3d941c67d967e38b46f778db85db981234fe5727b5a8dcf64ab3a9e24c9d10b681abf275249e0d6f0ad63e391ecc4
-AUX tvheadend-4.2.2-dtv_scan_tables.patch 463 BLAKE2B 4e52d89d75c05d8a3cc645280794dd4570953bb5452d1067442177d7eb4c85779a8bcb96f1f8d3fbbcb6a34e770ff014bb262103eae5a92556ac4586038cdd9e SHA512 9bdecbac57ee1f30be91f9145e32f89949b5631090edc85cd5383915b09949ec9211f62474bd06afb4600e431093ce2ee5550d204b08c64b5b2e1a1cd38a517d
-AUX tvheadend.confd 355 BLAKE2B 36ba5a3466838b643beb877050ef6cc481adb91a433efa7429977104c9db1e6ef54901750d14dc0f43a20c89ddf504a9fc28a10a88d68105e5a5f07820696d50 SHA512 64ae0cca1e1b46a3ecb2fb4a4ba69ad1dd6a72ce57944b44be28768d293f9cca2ab29067335023f384433e8c75d976fbc4610ca574c930b9891a2f1c75ff4c0b
-AUX tvheadend.initd 375 BLAKE2B 6fbf53a0a67957ee5756b56189d42b741adb7603b5590aa5fa0fd6b2a1d1ba930af05de8ebedba343302aa861f7fb42d3eb25b67acf6b43aa7c956d4965ab944 SHA512 6f17fa6bee502f586b4500c5f5541c9c6ce095deed7ddb3c1d1ad129a2e22fa66de0e72b712866659f7080753c73f67154d6dcdbf8539d6c8a942bea29bb1aa7
-AUX tvheadend.service 577 BLAKE2B f6762aef0f9370a7ad1e438aa4b35c500c40240bd7d66db5e32b061c0dc9776adc2b8de2c395b2299151bd5c6fc8735944a8384828b873b29fbf6c1ed76bafde SHA512 1192b98da179503bc249e0b0d3a0e6c2bf420bfb7d14a72b917fe9e1975a42d1647b5d951ead8f18419999f4c74c352b21e58c28bacc65419012d46bb83270d4
-EBUILD tvheadend-9999.ebuild 3674 BLAKE2B 71a6801412227f202ce26bba04ead2e5bf84354af6e2a6b5a2912c98ac6809407aed1cf2556b98a636de2d88a70392ac3698ad4ef7f7018d9c1066dc45f592e3 SHA512 2043b325975a864f27e4817c25ff5e99003ba1f70f21989b4650e7b9e12373f953379e09ae84eedc59decfc69f22d8ac5ad12317b0f62a18480085c9ccf6701c
-MISC metadata.xml 1445 BLAKE2B f71dc280d5fce7c0945939bcaf75d0d7f294aea6055c956b04e9e439199c2a6c107c800be6d18a0c58d154bdf7cdd0cd7d874e5cde5fc93f9b24160f536d21d8 SHA512 e26b94f14a619051e637b018d0f47ce86381821dd5207ba5b34429e0c0f83c55bfa9c37871e722af85719cf3e06322703d4709cbbd771b8f092efb8e85cb5b72
diff --git a/media-tv/tvheadend/files/tvheadend-4.0.9-use_system_queue.patch b/media-tv/tvheadend/files/tvheadend-4.0.9-use_system_queue.patch
deleted file mode 100644
index 13ac357..0000000
--- a/media-tv/tvheadend/files/tvheadend-4.0.9-use_system_queue.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ./src/queue.h.orig ./src/queue.h
---- ./src/queue.h.orig 2016-03-14 10:10:57.000000000 +0100
-+++ ./src/queue.h 2016-07-04 17:47:22.480252171 +0200
-@@ -5,7 +5,7 @@
- #ifndef HTSQ_H
- #define HTSQ_H
-
--#include "../vendor/include/sys/queue.h"
-+#include
-
- /*
- * Extra LIST-ops
diff --git a/media-tv/tvheadend/files/tvheadend-4.2.2-dtv_scan_tables.patch b/media-tv/tvheadend/files/tvheadend-4.2.2-dtv_scan_tables.patch
deleted file mode 100644
index 5131026..0000000
--- a/media-tv/tvheadend/files/tvheadend-4.2.2-dtv_scan_tables.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up ./src/input/mpegts/scanfile.c.orig ./src/input/mpegts/scanfile.c
---- ./src/input/mpegts/scanfile.c.orig 2017-05-16 13:15:24.000000000 +0200
-+++ ./src/input/mpegts/scanfile.c 2017-06-01 22:30:29.150834135 +0200
-@@ -903,7 +903,7 @@ scanfile_init ( const char *muxconf_path
- #elif defined(PLATFORM_FREEBSD)
- path = "/usr/local/share/dtv-scan-tables";
- #else
-- path = "/usr/share/dvb";
-+ path = "/usr/share/dvbv5";
- #endif
-
- if (!initialized) {
diff --git a/media-tv/tvheadend/files/tvheadend.confd b/media-tv/tvheadend/files/tvheadend.confd
deleted file mode 100644
index 8be4a5d..0000000
--- a/media-tv/tvheadend/files/tvheadend.confd
+++ /dev/null
@@ -1,14 +0,0 @@
-# /etc/conf.d/tvheadend: config file for /etc/init.d/tvheadend
-# See the tvheadend(1) manpage for more info.
-
-# Run Tvheadend as this user.
-TVHEADEND_USER="tvheadend"
-
-# Run Tvheadend as this group.
-TVHEADEND_GROUP="video"
-
-# Path to Tvheadend config.
-TVHEADEND_CONFIG="/etc/tvheadend"
-
-# Other options you want to pass to Tvheadend.
-TVHEADEND_OPTIONS=""
diff --git a/media-tv/tvheadend/files/tvheadend.initd b/media-tv/tvheadend/files/tvheadend.initd
deleted file mode 100644
index dc3bed7..0000000
--- a/media-tv/tvheadend/files/tvheadend.initd
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/sbin/openrc-run
-
-depend() {
- use net
-}
-
-start() {
- ebegin "Starting Tvheadend"
- start-stop-daemon --start --quiet --exec /usr/bin/tvheadend \
- -- -f -C -u ${TVHEADEND_USER} -g ${TVHEADEND_GROUP} \
- -c ${TVHEADEND_CONFIG} ${TVHEADEND_OPTIONS}
- eend $?
-}
-
-stop() {
- ebegin "Stopping Tvheadend"
- start-stop-daemon --stop --quiet --pidfile /var/run/tvheadend.pid
- eend $?
-}
diff --git a/media-tv/tvheadend/files/tvheadend.service b/media-tv/tvheadend/files/tvheadend.service
deleted file mode 100644
index 6d1e274..0000000
--- a/media-tv/tvheadend/files/tvheadend.service
+++ /dev/null
@@ -1,26 +0,0 @@
-[Unit]
-Description=tvheadend
-After=network.target
-
-[Service]
-Type=simple
-User=tvheadend
-Group=video
-RuntimeDirectory=tvheadend
-PIDFile=/run/tvheadend/tvheadend.pid
-EnvironmentFile=/etc/conf.d/tvheadend
-ExecStart=/usr/bin/tvheadend -p /run/tvheadend/tvheadend.pid -c "${TVHEADEND_CONFIG}" ${TVHEADEND_OPTIONS}
-TimeoutStartSec=1m
-TimeoutStopSec=20s
-Restart=always
-RestartSec=5s
-DevicePolicy=closed
-DeviceAllow=char-DVB rw
-DeviceAllow=char-drm rw
-RestrictAddressFamilies=AF_INET AF_INET6
-ProtectSystem=yes
-ProtectHome=yes
-NoNewPrivileges=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/media-tv/tvheadend/metadata.xml b/media-tv/tvheadend/metadata.xml
deleted file mode 100644
index d995e88..0000000
--- a/media-tv/tvheadend/metadata.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
- chewi@gentoo.org
- James Le Cuirot
-
-
-
- tvheadend/tvheadend
-
-
diff --git a/media-tv/tvheadend/tvheadend-9999.ebuild b/media-tv/tvheadend/tvheadend-9999.ebuild
deleted file mode 100644
index 363d29d..0000000
--- a/media-tv/tvheadend/tvheadend-9999.ebuild
+++ /dev/null
@@ -1,144 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit git-r3 linux-info systemd toolchain-funcs user
-
-DESCRIPTION="Tvheadend is a TV streaming server and digital video recorder"
-HOMEPAGE="https://tvheadend.org/"
-EGIT_REPO_URI="https://github.com/${PN}/${PN}.git"
-
-LICENSE="GPL-3"
-SLOT="0"
-KEYWORDS=""
-
-IUSE="dbus debug +ddci dvbcsa +dvb +ffmpeg hdhomerun +imagecache +inotify iptv libressl opus satip systemd +timeshift uriparser vpx x264 x265 xmltv zeroconf zlib"
-
-BDEPEND="
- sys-devel/gettext
- virtual/pkgconfig"
-
-RDEPEND="
- virtual/libiconv
- dbus? ( sys-apps/dbus )
- dvbcsa? ( media-libs/libdvbcsa )
- ffmpeg? ( media-video/ffmpeg:0=[opus?,vpx?,x264?,x265?] )
- hdhomerun? ( media-libs/libhdhomerun )
- !libressl? ( dev-libs/openssl:0= )
- libressl? ( dev-libs/libressl:= )
- uriparser? ( dev-libs/uriparser )
- zeroconf? ( net-dns/avahi )
- zlib? ( sys-libs/zlib )"
-
-# ffmpeg sub-dependencies needed for headers only. Check under
-# src/transcoding/codec/codecs/libs for include statements.
-
-DEPEND="
- ${RDEPEND}
- dvb? ( virtual/linuxtv-dvb-headers )
- ffmpeg? (
- opus? ( media-libs/opus )
- vpx? ( media-libs/libvpx )
- x264? ( media-libs/x264 )
- x265? ( media-libs/x265 )
- )"
-
-RDEPEND+="
- dvb? ( media-tv/dtv-scan-tables )
- xmltv? ( media-tv/xmltv )"
-
-REQUIRED_USE="
- ddci? ( dvb )
-"
-
-# Some patches from:
-# https://github.com/rpmfusion/tvheadend
-
-PATCHES=(
- "${FILESDIR}"/${PN}-4.0.9-use_system_queue.patch
- "${FILESDIR}"/${PN}-4.2.2-dtv_scan_tables.patch
-)
-
-DOCS=( README.md )
-
-pkg_setup() {
- use inotify &&
- CONFIG_CHECK="~INOTIFY_USER" linux-info_pkg_setup
-
- enewuser tvheadend -1 -1 /etc/tvheadend video
-}
-
-# We unconditionally enable codecs that do not require additional
-# dependencies when building tvheadend. If support is missing from
-# ffmpeg at runtime then tvheadend will simply disable these codecs.
-
-# It is not necessary to specific all the --disable-*-static options as
-# most of them only take effect when --enable-ffmpeg_static is given.
-
-src_configure() {
- CC="$(tc-getCC)" \
- PKG_CONFIG="${CHOST}-pkg-config" \
- econf \
- --disable-bundle \
- --disable-ccache \
- --disable-dvbscan \
- --disable-ffmpeg_static \
- --disable-hdhomerun_static \
- --enable-libfdkaac \
- --enable-libtheora \
- --enable-libvorbis \
- --nowerror \
- $(use_enable dbus dbus_1) \
- $(use_enable debug trace) \
- $(use_enable ddci) \
- $(use_enable dvb linuxdvb) \
- $(use_enable dvbcsa) \
- $(use_enable dvbcsa capmt) \
- $(use_enable dvbcsa cccam) \
- $(use_enable dvbcsa constcw) \
- $(use_enable dvbcsa cwc) \
- $(use_enable ffmpeg libav) \
- $(use_enable hdhomerun hdhomerun_client) \
- $(use_enable imagecache) \
- $(use_enable inotify) \
- $(use_enable iptv) \
- $(use_enable opus libopus) \
- $(use_enable satip satip_server) \
- $(use_enable satip satip_client) \
- $(use_enable systemd libsystemd_daemon) \
- $(use_enable timeshift) \
- $(use_enable uriparser) \
- $(use_enable vpx libvpx) \
- $(use_enable x264 libx264) \
- $(use_enable x265 libx265) \
- $(use_enable zeroconf avahi) \
- $(use_enable zlib)
-}
-
-src_compile() {
- emake CC="$(tc-getCC)"
-}
-
-src_install() {
- default
-
- newinitd "${FILESDIR}"/tvheadend.initd tvheadend
- newconfd "${FILESDIR}"/tvheadend.confd tvheadend
-
- use systemd &&
- systemd_dounit "${FILESDIR}"/tvheadend.service
-
- dodir /etc/tvheadend
- fperms 0700 /etc/tvheadend
- fowners tvheadend:video /etc/tvheadend
-}
-
-pkg_postinst() {
- elog "The Tvheadend web interface can be reached at:"
- elog "http://localhost:9981/"
- elog
- elog "Make sure that you change the default username"
- elog "and password via the Configuration / Access control"
- elog "tab in the web interface."
-}
diff --git a/media-video/makemkv/Manifest b/media-video/makemkv/Manifest
new file mode 100644
index 0000000..7f94eb5
--- /dev/null
+++ b/media-video/makemkv/Manifest
@@ -0,0 +1,7 @@
+AUX makemkv-path.patch 1579 BLAKE2B 6ca7ed6c854c0357fea864bedc3f65a1051a466a52db1380bf1904c97bfa2b455beeb7ff9852fe57f6d224ed659df63d02db96a281be7a14f0587bece9aff75b SHA512 9294d3645b953fdb7ca24e83066becfbf07e03cab01d0aaf4527cf2d54fb0990649da1f766836a0f3efea9c363c8f00116b4624c49fd7bcfa197cae2ef17e6ed
+AUX makemkv-qt6.patch 7366 BLAKE2B ad453f067aeb60377c43618c9eaba5c44df6c60b0f69afa2454477f4bb30dffba440cfe0340a98c9c5dc7e39e6380710f8b5753c2b00207c4c6ed6944ddb41ac SHA512 6966b2c2bbef4312b4394c9e8701c730227b1577d7403874c14ec5d409f09330767a78d2d344da4448f72d103bf86f8da3612a30ca41d1a1d4770283d2251873
+AUX makemkvcon.1 6118 BLAKE2B bf8f7665d7b367e4dc5cfb12136cb91271087991d86bb0c2bfe6fe41def407539276114f95548cd867c49bc10bed25cec51ac00dbd6defe5df7fd82f2fe29b25 SHA512 a9334a96fcc90932a109c2d74b1769ab60e652a1e860399d8a486bd36ba02fbdabf55816059e0c51e3e4826824b7798f86b85cb5e22a4d13c2e18a2944522ac4
+DIST makemkv-bin-1.18.2.tar.gz 17916113 BLAKE2B a0372519087db6881207b2a2f828a08d9ebbe57a6166391a3141ae5074a3b1b03314f57aecb7e3bd594064fcae6d1f97bb8db2d52658b398fef2a44689c00ee8 SHA512 01e8a8a6e5b4ad34a6944fb62a01bd0bfea1ac8d846c5dd7b42e35a62ea2196aae1abb635a620dfc5541987db2af832d4cb73cfde28eaafaf4c61eed81da66a0
+DIST makemkv-oss-1.18.2.tar.gz 6638329 BLAKE2B b15088a01835dbe576b400d8e08e16ce4e58ec61a4956120abc507b01981707cdf4e2004a9d7b673306a110f8c3567506d62c48942d7f7d38321767308cae595 SHA512 45ae82da88d0bcc3c13d1eb4a5b3fcb4844f2af4a45da0cc1f1b854f573c3f69d40a439425170b257ecdf0faee708d46cce5ea0d9a493586794b0c06fe542d77
+EBUILD makemkv-1.18.2.ebuild 3060 BLAKE2B d0d1ead1b8263955ba5c4e6f8102899b7e5e770ffc44980587e27dfbdf591447534bb7c7b6959fde80ccba3749e50b100ee49b9c42107144b949d95e1ab50ae0 SHA512 cadd17bd1a901917e015b28e95af49a4cd8969dc7442f422e9a42b335cb72fba4da37ed047d1fbb06c8900a886fbb839755a5c5ff988425208936659113e4494
+MISC metadata.xml 1272 BLAKE2B 7c02bfcb2638d2f33c6fbee2d0e79b6d7d270b8209f7ec82ec51d7cf0e19b94936ee599b618f9a6b9df280fc403b0890b2c8e2323525f6d50b79fc19d26c8756 SHA512 8de92a5802b26a98984be7b5e3c0868b249c14a77a690a186dc4361db1508b79c7ebccd261e7fe9251b2d4abbbe2b93aec8a91efeafc00baada2839020a9207f
diff --git a/media-video/makemkv/files/makemkv-path.patch b/media-video/makemkv/files/makemkv-path.patch
new file mode 100644
index 0000000..6a3b3cf
--- /dev/null
+++ b/media-video/makemkv/files/makemkv-path.patch
@@ -0,0 +1,47 @@
+diff -Naur makemkv-oss-1.9.10.orig/makemkvgui/src/api_posix.cpp makemkv-oss-1.9.10/makemkvgui/src/api_posix.cpp
+--- makemkv-oss-1.9.10.orig/makemkvgui/src/api_posix.cpp 2016-04-15 21:35:36.000000000 +0100
++++ makemkv-oss-1.9.10/makemkvgui/src/api_posix.cpp 2016-05-08 13:51:48.761885862 +0100
+@@ -54,8 +54,6 @@
+
+ if (AppName[0]==':')
+ {
+- bool app_found = false;
+- const char* const* app_locations = ApGetAppLocations();
+ const char* p_env = getenv("MAKEMKVCON");
+
+ AppName++;
+@@ -63,6 +61,13 @@
+ if (p_env!=NULL)
+ {
+ strcpy(app_path,p_env);
++ } else {
++ strcpy(app_path,AppName);
++ }
++ } else {
++ strcpy(app_path,AppName);
++ }
++/*
+ app_found = true;
+ } else {
+ for (size_t i=0;app_locations[i]!=NULL;i++)
+@@ -105,7 +110,7 @@
+ }
+ strcpy(p,AppName);
+ }
+-
++*/
+ strcpy(str_guiserver,"guiserver");
+ strcpy(str_apver,verstr);
+
+diff -Naur makemkv-oss-1.9.10.orig/makemkvgui/src/spawn_posix.cpp makemkv-oss-1.9.10/makemkvgui/src/spawn_posix.cpp
+--- makemkv-oss-1.9.10.orig/makemkvgui/src/spawn_posix.cpp 2016-04-15 21:35:36.000000000 +0100
++++ makemkv-oss-1.9.10/makemkvgui/src/spawn_posix.cpp 2016-05-08 10:52:37.137598384 +0100
+@@ -70,7 +70,7 @@
+ }
+ }
+
+- err = posix_spawn(&pid,argv[0],&spawn_actions,&spawn_attr,argv,envp);
++ err = posix_spawnp(&pid,argv[0],&spawn_actions,&spawn_attr,argv,envp);
+
+ posix_spawn_file_actions_destroy(&spawn_actions);
+ posix_spawnattr_destroy(&spawn_attr);
diff --git a/media-video/makemkv/files/makemkv-qt6.patch b/media-video/makemkv/files/makemkv-qt6.patch
new file mode 100644
index 0000000..f29aee6
--- /dev/null
+++ b/media-video/makemkv/files/makemkv-qt6.patch
@@ -0,0 +1,206 @@
+--- a/configure
++++ b/configure
+@@ -662,8 +662,8 @@
+ QT_LIB
+ QT_CFLAGS
+ QT_INC
+-qt5_LIBS
+-qt5_CFLAGS
++qt6_LIBS
++qt6_CFLAGS
+ ffmpeg_LIBS
+ ffmpeg_CFLAGS
+ PKG_CONFIG_LIBDIR
+@@ -777,7 +777,7 @@
+ with_sysroot
+ enable_libtool_lock
+ enable_gui
+-enable_qt5
++enable_qt6
+ enable_noec
+ enable_debug
+ '
+@@ -800,8 +800,8 @@
+ PKG_CONFIG_LIBDIR
+ ffmpeg_CFLAGS
+ ffmpeg_LIBS
+-qt5_CFLAGS
+-qt5_LIBS'
++qt6_CFLAGS
++qt6_LIBS'
+
+
+ # Initialize some variables set by options.
+@@ -1431,7 +1431,7 @@
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --disable-gui do not build GUI (default is build GUI)
+- --disable-qt5 do not use Qt5
++ --disable-qt6 do not use Qt6
+ --enable-noec use private ECDSA code (default - use openssl ECDSA
+ if available)
+ --enable-debug keep debug symbols in binarfies (default - strip
+@@ -1471,8 +1471,8 @@
+ ffmpeg_CFLAGS
+ C compiler flags for ffmpeg, overriding pkg-config
+ ffmpeg_LIBS linker flags for ffmpeg, overriding pkg-config
+- qt5_CFLAGS C compiler flags for qt5, overriding pkg-config
+- qt5_LIBS linker flags for qt5, overriding pkg-config
++ qt6_CFLAGS C compiler flags for qt6, overriding pkg-config
++ qt6_LIBS linker flags for qt6, overriding pkg-config
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+@@ -12545,12 +12545,12 @@
+
+ #AM_CONDITIONAL([ENABLE_GUI],[test "x$enable_gui" = "xyes"])
+
+-# Check whether --enable-qt5 was given.
+-if test ${enable_qt5+y}
++# Check whether --enable-qt6 was given.
++if test ${enable_qt6+y}
+ then :
+- enableval=$enable_qt5;
++ enableval=$enable_qt6;
+ else $as_nop
+- enable_qt5=yes
++ enable_qt6=yes
+ fi
+
+
+@@ -17312,7 +17312,7 @@
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+- ax_cxx_compile_alternatives="11 0x" ax_cxx_compile_cxx11_required=true
++ ax_cxx_compile_alternatives="17" ax_cxx_compile_cxx11_required=true
+ ac_ext=cpp
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+@@ -18295,24 +18295,24 @@
+ if test "x$enable_gui" != "xno"
+ then :
+
+- if test "x$enable_qt5" != "xno"
++ if test "x$enable_qt6" != "xno"
+ then :
+
+
+ pkg_failed=no
+-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Qt5Core Qt5Gui Qt5Widgets Qt5DBus" >&5
+-printf %s "checking for Qt5Core Qt5Gui Qt5Widgets Qt5DBus... " >&6; }
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Qt6Core Qt6Gui Qt6Widgets Qt6DBus" >&5
++printf %s "checking for Qt6Core Qt6Gui Qt6Widgets Qt6DBus... " >&6; }
+
+-if test -n "$qt5_CFLAGS"; then
+- pkg_cv_qt5_CFLAGS="$qt5_CFLAGS"
++if test -n "$qt6_CFLAGS"; then
++ pkg_cv_qt6_CFLAGS="$qt6_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Core Qt5Gui Qt5Widgets Qt5DBus\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "Qt5Core Qt5Gui Qt5Widgets Qt5DBus") 2>&5
++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Core Qt6Gui Qt6Widgets Qt6DBus\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "Qt6Core Qt6Gui Qt6Widgets Qt6DBus") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_qt5_CFLAGS=`$PKG_CONFIG --cflags "Qt5Core Qt5Gui Qt5Widgets Qt5DBus" 2>/dev/null`
++ pkg_cv_qt6_CFLAGS=`$PKG_CONFIG --cflags "Qt6Core Qt6Gui Qt6Widgets Qt6DBus" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+ else
+ pkg_failed=yes
+@@ -18320,16 +18320,16 @@
+ else
+ pkg_failed=untried
+ fi
+-if test -n "$qt5_LIBS"; then
+- pkg_cv_qt5_LIBS="$qt5_LIBS"
++if test -n "$qt6_LIBS"; then
++ pkg_cv_qt6_LIBS="$qt6_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Core Qt5Gui Qt5Widgets Qt5DBus\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "Qt5Core Qt5Gui Qt5Widgets Qt5DBus") 2>&5
++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Core Qt6Gui Qt6Widgets Qt6DBus\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "Qt6Core Qt6Gui Qt6Widgets Qt6DBus") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_qt5_LIBS=`$PKG_CONFIG --libs "Qt5Core Qt5Gui Qt5Widgets Qt5DBus" 2>/dev/null`
++ pkg_cv_qt6_LIBS=`$PKG_CONFIG --libs "Qt6Core Qt6Gui Qt6Widgets Qt6DBus" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+ else
+ pkg_failed=yes
+@@ -18350,12 +18350,12 @@
+ _pkg_short_errors_supported=no
+ fi
+ if test $_pkg_short_errors_supported = yes; then
+- qt5_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "Qt5Core Qt5Gui Qt5Widgets Qt5DBus" 2>&1`
++ qt6_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "Qt6Core Qt6Gui Qt6Widgets Qt6DBus" 2>&1`
+ else
+- qt5_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "Qt5Core Qt5Gui Qt5Widgets Qt5DBus" 2>&1`
++ qt6_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "Qt6Core Qt6Gui Qt6Widgets Qt6DBus" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+- echo "$qt5_PKG_ERRORS" >&5
++ echo "$qt6_PKG_ERRORS" >&5
+
+ qt_ok=no
+ elif test $pkg_failed = untried; then
+@@ -18363,16 +18363,16 @@
+ printf "%s\n" "no" >&6; }
+ qt_ok=no
+ else
+- qt5_CFLAGS=$pkg_cv_qt5_CFLAGS
+- qt5_LIBS=$pkg_cv_qt5_LIBS
++ qt6_CFLAGS=$pkg_cv_qt6_CFLAGS
++ qt6_LIBS=$pkg_cv_qt6_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ printf "%s\n" "yes" >&6; }
+
+- QT_INC="$qt5_CFLAGS";
++ QT_INC="$qt6_CFLAGS";
+ QT_CFLAGS="-fPIC";
+- QT_LIB="$qt5_LIBS";
+- qt5_host_bins=`$PKG_CONFIG --variable host_bins "Qt5Core" 2>/dev/null`;
+- QT_MOC="$qt5_host_bins/moc";
++ QT_LIB="$qt6_LIBS";
++ qt6_libexecdir=`$PKG_CONFIG --variable libexecdir "Qt6Core" 2>/dev/null`;
++ QT_MOC="$qt6_libexecdir/moc";
+ qt_ok=yes
+
+ fi
+--- a/makemkvgui/src/dirselectbox.cpp
++++ b/makemkvgui/src/dirselectbox.cpp
+@@ -121,7 +121,7 @@
+ if ( (dir.at(dlen-(alen+1))==QLatin1Char('/')) ||
+ (dir.at(dlen-(alen+1))==QLatin1Char('\\')) )
+ {
+- if (dir.endsWith(appendName)) {
++ if (dir.endsWith(*appendName)) {
+ dir.chop(alen+1);
+ }
+ }
+--- a/makemkvgui/src/mainwnd.cpp
++++ b/makemkvgui/src/mainwnd.cpp
+@@ -35,7 +35,7 @@
+ Qt::MacWindowToolBarButtonHint |
+ Qt::WindowMinMaxButtonsHint ;
+ #else
+- 0;
++ Qt::Widget;
+ #endif
+
+ MainWnd::MainWnd(CGUIApClient* App,const char* AppDir)
+--- a/makemkvgui/src/qtgui.h
++++ b/makemkvgui/src/qtgui.h
+@@ -46,7 +46,7 @@
+ #include
+ #include
+ #include
+-#include
++#include
+ #include
+ #include
+ #include
diff --git a/media-video/makemkv/files/makemkvcon.1 b/media-video/makemkv/files/makemkvcon.1
new file mode 100644
index 0000000..0abeaa5
--- /dev/null
+++ b/media-video/makemkv/files/makemkvcon.1
@@ -0,0 +1,242 @@
+'\" t
+.\" Title: makemkvcon
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.79.1
+.\" Date: 05/20/2020
+.\" Manual: \ \&
+.\" Source: \ \&
+.\" Language: English
+.\"
+.TH "MAKEMKVCON" "1" "05/20/2020" "\ \&" "\ \&"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+makemkvcon \- MakeMKV console application
+.SH "SYNOPSIS"
+.sp
+\fBmakemkvcon\fR [\fIOPTIONS\fR] [\fIPARAMETERS\fR]
+.SH "DESCRIPTION"
+.sp
+Command\-line options for MakeMKV\&.
+.sp
+Configuration options and setup keys are located in ~/\&.MakeMKV/
+.SH "OPTIONS"
+.sp
+General options:
+.PP
+\fB\-\-messages=\fR\fIFILE\fR
+.RS 4
+Output all messgaes to a file\&. Special file names: stdout, stderr, null\&. Default is to stdout\&.
+.RE
+.PP
+\fB\-\-progress=\fR\fIFILE\fR
+.RS 4
+Output all progress messages to a file\&. Special file names: stdout, stderr, null\&. Use
+\fB\-same\fR
+to use
+\fB\-\-messages\fR
+argument\&. Default is no output\&.
+.RE
+.PP
+\fB\-\-debug\fR[=\fIFILE\fR]
+.RS 4
+Enables debug messages\&. Optionally saves to output file\&.
+.RE
+.PP
+\fB\-\-directio=[true|false]\fR
+.RS 4
+Enables or disables direct disc access\&.
+.RE
+.PP
+\fB\-\-noscan\fR
+.RS 4
+Don\(cqt access any media during disc scan and do not check for media insertion and removal\&. Helpful when other applications are already accessing discs in other drives\&.
+.RE
+.PP
+\fB\-\-cache=\fR\fISIZE\fR
+.RS 4
+Specifies size of read cache in megabytes\&. By default program uses a huge amount of memory\&. About 128 MB is recommended for streaming and backup, 512MB for DVD conversion and 1024MB for Blu\-ray conversion\&.
+.RE
+.PP
+\fB\-r, \-\-robot\fR
+.RS 4
+Enables automation mode\&. Program will output more information in a format that is easier to parse\&. All output is line\-based and output is flushed on line end\&. All strings are quoted, all control characters and quotes are backlash\-escaped\&. If you automate this program it is highly recommended to use this option\&. Some options make reference to apdefs\&.h file that can be found in MakeMKV open\-source package, included with version for Linux\&. These values will not change in future versions\&.
+.RE
+.sp
+Backup options:
+.PP
+\fB\-\-decrypt\fR
+.RS 4
+Decrypt stream files during backup\&. Default: no decryption\&.
+.RE
+.PP
+\fB\-\-minlength\fR=\fISECONDS\fR
+.RS 4
+Specify minimum title length\&. Default: program preferences\&.
+.RE
+.SH "COMMANDS"
+.sp
+\fBbackup\fR Backup disc\&.
+.sp
+\fBinfo\fR Display information about a disc\&.
+.sp
+\fBmkv\fR Copy titles from disc\&.
+.sp
+\fBf\fR Run universal firmware tool\&.
+.SH "PARAMETERS"
+.PP
+\fBsource iso:\fR\fIFILENAME\fR
+.RS 4
+Open ISO image\&.
+.RE
+.PP
+\fBsource file:\fR\fIDIRECTORY\fR
+.RS 4
+Open files in directory\&.
+.RE
+.PP
+\fBsource disc:\fR\fIDISC ID\fR
+.RS 4
+Open disc with ID\&.
+.RE
+.PP
+\fBsource dev:\fR\fIDEVICE\fR
+.RS 4
+Open disc with device name\&.
+.RE
+.SH "EXAMPLES"
+.sp
+Copy all titles from first disc and save as MKV files into current directory:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+makemkvcon mkv disc:0 all \&.
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+List all available drives:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+makemkvcon \-r \-\-cache=1 info disc:9999
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+Backup first disc decrypting all video files in automation mode with progress output:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+makemkvcon backup \-\-decrypt \-\-cache=16 \-\-noscan \-r \-\-progress=\-same disc:0 \&.
+.fi
+.if n \{\
+.RE
+.\}
+.SH "MESSAGE FORMATS"
+.sp
+\fBMessage output\fR
+.sp
+MSG:code,flags,count,message,format,param0,param1,\&...
+.sp
+code \- unique message code, should be used to identify particular string in language\-neutral way\&.
+.sp
+flags \- message flags, see AP_UIMSG_xxx flags in apdefs\&.h
+.sp
+count \- number of parameters
+.sp
+message \- raw message string suitable for output
+.sp
+format \- format string used for message\&. This string is localized and subject to change, unlike message code\&.
+.sp
+paramX \- parameter for message
+.sp
+\fBCurrent and total progress title\fR
+.sp
+PRGC:code,id,name
+.sp
+PRGT:code,id,name
+.sp
+code \- unique message code
+.sp
+id \- operation sub\-id
+.sp
+name \- name string
+.sp
+\fBProgress bar values for current and total progress\fR
+.sp
+PRGV:current,total,max
+.sp
+current \- current progress value
+.sp
+total \- total progress value
+.sp
+max \- maximum possible value for a progress bar, constant
+.sp
+\fBDrive scan messages\fR
+.sp
+DRV:index,visible,enabled,flags,drive name,disc name
+.sp
+index \- drive index
+.sp
+visible \- set to 1 if drive is present
+.sp
+enabled \- set to 1 if drive is accessible
+.sp
+flags \- media flags, see AP_DskFsFlagXXX in apdefs\&.h
+.sp
+drive name \- drive name string
+.sp
+disc name \- disc name string
+.sp
+\fBDisc information output messages\fR
+.sp
+TCOUT:count
+.sp
+count \- titles count
+.sp
+\fBDisc, title and stream information\fR
+.sp
+CINFO:id,code,value
+.sp
+TINFO:id,code,value
+.sp
+SINFO:id,code,value
+.sp
+id \- attribute id, see AP_ItemAttributeId in apdefs\&.h
+.sp
+code \- message code if attribute value is a constant string
+.sp
+value \- attribute value
+.SH "RESOURCES"
+.sp
+Console usage: https://www\&.makemkv\&.com/developers/usage\&.txt
+.sp
+MakeMKV for Linux forum: https://www\&.makemkv\&.com/forum/viewforum\&.php?f=3
+.sp
+Main web site: https://www\&.makemkv\&.com/
diff --git a/media-video/makemkv/makemkv-1.18.2.ebuild b/media-video/makemkv/makemkv-1.18.2.ebuild
new file mode 100644
index 0000000..0324d75
--- /dev/null
+++ b/media-video/makemkv/makemkv-1.18.2.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic linux-info xdg
+
+MY_P=makemkv-oss-${PV}
+MY_PB=makemkv-bin-${PV}
+
+DESCRIPTION="Tool for ripping and streaming Blu-ray, HD-DVD and DVD discs"
+HOMEPAGE="http://www.makemkv.com/"
+SRC_URI="http://www.makemkv.com/download/${MY_P}.tar.gz
+ http://www.makemkv.com/download/${MY_PB}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+LICENSE="GPL-2 LGPL-2.1 MPL-1.1 MakeMKV-EULA openssl"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~arm64 x86"
+IUSE="+gui +java"
+RESTRICT="bindist mirror"
+
+QA_PREBUILT="usr/bin/makemkvcon usr/bin/mmdtsdec"
+
+DEPEND="
+ dev-libs/expat
+ dev-libs/openssl:0=[-bindist(-)]
+ >=media-video/ffmpeg-1.0.0:0=
+ sys-libs/zlib
+ gui? ( dev-qt/qtbase:6[dbus,gui,widgets] )
+"
+RDEPEND="
+ ${DEPEND}
+ java? ( >=virtual/jre-1.8 )
+"
+BDEPEND="
+ virtual/pkgconfig
+ gui? ( dev-qt/qtbase:6 )
+"
+
+CONFIG_CHECK="~CHR_DEV_SG"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-qt6.patch
+ "${FILESDIR}"/${PN}-path.patch
+)
+
+src_prepare() {
+ default
+
+ if ! use java; then
+ rm -v "${WORKDIR}/${MY_PB}"/src/share/blues.* || die
+ fi
+}
+
+src_configure() {
+ # See bug #439380.
+ replace-flags -O* -Os
+
+ econf \
+ --enable-debug \
+ --disable-noec \
+ $(use_enable gui) \
+ $(use_enable gui qt6)
+}
+
+src_install() {
+ local myarch
+ case "${ARCH}" in
+ arm) myarch=armhf ;;
+ x86) myarch=i386 ;;
+ *) myarch=${ARCH} ;;
+ esac
+
+ default
+
+ # add missing symlinks for QA
+ dosym libdriveio.so.0 /usr/$(get_libdir)/libdriveio.so.0.${PV}
+ dosym libdriveio.so.0 /usr/$(get_libdir)/libdriveio.so
+ dosym libmakemkv.so.1 /usr/$(get_libdir)/libmakemkv.so.1.${PV}
+ dosym libmakemkv.so.1 /usr/$(get_libdir)/libmakemkv.so
+ dosym libmmbd.so.0 /usr/$(get_libdir)/libmmbd.so
+ dosym libmmbd.so.0 /usr/$(get_libdir)/libmmbd.so.0.${PV}
+
+ cd "${WORKDIR}"/${MY_PB} || die
+
+ # install prebuilt bin
+ dobin bin/"${myarch}"/makemkvcon
+
+ # additional tool is actually part of makemkvcon
+ dosym makemkvcon /usr/bin/sdftool
+
+ # install profiles and locales
+ insinto /usr/share/MakeMKV
+ doins src/share/*
+
+ # install unofficial man page
+ doman "${FILESDIR}"/makemkvcon.1
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ elog "While MakeMKV is in beta mode, upstream has provided a license"
+ elog "to use if you do not want to purchase one."
+ elog ""
+ elog "See this forum thread for more information, including the key:"
+ elog "https://www.makemkv.com/forum/viewtopic.php?f=5&t=1053"
+ elog ""
+ elog "Note that beta license may have an expiration date and you will"
+ elog "need to check for newer licenses/releases. "
+ elog ""
+ elog "We previously said to copy default.mmcp.xml to ~/.MakeMKV/. This"
+ elog "is no longer necessary and you should delete it from there to"
+ elog "avoid warning messages."
+ elog ""
+ elog "MakeMKV can also act as a drop-in replacement for libaacs and"
+ elog "libbdplus, allowing transparent decryption of a wider range of"
+ elog "titles under players like VLC and mplayer. To enable this, set"
+ elog "the following variables when launching the player:"
+ elog "LIBAACS_PATH=libmmbd LIBBDPLUS_PATH=libmmbd"
+}
diff --git a/media-video/makemkv/metadata.xml b/media-video/makemkv/metadata.xml
new file mode 100644
index 0000000..a1dc514
--- /dev/null
+++ b/media-video/makemkv/metadata.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ chewi@gentoo.org
+ James Le Cuirot
+
+
+
+ MakeMKV is your one-click solution to convert video that you own
+ into free and patents-unencumbered format that can be played
+ everywhere. MakeMKV is a format converter, otherwise called
+ transcoder. It converts the video clips from proprietary (and
+ usually encrypted) disc into a set of MKV files, preserving most
+ information but not changing it in any way. The MKV format can
+ store multiple video/audio tracks with all meta-information and
+ preserve chapters. There are many players that can play MKV
+ files nearly on all platforms, and there are tools to convert
+ MKV files to many formats, including DVD and Blu-ray discs.
+
+ Additionally MakeMKV can instantly stream decrypted video
+ without intermediate conversion to wide range of players, so you
+ may watch Blu-ray and DVD discs with your favorite player on
+ your favorite OS or on your favorite device.
+
+