Milan Jurkulak пре 3 година
родитељ
комит
7bc936357e
28 измењених фајлова са 126 додато и 38 уклоњено
  1. BIN
      .gradle/8.0/executionHistory/executionHistory.bin
  2. BIN
      .gradle/8.0/executionHistory/executionHistory.lock
  3. BIN
      .gradle/8.0/fileHashes/fileHashes.bin
  4. BIN
      .gradle/8.0/fileHashes/fileHashes.lock
  5. BIN
      .gradle/8.0/fileHashes/resourceHashesCache.bin
  6. BIN
      .gradle/buildOutputCleanup/buildOutputCleanup.lock
  7. BIN
      .gradle/buildOutputCleanup/outputFiles.bin
  8. 5 1
      app/src/main/kotlin/org/mjdev/tvapp/base/activity/ComposableActivity.kt
  9. 27 0
      app/src/main/kotlin/org/mjdev/tvapp/base/media/IMediaPlayer.kt
  10. 2 0
      app/src/main/kotlin/org/mjdev/tvapp/base/media/MediaPlayerContainer.kt
  11. 16 6
      app/src/main/kotlin/org/mjdev/tvapp/base/media/MediaPlayerContainerDefaults.kt
  12. 17 12
      app/src/main/kotlin/org/mjdev/tvapp/base/media/MediaPlayerImpl.kt
  13. 10 0
      app/src/main/kotlin/org/mjdev/tvapp/base/media/PlayerControls.kt
  14. 3 9
      app/src/main/kotlin/org/mjdev/tvapp/ui/components/MediaPlayer.kt
  15. 0 3
      app/src/main/res/values/themes.xml
  16. BIN
      buildSrc/.gradle/8.0/executionHistory/executionHistory.lock
  17. 2 0
      wiki/documentation/app/org.mjdev.tvapp.base.media/-exo-player-impl/-player-view.md
  18. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.media/-exo-player-impl/index.md
  19. 6 0
      wiki/documentation/app/org.mjdev.tvapp.base.media/-i-media-player/-companion/-e-m-p-t-y.md
  20. 12 0
      wiki/documentation/app/org.mjdev.tvapp.base.media/-i-media-player/-companion/index.md
  21. 6 0
      wiki/documentation/app/org.mjdev.tvapp.base.media/-i-media-player/index.md
  22. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.media/-media-player-container-defaults/engines.md
  23. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.media/-media-player-container-defaults/exo-player.md
  24. 3 3
      wiki/documentation/app/org.mjdev.tvapp.base.media/-media-player-container-defaults/index.md
  25. 1 1
      wiki/documentation/app/org.mjdev.tvapp.base.media/-media-player-container-defaults/internal-player.md
  26. 9 0
      wiki/documentation/app/org.mjdev.tvapp.base.media/-player-controls.md
  27. 1 0
      wiki/documentation/app/org.mjdev.tvapp.base.media/index.md
  28. 3 0
      wiki/documentation/app/package-list

BIN
.gradle/8.0/executionHistory/executionHistory.bin


BIN
.gradle/8.0/executionHistory/executionHistory.lock


BIN
.gradle/8.0/fileHashes/fileHashes.bin


BIN
.gradle/8.0/fileHashes/fileHashes.lock


BIN
.gradle/8.0/fileHashes/resourceHashesCache.bin


BIN
.gradle/buildOutputCleanup/buildOutputCleanup.lock


BIN
.gradle/buildOutputCleanup/outputFiles.bin


+ 5 - 1
app/src/main/kotlin/org/mjdev/tvapp/base/activity/ComposableActivity.kt

@@ -14,6 +14,8 @@ import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.RectangleShape
 import androidx.core.view.WindowCompat
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleEventObserver
@@ -21,6 +23,7 @@ import androidx.navigation.compose.rememberNavController
 import androidx.tv.material3.ExperimentalTvMaterial3Api
 import androidx.tv.material3.MaterialTheme
 import androidx.tv.material3.NonInteractiveSurfaceDefaults
+import androidx.tv.material3.NonInteractiveSurfaceDefaults.shape
 import androidx.tv.material3.Surface
 import org.mjdev.tvapp.base.extensions.ContextExt.isATv
 import org.mjdev.tvapp.base.navigation.NavGraphBuilderEx
@@ -61,8 +64,9 @@ abstract class ComposableActivity(
 
                 Surface(
                     modifier = Modifier.fillMaxSize(),
+                    shape = RectangleShape,
                     colors = NonInteractiveSurfaceDefaults.colors(
-                        containerColor = MaterialTheme.colorScheme.background
+                        containerColor = Color.Black
                     )
                 ) {
 

+ 27 - 0
app/src/main/kotlin/org/mjdev/tvapp/base/media/IMediaPlayer.kt

@@ -32,4 +32,31 @@ interface IMediaPlayer {
 
     fun seekTo(value: Long)
 
+    companion object {
+
+        val EMPTY = object : IMediaPlayer {
+
+            @Composable
+            override fun PlayerView() {
+            }
+
+            override fun setMediaUri(uri: Uri) {}
+
+            override fun prepare() {}
+
+            override fun play() {}
+
+            override fun pause() {}
+
+            override fun resume() {}
+
+            override fun stop() {}
+
+            override fun dispose() {}
+
+            override fun seekTo(value: Long) {}
+        }
+
+    }
+
 }

+ 2 - 0
app/src/main/kotlin/org/mjdev/tvapp/base/media/MediaPlayerContainer.kt

@@ -15,8 +15,10 @@ import androidx.compose.foundation.layout.Box
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.DisposableEffect
 import androidx.compose.ui.Modifier
+import org.mjdev.tvapp.base.annotations.TvPreview
 import org.mjdev.tvapp.base.media.MediaPlayerState.Companion.rememberMediaPlayerState
 
+@TvPreview
 @Composable
 fun MediaPlayerContainer(
     modifier: Modifier = Modifier,

+ 16 - 6
app/src/main/kotlin/org/mjdev/tvapp/base/media/MediaPlayerContainerDefaults.kt

@@ -13,27 +13,37 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.remember
 import androidx.compose.ui.platform.LocalContext
 import androidx.media3.exoplayer.ExoPlayer
+import org.mjdev.tvapp.base.extensions.ComposeExt.isEditMode
 
 @Suppress("unused", "MemberVisibilityCanBePrivate")
 object MediaPlayerContainerDefaults {
 
-    val engines
+    val engines: Array<IMediaPlayer?>
         @Composable
         get() = arrayOf(
-            exoPlayer, internalPlayer
+            exoPlayer,
+            internalPlayer
         )
 
-    val exoPlayer
+    val exoPlayer: IMediaPlayer
         @Composable
         get() = run {
             val context = LocalContext.current
-            remember { ExoPlayerImpl(ExoPlayer.Builder(context).build()) }
+            val isEdit = isEditMode()
+            remember {
+                if (isEdit) IMediaPlayer.EMPTY
+                else ExoPlayerImpl(ExoPlayer.Builder(context).build())
+            }
         }
 
-    val internalPlayer
+    val internalPlayer: IMediaPlayer
         @Composable
         get() = run {
-            remember { NativePlayerImpl(MediaPlayer()) }
+            val isEdit = isEditMode()
+            remember {
+                if (isEdit) IMediaPlayer.EMPTY
+                else NativePlayerImpl(MediaPlayer())
+            }
         }
 
 }

+ 17 - 12
app/src/main/kotlin/org/mjdev/tvapp/base/media/MediaPlayerImpl.kt

@@ -19,38 +19,43 @@ import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.viewinterop.AndroidView
 import androidx.media3.common.MediaItem
+import androidx.media3.common.util.UnstableApi
 import androidx.media3.exoplayer.ExoPlayer
 import org.mjdev.tvapp.base.extensions.ComposeExt
+import org.mjdev.tvapp.base.extensions.ContextExt.isATv
 
 class ExoPlayerImpl(
     private val exoPlayer: ExoPlayer
 ) : IMediaPlayer {
 
+    @UnstableApi
     @Composable
     override fun PlayerView() {
 
         val isEdit = ComposeExt.isEditMode()
         val context = LocalContext.current
+        val isAtv = context.isATv
 
-        if (!isEdit) {
-
-            AndroidView(
+        if (isEdit) {
+            Box(
                 modifier = Modifier
-                    .background(Color.Transparent, RectangleShape)
-                    .fillMaxSize(),
-                factory = {
-                    androidx.media3.ui.PlayerView(context).apply {
-                        this.player = exoPlayer
-                    }
-                }
+                    .fillMaxSize()
+                    .background(Color.Black, RectangleShape)
             )
 
         } else {
 
-            Box(
+            AndroidView(
                 modifier = Modifier
-                    .background(Color.Black, RectangleShape)
                     .fillMaxSize()
+                    .background(Color.Transparent, RectangleShape),
+                factory = {
+                    androidx.media3.ui.PlayerView(context).apply {
+                        player = exoPlayer
+                        controllerAutoShow = !isAtv
+                        controllerHideOnTouch = !isAtv
+                    }
+                }
             )
 
         }

+ 10 - 0
app/src/main/kotlin/org/mjdev/tvapp/base/media/PlayerControls.kt

@@ -0,0 +1,10 @@
+package org.mjdev.tvapp.base.media
+
+import androidx.compose.runtime.Composable
+import org.mjdev.tvapp.base.annotations.TvPreview
+
+// todo
+@TvPreview
+@Composable
+fun PlayerControls () {
+}

+ 3 - 9
app/src/main/kotlin/org/mjdev/tvapp/ui/components/MediaPlayer.kt

@@ -9,13 +9,13 @@
 package org.mjdev.tvapp.ui.components
 
 import android.annotation.SuppressLint
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import org.mjdev.tvapp.base.annotations.TvPreview
 import org.mjdev.tvapp.base.interfaces.ItemWithVideoUri
 import org.mjdev.tvapp.base.media.MediaPlayerContainer
 
-@Suppress("UNUSED_ANONYMOUS_PARAMETER")
 @SuppressLint("ModifierParameter")
 @TvPreview
 @Composable
@@ -25,14 +25,8 @@ fun MediaPlayer(
 ) {
 
     MediaPlayerContainer(
-        modifier = modifier,
-        uri = movie?.videoUri,
-        background = { state ->
-        },
-        mediaPlayerOverlay = { state ->
-        },
-        mediaPlayerControls = { state ->
-        }
+        modifier = modifier.fillMaxSize(),
+        uri = movie?.videoUri
     )
 
 }

+ 0 - 3
app/src/main/res/values/themes.xml

@@ -13,9 +13,6 @@
     <style name="Theme.TvApp" parent="">
 
         <item name="android:windowNoTitle">true</item>
-        <item name="background">@color/black</item>
-        <item name="android:background">@color/black</item>
-        <item name="android:windowBackground">@color/black</item>
 
     </style>
 

BIN
buildSrc/.gradle/8.0/executionHistory/executionHistory.lock


+ 2 - 0
wiki/documentation/app/org.mjdev.tvapp.base.media/-exo-player-impl/-player-view.md

@@ -4,6 +4,8 @@
 
 [androidJvm]\
 
+@[UnstableApi](https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi.html)
+
 @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
 open override fun [PlayerView](-player-view.md)()

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.media/-exo-player-impl/index.md

@@ -18,7 +18,7 @@ class [ExoPlayerImpl](index.md)(exoPlayer: [ExoPlayer](https://developer.android
 | [dispose](dispose.md) | [androidJvm]<br>open override fun [dispose](dispose.md)() |
 | [pause](pause.md) | [androidJvm]<br>open override fun [pause](pause.md)() |
 | [play](play.md) | [androidJvm]<br>open override fun [play](play.md)() |
-| [PlayerView](-player-view.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [PlayerView](-player-view.md)() |
+| [PlayerView](-player-view.md) | [androidJvm]<br>@[UnstableApi](https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi.html)<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>open override fun [PlayerView](-player-view.md)() |
 | [prepare](prepare.md) | [androidJvm]<br>open override fun [prepare](prepare.md)() |
 | [resume](resume.md) | [androidJvm]<br>open override fun [resume](resume.md)() |
 | [seekTo](seek-to.md) | [androidJvm]<br>open override fun [seekTo](seek-to.md)(value: [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html)) |

+ 6 - 0
wiki/documentation/app/org.mjdev.tvapp.base.media/-i-media-player/-companion/-e-m-p-t-y.md

@@ -0,0 +1,6 @@
+//[app](../../../../index.md)/[org.mjdev.tvapp.base.media](../../index.md)/[IMediaPlayer](../index.md)/[Companion](index.md)/[EMPTY](-e-m-p-t-y.md)
+
+# EMPTY
+
+[androidJvm]\
+val [EMPTY](-e-m-p-t-y.md): [IMediaPlayer](../index.md)

+ 12 - 0
wiki/documentation/app/org.mjdev.tvapp.base.media/-i-media-player/-companion/index.md

@@ -0,0 +1,12 @@
+//[app](../../../../index.md)/[org.mjdev.tvapp.base.media](../../index.md)/[IMediaPlayer](../index.md)/[Companion](index.md)
+
+# Companion
+
+[androidJvm]\
+object [Companion](index.md)
+
+## Properties
+
+| Name | Summary |
+|---|---|
+| [EMPTY](-e-m-p-t-y.md) | [androidJvm]<br>val [EMPTY](-e-m-p-t-y.md): [IMediaPlayer](../index.md) |

+ 6 - 0
wiki/documentation/app/org.mjdev.tvapp.base.media/-i-media-player/index.md

@@ -11,6 +11,12 @@ interface [IMediaPlayer](index.md)
 | [ExoPlayerImpl](../-exo-player-impl/index.md) |
 | [NativePlayerImpl](../-native-player-impl/index.md) |
 
+## Types
+
+| Name | Summary |
+|---|---|
+| [Companion](-companion/index.md) | [androidJvm]<br>object [Companion](-companion/index.md) |
+
 ## Functions
 
 | Name | Summary |

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.media/-media-player-container-defaults/engines.md

@@ -6,4 +6,4 @@
 
 @get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-val [engines](engines.md): [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[IMediaPlayer](../-i-media-player/index.md)&gt;
+val [engines](engines.md): [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[IMediaPlayer](../-i-media-player/index.md)?&gt;

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.media/-media-player-container-defaults/exo-player.md

@@ -6,4 +6,4 @@
 
 @get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-val [exoPlayer](exo-player.md): [ExoPlayerImpl](../-exo-player-impl/index.md)
+val [exoPlayer](exo-player.md): [IMediaPlayer](../-i-media-player/index.md)

+ 3 - 3
wiki/documentation/app/org.mjdev.tvapp.base.media/-media-player-container-defaults/index.md

@@ -9,6 +9,6 @@ object [MediaPlayerContainerDefaults](index.md)
 
 | Name | Summary |
 |---|---|
-| [engines](engines.md) | [androidJvm]<br>@get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>val [engines](engines.md): [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[IMediaPlayer](../-i-media-player/index.md)&gt; |
-| [exoPlayer](exo-player.md) | [androidJvm]<br>@get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>val [exoPlayer](exo-player.md): [ExoPlayerImpl](../-exo-player-impl/index.md) |
-| [internalPlayer](internal-player.md) | [androidJvm]<br>@get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>val [internalPlayer](internal-player.md): [NativePlayerImpl](../-native-player-impl/index.md) |
+| [engines](engines.md) | [androidJvm]<br>@get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>val [engines](engines.md): [Array](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html)&lt;[IMediaPlayer](../-i-media-player/index.md)?&gt; |
+| [exoPlayer](exo-player.md) | [androidJvm]<br>@get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>val [exoPlayer](exo-player.md): [IMediaPlayer](../-i-media-player/index.md) |
+| [internalPlayer](internal-player.md) | [androidJvm]<br>@get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>val [internalPlayer](internal-player.md): [IMediaPlayer](../-i-media-player/index.md) |

+ 1 - 1
wiki/documentation/app/org.mjdev.tvapp.base.media/-media-player-container-defaults/internal-player.md

@@ -6,4 +6,4 @@
 
 @get:[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
 
-val [internalPlayer](internal-player.md): [NativePlayerImpl](../-native-player-impl/index.md)
+val [internalPlayer](internal-player.md): [IMediaPlayer](../-i-media-player/index.md)

+ 9 - 0
wiki/documentation/app/org.mjdev.tvapp.base.media/-player-controls.md

@@ -0,0 +1,9 @@
+//[app](../../index.md)/[org.mjdev.tvapp.base.media](index.md)/[PlayerControls](-player-controls.md)
+
+# PlayerControls
+
+[androidJvm]\
+
+@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)
+
+fun [PlayerControls](-player-controls.md)()

+ 1 - 0
wiki/documentation/app/org.mjdev.tvapp.base.media/index.md

@@ -17,4 +17,5 @@
 | Name | Summary |
 |---|---|
 | [MediaPlayerContainer](-media-player-container.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [MediaPlayerContainer](-media-player-container.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, uri: [Uri](https://developer.android.com/reference/kotlin/android/net/Uri.html)? = Uri.EMPTY, autoPlay: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true, startSeek: [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html) = 0, mediaPlayer: [IMediaPlayer](-i-media-player/index.md) = MediaPlayerContainerDefaults.exoPlayer, background: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)(state: [MediaPlayerState](-media-player-state/index.md)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, mediaPlayerOverlay: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)(state: [MediaPlayerState](-media-player-state/index.md)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, mediaPlayerControls: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)(state: [MediaPlayerState](-media-player-state/index.md)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}) |
+| [PlayerControls](-player-controls.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [PlayerControls](-player-controls.md)() |
 | [SimpleMediaPlayerView](-simple-media-player-view.md) | [androidJvm]<br>@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)<br>fun [~~SimpleMediaPlayerView~~](-simple-media-player-view.md)(modifier: [Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html) = Modifier, uri: [Uri](https://developer.android.com/reference/kotlin/android/net/Uri.html)?, autoPlay: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) = true, background: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)(player: [ExoPlayer](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer.html)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, mediaPlayerOverlay: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)(player: [ExoPlayer](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer.html)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}, mediaPlayerControls: @[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)(player: [ExoPlayer](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer.html)) -&gt; [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) = {}) |

+ 3 - 0
wiki/documentation/app/package-list

@@ -73,6 +73,7 @@ $dokka.location:org.mjdev.tvapp.base.interfaces/ItemWithVideoUri///PointingToDec
 $dokka.location:org.mjdev.tvapp.base.interfaces/ItemWithVideoUri/videoUri/#/PointingToDeclaration/app/org.mjdev.tvapp.base.interfaces/-item-with-video-uri/video-uri.md
 $dokka.location:org.mjdev.tvapp.base.media////PointingToDeclaration/app/org.mjdev.tvapp.base.media/index.md
 $dokka.location:org.mjdev.tvapp.base.media//MediaPlayerContainer/#androidx.compose.ui.Modifier#android.net.Uri?#kotlin.Boolean#kotlin.Long#org.mjdev.tvapp.base.media.IMediaPlayer#kotlin.Function1[org.mjdev.tvapp.base.media.MediaPlayerState,kotlin.Unit]#kotlin.Function1[org.mjdev.tvapp.base.media.MediaPlayerState,kotlin.Unit]#kotlin.Function1[org.mjdev.tvapp.base.media.MediaPlayerState,kotlin.Unit]/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-media-player-container.md
+$dokka.location:org.mjdev.tvapp.base.media//PlayerControls/#/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-player-controls.md
 $dokka.location:org.mjdev.tvapp.base.media//SimpleMediaPlayerView/#androidx.compose.ui.Modifier#android.net.Uri?#kotlin.Boolean#kotlin.Function1[androidx.media3.exoplayer.ExoPlayer,kotlin.Unit]#kotlin.Function1[androidx.media3.exoplayer.ExoPlayer,kotlin.Unit]#kotlin.Function1[androidx.media3.exoplayer.ExoPlayer,kotlin.Unit]/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-simple-media-player-view.md
 $dokka.location:org.mjdev.tvapp.base.media/ExoPlayerImpl///PointingToDeclaration/app/org.mjdev.tvapp.base.media/-exo-player-impl/index.md
 $dokka.location:org.mjdev.tvapp.base.media/ExoPlayerImpl/ExoPlayerImpl/#androidx.media3.exoplayer.ExoPlayer/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-exo-player-impl/-exo-player-impl.md
@@ -85,6 +86,8 @@ $dokka.location:org.mjdev.tvapp.base.media/ExoPlayerImpl/resume/#/PointingToDecl
 $dokka.location:org.mjdev.tvapp.base.media/ExoPlayerImpl/seekTo/#kotlin.Long/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-exo-player-impl/seek-to.md
 $dokka.location:org.mjdev.tvapp.base.media/ExoPlayerImpl/setMediaUri/#android.net.Uri/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-exo-player-impl/set-media-uri.md
 $dokka.location:org.mjdev.tvapp.base.media/ExoPlayerImpl/stop/#/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-exo-player-impl/stop.md
+$dokka.location:org.mjdev.tvapp.base.media/IMediaPlayer.Companion///PointingToDeclaration/app/org.mjdev.tvapp.base.media/-i-media-player/-companion/index.md
+$dokka.location:org.mjdev.tvapp.base.media/IMediaPlayer.Companion/EMPTY/#/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-i-media-player/-companion/-e-m-p-t-y.md
 $dokka.location:org.mjdev.tvapp.base.media/IMediaPlayer///PointingToDeclaration/app/org.mjdev.tvapp.base.media/-i-media-player/index.md
 $dokka.location:org.mjdev.tvapp.base.media/IMediaPlayer/PlayerView/#/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-i-media-player/-player-view.md
 $dokka.location:org.mjdev.tvapp.base.media/IMediaPlayer/dispose/#/PointingToDeclaration/app/org.mjdev.tvapp.base.media/-i-media-player/dispose.md