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