diff --git a/libs/ios/media_kit_libs_ios_audio/ios/.gitignore b/libs/ios/media_kit_libs_ios_audio/ios/.gitignore
index 791fcbb1d..55bb48baa 100644
--- a/libs/ios/media_kit_libs_ios_audio/ios/.gitignore
+++ b/libs/ios/media_kit_libs_ios_audio/ios/.gitignore
@@ -1,2 +1,5 @@
.cache
Frameworks
+.build
+.swiftpm
+Package.resolved
diff --git a/libs/ios/media_kit_libs_ios_audio/ios/Makefile b/libs/ios/media_kit_libs_ios_audio/ios/Makefile
index 72541f381..e233bf86c 100644
--- a/libs/ios/media_kit_libs_ios_audio/ios/Makefile
+++ b/libs/ios/media_kit_libs_ios_audio/ios/Makefile
@@ -1,7 +1,7 @@
all: Frameworks/*.xcframework Frameworks/.symlinks
-MPV_XCFRAMEWORKS_VERSION=v0.6.0
-MPV_XCFRAMEWORKS_SHA256SUM=8b8de92dc5482b8950c18bce6b8fa90204fd15af18f371acc9f5be07a4234e49
+MPV_XCFRAMEWORKS_VERSION=v0.7.0
+MPV_XCFRAMEWORKS_SHA256SUM=c324bb131d8a375b33531defb580b24c01e57b612deaf0096662891955545807
TAR=tar
TAR_WILDCARDS_FLAG := $(shell ${TAR} --version 2>&1 | grep -q 'GNU' && echo "--wildcards" || echo "")
diff --git a/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio.podspec b/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio.podspec
index 932c5a3e3..79ddd868b 100644
--- a/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio.podspec
+++ b/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio.podspec
@@ -16,8 +16,11 @@ Pod::Spec.new do |s|
s.author = { 'Hitesh Kumar Saini' => 'saini123hitesh@gmail.com' }
s.source = { :path => '.' }
- s.source_files = 'Classes/**/*'
+ s.source_files = 'media_kit_libs_ios_audio/Sources/media_kit_libs_ios_audio/**/*.swift'
s.dependency 'Flutter'
+ s.resource_bundles = {
+ 'media_kit_libs_ios_audio_privacy' => ['media_kit_libs_ios_audio/Sources/media_kit_libs_ios_audio/PrivacyInfo.xcprivacy']
+ }
s.vendored_frameworks = 'Frameworks/*.xcframework'
diff --git a/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Package.swift b/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Package.swift
new file mode 100644
index 000000000..c29c568ad
--- /dev/null
+++ b/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Package.swift
@@ -0,0 +1,58 @@
+// swift-tools-version: 5.9
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let libmpvTargets = [
+ "Avcodec",
+ "Avfilter",
+ "Avformat",
+ "Avutil",
+ "Mbedcrypto",
+ "Mbedtls",
+ "Mbedx509",
+ "Mpv",
+ "Swresample",
+ "Swscale"
+]
+
+let libmpvArtifactBase = "https://github.com/media-kit/libmpv-darwin-build/releases/download/v0.7.0/libmpv-xcframeworks_v0.7.0_ios-universal-audio-default"
+let libmpvChecksums = [
+ "Avcodec": "0603092e376ff396bcfb5e93e6af61b047b0f9b50efcf8d53f93f2b347c1d537",
+ "Avfilter": "9f78b4b9ae03784183b4aeb2c916af7609d3969b0e6845a6a4a0e571982f78d3",
+ "Avformat": "b2485d949649574c7b98a9fba32e51c26b6aaff3a9cae21c7c30a5e5cd3c4379",
+ "Avutil": "0c29965740fa1a110a47a8839492de93e305bbba0ccb6602be61f9b396b60d02",
+ "Mbedcrypto": "ae80a9915a93589aaab373be7428e92e577749a724bff7054550449f3aee7083",
+ "Mbedtls": "60a7135f9c93d90aa56232255a997e6f699d7d7df9ddab32e97470700216241b",
+ "Mbedx509": "3eb4221a54c2652b85351a61b6b7f6f5a613dac743120655174c21892faa8eae",
+ "Mpv": "2d683792d1461307c7a79e57df987dae5d640310f788de595ce3e16f5181a0ad",
+ "Swresample": "d63bc716105d409b61fd671fb824a1cf8bc3f927d699d75a90e5571af1349f3e",
+ "Swscale": "368135287a59ae417b9ab1607b046ba3e740bdb4b814fe328e83b6d0fee356eb"
+]
+
+let package = Package(
+ name: "media_kit_libs_ios_audio",
+ platforms: [
+ .iOS("9.0")
+ ],
+ products: [
+ .library(name: "media-kit-libs-ios-audio", targets: ["media_kit_libs_ios_audio"] + libmpvTargets)
+ .library(name: "Mpv", targets: ["Mpv"])
+ ],
+ dependencies: [],
+ targets: libmpvTargets.map { framework in
+ .binaryTarget(
+ name: framework,
+ url: "\(libmpvArtifactBase)_\(framework).zip",
+ checksum: libmpvChecksums[framework]!
+ )
+ } + [
+ .target(
+ name: "media_kit_libs_ios_audio",
+ dependencies: libmpvTargets.map { framework in .target(name: framework) },
+ resources: [
+ .process("PrivacyInfo.xcprivacy")
+ ]
+ )
+ ]
+)
diff --git a/libs/ios/media_kit_libs_ios_audio/ios/Classes/MediaKitLibsIosAudioPlugin.swift b/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Sources/media_kit_libs_ios_audio/MediaKitLibsIosAudioPlugin.swift
similarity index 100%
rename from libs/ios/media_kit_libs_ios_audio/ios/Classes/MediaKitLibsIosAudioPlugin.swift
rename to libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Sources/media_kit_libs_ios_audio/MediaKitLibsIosAudioPlugin.swift
diff --git a/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Sources/media_kit_libs_ios_audio/PrivacyInfo.xcprivacy b/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Sources/media_kit_libs_ios_audio/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000..a34b7e2e6
--- /dev/null
+++ b/libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Sources/media_kit_libs_ios_audio/PrivacyInfo.xcprivacy
@@ -0,0 +1,14 @@
+
+
+
+
+ NSPrivacyTrackingDomains
+
+ NSPrivacyAccessedAPITypes
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/libs/ios/media_kit_libs_ios_video/ios/.gitignore b/libs/ios/media_kit_libs_ios_video/ios/.gitignore
index 791fcbb1d..55bb48baa 100644
--- a/libs/ios/media_kit_libs_ios_video/ios/.gitignore
+++ b/libs/ios/media_kit_libs_ios_video/ios/.gitignore
@@ -1,2 +1,5 @@
.cache
Frameworks
+.build
+.swiftpm
+Package.resolved
diff --git a/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video.podspec b/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video.podspec
index d3ea2ad12..74a1dfd25 100644
--- a/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video.podspec
+++ b/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video.podspec
@@ -16,8 +16,11 @@ Pod::Spec.new do |s|
s.author = { 'Hitesh Kumar Saini' => 'saini123hitesh@gmail.com' }
s.source = { :path => '.' }
- s.source_files = 'Classes/**/*'
+ s.source_files = 'media_kit_libs_ios_video/Sources/media_kit_libs_ios_video/**/*.swift'
s.dependency 'Flutter'
+ s.resource_bundles = {
+ 'media_kit_libs_ios_video_privacy' => ['media_kit_libs_ios_video/Sources/media_kit_libs_ios_video/PrivacyInfo.xcprivacy']
+ }
s.vendored_frameworks = 'Frameworks/*.xcframework'
diff --git a/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Package.swift b/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Package.swift
new file mode 100644
index 000000000..95c17e000
--- /dev/null
+++ b/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Package.swift
@@ -0,0 +1,75 @@
+// swift-tools-version: 5.9
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let libmpvTargets = [
+ "Ass",
+ "Avcodec",
+ "Avfilter",
+ "Avformat",
+ "Avutil",
+ "Dav1d",
+ "Freetype",
+ "Fribidi",
+ "Harfbuzz",
+ "Mbedcrypto",
+ "Mbedtls",
+ "Mbedx509",
+ "Mpv",
+ "Png16",
+ "Swresample",
+ "Swscale",
+ "Uchardet",
+ "Xml2"
+]
+
+let libmpvArtifactBase = "https://github.com/media-kit/libmpv-darwin-build/releases/download/v0.7.0/libmpv-xcframeworks_v0.7.0_ios-universal-video-default"
+let libmpvChecksums = [
+ "Ass": "0272e89d672183be70bf5fc2bebf1e89611589aea66a2487d45c0a4116db9d09",
+ "Avcodec": "12ecfed8835d105b1a797a2fcd064338d16524ec1400cd85dd433dedbe92a43d",
+ "Avfilter": "b9713a047521a23e0410ed535b4fe3229ba66c43a9a40a106dfc5d7c690bde62",
+ "Avformat": "6df0fa376a35986edd638555f7783e60db6d72100adc96c33308f2a4d244c044",
+ "Avutil": "937663c27c24b6f94508e55220220b5f3ae2d8768289ca4b817075f18942ba5e",
+ "Dav1d": "8d43adc45b4951d0ba09fea1b9c4647b6e6fba738f1aa7be5cc05ab768993d2d",
+ "Freetype": "3f993ee4fee11cdb5b3b272e4d40765ba772b06cbf7bbdb9ee7132f0555f9799",
+ "Fribidi": "0902e6067d4b773bb91b6ed1aa4be48d55c21aa3df2b9c81e9070d5d9ccd2243",
+ "Harfbuzz": "e7d369bf8aff9f41483cca32e441e56411feef8bec6c3fa2292f61fa79df060d",
+ "Mbedcrypto": "bcedc3439dcbd87de9e2003c0988c4f45c66641d12062ba786f080469ead3400",
+ "Mbedtls": "85e092445e32a64f31dab3d379a7d8a8d4cd798400dfb24ebbae5e4b2bd49711",
+ "Mbedx509": "28175d5d55da490ceeabf513e90781bc1aedaf76f7085d1c58baa7a9be322225",
+ "Mpv": "a180f30b1a3b201734d616c96463fbda21317a772633b5959cf255524996907c",
+ "Png16": "97ea1d5c2b9d41c0e2bcb084b4e31456fe28d383b2cf89ad1df0d2c9d5717437",
+ "Swresample": "89ebab241a9a1f908e60868ff597ae06971d7e1b26f3af25cb26e5c1840b97c6",
+ "Swscale": "dc252e5acd7cd71eebdfe8e007ddf996d68d6bf02b69f9cfef963cab8b88e69d",
+ "Uchardet": "1e9481c8a3b0546b753aab1348fbf1f80a746ef7cc3a47a90a7c7480dad95edf",
+ "Xml2": "ccb8bd20971aa54faaa98e77faacb0e24c39cd2fb471edf7236a5d2a41d8287f"
+]
+let libmpvProductTargets: [String] = ["media_kit_libs_ios_video"] + libmpvTargets
+
+let package = Package(
+ name: "media_kit_libs_ios_video",
+ platforms: [
+ .iOS("9.0")
+ ],
+ products: [
+ .library(name: "media-kit-libs-ios-video", targets: libmpvProductTargets),
+ .library(name: "Mpv", targets: ["Mpv"])
+ ],
+ dependencies: [],
+ targets: libmpvTargets.map { framework in
+ .binaryTarget(
+ name: framework,
+ url: "\(libmpvArtifactBase)_\(framework).zip",
+ checksum: libmpvChecksums[framework]!
+ )
+ } + [
+ .target(
+ name: "media_kit_libs_ios_video",
+ dependencies: libmpvTargets.map { framework in .target(name: framework) },
+ resources: [
+ .process("PrivacyInfo.xcprivacy")
+ ]
+ )
+ ]
+)
diff --git a/libs/ios/media_kit_libs_ios_video/ios/Classes/MediaKitLibsIosVideoPlugin.swift b/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Sources/media_kit_libs_ios_video/MediaKitLibsIosVideoPlugin.swift
similarity index 100%
rename from libs/ios/media_kit_libs_ios_video/ios/Classes/MediaKitLibsIosVideoPlugin.swift
rename to libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Sources/media_kit_libs_ios_video/MediaKitLibsIosVideoPlugin.swift
diff --git a/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Sources/media_kit_libs_ios_video/PrivacyInfo.xcprivacy b/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Sources/media_kit_libs_ios_video/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000..a34b7e2e6
--- /dev/null
+++ b/libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Sources/media_kit_libs_ios_video/PrivacyInfo.xcprivacy
@@ -0,0 +1,14 @@
+
+
+
+
+ NSPrivacyTrackingDomains
+
+ NSPrivacyAccessedAPITypes
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/libs/macos/media_kit_libs_macos_audio/macos/.gitignore b/libs/macos/media_kit_libs_macos_audio/macos/.gitignore
index 791fcbb1d..55bb48baa 100644
--- a/libs/macos/media_kit_libs_macos_audio/macos/.gitignore
+++ b/libs/macos/media_kit_libs_macos_audio/macos/.gitignore
@@ -1,2 +1,5 @@
.cache
Frameworks
+.build
+.swiftpm
+Package.resolved
diff --git a/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio.podspec b/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio.podspec
index 539ac1e89..6cec56461 100644
--- a/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio.podspec
+++ b/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio.podspec
@@ -16,8 +16,11 @@ Pod::Spec.new do |s|
s.author = { 'Hitesh Kumar Saini' => 'saini123hitesh@gmail.com' }
s.source = { :path => '.' }
- s.source_files = 'Classes/**/*'
+ s.source_files = 'media_kit_libs_macos_audio/Sources/media_kit_libs_macos_audio/**/*.swift'
s.dependency 'FlutterMacOS'
+ s.resource_bundles = {
+ 'media_kit_libs_macos_audio_privacy' => ['media_kit_libs_macos_audio/Sources/media_kit_libs_macos_audio/PrivacyInfo.xcprivacy']
+ }
s.vendored_frameworks = 'Frameworks/*.xcframework'
diff --git a/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Package.swift b/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Package.swift
new file mode 100644
index 000000000..77ab1907c
--- /dev/null
+++ b/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Package.swift
@@ -0,0 +1,58 @@
+// swift-tools-version: 5.9
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let libmpvTargets = [
+ "Avcodec",
+ "Avfilter",
+ "Avformat",
+ "Avutil",
+ "Mbedcrypto",
+ "Mbedtls",
+ "Mbedx509",
+ "Mpv",
+ "Swresample",
+ "Swscale"
+]
+
+let libmpvArtifactBase = "https://github.com/media-kit/libmpv-darwin-build/releases/download/v0.7.0/libmpv-xcframeworks_v0.7.0_macos-universal-audio-full"
+let libmpvChecksums = [
+ "Avcodec": "f6e069c6f5cafec22ef627581a060d1023ccf271d8c7b68f06bb0d88c950c004",
+ "Avfilter": "ff96f16434b31a86abaf449899a00af513c250a5df1a10ca0a54edf44b56813e",
+ "Avformat": "280f460238ba21a14499a597c0acf3136d91ef76695fbb92baa43cfae77e28a2",
+ "Avutil": "e1f12d87fdb75cf171ee194732a982a28dd35629ffda19918df7f64a32a8ef33",
+ "Mbedcrypto": "4d1c8cac9a138f87a027d3693a4e79cefbe93e3a437fc120b12b3ccee7561a1f",
+ "Mbedtls": "35487e0a17f77aeb90fbe0bda8287a6199e5785329a44236dd07146fcf8241f6",
+ "Mbedx509": "6fbaf1af7ea11d261565b293fe622d746d3be415e56d8b3b73de40840ec1c501",
+ "Mpv": "38ba4f85bc035099497ebc95a068f20cd462162dae5b431f7fe64004041474c6",
+ "Swresample": "86d9f31bc2ca354e45fcfdaf1b8fdd388b3d47d867d6789c688f2f61fd9552eb",
+ "Swscale": "c0ef85b08ead86e0f968cfbd77b1d6914dc341ecd1e3374870411be6ebbd16f0"
+]
+
+let package = Package(
+ name: "media_kit_libs_macos_audio",
+ platforms: [
+ .macOS("10.9")
+ ],
+ products: [
+ .library(name: "media-kit-libs-macos-audio", targets: ["media_kit_libs_macos_audio"] + libmpvTargets)
+ .library(name: "Mpv", targets: ["Mpv"])
+ ],
+ dependencies: [],
+ targets: libmpvTargets.map { framework in
+ .binaryTarget(
+ name: framework,
+ url: "\(libmpvArtifactBase)_\(framework).zip",
+ checksum: libmpvChecksums[framework]!
+ )
+ } + [
+ .target(
+ name: "media_kit_libs_macos_audio",
+ dependencies: libmpvTargets.map { framework in .target(name: framework) },
+ resources: [
+ .process("PrivacyInfo.xcprivacy")
+ ]
+ )
+ ]
+)
diff --git a/libs/macos/media_kit_libs_macos_audio/macos/Classes/MediaKitLibsMacosAudioPlugin.swift b/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Sources/media_kit_libs_macos_audio/MediaKitLibsMacosAudioPlugin.swift
similarity index 100%
rename from libs/macos/media_kit_libs_macos_audio/macos/Classes/MediaKitLibsMacosAudioPlugin.swift
rename to libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Sources/media_kit_libs_macos_audio/MediaKitLibsMacosAudioPlugin.swift
diff --git a/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Sources/media_kit_libs_macos_audio/PrivacyInfo.xcprivacy b/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Sources/media_kit_libs_macos_audio/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000..a34b7e2e6
--- /dev/null
+++ b/libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Sources/media_kit_libs_macos_audio/PrivacyInfo.xcprivacy
@@ -0,0 +1,14 @@
+
+
+
+
+ NSPrivacyTrackingDomains
+
+ NSPrivacyAccessedAPITypes
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/libs/macos/media_kit_libs_macos_video/macos/.gitignore b/libs/macos/media_kit_libs_macos_video/macos/.gitignore
index 791fcbb1d..55bb48baa 100644
--- a/libs/macos/media_kit_libs_macos_video/macos/.gitignore
+++ b/libs/macos/media_kit_libs_macos_video/macos/.gitignore
@@ -1,2 +1,5 @@
.cache
Frameworks
+.build
+.swiftpm
+Package.resolved
diff --git a/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video.podspec b/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video.podspec
index 270cca5a7..1673be98b 100644
--- a/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video.podspec
+++ b/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video.podspec
@@ -16,8 +16,11 @@ Pod::Spec.new do |s|
s.author = { 'Hitesh Kumar Saini' => 'saini123hitesh@gmail.com' }
s.source = { :path => '.' }
- s.source_files = 'Classes/**/*'
+ s.source_files = 'media_kit_libs_macos_video/Sources/media_kit_libs_macos_video/**/*.swift'
s.dependency 'FlutterMacOS'
+ s.resource_bundles = {
+ 'media_kit_libs_macos_video_privacy' => ['media_kit_libs_macos_video/Sources/media_kit_libs_macos_video/PrivacyInfo.xcprivacy']
+ }
s.vendored_frameworks = 'Frameworks/*.xcframework'
diff --git a/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Package.swift b/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Package.swift
new file mode 100644
index 000000000..79b11338d
--- /dev/null
+++ b/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Package.swift
@@ -0,0 +1,75 @@
+// swift-tools-version: 5.9
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let libmpvTargets = [
+ "Ass",
+ "Avcodec",
+ "Avfilter",
+ "Avformat",
+ "Avutil",
+ "Dav1d",
+ "Freetype",
+ "Fribidi",
+ "Harfbuzz",
+ "Mbedcrypto",
+ "Mbedtls",
+ "Mbedx509",
+ "Mpv",
+ "Png16",
+ "Swresample",
+ "Swscale",
+ "Uchardet",
+ "Xml2"
+]
+
+let libmpvArtifactBase = "https://github.com/media-kit/libmpv-darwin-build/releases/download/v0.7.0/libmpv-xcframeworks_v0.7.0_macos-universal-video-default"
+let libmpvChecksums = [
+ "Ass": "5766993f7b6626a1943a4572345091b8ead509889fa656b2b9ca1a4ee50036b8",
+ "Avcodec": "f642641b41bb3227f299b929ebbd253c834495f8aad6672d42161b7f3f1eea9d",
+ "Avfilter": "151a6c1edf46cb10a7a4ed0912eabb00309f95bd0e142a867a2e742a423d2e8c",
+ "Avformat": "98982b284b770c55976a95a2ce5e3c0d3b4db384b698977dcd3fb432544f49d4",
+ "Avutil": "404f58a9ccefa2505ffdc7125839088dabf05dfad59982c44ef260f7cfbfd752",
+ "Dav1d": "c8ce0efc7fa01ac79f3932e74cb258a51b59d1fd42e8cca4100b42b5c5816ff0",
+ "Freetype": "71c6290bcb6f2f5e58f0a7fb88d75e5df666c0c35f95a261e8886016bb828ad3",
+ "Fribidi": "526476cd44edadeacf4995557a4fada4770e0cff596ba7f13878ccf61244faa7",
+ "Harfbuzz": "09411c1cc7f8f954aeb4467c79d70b9a28a66189c717966835b5ea8b8cb1c24b",
+ "Mbedcrypto": "4d1c8cac9a138f87a027d3693a4e79cefbe93e3a437fc120b12b3ccee7561a1f",
+ "Mbedtls": "35487e0a17f77aeb90fbe0bda8287a6199e5785329a44236dd07146fcf8241f6",
+ "Mbedx509": "6fbaf1af7ea11d261565b293fe622d746d3be415e56d8b3b73de40840ec1c501",
+ "Mpv": "02b4eb1d5d43f458b626f1a4480a31130d7d8226df898079e02bd9828693296b",
+ "Png16": "54cc05350a439a72f0b9d2515d832366a542cccf234c0def201c5b83b6a665e6",
+ "Swresample": "227e182659babff202f41123b27c120efd9903bb32f8982bedb4e5b097b06397",
+ "Swscale": "3dd30c36e5e9cd0386ea9e78629b2e0d0a43134e7104a11673e2d5ca2f18db67",
+ "Uchardet": "3731cd02e84a4a5f8424ee10cde7dc3ce13ed2a12b9acc98b3ebf9b59ce37482",
+ "Xml2": "641e2548c57ef035aab2fd04a8c9ee4f54664ed5a912b3002961d1d4422acfee"
+]
+let libmpvProductTargets: [String] = ["media_kit_libs_macos_video"] + libmpvTargets
+
+let package = Package(
+ name: "media_kit_libs_macos_video",
+ platforms: [
+ .macOS("10.9")
+ ],
+ products: [
+ .library(name: "media-kit-libs-macos-video", targets: libmpvProductTargets),
+ .library(name: "Mpv", targets: ["Mpv"])
+ ],
+ dependencies: [],
+ targets: libmpvTargets.map { framework in
+ .binaryTarget(
+ name: framework,
+ url: "\(libmpvArtifactBase)_\(framework).zip",
+ checksum: libmpvChecksums[framework]!
+ )
+ } + [
+ .target(
+ name: "media_kit_libs_macos_video",
+ dependencies: libmpvTargets.map { framework in .target(name: framework) },
+ resources: [
+ .process("PrivacyInfo.xcprivacy")
+ ]
+ )
+ ]
+)
diff --git a/libs/macos/media_kit_libs_macos_video/macos/Classes/MediaKitLibsMacosVideoPlugin.swift b/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Sources/media_kit_libs_macos_video/MediaKitLibsMacosVideoPlugin.swift
similarity index 100%
rename from libs/macos/media_kit_libs_macos_video/macos/Classes/MediaKitLibsMacosVideoPlugin.swift
rename to libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Sources/media_kit_libs_macos_video/MediaKitLibsMacosVideoPlugin.swift
diff --git a/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Sources/media_kit_libs_macos_video/PrivacyInfo.xcprivacy b/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Sources/media_kit_libs_macos_video/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000..a34b7e2e6
--- /dev/null
+++ b/libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Sources/media_kit_libs_macos_video/PrivacyInfo.xcprivacy
@@ -0,0 +1,14 @@
+
+
+
+
+ NSPrivacyTrackingDomains
+
+ NSPrivacyAccessedAPITypes
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/media_kit_video/common/darwin/Classes/plugin/MPVHelpers.swift b/media_kit_video/common/darwin/Classes/plugin/MPVHelpers.swift
index 26b6d18ec..35b073803 100644
--- a/media_kit_video/common/darwin/Classes/plugin/MPVHelpers.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/MPVHelpers.swift
@@ -1,3 +1,10 @@
+import Darwin
+import Foundation
+
+#if SWIFT_PACKAGE
+ import Mpv
+#endif
+
public enum MPVHelpers {
public static func checkError(_ status: CInt) {
if status < 0 {
diff --git a/media_kit_video/common/darwin/Classes/plugin/MPVVideoOutParams.swift b/media_kit_video/common/darwin/Classes/plugin/MPVVideoOutParams.swift
index 160ea5792..8b02dd195 100644
--- a/media_kit_video/common/darwin/Classes/plugin/MPVVideoOutParams.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/MPVVideoOutParams.swift
@@ -1,3 +1,7 @@
+#if SWIFT_PACKAGE
+ import Mpv
+#endif
+
public class MPVVideoOutParams {
public let dw: Int64
public let dh: Int64
diff --git a/media_kit_video/common/darwin/Classes/plugin/ResizableTextureProtocol.swift b/media_kit_video/common/darwin/Classes/plugin/ResizableTextureProtocol.swift
index eae5f7c72..531f014af 100644
--- a/media_kit_video/common/darwin/Classes/plugin/ResizableTextureProtocol.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/ResizableTextureProtocol.swift
@@ -1,3 +1,5 @@
+import CoreGraphics
+
#if canImport(Flutter)
import Flutter
#elseif canImport(FlutterMacOS)
diff --git a/media_kit_video/common/darwin/Classes/plugin/SafeResizableTexture.swift b/media_kit_video/common/darwin/Classes/plugin/SafeResizableTexture.swift
index 58fc4bfc7..5fdc915ec 100644
--- a/media_kit_video/common/darwin/Classes/plugin/SafeResizableTexture.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/SafeResizableTexture.swift
@@ -1,3 +1,7 @@
+import CoreGraphics
+import CoreVideo
+import Foundation
+
#if canImport(Flutter)
import Flutter
#elseif canImport(FlutterMacOS)
diff --git a/media_kit_video/common/darwin/Classes/plugin/SwappableObjectManager.swift b/media_kit_video/common/darwin/Classes/plugin/SwappableObjectManager.swift
index 2bdb50a16..d1a0e24b7 100644
--- a/media_kit_video/common/darwin/Classes/plugin/SwappableObjectManager.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/SwappableObjectManager.swift
@@ -1,3 +1,5 @@
+import Foundation
+
// This class was created to prevent a frameBuffer read by Flutter from being
// concurrently modified by a write method (mpv's renderer).
//
diff --git a/media_kit_video/common/darwin/Classes/plugin/TextureSW.swift b/media_kit_video/common/darwin/Classes/plugin/TextureSW.swift
index 7745f3101..a711f62af 100644
--- a/media_kit_video/common/darwin/Classes/plugin/TextureSW.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/TextureSW.swift
@@ -1,3 +1,11 @@
+import CoreGraphics
+import CoreVideo
+import Foundation
+
+#if SWIFT_PACKAGE
+ import Mpv
+#endif
+
#if canImport(Flutter)
import Flutter
#elseif canImport(FlutterMacOS)
diff --git a/media_kit_video/common/darwin/Classes/plugin/TextureSWContext.swift b/media_kit_video/common/darwin/Classes/plugin/TextureSWContext.swift
index db329c411..5405f094e 100644
--- a/media_kit_video/common/darwin/Classes/plugin/TextureSWContext.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/TextureSWContext.swift
@@ -1,3 +1,7 @@
+import CoreGraphics
+import CoreVideo
+import Foundation
+
public class TextureSWContext {
public let pixelBuffer: CVPixelBuffer
diff --git a/media_kit_video/common/darwin/Classes/plugin/UtilsProtocol.swift b/media_kit_video/common/darwin/Classes/plugin/UtilsProtocol.swift
index 6d6fda1a6..e76a02764 100644
--- a/media_kit_video/common/darwin/Classes/plugin/UtilsProtocol.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/UtilsProtocol.swift
@@ -1,3 +1,5 @@
+import Foundation
+
public protocol UtilsProtocol: NSObject {
func enterNativeFullscreen()
func exitNativeFullscreen()
diff --git a/media_kit_video/common/darwin/Classes/plugin/VideoOutput.swift b/media_kit_video/common/darwin/Classes/plugin/VideoOutput.swift
index 9441c7e37..a377f2794 100644
--- a/media_kit_video/common/darwin/Classes/plugin/VideoOutput.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/VideoOutput.swift
@@ -1,3 +1,6 @@
+import CoreGraphics
+import Foundation
+
#if canImport(Flutter)
import Flutter
#elseif canImport(FlutterMacOS)
diff --git a/media_kit_video/common/darwin/Classes/plugin/Worker.swift b/media_kit_video/common/darwin/Classes/plugin/Worker.swift
index dbb2c0b7c..7510fda6b 100644
--- a/media_kit_video/common/darwin/Classes/plugin/Worker.swift
+++ b/media_kit_video/common/darwin/Classes/plugin/Worker.swift
@@ -1,3 +1,5 @@
+import Foundation
+
// https://stackoverflow.com/questions/49043257/how-to-ensure-to-run-some-code-on-same-background-thread/49075382#49075382
class Worker {
public typealias Job = () -> Void
diff --git a/media_kit_video/ios/.gitignore b/media_kit_video/ios/.gitignore
index 05dd1fe0c..6b52dcb68 100644
--- a/media_kit_video/ios/.gitignore
+++ b/media_kit_video/ios/.gitignore
@@ -1 +1,4 @@
Headers
+.build
+.swiftpm
+Package.resolved
diff --git a/media_kit_video/ios/Classes/plugin/common/MPVHelpers.swift b/media_kit_video/ios/Classes/plugin/common/MPVHelpers.swift
deleted file mode 120000
index 227135ca5..000000000
--- a/media_kit_video/ios/Classes/plugin/common/MPVHelpers.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/MPVHelpers.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/MPVVideoOutParams.swift b/media_kit_video/ios/Classes/plugin/common/MPVVideoOutParams.swift
deleted file mode 120000
index 86edcf4c5..000000000
--- a/media_kit_video/ios/Classes/plugin/common/MPVVideoOutParams.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/MPVVideoOutParams.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/MediaKitVideoPlugin.swift b/media_kit_video/ios/Classes/plugin/common/MediaKitVideoPlugin.swift
deleted file mode 120000
index 28b20891a..000000000
--- a/media_kit_video/ios/Classes/plugin/common/MediaKitVideoPlugin.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/MediaKitVideoPlugin.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/ResizableTextureProtocol.swift b/media_kit_video/ios/Classes/plugin/common/ResizableTextureProtocol.swift
deleted file mode 120000
index 5f582e365..000000000
--- a/media_kit_video/ios/Classes/plugin/common/ResizableTextureProtocol.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/ResizableTextureProtocol.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/SafeResizableTexture.swift b/media_kit_video/ios/Classes/plugin/common/SafeResizableTexture.swift
deleted file mode 120000
index cb7753279..000000000
--- a/media_kit_video/ios/Classes/plugin/common/SafeResizableTexture.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/SafeResizableTexture.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/SwappableObjectManager.swift b/media_kit_video/ios/Classes/plugin/common/SwappableObjectManager.swift
deleted file mode 120000
index e5dc8c841..000000000
--- a/media_kit_video/ios/Classes/plugin/common/SwappableObjectManager.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/SwappableObjectManager.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/TextureSW.swift b/media_kit_video/ios/Classes/plugin/common/TextureSW.swift
deleted file mode 120000
index 6ababc7cf..000000000
--- a/media_kit_video/ios/Classes/plugin/common/TextureSW.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/TextureSW.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/TextureSWContext.swift b/media_kit_video/ios/Classes/plugin/common/TextureSWContext.swift
deleted file mode 120000
index 6d7183e0a..000000000
--- a/media_kit_video/ios/Classes/plugin/common/TextureSWContext.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/TextureSWContext.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/UtilsProtocol.swift b/media_kit_video/ios/Classes/plugin/common/UtilsProtocol.swift
deleted file mode 120000
index c0b658dff..000000000
--- a/media_kit_video/ios/Classes/plugin/common/UtilsProtocol.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/UtilsProtocol.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/VideoOutput.swift b/media_kit_video/ios/Classes/plugin/common/VideoOutput.swift
deleted file mode 120000
index 78c7f1d78..000000000
--- a/media_kit_video/ios/Classes/plugin/common/VideoOutput.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/VideoOutput.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/VideoOutputConfiguration.swift b/media_kit_video/ios/Classes/plugin/common/VideoOutputConfiguration.swift
deleted file mode 120000
index 4d3b4d907..000000000
--- a/media_kit_video/ios/Classes/plugin/common/VideoOutputConfiguration.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/VideoOutputConfiguration.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/VideoOutputManager.swift b/media_kit_video/ios/Classes/plugin/common/VideoOutputManager.swift
deleted file mode 120000
index 52289a9c2..000000000
--- a/media_kit_video/ios/Classes/plugin/common/VideoOutputManager.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/VideoOutputManager.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/common/Worker.swift b/media_kit_video/ios/Classes/plugin/common/Worker.swift
deleted file mode 120000
index bf3a22856..000000000
--- a/media_kit_video/ios/Classes/plugin/common/Worker.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/Worker.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/stub/common/MediaKitVideoPlugin.swift b/media_kit_video/ios/Classes/stub/common/MediaKitVideoPlugin.swift
deleted file mode 120000
index 38cd66192..000000000
--- a/media_kit_video/ios/Classes/stub/common/MediaKitVideoPlugin.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/stub/MediaKitVideoPlugin.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video.podspec b/media_kit_video/ios/media_kit_video.podspec
index 81b6e0719..1679528a6 100644
--- a/media_kit_video/ios/media_kit_video.podspec
+++ b/media_kit_video/ios/media_kit_video.podspec
@@ -26,13 +26,16 @@ Pod::Spec.new do |s|
s.platform = :ios, '9.0'
s.swift_version = '5.0'
s.dependency 'Flutter'
+ s.resource_bundles = {
+ 'media_kit_video_privacy' => ['media_kit_video/Sources/media_kit_video/PrivacyInfo.xcprivacy']
+ }
if mku.libs_found
# Define paths to frameworks dir
framework_search_paths_iphoneos = sprintf('$(PROJECT_DIR)/../.symlinks/plugins/%s/ios/Frameworks/.symlinks/mpv/ios', mku.libs_package)
framework_search_paths_iphonesimulator = sprintf('$(PROJECT_DIR)/../.symlinks/plugins/%s/ios/Frameworks/.symlinks/mpv/ios-simulator', mku.libs_package)
- s.source_files = 'Classes/plugin/**/*.swift', 'Headers/**/*.h'
+ s.source_files = 'media_kit_video/Sources/media_kit_video/plugin/**/*.swift', 'Headers/**/*.h'
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
'GCC_WARN_INHIBIT_ALL_WARNINGS' => 'YES',
@@ -44,7 +47,7 @@ Pod::Spec.new do |s|
'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386',
}
else
- s.source_files = 'Classes/stub/**/*.swift'
+ s.source_files = 'media_kit_video/Sources/media_kit_video/stub/**/*.swift'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
end
end
diff --git a/media_kit_video/ios/media_kit_video/Package.swift b/media_kit_video/ios/media_kit_video/Package.swift
new file mode 100644
index 000000000..aef8098d8
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Package.swift
@@ -0,0 +1,53 @@
+// swift-tools-version: 5.9
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+import Foundation
+
+/// Checks whether a sibling SPM package exists at the given relative path.
+///
+/// Used to determine whether the native media libs package (e.g. `media_kit_libs_ios_video`)
+/// has been included by the developer in their `pubspec.yaml`. When found, `media_kit_video` is
+/// linked against it; otherwise it falls back to a stub implementation.
+///
+/// NOTE: This function is duplicated across iOS and macOS `Package.swift` manifests.
+///
+/// WARNING: After adding or removing the libs package from `pubspec.yaml`, the Swift Package
+/// Manager cache must be cleared manually for the change to take effect:
+///
+/// rm -rf ~/Library/Caches/org.swift.swiftpm/
+func packageExists(at relativePath: String) -> Bool {
+ let base = URL(fileURLWithPath: #file).deletingLastPathComponent()
+ let path = base.appendingPathComponent(relativePath).standardized.path
+ return FileManager.default.fileExists(atPath: path)
+}
+
+let libsPath = "../media_kit_libs_ios_video"
+let hasLibs = packageExists(at: libsPath)
+
+let package = Package(
+ name: "media_kit_video",
+ platforms: [
+ .iOS("9.0")
+ ],
+ products: [
+ .library(name: "media-kit-video", targets: ["media_kit_video"])
+ ],
+ dependencies: hasLibs
+ ? [.package(name: "media_kit_libs_ios_video", path: libsPath)]
+ : [],
+ targets: [
+ .target(
+ name: "media_kit_video",
+ dependencies: hasLibs
+ ? [.product(name: "Mpv", package: "media_kit_libs_ios_video")]
+ : [],
+ sources: hasLibs
+ ? ["plugin"]
+ : ["stub"],
+ resources: [
+ .process("PrivacyInfo.xcprivacy")
+ ]
+ )
+ ]
+)
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/PrivacyInfo.xcprivacy b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000..a34b7e2e6
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/PrivacyInfo.xcprivacy
@@ -0,0 +1,14 @@
+
+
+
+
+ NSPrivacyTrackingDomains
+
+ NSPrivacyAccessedAPITypes
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/media_kit_video/ios/Classes/plugin/TextureHW.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/TextureHW.swift
similarity index 99%
rename from media_kit_video/ios/Classes/plugin/TextureHW.swift
rename to media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/TextureHW.swift
index a3c3acd8e..c369c6acc 100644
--- a/media_kit_video/ios/Classes/plugin/TextureHW.swift
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/TextureHW.swift
@@ -1,6 +1,10 @@
import Flutter
import OpenGLES
+#if SWIFT_PACKAGE
+ import Mpv
+#endif
+
public class TextureHW: NSObject, FlutterTexture, ResizableTextureProtocol {
public typealias UpdateCallback = () -> Void
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MPVHelpers.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MPVHelpers.swift
new file mode 120000
index 000000000..a4704e4d9
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MPVHelpers.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/MPVHelpers.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MPVVideoOutParams.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MPVVideoOutParams.swift
new file mode 120000
index 000000000..6feea1962
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MPVVideoOutParams.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/MPVVideoOutParams.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MediaKitVideoPlugin.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MediaKitVideoPlugin.swift
new file mode 120000
index 000000000..7526e39c7
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/MediaKitVideoPlugin.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/MediaKitVideoPlugin.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/ResizableTextureProtocol.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/ResizableTextureProtocol.swift
new file mode 120000
index 000000000..ead958248
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/ResizableTextureProtocol.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/ResizableTextureProtocol.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/SafeResizableTexture.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/SafeResizableTexture.swift
new file mode 120000
index 000000000..e71d4abd1
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/SafeResizableTexture.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/SafeResizableTexture.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/SwappableObjectManager.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/SwappableObjectManager.swift
new file mode 120000
index 000000000..6a160006c
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/SwappableObjectManager.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/SwappableObjectManager.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/TextureSW.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/TextureSW.swift
new file mode 120000
index 000000000..77f4a4a6d
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/TextureSW.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/TextureSW.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/TextureSWContext.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/TextureSWContext.swift
new file mode 120000
index 000000000..06c3bdc6c
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/TextureSWContext.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/TextureSWContext.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/UtilsProtocol.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/UtilsProtocol.swift
new file mode 120000
index 000000000..a122f40ef
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/UtilsProtocol.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/UtilsProtocol.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutput.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutput.swift
new file mode 120000
index 000000000..b51cdfd75
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutput.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/VideoOutput.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputConfiguration.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputConfiguration.swift
new file mode 120000
index 000000000..a7ee17420
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputConfiguration.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/VideoOutputConfiguration.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputManager.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputManager.swift
new file mode 120000
index 000000000..02f018076
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputManager.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/VideoOutputManager.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/Worker.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/Worker.swift
new file mode 120000
index 000000000..4895bec3b
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/common/Worker.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/Worker.swift
\ No newline at end of file
diff --git a/media_kit_video/ios/Classes/plugin/gles/OpenGLESHelpers.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/gles/OpenGLESHelpers.swift
similarity index 100%
rename from media_kit_video/ios/Classes/plugin/gles/OpenGLESHelpers.swift
rename to media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/gles/OpenGLESHelpers.swift
diff --git a/media_kit_video/ios/Classes/plugin/gles/TextureGLESContext.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/gles/TextureGLESContext.swift
similarity index 98%
rename from media_kit_video/ios/Classes/plugin/gles/TextureGLESContext.swift
rename to media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/gles/TextureGLESContext.swift
index c2952be32..0e4b7d10b 100644
--- a/media_kit_video/ios/Classes/plugin/gles/TextureGLESContext.swift
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/plugin/gles/TextureGLESContext.swift
@@ -1,3 +1,6 @@
+import OpenGLES
+import UIKit
+
public class TextureGLESContext {
private let context: EAGLContext
public let frameBuffer: GLuint
diff --git a/media_kit_video/ios/media_kit_video/Sources/media_kit_video/stub/common/MediaKitVideoPlugin.swift b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/stub/common/MediaKitVideoPlugin.swift
new file mode 120000
index 000000000..906542b40
--- /dev/null
+++ b/media_kit_video/ios/media_kit_video/Sources/media_kit_video/stub/common/MediaKitVideoPlugin.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/stub/MediaKitVideoPlugin.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/.gitignore b/media_kit_video/macos/.gitignore
index 05dd1fe0c..6b52dcb68 100644
--- a/media_kit_video/macos/.gitignore
+++ b/media_kit_video/macos/.gitignore
@@ -1 +1,4 @@
Headers
+.build
+.swiftpm
+Package.resolved
diff --git a/media_kit_video/macos/Classes/plugin/common/MPVHelpers.swift b/media_kit_video/macos/Classes/plugin/common/MPVHelpers.swift
deleted file mode 120000
index 227135ca5..000000000
--- a/media_kit_video/macos/Classes/plugin/common/MPVHelpers.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/MPVHelpers.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/MPVVideoOutParams.swift b/media_kit_video/macos/Classes/plugin/common/MPVVideoOutParams.swift
deleted file mode 120000
index 86edcf4c5..000000000
--- a/media_kit_video/macos/Classes/plugin/common/MPVVideoOutParams.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/MPVVideoOutParams.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/MediaKitVideoPlugin.swift b/media_kit_video/macos/Classes/plugin/common/MediaKitVideoPlugin.swift
deleted file mode 120000
index 28b20891a..000000000
--- a/media_kit_video/macos/Classes/plugin/common/MediaKitVideoPlugin.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/MediaKitVideoPlugin.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/ResizableTextureProtocol.swift b/media_kit_video/macos/Classes/plugin/common/ResizableTextureProtocol.swift
deleted file mode 120000
index 5f582e365..000000000
--- a/media_kit_video/macos/Classes/plugin/common/ResizableTextureProtocol.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/ResizableTextureProtocol.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/SafeResizableTexture.swift b/media_kit_video/macos/Classes/plugin/common/SafeResizableTexture.swift
deleted file mode 120000
index cb7753279..000000000
--- a/media_kit_video/macos/Classes/plugin/common/SafeResizableTexture.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/SafeResizableTexture.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/SwappableObjectManager.swift b/media_kit_video/macos/Classes/plugin/common/SwappableObjectManager.swift
deleted file mode 120000
index e5dc8c841..000000000
--- a/media_kit_video/macos/Classes/plugin/common/SwappableObjectManager.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/SwappableObjectManager.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/TextureSW.swift b/media_kit_video/macos/Classes/plugin/common/TextureSW.swift
deleted file mode 120000
index 6ababc7cf..000000000
--- a/media_kit_video/macos/Classes/plugin/common/TextureSW.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/TextureSW.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/TextureSWContext.swift b/media_kit_video/macos/Classes/plugin/common/TextureSWContext.swift
deleted file mode 120000
index 6d7183e0a..000000000
--- a/media_kit_video/macos/Classes/plugin/common/TextureSWContext.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/TextureSWContext.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/UtilsProtocol.swift b/media_kit_video/macos/Classes/plugin/common/UtilsProtocol.swift
deleted file mode 120000
index c0b658dff..000000000
--- a/media_kit_video/macos/Classes/plugin/common/UtilsProtocol.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/UtilsProtocol.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/VideoOutput.swift b/media_kit_video/macos/Classes/plugin/common/VideoOutput.swift
deleted file mode 120000
index 78c7f1d78..000000000
--- a/media_kit_video/macos/Classes/plugin/common/VideoOutput.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/VideoOutput.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/VideoOutputConfiguration.swift b/media_kit_video/macos/Classes/plugin/common/VideoOutputConfiguration.swift
deleted file mode 120000
index 4d3b4d907..000000000
--- a/media_kit_video/macos/Classes/plugin/common/VideoOutputConfiguration.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/VideoOutputConfiguration.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/VideoOutputManager.swift b/media_kit_video/macos/Classes/plugin/common/VideoOutputManager.swift
deleted file mode 120000
index 52289a9c2..000000000
--- a/media_kit_video/macos/Classes/plugin/common/VideoOutputManager.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/VideoOutputManager.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/common/Worker.swift b/media_kit_video/macos/Classes/plugin/common/Worker.swift
deleted file mode 120000
index bf3a22856..000000000
--- a/media_kit_video/macos/Classes/plugin/common/Worker.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/plugin/Worker.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/stub/common/MediaKitVideoPlugin.swift b/media_kit_video/macos/Classes/stub/common/MediaKitVideoPlugin.swift
deleted file mode 120000
index 38cd66192..000000000
--- a/media_kit_video/macos/Classes/stub/common/MediaKitVideoPlugin.swift
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/darwin/Classes/stub/MediaKitVideoPlugin.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video.podspec b/media_kit_video/macos/media_kit_video.podspec
index 15c3a9ca0..9c00f7800 100644
--- a/media_kit_video/macos/media_kit_video.podspec
+++ b/media_kit_video/macos/media_kit_video.podspec
@@ -26,12 +26,15 @@ Pod::Spec.new do |s|
s.platform = :osx, '10.9'
s.swift_version = '5.0'
s.dependency 'FlutterMacOS'
+ s.resource_bundles = {
+ 'media_kit_video_privacy' => ['media_kit_video/Sources/media_kit_video/PrivacyInfo.xcprivacy']
+ }
if mku.libs_found
# Define paths to frameworks dir
framework_search_paths_macosx = sprintf('$(PROJECT_DIR)/../Flutter/ephemeral/.symlinks/plugins/%s/macos/Frameworks/.symlinks/mpv/macos', mku.libs_package)
- s.source_files = 'Classes/plugin/**/*.swift', 'Headers/**/*.h'
+ s.source_files = 'media_kit_video/Sources/media_kit_video/plugin/**/*.swift', 'Headers/**/*.h'
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
'GCC_WARN_INHIBIT_ALL_WARNINGS' => 'YES',
@@ -40,7 +43,7 @@ Pod::Spec.new do |s|
'OTHER_LDFLAGS' => '"$(inherited)" -framework Mpv',
}
else
- s.source_files = 'Classes/stub/**/*.swift'
+ s.source_files = 'media_kit_video/Sources/media_kit_video/stub/**/*.swift'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
end
end
diff --git a/media_kit_video/macos/media_kit_video/Package.swift b/media_kit_video/macos/media_kit_video/Package.swift
new file mode 100644
index 000000000..c8a2d359a
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Package.swift
@@ -0,0 +1,53 @@
+// swift-tools-version: 5.9
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+import Foundation
+
+/// Checks whether a sibling SPM package exists at the given relative path.
+///
+/// Used to determine whether the native media libs package (e.g. `media_kit_libs_macos_video`)
+/// has been included by the developer in their `pubspec.yaml`. When found, `media_kit_video` is
+/// linked against it; otherwise it falls back to a stub implementation.
+///
+/// NOTE: This function is duplicated across iOS and macOS `Package.swift` manifests.
+///
+/// WARNING: After adding or removing the libs package from `pubspec.yaml`, the Swift Package
+/// Manager cache must be cleared manually for the change to take effect:
+///
+/// rm -rf ~/Library/Caches/org.swift.swiftpm/
+func packageExists(at relativePath: String) -> Bool {
+ let base = URL(fileURLWithPath: #file).deletingLastPathComponent()
+ let path = base.appendingPathComponent(relativePath).standardized.path
+ return FileManager.default.fileExists(atPath: path)
+}
+
+let libsPath = "../media_kit_libs_macos_video"
+let hasLibs = packageExists(at: libsPath)
+
+let package = Package(
+ name: "media_kit_video",
+ platforms: [
+ .macOS("10.9")
+ ],
+ products: [
+ .library(name: "media-kit-video", targets: ["media_kit_video"])
+ ],
+ dependencies: hasLibs
+ ? [.package(name: "media_kit_libs_macos_video", path: libsPath)]
+ : [],
+ targets: [
+ .target(
+ name: "media_kit_video",
+ dependencies: hasLibs
+ ? [.product(name: "Mpv", package: "media_kit_libs_macos_video")]
+ : [],
+ sources: hasLibs
+ ? ["plugin"]
+ : ["stub"],
+ resources: [
+ .process("PrivacyInfo.xcprivacy")
+ ]
+ )
+ ]
+)
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/PrivacyInfo.xcprivacy b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000..a34b7e2e6
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/PrivacyInfo.xcprivacy
@@ -0,0 +1,14 @@
+
+
+
+
+ NSPrivacyTrackingDomains
+
+ NSPrivacyAccessedAPITypes
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/media_kit_video/macos/Classes/plugin/TextureHW.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/TextureHW.swift
similarity index 99%
rename from media_kit_video/macos/Classes/plugin/TextureHW.swift
rename to media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/TextureHW.swift
index 079ebf957..d8fa80dbc 100644
--- a/media_kit_video/macos/Classes/plugin/TextureHW.swift
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/TextureHW.swift
@@ -2,6 +2,10 @@ import FlutterMacOS
import OpenGL.GL
import OpenGL.GL3
+#if SWIFT_PACKAGE
+ import Mpv
+#endif
+
public class TextureHW: NSObject, FlutterTexture, ResizableTextureProtocol {
public typealias UpdateCallback = () -> Void
diff --git a/media_kit_video/macos/Classes/plugin/Utils.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/Utils.swift
similarity index 100%
rename from media_kit_video/macos/Classes/plugin/Utils.swift
rename to media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/Utils.swift
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MPVHelpers.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MPVHelpers.swift
new file mode 120000
index 000000000..a4704e4d9
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MPVHelpers.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/MPVHelpers.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MPVVideoOutParams.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MPVVideoOutParams.swift
new file mode 120000
index 000000000..6feea1962
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MPVVideoOutParams.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/MPVVideoOutParams.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MediaKitVideoPlugin.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MediaKitVideoPlugin.swift
new file mode 120000
index 000000000..7526e39c7
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/MediaKitVideoPlugin.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/MediaKitVideoPlugin.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/ResizableTextureProtocol.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/ResizableTextureProtocol.swift
new file mode 120000
index 000000000..ead958248
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/ResizableTextureProtocol.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/ResizableTextureProtocol.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/SafeResizableTexture.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/SafeResizableTexture.swift
new file mode 120000
index 000000000..e71d4abd1
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/SafeResizableTexture.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/SafeResizableTexture.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/SwappableObjectManager.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/SwappableObjectManager.swift
new file mode 120000
index 000000000..6a160006c
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/SwappableObjectManager.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/SwappableObjectManager.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/TextureSW.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/TextureSW.swift
new file mode 120000
index 000000000..77f4a4a6d
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/TextureSW.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/TextureSW.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/TextureSWContext.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/TextureSWContext.swift
new file mode 120000
index 000000000..06c3bdc6c
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/TextureSWContext.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/TextureSWContext.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/UtilsProtocol.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/UtilsProtocol.swift
new file mode 120000
index 000000000..a122f40ef
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/UtilsProtocol.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/UtilsProtocol.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutput.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutput.swift
new file mode 120000
index 000000000..b51cdfd75
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutput.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/VideoOutput.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputConfiguration.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputConfiguration.swift
new file mode 120000
index 000000000..a7ee17420
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputConfiguration.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/VideoOutputConfiguration.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputManager.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputManager.swift
new file mode 120000
index 000000000..02f018076
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/VideoOutputManager.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/VideoOutputManager.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/Worker.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/Worker.swift
new file mode 120000
index 000000000..4895bec3b
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/common/Worker.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/plugin/Worker.swift
\ No newline at end of file
diff --git a/media_kit_video/macos/Classes/plugin/gl/OpenGLHelpers.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/gl/OpenGLHelpers.swift
similarity index 100%
rename from media_kit_video/macos/Classes/plugin/gl/OpenGLHelpers.swift
rename to media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/gl/OpenGLHelpers.swift
diff --git a/media_kit_video/macos/Classes/plugin/gl/TextureGLContext.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/gl/TextureGLContext.swift
similarity index 95%
rename from media_kit_video/macos/Classes/plugin/gl/TextureGLContext.swift
rename to media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/gl/TextureGLContext.swift
index e28a9f09c..bb1d707f0 100644
--- a/media_kit_video/macos/Classes/plugin/gl/TextureGLContext.swift
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/plugin/gl/TextureGLContext.swift
@@ -1,3 +1,7 @@
+import Cocoa
+import OpenGL.GL
+import OpenGL.GL3
+
public class TextureGLContext {
private let context: CGLContextObj
private let renderBuffer: GLuint
diff --git a/media_kit_video/macos/media_kit_video/Sources/media_kit_video/stub/common/MediaKitVideoPlugin.swift b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/stub/common/MediaKitVideoPlugin.swift
new file mode 120000
index 000000000..906542b40
--- /dev/null
+++ b/media_kit_video/macos/media_kit_video/Sources/media_kit_video/stub/common/MediaKitVideoPlugin.swift
@@ -0,0 +1 @@
+../../../../../../common/darwin/Classes/stub/MediaKitVideoPlugin.swift
\ No newline at end of file
diff --git a/tool/update_darwin_libmpv_artifacts.sh b/tool/update_darwin_libmpv_artifacts.sh
new file mode 100755
index 000000000..c316c4a04
--- /dev/null
+++ b/tool/update_darwin_libmpv_artifacts.sh
@@ -0,0 +1,271 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+REPO="media-kit/libmpv-darwin-build"
+DRY_RUN=0
+VERSION="v0.7.0"
+VERSION_SET=0
+
+usage() {
+ cat <<'EOF'
+Usage:
+ tool/update_darwin_libmpv_artifacts.sh [version] [--dry-run] [--repo=]
+
+Example:
+ tool/update_darwin_libmpv_artifacts.sh
+ tool/update_darwin_libmpv_artifacts.sh v0.7.0
+
+The script reads GitHub release asset digests and updates Darwin libmpv artifact
+versions/checksums. Existing CocoaPods Makefiles use .tar.gz assets. Future
+SwiftPM Package.swift files, when present, use .zip binaryTarget assets.
+EOF
+}
+
+for arg in "$@"; do
+ case "$arg" in
+ --dry-run)
+ DRY_RUN=1
+ ;;
+ --repo=*)
+ REPO="${arg#--repo=}"
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ v*)
+ if [[ "$VERSION_SET" -eq 1 ]]; then
+ usage
+ exit 64
+ fi
+ VERSION="$arg"
+ VERSION_SET=1
+ ;;
+ *)
+ usage
+ exit 64
+ ;;
+ esac
+done
+
+RELEASE_JSON="$(mktemp "${TMPDIR:-/tmp}/media-kit-release.XXXXXX.json")"
+trap 'rm -f "$RELEASE_JSON"' EXIT
+
+curl -fsSL \
+ -H "Accept: application/vnd.github+json" \
+ -H "User-Agent: media-kit-artifact-updater" \
+ "https://api.github.com/repos/${REPO}/releases/tags/${VERSION}" \
+ -o "$RELEASE_JSON"
+
+digest_for() {
+ local asset_name="$1"
+
+ RELEASE_JSON="$RELEASE_JSON" ASSET_NAME="$asset_name" ruby -rjson -e '
+ release = JSON.parse(File.read(ENV.fetch("RELEASE_JSON")))
+ name = ENV.fetch("ASSET_NAME")
+ asset = release.fetch("assets").find { |item| item["name"] == name }
+
+ abort("Asset #{name} was not found in the release.") unless asset
+
+ digest = asset["digest"]
+ unless digest.is_a?(String) && digest.start_with?("sha256:")
+ abort("Asset #{name} does not have a sha256 digest.")
+ end
+
+ puts digest.sub(/\Asha256:/, "")
+ '
+}
+
+update_makefile() {
+ local path="$1"
+ local version="$2"
+ local checksum="$3"
+
+ if [[ "$DRY_RUN" -eq 1 ]]; then
+ echo "Would update ${path}"
+ return
+ fi
+
+ FILE_PATH="$path" VERSION="$version" CHECKSUM="$checksum" ruby -e '
+ path = ENV.fetch("FILE_PATH")
+ version = ENV.fetch("VERSION")
+ checksum = ENV.fetch("CHECKSUM")
+ contents = File.read(path)
+
+ unless contents.sub!(/^MPV_XCFRAMEWORKS_VERSION=.*$/, "MPV_XCFRAMEWORKS_VERSION=#{version}")
+ abort("MPV_XCFRAMEWORKS_VERSION was not found in #{path}")
+ end
+
+ unless contents.sub!(/^MPV_XCFRAMEWORKS_SHA256SUM=.*$/, "MPV_XCFRAMEWORKS_SHA256SUM=#{checksum}")
+ abort("MPV_XCFRAMEWORKS_SHA256SUM was not found in #{path}")
+ end
+
+ File.write(path, contents)
+ '
+}
+
+update_package_swift() {
+ local path="$1"
+ local platform="$2"
+ local variant="$3"
+ local flavor="$4"
+ shift 4
+ local frameworks=("$@")
+ local artifact_base="https://github.com/${REPO}/releases/download/${VERSION}/libmpv-xcframeworks_${VERSION}_${platform}-universal-${variant}-${flavor}"
+
+ [[ -f "$path" ]] || return
+
+ if [[ "$DRY_RUN" -eq 1 ]]; then
+ echo "Would update ${path}"
+ else
+ FILE_PATH="$path" ARTIFACT_BASE="$artifact_base" ruby -e '
+ path = ENV.fetch("FILE_PATH")
+ artifact_base = ENV.fetch("ARTIFACT_BASE")
+ contents = File.read(path)
+
+ unless contents.sub!(/^let libmpvArtifactBase = ".*"$/, "let libmpvArtifactBase = \"#{artifact_base}\"")
+ abort("libmpvArtifactBase was not found in #{path}")
+ end
+
+ File.write(path, contents)
+ '
+ fi
+
+ for framework in "${frameworks[@]}"; do
+ local zip_name="libmpv-xcframeworks_${VERSION}_${platform}-universal-${variant}-${flavor}_${framework}.zip"
+ local checksum
+ checksum="$(digest_for "$zip_name")"
+
+ if [[ "$DRY_RUN" -eq 1 ]]; then
+ echo "Would update ${framework}: ${checksum}"
+ else
+ FILE_PATH="$path" FRAMEWORK="$framework" CHECKSUM="$checksum" ruby -e '
+ path = ENV.fetch("FILE_PATH")
+ framework = ENV.fetch("FRAMEWORK")
+ checksum = ENV.fetch("CHECKSUM")
+ contents = File.read(path)
+ pattern = /^(\s*"#{Regexp.escape(framework)}":\s*")[^"]+(".*)$/
+
+ unless contents.sub!(pattern, "\\1#{checksum}\\2")
+ abort("Checksum for #{framework} was not found in #{path}")
+ end
+
+ File.write(path, contents)
+ '
+ fi
+ done
+}
+
+update_artifact() {
+ local label="$1"
+ local platform="$2"
+ local variant="$3"
+ local flavor="$4"
+ local makefile_path="$5"
+ local package_path="$6"
+
+ local tar_name="libmpv-xcframeworks_${VERSION}_${platform}-universal-${variant}-${flavor}.tar.gz"
+ local tar_checksum
+ tar_checksum="$(digest_for "$tar_name")"
+
+ update_makefile "$makefile_path" "$VERSION" "$tar_checksum"
+
+ if [[ -f "$package_path" ]]; then
+ shift 6
+ update_package_swift "$package_path" "$platform" "$variant" "$flavor" "$@"
+ fi
+
+ echo "${label}: ${tar_checksum}"
+}
+
+update_artifact \
+ "iOS audio" \
+ "ios" \
+ "audio" \
+ "default" \
+ "libs/ios/media_kit_libs_ios_audio/ios/Makefile" \
+ "libs/ios/media_kit_libs_ios_audio/ios/media_kit_libs_ios_audio/Package.swift" \
+ "Avcodec" \
+ "Avfilter" \
+ "Avformat" \
+ "Avutil" \
+ "Mbedcrypto" \
+ "Mbedtls" \
+ "Mbedx509" \
+ "Mpv" \
+ "Swresample" \
+ "Swscale"
+
+update_artifact \
+ "iOS video" \
+ "ios" \
+ "video" \
+ "default" \
+ "libs/ios/media_kit_libs_ios_video/ios/Makefile" \
+ "libs/ios/media_kit_libs_ios_video/ios/media_kit_libs_ios_video/Package.swift" \
+ "Ass" \
+ "Avcodec" \
+ "Avfilter" \
+ "Avformat" \
+ "Avutil" \
+ "Dav1d" \
+ "Freetype" \
+ "Fribidi" \
+ "Harfbuzz" \
+ "Mbedcrypto" \
+ "Mbedtls" \
+ "Mbedx509" \
+ "Mpv" \
+ "Png16" \
+ "Swresample" \
+ "Swscale" \
+ "Uchardet" \
+ "Xml2"
+
+update_artifact \
+ "macOS audio" \
+ "macos" \
+ "audio" \
+ "full" \
+ "libs/macos/media_kit_libs_macos_audio/macos/Makefile" \
+ "libs/macos/media_kit_libs_macos_audio/macos/media_kit_libs_macos_audio/Package.swift" \
+ "Avcodec" \
+ "Avfilter" \
+ "Avformat" \
+ "Avutil" \
+ "Mbedcrypto" \
+ "Mbedtls" \
+ "Mbedx509" \
+ "Mpv" \
+ "Swresample" \
+ "Swscale"
+
+update_artifact \
+ "macOS video" \
+ "macos" \
+ "video" \
+ "default" \
+ "libs/macos/media_kit_libs_macos_video/macos/Makefile" \
+ "libs/macos/media_kit_libs_macos_video/macos/media_kit_libs_macos_video/Package.swift" \
+ "Ass" \
+ "Avcodec" \
+ "Avfilter" \
+ "Avformat" \
+ "Avutil" \
+ "Dav1d" \
+ "Freetype" \
+ "Fribidi" \
+ "Harfbuzz" \
+ "Mbedcrypto" \
+ "Mbedtls" \
+ "Mbedx509" \
+ "Mpv" \
+ "Png16" \
+ "Swresample" \
+ "Swscale" \
+ "Uchardet" \
+ "Xml2"
+
+if [[ "$DRY_RUN" -eq 1 ]]; then
+ echo "Dry run completed. No files were changed."
+fi