diff --git a/app.json b/app.json index 6c4b8c90..42193c5c 100644 --- a/app.json +++ b/app.json @@ -79,7 +79,7 @@ "targetSdkVersion": 35, "buildToolsVersion": "35.0.0", "kotlinVersion": "2.0.21", - "minSdkVersion": 24, + "minSdkVersion": 26, "usesCleartextTraffic": true, "packagingOptions": { "jniLibs": { diff --git a/components/video-player/controls/Controls.tsx b/components/video-player/controls/Controls.tsx index b0d2f317..39657d77 100644 --- a/components/video-player/controls/Controls.tsx +++ b/components/video-player/controls/Controls.tsx @@ -118,7 +118,7 @@ export const Controls: FC = ({ } = useTrickplay(item); const min = useSharedValue(0); - const max = useSharedValue(item.RunTimeTicks || 0); + const max = useSharedValue(ticksToMs(item.RunTimeTicks || 0)); // Animation values for controls const controlsOpacity = useSharedValue(showControls ? 1 : 0); diff --git a/modules/mpv-player/android/build.gradle b/modules/mpv-player/android/build.gradle index 6096354d..ec59bcd3 100644 --- a/modules/mpv-player/android/build.gradle +++ b/modules/mpv-player/android/build.gradle @@ -25,7 +25,7 @@ if (useManagedAndroidSdkVersions) { project.android { compileSdkVersion safeExtGet("compileSdkVersion", 36) defaultConfig { - minSdkVersion safeExtGet("minSdkVersion", 24) + minSdkVersion safeExtGet("minSdkVersion", 26) targetSdkVersion safeExtGet("targetSdkVersion", 36) } } @@ -36,8 +36,22 @@ android { defaultConfig { versionCode 1 versionName "0.7.6" + ndk { + // Architectures supported by mpv-android + abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64' + } } lintOptions { abortOnError false } + sourceSets { + main { + jniLibs.srcDirs = ['libs'] + } + } +} + +dependencies { + // libmpv from Maven Central + implementation 'dev.jdtech.mpv:libmpv:0.5.1' } diff --git a/modules/mpv-player/android/build/.transforms/02481015cc546ff28fcb899178b67ab4/results.bin b/modules/mpv-player/android/build/.transforms/02481015cc546ff28fcb899178b67ab4/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/02481015cc546ff28fcb899178b67ab4/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/02481015cc546ff28fcb899178b67ab4/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/02481015cc546ff28fcb899178b67ab4/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..a697d695 Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/02481015cc546ff28fcb899178b67ab4/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/1e5c29c972aa539fd1434d1a48b44919/results.bin b/modules/mpv-player/android/build/.transforms/1e5c29c972aa539fd1434d1a48b44919/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/1e5c29c972aa539fd1434d1a48b44919/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/1e5c29c972aa539fd1434d1a48b44919/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/1e5c29c972aa539fd1434d1a48b44919/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..0f831e19 Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/1e5c29c972aa539fd1434d1a48b44919/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/2368da3fcfff0a47ad5e5a16d0e78f78/results.bin b/modules/mpv-player/android/build/.transforms/2368da3fcfff0a47ad5e5a16d0e78f78/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/2368da3fcfff0a47ad5e5a16d0e78f78/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/2368da3fcfff0a47ad5e5a16d0e78f78/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/2368da3fcfff0a47ad5e5a16d0e78f78/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..6b5d9d7c Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/2368da3fcfff0a47ad5e5a16d0e78f78/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/237dc386d34584abed7f936f2e062a86/results.bin b/modules/mpv-player/android/build/.transforms/237dc386d34584abed7f936f2e062a86/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/237dc386d34584abed7f936f2e062a86/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/237dc386d34584abed7f936f2e062a86/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/237dc386d34584abed7f936f2e062a86/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..0b5a2a7e Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/237dc386d34584abed7f936f2e062a86/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/464bb640c8ba273d3294d3c71d4c63d6/results.bin b/modules/mpv-player/android/build/.transforms/464bb640c8ba273d3294d3c71d4c63d6/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/464bb640c8ba273d3294d3c71d4c63d6/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/464bb640c8ba273d3294d3c71d4c63d6/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/464bb640c8ba273d3294d3c71d4c63d6/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..eeec63e1 Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/464bb640c8ba273d3294d3c71d4c63d6/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/66c76c814658cf05660ac1add5eb5c38/results.bin b/modules/mpv-player/android/build/.transforms/66c76c814658cf05660ac1add5eb5c38/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/66c76c814658cf05660ac1add5eb5c38/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/66c76c814658cf05660ac1add5eb5c38/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/66c76c814658cf05660ac1add5eb5c38/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..3441afab Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/66c76c814658cf05660ac1add5eb5c38/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/a2740a059e5c99c104ba3481ed42014d/results.bin b/modules/mpv-player/android/build/.transforms/a2740a059e5c99c104ba3481ed42014d/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/a2740a059e5c99c104ba3481ed42014d/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/a2740a059e5c99c104ba3481ed42014d/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/a2740a059e5c99c104ba3481ed42014d/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..27b56720 Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/a2740a059e5c99c104ba3481ed42014d/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/a66addd52ad889b742e93a04b69ca862/results.bin b/modules/mpv-player/android/build/.transforms/a66addd52ad889b742e93a04b69ca862/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/a66addd52ad889b742e93a04b69ca862/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/a66addd52ad889b742e93a04b69ca862/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/a66addd52ad889b742e93a04b69ca862/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..eeec63e1 Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/a66addd52ad889b742e93a04b69ca862/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/b2f2ef046a9b07de49ecd6fae0cedd57/results.bin b/modules/mpv-player/android/build/.transforms/b2f2ef046a9b07de49ecd6fae0cedd57/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/b2f2ef046a9b07de49ecd6fae0cedd57/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/b2f2ef046a9b07de49ecd6fae0cedd57/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/b2f2ef046a9b07de49ecd6fae0cedd57/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..47e2befa Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/b2f2ef046a9b07de49ecd6fae0cedd57/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/e1626ce50c8d09dccceaf39d2d6e8d85/results.bin b/modules/mpv-player/android/build/.transforms/e1626ce50c8d09dccceaf39d2d6e8d85/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/e1626ce50c8d09dccceaf39d2d6e8d85/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/e1626ce50c8d09dccceaf39d2d6e8d85/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/e1626ce50c8d09dccceaf39d2d6e8d85/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..8582fafd Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/e1626ce50c8d09dccceaf39d2d6e8d85/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/e3ad5e6abcd03f82a95dd755e49660c9/results.bin b/modules/mpv-player/android/build/.transforms/e3ad5e6abcd03f82a95dd755e49660c9/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/e3ad5e6abcd03f82a95dd755e49660c9/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/e3ad5e6abcd03f82a95dd755e49660c9/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/e3ad5e6abcd03f82a95dd755e49660c9/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..4ac422ff Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/e3ad5e6abcd03f82a95dd755e49660c9/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/e54a006fe33efe3cba10bb26053275c1/results.bin b/modules/mpv-player/android/build/.transforms/e54a006fe33efe3cba10bb26053275c1/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/e54a006fe33efe3cba10bb26053275c1/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/e54a006fe33efe3cba10bb26053275c1/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/e54a006fe33efe3cba10bb26053275c1/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..626a5233 Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/e54a006fe33efe3cba10bb26053275c1/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/.transforms/e70ddb8a35e933d38abb9909bc34f53c/results.bin b/modules/mpv-player/android/build/.transforms/e70ddb8a35e933d38abb9909bc34f53c/results.bin new file mode 100644 index 00000000..0d259ddc --- /dev/null +++ b/modules/mpv-player/android/build/.transforms/e70ddb8a35e933d38abb9909bc34f53c/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/modules/mpv-player/android/build/.transforms/e70ddb8a35e933d38abb9909bc34f53c/transformed/classes/classes_dex/classes.dex b/modules/mpv-player/android/build/.transforms/e70ddb8a35e933d38abb9909bc34f53c/transformed/classes/classes_dex/classes.dex new file mode 100644 index 00000000..1f4e84fb Binary files /dev/null and b/modules/mpv-player/android/build/.transforms/e70ddb8a35e933d38abb9909bc34f53c/transformed/classes/classes_dex/classes.dex differ diff --git a/modules/mpv-player/android/build/generated/source/buildConfig/debug/expo/modules/mpvplayer/BuildConfig.java b/modules/mpv-player/android/build/generated/source/buildConfig/debug/expo/modules/mpvplayer/BuildConfig.java new file mode 100644 index 00000000..24fefb97 --- /dev/null +++ b/modules/mpv-player/android/build/generated/source/buildConfig/debug/expo/modules/mpvplayer/BuildConfig.java @@ -0,0 +1,10 @@ +/** + * Automatically generated file. DO NOT MODIFY + */ +package expo.modules.mpvplayer; + +public final class BuildConfig { + public static final boolean DEBUG = Boolean.parseBoolean("true"); + public static final String LIBRARY_PACKAGE_NAME = "expo.modules.mpvplayer"; + public static final String BUILD_TYPE = "debug"; +} diff --git a/modules/mpv-player/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml b/modules/mpv-player/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml new file mode 100644 index 00000000..9d8c2066 --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mpv-player/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json b/modules/mpv-player/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json new file mode 100644 index 00000000..48837892 --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json @@ -0,0 +1,18 @@ +{ + "version": 3, + "artifactType": { + "type": "AAPT_FRIENDLY_MERGED_MANIFESTS", + "kind": "Directory" + }, + "applicationId": "expo.modules.mpvplayer", + "variantName": "debug", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "outputFile": "AndroidManifest.xml" + } + ], + "elementType": "File" +} diff --git a/modules/mpv-player/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties b/modules/mpv-player/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties new file mode 100644 index 00000000..1211b1ef --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties @@ -0,0 +1,6 @@ +aarFormatVersion=1.0 +aarMetadataVersion=1.0 +minCompileSdk=1 +minCompileSdkExtension=0 +minAndroidGradlePluginVersion=1.0.0 +coreLibraryDesugaringEnabled=false diff --git a/modules/mpv-player/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json b/modules/mpv-player/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json @@ -0,0 +1 @@ +{} diff --git a/modules/mpv-player/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar b/modules/mpv-player/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar new file mode 100644 index 00000000..33830b1b Binary files /dev/null and b/modules/mpv-player/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar differ diff --git a/modules/mpv-player/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar b/modules/mpv-player/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar new file mode 100644 index 00000000..f38c3326 Binary files /dev/null and b/modules/mpv-player/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar differ diff --git a/modules/mpv-player/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt b/modules/mpv-player/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt new file mode 100644 index 00000000..e69de29b diff --git a/modules/mpv-player/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties b/modules/mpv-player/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties new file mode 100644 index 00000000..5919eadf --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties @@ -0,0 +1 @@ +#Sat Jan 10 03:51:11 AEDT 2026 diff --git a/modules/mpv-player/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml b/modules/mpv-player/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml new file mode 100644 index 00000000..c925e8a8 --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/modules/mpv-player/android/build/intermediates/incremental/mergeDebugAssets/merger.xml b/modules/mpv-player/android/build/intermediates/incremental/mergeDebugAssets/merger.xml new file mode 100644 index 00000000..a5229e11 --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/incremental/mergeDebugAssets/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/modules/mpv-player/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/modules/mpv-player/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml new file mode 100644 index 00000000..71e82232 --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/modules/mpv-player/android/build/intermediates/incremental/mergeDebugShaders/merger.xml b/modules/mpv-player/android/build/intermediates/incremental/mergeDebugShaders/merger.xml new file mode 100644 index 00000000..a57099ef --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/incremental/mergeDebugShaders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/modules/mpv-player/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/mpv-player_debug.kotlin_module b/modules/mpv-player/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/mpv-player_debug.kotlin_module new file mode 100644 index 00000000..9dbc290d Binary files /dev/null and b/modules/mpv-player/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/mpv-player_debug.kotlin_module differ diff --git a/modules/mpv-player/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/expo/modules/mpvplayer/BuildConfig.class b/modules/mpv-player/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/expo/modules/mpvplayer/BuildConfig.class new file mode 100644 index 00000000..3ac36c21 Binary files /dev/null and b/modules/mpv-player/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/expo/modules/mpvplayer/BuildConfig.class differ diff --git a/modules/mpv-player/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt b/modules/mpv-player/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt new file mode 100644 index 00000000..78ac5b8b --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt @@ -0,0 +1,2 @@ +R_DEF: Internal format may change without notice +local diff --git a/modules/mpv-player/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt b/modules/mpv-player/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt new file mode 100644 index 00000000..485d026c --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt @@ -0,0 +1,19 @@ +1 +2 +4 +5 +6 +7 +7-->/Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:3:5-67 +7-->/Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:3:22-64 +8 +9 +10 /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:6:5-8:36 +11 android:name="android.software.picture_in_picture" +11-->/Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:7:9-59 +12 android:required="false" /> +12-->/Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:8:9-33 +13 +14 diff --git a/modules/mpv-player/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml b/modules/mpv-player/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml new file mode 100644 index 00000000..9d8c2066 --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mpv-player/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json b/modules/mpv-player/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json @@ -0,0 +1 @@ +[] diff --git a/modules/mpv-player/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt b/modules/mpv-player/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt new file mode 100644 index 00000000..08f4ebea --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt @@ -0,0 +1 @@ +0 Warning/Error \ No newline at end of file diff --git a/modules/mpv-player/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar b/modules/mpv-player/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar new file mode 100644 index 00000000..35df693e Binary files /dev/null and b/modules/mpv-player/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar differ diff --git a/modules/mpv-player/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt b/modules/mpv-player/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt new file mode 100644 index 00000000..a204dcb0 --- /dev/null +++ b/modules/mpv-player/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt @@ -0,0 +1 @@ +expo.modules.mpvplayer diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab new file mode 100644 index 00000000..282f1347 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream new file mode 100644 index 00000000..2c55d220 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len new file mode 100644 index 00000000..7b791563 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len new file mode 100644 index 00000000..ec8f944c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at new file mode 100644 index 00000000..b42326df Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i new file mode 100644 index 00000000..346d95e3 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab new file mode 100644 index 00000000..d57b9897 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream new file mode 100644 index 00000000..19c2d3a9 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len new file mode 100644 index 00000000..624494a0 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len new file mode 100644 index 00000000..a363176c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at new file mode 100644 index 00000000..f5ff014c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i new file mode 100644 index 00000000..3ef80ed5 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab new file mode 100644 index 00000000..ca70d7b6 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream new file mode 100644 index 00000000..19c2d3a9 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len new file mode 100644 index 00000000..624494a0 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len new file mode 100644 index 00000000..a363176c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at new file mode 100644 index 00000000..c805446d Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i new file mode 100644 index 00000000..3ef80ed5 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab new file mode 100644 index 00000000..1cef3db0 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream new file mode 100644 index 00000000..074f9e76 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len new file mode 100644 index 00000000..01bdaa1d Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len new file mode 100644 index 00000000..01bdaa1d Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at new file mode 100644 index 00000000..d0773aa1 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i new file mode 100644 index 00000000..7b9ee0cd Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab new file mode 100644 index 00000000..246b53e0 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream new file mode 100644 index 00000000..c4a1a219 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len new file mode 100644 index 00000000..6ad81443 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len new file mode 100644 index 00000000..a42d38f3 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at new file mode 100644 index 00000000..969e2359 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i new file mode 100644 index 00000000..523e8097 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab new file mode 100644 index 00000000..620d2562 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream new file mode 100644 index 00000000..145ea090 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len new file mode 100644 index 00000000..b038f7ba Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len new file mode 100644 index 00000000..6f677df7 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at new file mode 100644 index 00000000..00989e24 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i new file mode 100644 index 00000000..6dcf93bf Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab new file mode 100644 index 00000000..a18be960 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream new file mode 100644 index 00000000..2c55d220 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len new file mode 100644 index 00000000..7b791563 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len new file mode 100644 index 00000000..ec8f944c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at new file mode 100644 index 00000000..ed62a772 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i new file mode 100644 index 00000000..346d95e3 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab new file mode 100644 index 00000000..b515b615 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream new file mode 100644 index 00000000..032157bf Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len new file mode 100644 index 00000000..eea13089 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len new file mode 100644 index 00000000..ec8f944c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at new file mode 100644 index 00000000..c5473d6b Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i new file mode 100644 index 00000000..cfd49e6c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab new file mode 100644 index 00000000..328f816b Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream new file mode 100644 index 00000000..782b7415 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len new file mode 100644 index 00000000..047ea2d5 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len new file mode 100644 index 00000000..a9f80ae0 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at new file mode 100644 index 00000000..355c8a34 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i new file mode 100644 index 00000000..09a9379e Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab new file mode 100644 index 00000000..4a12deaa --- /dev/null +++ b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab @@ -0,0 +1,2 @@ +5 +0 \ No newline at end of file diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab new file mode 100644 index 00000000..2ccc6ea1 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream new file mode 100644 index 00000000..2c55d220 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len new file mode 100644 index 00000000..7b791563 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len new file mode 100644 index 00000000..ec8f944c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at new file mode 100644 index 00000000..f6a4f172 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i new file mode 100644 index 00000000..346d95e3 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab new file mode 100644 index 00000000..9ba5c45c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream new file mode 100644 index 00000000..1dd772ce Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len new file mode 100644 index 00000000..62f3e6ff Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len new file mode 100644 index 00000000..ec8f944c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at new file mode 100644 index 00000000..f009cd0e Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i new file mode 100644 index 00000000..e6ff6ac7 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab new file mode 100644 index 00000000..edf07ba5 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream new file mode 100644 index 00000000..2d8cbdcf Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len new file mode 100644 index 00000000..46e2091d Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len new file mode 100644 index 00000000..3271aa2d Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at new file mode 100644 index 00000000..72e145cb Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i new file mode 100644 index 00000000..578a357c Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len new file mode 100644 index 00000000..131e2657 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin new file mode 100644 index 00000000..8e888424 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin new file mode 100644 index 00000000..54cdbc13 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin differ diff --git a/modules/mpv-player/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin new file mode 100644 index 00000000..7fce9921 Binary files /dev/null and b/modules/mpv-player/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin differ diff --git a/modules/mpv-player/android/build/outputs/logs/manifest-merger-debug-report.txt b/modules/mpv-player/android/build/outputs/logs/manifest-merger-debug-report.txt new file mode 100644 index 00000000..00c373f4 --- /dev/null +++ b/modules/mpv-player/android/build/outputs/logs/manifest-merger-debug-report.txt @@ -0,0 +1,26 @@ +-- Merging decision tree log --- +manifest +ADDED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:1:1-9:12 +INJECTED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:1:1-9:12 + package + INJECTED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml + xmlns:android + ADDED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:1:11-69 +uses-permission#android.permission.INTERNET +ADDED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:3:5-67 + android:name + ADDED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:3:22-64 +uses-feature#android.software.picture_in_picture +ADDED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:6:5-8:36 + android:required + ADDED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:8:9-33 + android:name + ADDED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml:7:9-59 +uses-sdk +INJECTED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml reason: use-sdk injection requested +INJECTED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml +INJECTED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml + android:targetSdkVersion + INJECTED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml + android:minSdkVersion + INJECTED from /Users/alexkim/Code/streamyfin/modules/mpv-player/android/src/main/AndroidManifest.xml diff --git a/modules/mpv-player/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin b/modules/mpv-player/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin new file mode 100644 index 00000000..33a72799 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/META-INF/mpv-player_debug.kotlin_module b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/META-INF/mpv-player_debug.kotlin_module new file mode 100644 index 00000000..9dbc290d Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/META-INF/mpv-player_debug.kotlin_module differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer$Companion.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer$Companion.class new file mode 100644 index 00000000..c1e5ba27 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer$Companion.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer$Delegate.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer$Delegate.class new file mode 100644 index 00000000..dbd8f6df Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer$Delegate.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer.class new file mode 100644 index 00000000..2a221de4 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLayerRenderer.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib$EventObserver.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib$EventObserver.class new file mode 100644 index 00000000..600acdd4 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib$EventObserver.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib$libObserver$1.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib$libObserver$1.class new file mode 100644 index 00000000..dba4ea7f Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib$libObserver$1.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib.class new file mode 100644 index 00000000..56dd6243 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MPVLib.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$1$3$1.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$1$3$1.class new file mode 100644 index 00000000..ed84d955 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$1$3$1.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$1.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$1.class new file mode 100644 index 00000000..d923f2c3 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$1.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$2.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$2.class new file mode 100644 index 00000000..6ac5da94 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$2.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$3.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$3.class new file mode 100644 index 00000000..3371a7ea Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$AsyncFunction$3.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$FunctionWithoutArgs$1.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$FunctionWithoutArgs$1.class new file mode 100644 index 00000000..9bb14da1 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$FunctionWithoutArgs$1.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$View$1.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$View$1.class new file mode 100644 index 00000000..36f86d52 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$$inlined$View$1.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$1.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$1.class new file mode 100644 index 00000000..d90018d7 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$1.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$10.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$10.class new file mode 100644 index 00000000..7c4e6f7f Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$10.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$11.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$11.class new file mode 100644 index 00000000..ef6619f4 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$11.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$12.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$12.class new file mode 100644 index 00000000..32d9fff0 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$12.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$13.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$13.class new file mode 100644 index 00000000..469da711 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$13.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$14.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$14.class new file mode 100644 index 00000000..aeef96f1 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$14.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$15.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$15.class new file mode 100644 index 00000000..833e82f8 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$15.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$16.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$16.class new file mode 100644 index 00000000..21264e65 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$16.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$17.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$17.class new file mode 100644 index 00000000..3a597e63 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$17.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$18.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$18.class new file mode 100644 index 00000000..357e0d80 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$18.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$19.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$19.class new file mode 100644 index 00000000..1beb7f2f Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$19.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$2.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$2.class new file mode 100644 index 00000000..af0ee2d4 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$2.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$20.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$20.class new file mode 100644 index 00000000..62d77581 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$20.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$21.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$21.class new file mode 100644 index 00000000..39954090 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$21.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$22.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$22.class new file mode 100644 index 00000000..5471dd90 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$22.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$23.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$23.class new file mode 100644 index 00000000..7dea4b8b Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$23.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$24.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$24.class new file mode 100644 index 00000000..2977ee1a Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$24.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$25.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$25.class new file mode 100644 index 00000000..676e3f56 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$25.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$26.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$26.class new file mode 100644 index 00000000..014416d4 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$26.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$27.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$27.class new file mode 100644 index 00000000..d739c02f Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$27.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$28.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$28.class new file mode 100644 index 00000000..ee7e356c Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$28.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$29.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$29.class new file mode 100644 index 00000000..e0a60e6b Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$29.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$3.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$3.class new file mode 100644 index 00000000..d96889f8 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$3.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$30.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$30.class new file mode 100644 index 00000000..954ff12f Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$30.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$31.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$31.class new file mode 100644 index 00000000..d0b2f399 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$31.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$32.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$32.class new file mode 100644 index 00000000..df86f4e0 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$32.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$33.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$33.class new file mode 100644 index 00000000..97986453 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$33.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$34.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$34.class new file mode 100644 index 00000000..bcd0e100 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$34.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$35.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$35.class new file mode 100644 index 00000000..53f11fb4 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$35.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$36.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$36.class new file mode 100644 index 00000000..513280b7 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$36.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$37.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$37.class new file mode 100644 index 00000000..f2c145ce Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$37.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$38.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$38.class new file mode 100644 index 00000000..5d29758f Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$38.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$39.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$39.class new file mode 100644 index 00000000..c75f176b Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$39.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$4.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$4.class new file mode 100644 index 00000000..25a9ff34 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$4.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$40.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$40.class new file mode 100644 index 00000000..34699497 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$40.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$41.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$41.class new file mode 100644 index 00000000..5814835f Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$41.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$42.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$42.class new file mode 100644 index 00000000..b4b60528 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$42.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$43.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$43.class new file mode 100644 index 00000000..e6035b24 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$43.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$44.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$44.class new file mode 100644 index 00000000..4a5cc6d9 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$44.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$45.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$45.class new file mode 100644 index 00000000..692249ca Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$45.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$46.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$46.class new file mode 100644 index 00000000..cf494c3e Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$46.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$47.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$47.class new file mode 100644 index 00000000..a3e08b34 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$47.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$48.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$48.class new file mode 100644 index 00000000..e0034ce0 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$48.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$49.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$49.class new file mode 100644 index 00000000..49425abe Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$49.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$5.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$5.class new file mode 100644 index 00000000..99f8d377 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$5.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$50.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$50.class new file mode 100644 index 00000000..d9de5fac Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$50.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$51.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$51.class new file mode 100644 index 00000000..3a8b1d57 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$51.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$52.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$52.class new file mode 100644 index 00000000..eb419f24 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$52.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$53.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$53.class new file mode 100644 index 00000000..2c97911e Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$53.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$54.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$54.class new file mode 100644 index 00000000..33181cf8 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$54.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$55.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$55.class new file mode 100644 index 00000000..ac6b130b Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$55.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$56.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$56.class new file mode 100644 index 00000000..27056ad8 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$56.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$57.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$57.class new file mode 100644 index 00000000..3ce1323c Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$57.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$58.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$58.class new file mode 100644 index 00000000..8499d27b Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$58.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$59.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$59.class new file mode 100644 index 00000000..1739f0fb Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$59.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$6.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$6.class new file mode 100644 index 00000000..c2a97bcf Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$6.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$60.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$60.class new file mode 100644 index 00000000..10970c48 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$60.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$61.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$61.class new file mode 100644 index 00000000..fab9f654 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$61.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$62.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$62.class new file mode 100644 index 00000000..f9f33ba1 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$62.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$63.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$63.class new file mode 100644 index 00000000..cca295e9 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$63.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$64.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$64.class new file mode 100644 index 00000000..6eb9307e Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$64.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$65.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$65.class new file mode 100644 index 00000000..3c8d0d57 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$65.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$66.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$66.class new file mode 100644 index 00000000..8a87731d Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$66.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$67.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$67.class new file mode 100644 index 00000000..40f305a1 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$67.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$68.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$68.class new file mode 100644 index 00000000..951bf8af Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$68.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$69.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$69.class new file mode 100644 index 00000000..825e62ff Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$69.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$7.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$7.class new file mode 100644 index 00000000..765fa814 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$7.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$70.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$70.class new file mode 100644 index 00000000..76c73e03 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$70.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$71.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$71.class new file mode 100644 index 00000000..89756b02 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$71.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$72.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$72.class new file mode 100644 index 00000000..aaa374ea Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$72.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$73.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$73.class new file mode 100644 index 00000000..8943ae92 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$73.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$74.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$74.class new file mode 100644 index 00000000..36770161 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$74.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$75.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$75.class new file mode 100644 index 00000000..0503378c Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$75.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$76.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$76.class new file mode 100644 index 00000000..6b5b50da Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$76.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$77.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$77.class new file mode 100644 index 00000000..263540ec Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$77.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$78.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$78.class new file mode 100644 index 00000000..6bcff978 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$78.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$79.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$79.class new file mode 100644 index 00000000..725e0e2b Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$79.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$8.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$8.class new file mode 100644 index 00000000..4b7b2590 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$8.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$80.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$80.class new file mode 100644 index 00000000..e7473641 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$80.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$81.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$81.class new file mode 100644 index 00000000..2543ba72 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$81.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$82.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$82.class new file mode 100644 index 00000000..a03218dc Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$82.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$9.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$9.class new file mode 100644 index 00000000..8f9fe1bc Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$AsyncFunction$9.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$Prop$1.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$Prop$1.class new file mode 100644 index 00000000..973db6d4 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule$definition$lambda$30$lambda$29$$inlined$Prop$1.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule.class new file mode 100644 index 00000000..25b22bf4 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerModule.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView$2.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView$2.class new file mode 100644 index 00000000..e172f4d1 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView$2.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView$Companion.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView$Companion.class new file mode 100644 index 00000000..5cf11b9a Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView$Companion.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView.class new file mode 100644 index 00000000..bb559c33 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/MpvPlayerView.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController$Companion.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController$Companion.class new file mode 100644 index 00000000..99209f69 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController$Companion.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController$Delegate.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController$Delegate.class new file mode 100644 index 00000000..4704753d Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController$Delegate.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController.class new file mode 100644 index 00000000..edd96d6b Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/PiPController.class differ diff --git a/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/VideoLoadConfig.class b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/VideoLoadConfig.class new file mode 100644 index 00000000..19b56085 Binary files /dev/null and b/modules/mpv-player/android/build/tmp/kotlin-classes/debug/expo/modules/mpvplayer/VideoLoadConfig.class differ diff --git a/modules/mpv-player/android/src/main/AndroidManifest.xml b/modules/mpv-player/android/src/main/AndroidManifest.xml index bdae66c8..c6f2e479 100644 --- a/modules/mpv-player/android/src/main/AndroidManifest.xml +++ b/modules/mpv-player/android/src/main/AndroidManifest.xml @@ -1,2 +1,9 @@ - + + + + + + diff --git a/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MPVLayerRenderer.kt b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MPVLayerRenderer.kt new file mode 100644 index 00000000..f9f6bbaa --- /dev/null +++ b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MPVLayerRenderer.kt @@ -0,0 +1,543 @@ +package expo.modules.mpvplayer + +import android.content.Context +import android.os.Handler +import android.os.Looper +import android.util.Log +import android.view.Surface + +/** + * MPV renderer that wraps libmpv for video playback. + * This mirrors the iOS MPVLayerRenderer implementation. + */ +class MPVLayerRenderer(private val context: Context) : MPVLib.EventObserver { + + companion object { + private const val TAG = "MPVLayerRenderer" + + // Property observation format types + const val MPV_FORMAT_NONE = 0 + const val MPV_FORMAT_STRING = 1 + const val MPV_FORMAT_OSD_STRING = 2 + const val MPV_FORMAT_FLAG = 3 + const val MPV_FORMAT_INT64 = 4 + const val MPV_FORMAT_DOUBLE = 5 + const val MPV_FORMAT_NODE = 6 + } + + interface Delegate { + fun onPositionChanged(position: Double, duration: Double) + fun onPauseChanged(isPaused: Boolean) + fun onLoadingChanged(isLoading: Boolean) + fun onReadyToSeek() + fun onTracksReady() + fun onError(message: String) + fun onVideoDimensionsChanged(width: Int, height: Int) + } + + var delegate: Delegate? = null + + private val mainHandler = Handler(Looper.getMainLooper()) + + private var surface: Surface? = null + private var isRunning = false + private var isStopping = false + + // Cached state + private var cachedPosition: Double = 0.0 + private var cachedDuration: Double = 0.0 + private var _isPaused: Boolean = true + private var _isLoading: Boolean = false + private var _playbackSpeed: Double = 1.0 + private var isReadyToSeek: Boolean = false + + // Video dimensions + private var _videoWidth: Int = 0 + private var _videoHeight: Int = 0 + + val videoWidth: Int + get() = _videoWidth + + val videoHeight: Int + get() = _videoHeight + + // Current video config + private var currentUrl: String? = null + private var currentHeaders: Map? = null + private var pendingExternalSubtitles: List = emptyList() + private var initialSubtitleId: Int? = null + private var initialAudioId: Int? = null + + val isPausedState: Boolean + get() = _isPaused + + val currentPosition: Double + get() = cachedPosition + + val duration: Double + get() = cachedDuration + + fun start() { + if (isRunning) return + + try { + MPVLib.create(context) + MPVLib.addObserver(this) + + // Configure mpv options before initialization (based on Findroid) + MPVLib.setOptionString("vo", "gpu") + MPVLib.setOptionString("gpu-context", "android") + MPVLib.setOptionString("opengl-es", "yes") + + // Hardware video decoding + MPVLib.setOptionString("hwdec", "mediacodec-copy") + MPVLib.setOptionString("hwdec-codecs", "h264,hevc,mpeg4,mpeg2video,vp8,vp9,av1") + + // Cache settings for better network streaming + MPVLib.setOptionString("cache", "yes") + MPVLib.setOptionString("cache-pause-initial", "yes") + MPVLib.setOptionString("demuxer-max-bytes", "150MiB") + MPVLib.setOptionString("demuxer-max-back-bytes", "75MiB") + MPVLib.setOptionString("demuxer-readahead-secs", "20") + + // Seeking optimization - faster seeking at the cost of less precision + // Use keyframe seeking by default (much faster for network streams) + MPVLib.setOptionString("hr-seek", "no") + // Drop frames during seeking for faster response + MPVLib.setOptionString("hr-seek-framedrop", "yes") + + // Subtitle settings + MPVLib.setOptionString("sub-scale-with-window", "yes") + MPVLib.setOptionString("sub-use-margins", "no") + MPVLib.setOptionString("subs-match-os-language", "yes") + MPVLib.setOptionString("subs-fallback", "yes") + + // Important: Start with force-window=no, will be set to yes when surface is attached + MPVLib.setOptionString("force-window", "no") + MPVLib.setOptionString("keep-open", "always") + + MPVLib.initialize() + + // Observe properties + observeProperties() + + isRunning = true + Log.i(TAG, "MPV renderer started") + } catch (e: Exception) { + Log.e(TAG, "Failed to start MPV renderer: ${e.message}") + delegate?.onError("Failed to start renderer: ${e.message}") + } + } + + fun stop() { + if (isStopping) return + if (!isRunning) return + + isStopping = true + isRunning = false + + try { + MPVLib.removeObserver(this) + MPVLib.detachSurface() + MPVLib.destroy() + } catch (e: Exception) { + Log.e(TAG, "Error stopping MPV: ${e.message}") + } + + isStopping = false + } + + /** + * Attach surface and re-enable video output. + * Based on Findroid's implementation. + */ + fun attachSurface(surface: Surface) { + this.surface = surface + if (isRunning) { + MPVLib.attachSurface(surface) + // Re-enable video output after attaching surface (Findroid approach) + MPVLib.setOptionString("force-window", "yes") + MPVLib.setOptionString("vo", "gpu") + Log.i(TAG, "Surface attached, video output re-enabled") + } + } + + /** + * Detach surface and disable video output. + * Based on Findroid's implementation. + */ + fun detachSurface() { + this.surface = null + if (isRunning) { + try { + // Disable video output before detaching surface (Findroid approach) + MPVLib.setOptionString("vo", "null") + MPVLib.setOptionString("force-window", "no") + Log.i(TAG, "Video output disabled before surface detach") + } catch (e: Exception) { + Log.e(TAG, "Failed to disable video output: ${e.message}") + } + + MPVLib.detachSurface() + } + } + + /** + * Updates the surface size. Called from surfaceChanged. + * Based on Findroid's implementation. + */ + fun updateSurfaceSize(width: Int, height: Int) { + if (isRunning) { + MPVLib.setPropertyString("android-surface-size", "${width}x$height") + Log.i(TAG, "Surface size updated: ${width}x$height") + } + } + + fun load( + url: String, + headers: Map? = null, + startPosition: Double? = null, + externalSubtitles: List? = null, + initialSubtitleId: Int? = null, + initialAudioId: Int? = null + ) { + currentUrl = url + currentHeaders = headers + pendingExternalSubtitles = externalSubtitles ?: emptyList() + this.initialSubtitleId = initialSubtitleId + this.initialAudioId = initialAudioId + + _isLoading = true + isReadyToSeek = false + mainHandler.post { delegate?.onLoadingChanged(true) } + + // Stop previous playback + MPVLib.command(arrayOf("stop")) + + // Set HTTP headers if provided + updateHttpHeaders(headers) + + // Set start position + if (startPosition != null && startPosition > 0) { + MPVLib.setPropertyString("start", String.format("%.2f", startPosition)) + } else { + MPVLib.setPropertyString("start", "0") + } + + // Set initial audio track if specified + if (initialAudioId != null && initialAudioId > 0) { + setAudioTrack(initialAudioId) + } + + // Set initial subtitle track if no external subs + if (pendingExternalSubtitles.isEmpty()) { + if (initialSubtitleId != null) { + setSubtitleTrack(initialSubtitleId) + } else { + disableSubtitles() + } + } else { + disableSubtitles() + } + + // Load the file + MPVLib.command(arrayOf("loadfile", url, "replace")) + } + + fun reloadCurrentItem() { + currentUrl?.let { url -> + load(url, currentHeaders) + } + } + + private fun updateHttpHeaders(headers: Map?) { + if (headers.isNullOrEmpty()) { + // Clear headers + return + } + + val headerString = headers.entries.joinToString("\r\n") { "${it.key}: ${it.value}" } + MPVLib.setPropertyString("http-header-fields", headerString) + } + + private fun observeProperties() { + MPVLib.observeProperty("duration", MPV_FORMAT_DOUBLE) + MPVLib.observeProperty("time-pos", MPV_FORMAT_DOUBLE) + MPVLib.observeProperty("pause", MPV_FORMAT_FLAG) + MPVLib.observeProperty("track-list/count", MPV_FORMAT_INT64) + MPVLib.observeProperty("paused-for-cache", MPV_FORMAT_FLAG) + // Video dimensions for PiP aspect ratio + MPVLib.observeProperty("video-params/w", MPV_FORMAT_INT64) + MPVLib.observeProperty("video-params/h", MPV_FORMAT_INT64) + } + + // MARK: - Playback Controls + + fun play() { + MPVLib.setPropertyBoolean("pause", false) + } + + fun pause() { + MPVLib.setPropertyBoolean("pause", true) + } + + fun togglePause() { + if (_isPaused) play() else pause() + } + + fun seekTo(seconds: Double) { + val clamped = maxOf(0.0, seconds) + cachedPosition = clamped + MPVLib.command(arrayOf("seek", clamped.toString(), "absolute")) + } + + fun seekBy(seconds: Double) { + val newPosition = maxOf(0.0, cachedPosition + seconds) + cachedPosition = newPosition + MPVLib.command(arrayOf("seek", seconds.toString(), "relative")) + } + + fun setSpeed(speed: Double) { + _playbackSpeed = speed + MPVLib.setPropertyDouble("speed", speed) + } + + fun getSpeed(): Double { + return MPVLib.getPropertyDouble("speed") ?: _playbackSpeed + } + + // MARK: - Subtitle Controls + + fun getSubtitleTracks(): List> { + val tracks = mutableListOf>() + + val trackCount = MPVLib.getPropertyInt("track-list/count") ?: 0 + + for (i in 0 until trackCount) { + val trackType = MPVLib.getPropertyString("track-list/$i/type") ?: continue + if (trackType != "sub") continue + + val trackId = MPVLib.getPropertyInt("track-list/$i/id") ?: continue + val track = mutableMapOf("id" to trackId) + + MPVLib.getPropertyString("track-list/$i/title")?.let { track["title"] = it } + MPVLib.getPropertyString("track-list/$i/lang")?.let { track["lang"] = it } + + val selected = MPVLib.getPropertyBoolean("track-list/$i/selected") ?: false + track["selected"] = selected + + tracks.add(track) + } + + return tracks + } + + fun setSubtitleTrack(trackId: Int) { + Log.i(TAG, "setSubtitleTrack: setting sid to $trackId") + if (trackId < 0) { + MPVLib.setPropertyString("sid", "no") + } else { + MPVLib.setPropertyInt("sid", trackId) + } + } + + fun disableSubtitles() { + MPVLib.setPropertyString("sid", "no") + } + + fun getCurrentSubtitleTrack(): Int { + return MPVLib.getPropertyInt("sid") ?: 0 + } + + fun addSubtitleFile(url: String, select: Boolean = true) { + val flag = if (select) "select" else "cached" + MPVLib.command(arrayOf("sub-add", url, flag)) + } + + // MARK: - Subtitle Positioning + + fun setSubtitlePosition(position: Int) { + MPVLib.setPropertyInt("sub-pos", position) + } + + fun setSubtitleScale(scale: Double) { + MPVLib.setPropertyDouble("sub-scale", scale) + } + + fun setSubtitleMarginY(margin: Int) { + MPVLib.setPropertyInt("sub-margin-y", margin) + } + + fun setSubtitleAlignX(alignment: String) { + MPVLib.setPropertyString("sub-align-x", alignment) + } + + fun setSubtitleAlignY(alignment: String) { + MPVLib.setPropertyString("sub-align-y", alignment) + } + + fun setSubtitleFontSize(size: Int) { + MPVLib.setPropertyInt("sub-font-size", size) + } + + // MARK: - Audio Track Controls + + fun getAudioTracks(): List> { + val tracks = mutableListOf>() + + val trackCount = MPVLib.getPropertyInt("track-list/count") ?: 0 + + for (i in 0 until trackCount) { + val trackType = MPVLib.getPropertyString("track-list/$i/type") ?: continue + if (trackType != "audio") continue + + val trackId = MPVLib.getPropertyInt("track-list/$i/id") ?: continue + val track = mutableMapOf("id" to trackId) + + MPVLib.getPropertyString("track-list/$i/title")?.let { track["title"] = it } + MPVLib.getPropertyString("track-list/$i/lang")?.let { track["lang"] = it } + MPVLib.getPropertyString("track-list/$i/codec")?.let { track["codec"] = it } + + val channels = MPVLib.getPropertyInt("track-list/$i/audio-channels") + if (channels != null && channels > 0) { + track["channels"] = channels + } + + val selected = MPVLib.getPropertyBoolean("track-list/$i/selected") ?: false + track["selected"] = selected + + tracks.add(track) + } + + return tracks + } + + fun setAudioTrack(trackId: Int) { + Log.i(TAG, "setAudioTrack: setting aid to $trackId") + MPVLib.setPropertyInt("aid", trackId) + } + + fun getCurrentAudioTrack(): Int { + return MPVLib.getPropertyInt("aid") ?: 0 + } + + // MARK: - MPVLib.EventObserver + + override fun eventProperty(property: String) { + // Property changed but no value provided + } + + override fun eventProperty(property: String, value: Long) { + when (property) { + "track-list/count" -> { + if (value > 0) { + Log.i(TAG, "Track list updated: $value tracks available") + mainHandler.post { delegate?.onTracksReady() } + } + } + "video-params/w" -> { + val width = value.toInt() + if (width > 0 && width != _videoWidth) { + _videoWidth = width + notifyVideoDimensionsIfReady() + } + } + "video-params/h" -> { + val height = value.toInt() + if (height > 0 && height != _videoHeight) { + _videoHeight = height + notifyVideoDimensionsIfReady() + } + } + } + } + + private fun notifyVideoDimensionsIfReady() { + if (_videoWidth > 0 && _videoHeight > 0) { + Log.i(TAG, "Video dimensions: ${_videoWidth}x${_videoHeight}") + mainHandler.post { delegate?.onVideoDimensionsChanged(_videoWidth, _videoHeight) } + } + } + + override fun eventProperty(property: String, value: Boolean) { + when (property) { + "pause" -> { + if (value != _isPaused) { + _isPaused = value + mainHandler.post { delegate?.onPauseChanged(value) } + } + } + "paused-for-cache" -> { + if (value != _isLoading) { + _isLoading = value + mainHandler.post { delegate?.onLoadingChanged(value) } + } + } + } + } + + override fun eventProperty(property: String, value: String) { + // Handle string properties if needed + } + + override fun eventProperty(property: String, value: Double) { + when (property) { + "duration" -> { + cachedDuration = value + mainHandler.post { delegate?.onPositionChanged(cachedPosition, cachedDuration) } + } + "time-pos" -> { + cachedPosition = value + mainHandler.post { delegate?.onPositionChanged(cachedPosition, cachedDuration) } + } + } + } + + override fun event(eventId: Int) { + when (eventId) { + MPVLib.MPV_EVENT_FILE_LOADED -> { + // Add external subtitles now that file is loaded + if (pendingExternalSubtitles.isNotEmpty()) { + for (subUrl in pendingExternalSubtitles) { + MPVLib.command(arrayOf("sub-add", subUrl)) + } + pendingExternalSubtitles = emptyList() + + // Set subtitle after external subs are added + initialSubtitleId?.let { setSubtitleTrack(it) } ?: disableSubtitles() + } + + if (!isReadyToSeek) { + isReadyToSeek = true + mainHandler.post { delegate?.onReadyToSeek() } + } + + if (_isLoading) { + _isLoading = false + mainHandler.post { delegate?.onLoadingChanged(false) } + } + } + MPVLib.MPV_EVENT_SEEK -> { + // Seek started - show loading indicator + if (!_isLoading) { + _isLoading = true + mainHandler.post { delegate?.onLoadingChanged(true) } + } + } + MPVLib.MPV_EVENT_PLAYBACK_RESTART -> { + // Video playback has started/restarted (including after seek) + if (_isLoading) { + _isLoading = false + mainHandler.post { delegate?.onLoadingChanged(false) } + } + } + MPVLib.MPV_EVENT_END_FILE -> { + Log.i(TAG, "Playback ended") + } + MPVLib.MPV_EVENT_SHUTDOWN -> { + Log.w(TAG, "MPV shutdown") + } + } + } +} + diff --git a/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MPVLib.kt b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MPVLib.kt new file mode 100644 index 00000000..5c0f422e --- /dev/null +++ b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MPVLib.kt @@ -0,0 +1,220 @@ +package expo.modules.mpvplayer + +import android.content.Context +import android.util.Log +import android.view.Surface +import dev.jdtech.mpv.MPVLib as LibMPV + +/** + * Wrapper around the dev.jdtech.mpv.MPVLib class. + * This provides a consistent interface for the rest of the app. + */ +object MPVLib { + private const val TAG = "MPVLib" + + private var initialized = false + + // Event observer interface + interface EventObserver { + fun eventProperty(property: String) + fun eventProperty(property: String, value: Long) + fun eventProperty(property: String, value: Boolean) + fun eventProperty(property: String, value: String) + fun eventProperty(property: String, value: Double) + fun event(eventId: Int) + } + + private val observers = mutableListOf() + + // Library event observer that forwards to our observers + private val libObserver = object : LibMPV.EventObserver { + override fun eventProperty(property: String) { + synchronized(observers) { + for (observer in observers) { + observer.eventProperty(property) + } + } + } + + override fun eventProperty(property: String, value: Long) { + synchronized(observers) { + for (observer in observers) { + observer.eventProperty(property, value) + } + } + } + + override fun eventProperty(property: String, value: Boolean) { + synchronized(observers) { + for (observer in observers) { + observer.eventProperty(property, value) + } + } + } + + override fun eventProperty(property: String, value: String) { + synchronized(observers) { + for (observer in observers) { + observer.eventProperty(property, value) + } + } + } + + override fun eventProperty(property: String, value: Double) { + synchronized(observers) { + for (observer in observers) { + observer.eventProperty(property, value) + } + } + } + + override fun event(eventId: Int) { + synchronized(observers) { + for (observer in observers) { + observer.event(eventId) + } + } + } + } + + fun addObserver(observer: EventObserver) { + synchronized(observers) { + observers.add(observer) + } + } + + fun removeObserver(observer: EventObserver) { + synchronized(observers) { + observers.remove(observer) + } + } + + // MPV Event IDs + const val MPV_EVENT_NONE = 0 + const val MPV_EVENT_SHUTDOWN = 1 + const val MPV_EVENT_LOG_MESSAGE = 2 + const val MPV_EVENT_GET_PROPERTY_REPLY = 3 + const val MPV_EVENT_SET_PROPERTY_REPLY = 4 + const val MPV_EVENT_COMMAND_REPLY = 5 + const val MPV_EVENT_START_FILE = 6 + const val MPV_EVENT_END_FILE = 7 + const val MPV_EVENT_FILE_LOADED = 8 + const val MPV_EVENT_IDLE = 11 + const val MPV_EVENT_TICK = 14 + const val MPV_EVENT_CLIENT_MESSAGE = 16 + const val MPV_EVENT_VIDEO_RECONFIG = 17 + const val MPV_EVENT_AUDIO_RECONFIG = 18 + const val MPV_EVENT_SEEK = 20 + const val MPV_EVENT_PLAYBACK_RESTART = 21 + const val MPV_EVENT_PROPERTY_CHANGE = 22 + const val MPV_EVENT_QUEUE_OVERFLOW = 24 + + // End file reason + const val MPV_END_FILE_REASON_EOF = 0 + const val MPV_END_FILE_REASON_STOP = 2 + const val MPV_END_FILE_REASON_QUIT = 3 + const val MPV_END_FILE_REASON_ERROR = 4 + const val MPV_END_FILE_REASON_REDIRECT = 5 + + /** + * Create and initialize the MPV library + */ + fun create(context: Context, configDir: String? = null) { + if (initialized) return + + try { + LibMPV.create(context) + LibMPV.addObserver(libObserver) + initialized = true + Log.i(TAG, "libmpv created successfully") + } catch (e: Exception) { + Log.e(TAG, "Failed to create libmpv: ${e.message}") + throw e + } + } + + fun initialize() { + LibMPV.init() + } + + fun destroy() { + if (!initialized) return + try { + LibMPV.removeObserver(libObserver) + LibMPV.destroy() + } catch (e: Exception) { + Log.e(TAG, "Error destroying mpv: ${e.message}") + } + initialized = false + } + + fun isInitialized(): Boolean = initialized + + fun attachSurface(surface: Surface) { + LibMPV.attachSurface(surface) + } + + fun detachSurface() { + LibMPV.detachSurface() + } + + fun command(cmd: Array) { + LibMPV.command(cmd) + } + + fun setOptionString(name: String, value: String): Int { + return LibMPV.setOptionString(name, value) + } + + fun getPropertyInt(name: String): Int? { + return try { + LibMPV.getPropertyInt(name) + } catch (e: Exception) { + null + } + } + + fun getPropertyDouble(name: String): Double? { + return try { + LibMPV.getPropertyDouble(name) + } catch (e: Exception) { + null + } + } + + fun getPropertyBoolean(name: String): Boolean? { + return try { + LibMPV.getPropertyBoolean(name) + } catch (e: Exception) { + null + } + } + + fun getPropertyString(name: String): String? { + return try { + LibMPV.getPropertyString(name) + } catch (e: Exception) { + null + } + } + + fun setPropertyInt(name: String, value: Int) { + LibMPV.setPropertyInt(name, value) + } + + fun setPropertyDouble(name: String, value: Double) { + LibMPV.setPropertyDouble(name, value) + } + + fun setPropertyBoolean(name: String, value: Boolean) { + LibMPV.setPropertyBoolean(name, value) + } + + fun setPropertyString(name: String, value: String) { + LibMPV.setPropertyString(name, value) + } + + fun observeProperty(name: String, format: Int) { + LibMPV.observeProperty(name, format) + } +} diff --git a/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MpvPlayerModule.kt b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MpvPlayerModule.kt index 7c8a4b00..3ad20fe2 100644 --- a/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MpvPlayerModule.kt +++ b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MpvPlayerModule.kt @@ -2,49 +2,170 @@ package expo.modules.mpvplayer import expo.modules.kotlin.modules.Module import expo.modules.kotlin.modules.ModuleDefinition -import java.net.URL class MpvPlayerModule : Module() { - // Each module class must implement the definition function. The definition consists of components - // that describes the module's functionality and behavior. - // See https://docs.expo.dev/modules/module-api for more details about available components. - override fun definition() = ModuleDefinition { - // Sets the name of the module that JavaScript code will use to refer to the module. Takes a string as an argument. - // Can be inferred from module's class name, but it's recommended to set it explicitly for clarity. - // The module will be accessible from `requireNativeModule('MpvPlayer')` in JavaScript. - Name("MpvPlayer") + override fun definition() = ModuleDefinition { + Name("MpvPlayer") - // Defines constant property on the module. - Constant("PI") { - Math.PI + // Defines event names that the module can send to JavaScript. + Events("onChange") + + // Defines a JavaScript synchronous function that runs the native code on the JavaScript thread. + Function("hello") { + "Hello from MPV Player! 👋" + } + + // Defines a JavaScript function that always returns a Promise and whose native code + // is by default dispatched on the different thread than the JavaScript runtime runs on. + AsyncFunction("setValueAsync") { value: String -> + sendEvent("onChange", mapOf("value" to value)) + } + + // Enables the module to be used as a native view. + View(MpvPlayerView::class) { + // All video load options are passed via a single "source" prop + Prop("source") { view: MpvPlayerView, source: Map? -> + if (source == null) return@Prop + + val urlString = source["url"] as? String ?: return@Prop + + @Suppress("UNCHECKED_CAST") + val config = VideoLoadConfig( + url = urlString, + headers = source["headers"] as? Map, + externalSubtitles = source["externalSubtitles"] as? List, + startPosition = (source["startPosition"] as? Number)?.toDouble(), + autoplay = (source["autoplay"] as? Boolean) ?: true, + initialSubtitleId = (source["initialSubtitleId"] as? Number)?.toInt(), + initialAudioId = (source["initialAudioId"] as? Number)?.toInt() + ) + + view.loadVideo(config) + } + + // Async function to play video + AsyncFunction("play") { view: MpvPlayerView -> + view.play() + } + + // Async function to pause video + AsyncFunction("pause") { view: MpvPlayerView -> + view.pause() + } + + // Async function to seek to position + AsyncFunction("seekTo") { view: MpvPlayerView, position: Double -> + view.seekTo(position) + } + + // Async function to seek by offset + AsyncFunction("seekBy") { view: MpvPlayerView, offset: Double -> + view.seekBy(offset) + } + + // Async function to set playback speed + AsyncFunction("setSpeed") { view: MpvPlayerView, speed: Double -> + view.setSpeed(speed) + } + + // Function to get current speed + AsyncFunction("getSpeed") { view: MpvPlayerView -> + view.getSpeed() + } + + // Function to check if paused + AsyncFunction("isPaused") { view: MpvPlayerView -> + view.isPaused() + } + + // Function to get current position + AsyncFunction("getCurrentPosition") { view: MpvPlayerView -> + view.getCurrentPosition() + } + + // Function to get duration + AsyncFunction("getDuration") { view: MpvPlayerView -> + view.getDuration() + } + + // Picture in Picture functions + AsyncFunction("startPictureInPicture") { view: MpvPlayerView -> + view.startPictureInPicture() + } + + AsyncFunction("stopPictureInPicture") { view: MpvPlayerView -> + view.stopPictureInPicture() + } + + AsyncFunction("isPictureInPictureSupported") { view: MpvPlayerView -> + view.isPictureInPictureSupported() + } + + AsyncFunction("isPictureInPictureActive") { view: MpvPlayerView -> + view.isPictureInPictureActive() + } + + // Subtitle functions + AsyncFunction("getSubtitleTracks") { view: MpvPlayerView -> + view.getSubtitleTracks() + } + + AsyncFunction("setSubtitleTrack") { view: MpvPlayerView, trackId: Int -> + view.setSubtitleTrack(trackId) + } + + AsyncFunction("disableSubtitles") { view: MpvPlayerView -> + view.disableSubtitles() + } + + AsyncFunction("getCurrentSubtitleTrack") { view: MpvPlayerView -> + view.getCurrentSubtitleTrack() + } + + AsyncFunction("addSubtitleFile") { view: MpvPlayerView, url: String, select: Boolean -> + view.addSubtitleFile(url, select) + } + + // Subtitle positioning functions + AsyncFunction("setSubtitlePosition") { view: MpvPlayerView, position: Int -> + view.setSubtitlePosition(position) + } + + AsyncFunction("setSubtitleScale") { view: MpvPlayerView, scale: Double -> + view.setSubtitleScale(scale) + } + + AsyncFunction("setSubtitleMarginY") { view: MpvPlayerView, margin: Int -> + view.setSubtitleMarginY(margin) + } + + AsyncFunction("setSubtitleAlignX") { view: MpvPlayerView, alignment: String -> + view.setSubtitleAlignX(alignment) + } + + AsyncFunction("setSubtitleAlignY") { view: MpvPlayerView, alignment: String -> + view.setSubtitleAlignY(alignment) + } + + AsyncFunction("setSubtitleFontSize") { view: MpvPlayerView, size: Int -> + view.setSubtitleFontSize(size) + } + + // Audio track functions + AsyncFunction("getAudioTracks") { view: MpvPlayerView -> + view.getAudioTracks() + } + + AsyncFunction("setAudioTrack") { view: MpvPlayerView, trackId: Int -> + view.setAudioTrack(trackId) + } + + AsyncFunction("getCurrentAudioTrack") { view: MpvPlayerView -> + view.getCurrentAudioTrack() + } + + // Defines events that the view can send to JavaScript + Events("onLoad", "onPlaybackStateChange", "onProgress", "onError", "onTracksReady") + } } - - // Defines event names that the module can send to JavaScript. - Events("onChange") - - // Defines a JavaScript synchronous function that runs the native code on the JavaScript thread. - Function("hello") { - "Hello world! 👋" - } - - // Defines a JavaScript function that always returns a Promise and whose native code - // is by default dispatched on the different thread than the JavaScript runtime runs on. - AsyncFunction("setValueAsync") { value: String -> - // Send an event to JavaScript. - sendEvent("onChange", mapOf( - "value" to value - )) - } - - // Enables the module to be used as a native view. Definition components that are accepted as part of - // the view definition: Prop, Events. - View(MpvPlayerView::class) { - // Defines a setter for the `url` prop. - Prop("url") { view: MpvPlayerView, url: URL -> - view.webView.loadUrl(url.toString()) - } - // Defines an event that the view can send to JavaScript. - Events("onLoad") - } - } } diff --git a/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MpvPlayerView.kt b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MpvPlayerView.kt index 1c35cb5f..9373ef77 100644 --- a/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MpvPlayerView.kt +++ b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/MpvPlayerView.kt @@ -1,30 +1,353 @@ package expo.modules.mpvplayer import android.content.Context -import android.webkit.WebView -import android.webkit.WebViewClient +import android.graphics.Color +import android.util.Log +import android.view.SurfaceHolder +import android.view.SurfaceView +import android.widget.FrameLayout import expo.modules.kotlin.AppContext import expo.modules.kotlin.viewevent.EventDispatcher import expo.modules.kotlin.views.ExpoView -class MpvPlayerView(context: Context, appContext: AppContext) : ExpoView(context, appContext) { - // Creates and initializes an event dispatcher for the `onLoad` event. - // The name of the event is inferred from the value and needs to match the event name defined in the module. - private val onLoad by EventDispatcher() +/** + * Configuration for loading a video + */ +data class VideoLoadConfig( + val url: String, + val headers: Map? = null, + val externalSubtitles: List? = null, + val startPosition: Double? = null, + val autoplay: Boolean = true, + val initialSubtitleId: Int? = null, + val initialAudioId: Int? = null +) - // Defines a WebView that will be used as the root subview. - internal val webView = WebView(context).apply { - layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT) - webViewClient = object : WebViewClient() { - override fun onPageFinished(view: WebView, url: String) { - // Sends an event to JavaScript. Triggers a callback defined on the view component in JavaScript. - onLoad(mapOf("url" to url)) - } +/** + * MpvPlayerView - ExpoView that hosts the MPV player. + * This mirrors the iOS MpvPlayerView implementation. + */ +class MpvPlayerView(context: Context, appContext: AppContext) : ExpoView(context, appContext), + MPVLayerRenderer.Delegate, SurfaceHolder.Callback { + + companion object { + private const val TAG = "MpvPlayerView" + } + + // Event dispatchers + val onLoad by EventDispatcher() + val onPlaybackStateChange by EventDispatcher() + val onProgress by EventDispatcher() + val onError by EventDispatcher() + val onTracksReady by EventDispatcher() + + private var surfaceView: SurfaceView + private var renderer: MPVLayerRenderer? = null + private var pipController: PiPController? = null + + private var currentUrl: String? = null + private var cachedPosition: Double = 0.0 + private var cachedDuration: Double = 0.0 + private var intendedPlayState: Boolean = false + private var surfaceReady: Boolean = false + private var pendingConfig: VideoLoadConfig? = null + + init { + setBackgroundColor(Color.BLACK) + + // Create SurfaceView for video rendering + surfaceView = SurfaceView(context).apply { + layoutParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT + ) + holder.addCallback(this@MpvPlayerView) + } + addView(surfaceView) + + // Initialize renderer + renderer = MPVLayerRenderer(context) + renderer?.delegate = this + + // Initialize PiP controller with Expo's AppContext for proper activity access + pipController = PiPController(context, appContext) + pipController?.setPlayerView(surfaceView) + pipController?.delegate = object : PiPController.Delegate { + override fun onPlay() { + play() + } + + override fun onPause() { + pause() + } + + override fun onSeekBy(seconds: Double) { + seekBy(seconds) + } + } + + // Start the renderer + try { + renderer?.start() + } catch (e: Exception) { + Log.e(TAG, "Failed to start renderer: ${e.message}") + onError(mapOf("error" to "Failed to start renderer: ${e.message}")) + } + } + + // MARK: - SurfaceHolder.Callback + + override fun surfaceCreated(holder: SurfaceHolder) { + Log.i(TAG, "Surface created") + surfaceReady = true + renderer?.attachSurface(holder.surface) + + // If we have a pending load, execute it now + pendingConfig?.let { config -> + loadVideoInternal(config) + pendingConfig = null + } + } + + override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) { + Log.i(TAG, "Surface changed: ${width}x${height}") + // Update MPV with the new surface size (Findroid approach) + renderer?.updateSurfaceSize(width, height) + } + + override fun surfaceDestroyed(holder: SurfaceHolder) { + Log.i(TAG, "Surface destroyed") + surfaceReady = false + renderer?.detachSurface() + } + + // MARK: - Video Loading + + fun loadVideo(config: VideoLoadConfig) { + // Skip reload if same URL is already playing + if (currentUrl == config.url) { + return + } + + if (!surfaceReady) { + // Surface not ready, store config and load when ready + pendingConfig = config + return + } + + loadVideoInternal(config) + } + + private fun loadVideoInternal(config: VideoLoadConfig) { + currentUrl = config.url + + renderer?.load( + url = config.url, + headers = config.headers, + startPosition = config.startPosition, + externalSubtitles = config.externalSubtitles, + initialSubtitleId = config.initialSubtitleId, + initialAudioId = config.initialAudioId + ) + + if (config.autoplay) { + play() + } + + onLoad(mapOf("url" to config.url)) + } + + // Convenience method for simple loads + fun loadVideo(url: String, headers: Map? = null) { + loadVideo(VideoLoadConfig(url = url, headers = headers)) + } + + // MARK: - Playback Controls + + fun play() { + intendedPlayState = true + renderer?.play() + pipController?.setPlaybackRate(1.0) + } + + fun pause() { + intendedPlayState = false + renderer?.pause() + pipController?.setPlaybackRate(0.0) + } + + fun seekTo(position: Double) { + renderer?.seekTo(position) + } + + fun seekBy(offset: Double) { + renderer?.seekBy(offset) + } + + fun setSpeed(speed: Double) { + renderer?.setSpeed(speed) + } + + fun getSpeed(): Double { + return renderer?.getSpeed() ?: 1.0 + } + + fun isPaused(): Boolean { + return renderer?.isPausedState ?: true + } + + fun getCurrentPosition(): Double { + return cachedPosition + } + + fun getDuration(): Double { + return cachedDuration + } + + // MARK: - Picture in Picture + + fun startPictureInPicture() { + Log.i(TAG, "startPictureInPicture called") + pipController?.startPictureInPicture() + } + + fun stopPictureInPicture() { + pipController?.stopPictureInPicture() + } + + fun isPictureInPictureSupported(): Boolean { + return pipController?.isPictureInPictureSupported() ?: false + } + + fun isPictureInPictureActive(): Boolean { + return pipController?.isPictureInPictureActive() ?: false + } + + // MARK: - Subtitle Controls + + fun getSubtitleTracks(): List> { + return renderer?.getSubtitleTracks() ?: emptyList() + } + + fun setSubtitleTrack(trackId: Int) { + renderer?.setSubtitleTrack(trackId) + } + + fun disableSubtitles() { + renderer?.disableSubtitles() + } + + fun getCurrentSubtitleTrack(): Int { + return renderer?.getCurrentSubtitleTrack() ?: 0 + } + + fun addSubtitleFile(url: String, select: Boolean = true) { + renderer?.addSubtitleFile(url, select) + } + + // MARK: - Subtitle Positioning + + fun setSubtitlePosition(position: Int) { + renderer?.setSubtitlePosition(position) + } + + fun setSubtitleScale(scale: Double) { + renderer?.setSubtitleScale(scale) + } + + fun setSubtitleMarginY(margin: Int) { + renderer?.setSubtitleMarginY(margin) + } + + fun setSubtitleAlignX(alignment: String) { + renderer?.setSubtitleAlignX(alignment) + } + + fun setSubtitleAlignY(alignment: String) { + renderer?.setSubtitleAlignY(alignment) + } + + fun setSubtitleFontSize(size: Int) { + renderer?.setSubtitleFontSize(size) + } + + // MARK: - Audio Track Controls + + fun getAudioTracks(): List> { + return renderer?.getAudioTracks() ?: emptyList() + } + + fun setAudioTrack(trackId: Int) { + renderer?.setAudioTrack(trackId) + } + + fun getCurrentAudioTrack(): Int { + return renderer?.getCurrentAudioTrack() ?: 0 + } + + // MARK: - MPVLayerRenderer.Delegate + + override fun onPositionChanged(position: Double, duration: Double) { + cachedPosition = position + cachedDuration = duration + + // Update PiP progress + if (pipController?.isPictureInPictureActive() == true) { + pipController?.setCurrentTime(position, duration) + } + + onProgress(mapOf( + "position" to position, + "duration" to duration, + "progress" to if (duration > 0) position / duration else 0.0 + )) + } + + override fun onPauseChanged(isPaused: Boolean) { + // Sync PiP playback rate + pipController?.setPlaybackRate(if (isPaused) 0.0 else 1.0) + + onPlaybackStateChange(mapOf( + "isPaused" to isPaused, + "isPlaying" to !isPaused + )) + } + + override fun onLoadingChanged(isLoading: Boolean) { + onPlaybackStateChange(mapOf( + "isLoading" to isLoading + )) + } + + override fun onReadyToSeek() { + onPlaybackStateChange(mapOf( + "isReadyToSeek" to true + )) + } + + override fun onTracksReady() { + onTracksReady(emptyMap()) + } + + override fun onVideoDimensionsChanged(width: Int, height: Int) { + // Update PiP controller with video dimensions for proper aspect ratio + pipController?.setVideoDimensions(width, height) + } + + override fun onError(message: String) { + onError(mapOf("error" to message)) + } + + // MARK: - Cleanup + + fun cleanup() { + pipController?.stopPictureInPicture() + renderer?.stop() + surfaceView.holder.removeCallback(this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + cleanup() } - } - - init { - // Adds the WebView to the view hierarchy. - addView(webView) - } } diff --git a/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/PiPController.kt b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/PiPController.kt new file mode 100644 index 00000000..438ccaa1 --- /dev/null +++ b/modules/mpv-player/android/src/main/java/expo/modules/mpvplayer/PiPController.kt @@ -0,0 +1,263 @@ +package expo.modules.mpvplayer + +import android.app.Activity +import android.app.PictureInPictureParams +import android.content.Context +import android.content.pm.PackageManager +import android.graphics.Rect +import android.os.Build +import android.util.Log +import android.util.Rational +import android.view.View +import androidx.annotation.RequiresApi +import expo.modules.kotlin.AppContext + +/** + * Picture-in-Picture controller for Android. + * This mirrors the iOS PiPController implementation. + */ +class PiPController(private val context: Context, private val appContext: AppContext? = null) { + + companion object { + private const val TAG = "PiPController" + private const val DEFAULT_ASPECT_WIDTH = 16 + private const val DEFAULT_ASPECT_HEIGHT = 9 + } + + interface Delegate { + fun onPlay() + fun onPause() + fun onSeekBy(seconds: Double) + } + + var delegate: Delegate? = null + + private var currentPosition: Double = 0.0 + private var currentDuration: Double = 0.0 + private var playbackRate: Double = 1.0 + + // Video dimensions for proper aspect ratio + private var videoWidth: Int = 0 + private var videoHeight: Int = 0 + + // Reference to the player view for source rect + private var playerView: View? = null + + /** + * Check if Picture-in-Picture is supported on this device + */ + fun isPictureInPictureSupported(): Boolean { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + context.packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) + } else { + false + } + } + + /** + * Check if Picture-in-Picture is currently active + */ + fun isPictureInPictureActive(): Boolean { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val activity = getActivity() + return activity?.isInPictureInPictureMode ?: false + } + return false + } + + /** + * Start Picture-in-Picture mode + */ + fun startPictureInPicture() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val activity = getActivity() + if (activity == null) { + Log.e(TAG, "Cannot start PiP: no activity found") + return + } + + if (!isPictureInPictureSupported()) { + Log.e(TAG, "PiP not supported on this device") + return + } + + try { + val params = buildPiPParams(forEntering = true) + activity.enterPictureInPictureMode(params) + Log.i(TAG, "Entered PiP mode") + } catch (e: Exception) { + Log.e(TAG, "Failed to enter PiP: ${e.message}") + } + } else { + Log.w(TAG, "PiP requires Android O or higher") + } + } + + /** + * Stop Picture-in-Picture mode + */ + fun stopPictureInPicture() { + // On Android, exiting PiP is typically done by the user + // or by finishing the activity. We can request to move task to back. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val activity = getActivity() + if (activity?.isInPictureInPictureMode == true) { + // Move task to back which will exit PiP + activity.moveTaskToBack(false) + } + } + } + + /** + * Update the current playback position and duration + * Note: We don't update PiP params here as we're not using progress in PiP controls + */ + fun setCurrentTime(position: Double, duration: Double) { + currentPosition = position + currentDuration = duration + } + + /** + * Set the playback rate (0.0 for paused, 1.0 for playing) + */ + fun setPlaybackRate(rate: Double) { + playbackRate = rate + + // Update PiP params to reflect play/pause state + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val activity = getActivity() + if (activity?.isInPictureInPictureMode == true) { + try { + activity.setPictureInPictureParams(buildPiPParams()) + } catch (e: Exception) { + Log.e(TAG, "Failed to update PiP params: ${e.message}") + } + } + } + } + + /** + * Set the video dimensions for proper aspect ratio calculation + */ + fun setVideoDimensions(width: Int, height: Int) { + if (width > 0 && height > 0) { + videoWidth = width + videoHeight = height + Log.i(TAG, "Video dimensions set: ${width}x${height}") + + // Update PiP params if active + updatePiPParamsIfNeeded() + } + } + + /** + * Set the player view reference for source rect hint + */ + fun setPlayerView(view: View?) { + playerView = view + } + + private fun updatePiPParamsIfNeeded() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val activity = getActivity() + if (activity?.isInPictureInPictureMode == true) { + try { + activity.setPictureInPictureParams(buildPiPParams()) + } catch (e: Exception) { + Log.e(TAG, "Failed to update PiP params: ${e.message}") + } + } + } + } + + /** + * Build Picture-in-Picture params for the current player state. + * Calculates proper aspect ratio and source rect based on video and view dimensions. + */ + @RequiresApi(Build.VERSION_CODES.O) + private fun buildPiPParams(forEntering: Boolean = false): PictureInPictureParams { + val view = playerView + val viewWidth = view?.width ?: 0 + val viewHeight = view?.height ?: 0 + + // Display aspect ratio from view (exactly like Findroid) + val displayAspectRatio = Rational(viewWidth.coerceAtLeast(1), viewHeight.coerceAtLeast(1)) + + // Video aspect ratio with 2.39:1 clamping (exactly like Findroid) + // Findroid: Rational(it.width.coerceAtMost((it.height * 2.39f).toInt()), + // it.height.coerceAtMost((it.width * 2.39f).toInt())) + val aspectRatio = if (videoWidth > 0 && videoHeight > 0) { + Rational( + videoWidth.coerceAtMost((videoHeight * 2.39f).toInt()), + videoHeight.coerceAtMost((videoWidth * 2.39f).toInt()) + ) + } else { + Rational(DEFAULT_ASPECT_WIDTH, DEFAULT_ASPECT_HEIGHT) + } + + // Source rect hint calculation (exactly like Findroid) + val sourceRectHint = if (viewWidth > 0 && viewHeight > 0 && videoWidth > 0 && videoHeight > 0) { + if (displayAspectRatio < aspectRatio) { + // Letterboxing - black bars top/bottom + val space = ((viewHeight - (viewWidth.toFloat() / aspectRatio.toFloat())) / 2).toInt() + Rect( + 0, + space, + viewWidth, + (viewWidth.toFloat() / aspectRatio.toFloat()).toInt() + space + ) + } else { + // Pillarboxing - black bars left/right + val space = ((viewWidth - (viewHeight.toFloat() * aspectRatio.toFloat())) / 2).toInt() + Rect( + space, + 0, + (viewHeight.toFloat() * aspectRatio.toFloat()).toInt() + space, + viewHeight + ) + } + } else { + null + } + + val builder = PictureInPictureParams.Builder() + .setAspectRatio(aspectRatio) + + sourceRectHint?.let { builder.setSourceRectHint(it) } + + // On Android 12+, enable auto-enter (like Findroid) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + builder.setAutoEnterEnabled(true) + } + + return builder.build() + } + + private fun getActivity(): Activity? { + // First try Expo's AppContext (preferred in React Native) + appContext?.currentActivity?.let { return it } + + // Fallback: Try to get from context wrapper chain + var ctx = context + while (ctx is android.content.ContextWrapper) { + if (ctx is Activity) { + return ctx + } + ctx = ctx.baseContext + } + return null + } + + /** + * Handle PiP action (called from activity when user taps PiP controls) + */ + fun handlePiPAction(action: String) { + when (action) { + "play" -> delegate?.onPlay() + "pause" -> delegate?.onPause() + "skip_forward" -> delegate?.onSeekBy(10.0) + "skip_backward" -> delegate?.onSeekBy(-10.0) + } + } +} + diff --git a/modules/mpv-player/ios/MPVLayerRenderer.swift b/modules/mpv-player/ios/MPVLayerRenderer.swift index 8c4153ec..bb3e4931 100644 --- a/modules/mpv-player/ios/MPVLayerRenderer.swift +++ b/modules/mpv-player/ios/MPVLayerRenderer.swift @@ -115,6 +115,18 @@ final class MPVLayerRenderer { checkError(mpv_set_option_string(handle, "hwdec", "videotoolbox")) checkError(mpv_set_option_string(handle, "hwdec-codecs", "all")) checkError(mpv_set_option_string(handle, "hwdec-software-fallback", "no")) + + // Seeking optimization - faster seeking at the cost of less precision + // Use keyframe seeking by default (much faster for network streams) + checkError(mpv_set_option_string(handle, "hr-seek", "no")) + // Drop frames during seeking for faster response + checkError(mpv_set_option_string(handle, "hr-seek-framedrop", "yes")) + + // Demuxer cache settings for better network streaming + checkError(mpv_set_option_string(handle, "cache", "yes")) + checkError(mpv_set_option_string(handle, "demuxer-max-bytes", "150MiB")) + checkError(mpv_set_option_string(handle, "demuxer-max-back-bytes", "75MiB")) + checkError(mpv_set_option_string(handle, "demuxer-readahead-secs", "20")) // Subtitle and audio settings checkError(mpv_set_option_string(mpv, "subs-match-os-language", "yes")) @@ -369,8 +381,18 @@ final class MPVLayerRenderer { } } + case MPV_EVENT_SEEK: + // Seek started - show loading indicator + if !isLoading { + isLoading = true + DispatchQueue.main.async { [weak self] in + guard let self else { return } + self.delegate?.renderer(self, didChangeLoading: true) + } + } + case MPV_EVENT_PLAYBACK_RESTART: - // Video playback has started/restarted + // Video playback has started/restarted (including after seek) if isLoading { isLoading = false DispatchQueue.main.async { [weak self] in diff --git a/modules/mpv-player/ios/PiPController.swift b/modules/mpv-player/ios/PiPController.swift index 1d20899d..7a58cb38 100644 --- a/modules/mpv-player/ios/PiPController.swift +++ b/modules/mpv-player/ios/PiPController.swift @@ -109,6 +109,9 @@ final class PiPController: NSObject { } func updatePlaybackState() { + // Only invalidate when PiP is active to avoid "no context menu visible" warnings + guard isPictureInPictureActive else { return } + if Thread.isMainThread { pipController?.invalidatePlaybackState() } else { @@ -127,8 +130,10 @@ final class PiPController: NSObject { CMTimebaseSetTime(tb, time: time) } - // Always invalidate to refresh the PiP UI - updatePlaybackState() + // Only invalidate when PiP is active to avoid unnecessary updates + if isPictureInPictureActive { + updatePlaybackState() + } } /// Updates the current playback time from seconds