diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt
index bc606582878121d7f1a0ba898a282ae2607a0481..2c38fd0d30e36dbadabdf945f3c8602ad0471190 100644
--- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt
+++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt
@@ -171,7 +171,6 @@ import kotlinx.coroutines.withContext
 import userpackage.Protocol
 import java.time.OffsetDateTime
 import kotlin.math.abs
-import kotlin.math.max
 import kotlin.math.roundToLong
 
 @UnstableApi
@@ -1901,13 +1900,45 @@ class VideoDetailView : ConstraintLayout {
         return super.onInterceptTouchEvent(ev);
     }
 
-
     //Actions
     private fun showVideoSettings() {
         Logger.i(TAG, "showVideoSettings")
         _overlay_quality_selector?.selectOption("video", _lastVideoSource);
         _overlay_quality_selector?.selectOption("audio", _lastAudioSource);
         _overlay_quality_selector?.selectOption("subtitles", _lastSubtitleSource);
+
+        if (_lastVideoSource is IDashManifestSource || _lastVideoSource is IHLSManifestSource) {
+
+            val videoTracks =
+                _player.exoPlayer?.player?.currentTracks?.groups?.firstOrNull { it.mediaTrackGroup.type == C.TRACK_TYPE_VIDEO }
+
+            var selectedQuality: Format? = null
+
+            if (videoTracks != null) {
+                for (i in 0 until videoTracks.mediaTrackGroup.length) {
+                    if (videoTracks.mediaTrackGroup.getFormat(i).height == _player.targetTrackVideoHeight) {
+                        selectedQuality = videoTracks.mediaTrackGroup.getFormat(i)
+                    }
+                }
+            }
+
+            var videoMenuGroup: SlideUpMenuGroup? = null
+            for (view in _overlay_quality_selector!!.groupItems) {
+                if (view is SlideUpMenuGroup && view.groupTag == "video") {
+                    videoMenuGroup = view
+                }
+            }
+
+            if (selectedQuality != null) {
+                videoMenuGroup?.getItem("auto")?.setSubText("")
+                _overlay_quality_selector?.selectOption("video", selectedQuality)
+            } else {
+                videoMenuGroup?.getItem("auto")
+                    ?.setSubText("${_player.exoPlayer?.player?.videoFormat?.width}x${_player.exoPlayer?.player?.videoFormat?.height}")
+                _overlay_quality_selector?.selectOption("video", "auto")
+            }
+        }
+
         val currentPlaybackRate = (if (_isCasting) StateCasting.instance.activeDevice?.speed else _player.getPlaybackRate()) ?: 1.0
         _overlay_quality_selector?.groupItems?.firstOrNull { it is SlideUpMenuButtonList && it.id == "playback_rate" }?.let {
             (it as SlideUpMenuButtonList).setSelected(currentPlaybackRate.toString())
@@ -2081,17 +2112,15 @@ class VideoDetailView : ConstraintLayout {
                                 call = { handleSelectSubtitleTrack(it) })
                         }.toList().toTypedArray())
             else null,
-            if(liveStreamVideoFormats?.isEmpty() == false)
-                SlideUpMenuGroup(this.context, context.getString(R.string.stream_video), "video",
-                    *liveStreamVideoFormats
-                        .map {
-                            SlideUpMenuItem(this.context,
-                                R.drawable.ic_movie,
-                                it.label ?: it.containerMimeType ?: it.bitrate.toString(),
-                                "${it.width}x${it.height}",
-                                tag = it,
-                                call = { _player.selectVideoTrack(it.height) });
-                        }.toList().toTypedArray())
+            if (liveStreamVideoFormats?.isEmpty() == false) SlideUpMenuGroup(
+                this.context, context.getString(R.string.stream_video), "video", (listOf(
+                    SlideUpMenuItem(this.context, R.drawable.ic_movie, "Auto", tag = "auto", call = { _player.selectVideoTrack(-1) })
+                ) + (liveStreamVideoFormats.map {
+                    SlideUpMenuItem(this.context, R.drawable.ic_movie, it.label
+                        ?: it.containerMimeType
+                        ?: it.bitrate.toString(), "${it.width}x${it.height}", tag = it, call = { _player.selectVideoTrack(it.height) });
+                }))
+            )
             else null,
             if(liveStreamAudioFormats?.isEmpty() == false)
                 SlideUpMenuGroup(this.context, context.getString(R.string.stream_audio), "audio",
diff --git a/app/src/main/java/com/futo/platformplayer/views/overlays/slideup/SlideUpMenuGroup.kt b/app/src/main/java/com/futo/platformplayer/views/overlays/slideup/SlideUpMenuGroup.kt
index 9f19018d77c5ec3835ab702352e7509a3165a99a..606c8746978c3998489ed837d258994226e68ae4 100644
--- a/app/src/main/java/com/futo/platformplayer/views/overlays/slideup/SlideUpMenuGroup.kt
+++ b/app/src/main/java/com/futo/platformplayer/views/overlays/slideup/SlideUpMenuGroup.kt
@@ -61,6 +61,15 @@ class SlideUpMenuGroup : LinearLayout {
         return didSelect;
     }
 
+    fun getItem(tag: Any?): SlideUpMenuItem? {
+        for(item in items) {
+            if(item.itemTag == tag){
+                return item
+            }
+        }
+        return null
+    }
+
     private fun addItems(items: List<SlideUpMenuItem>) {
         for (item in items) {
             item.setParentClickListener { parentClickListener?.invoke() }
diff --git a/app/src/main/java/com/futo/platformplayer/views/overlays/slideup/SlideUpMenuItem.kt b/app/src/main/java/com/futo/platformplayer/views/overlays/slideup/SlideUpMenuItem.kt
index 8e5da9903e67a204e01638491e12e36424246557..29699ecd2cf4bb4d8d37f30001928ad91c3dfc92 100644
--- a/app/src/main/java/com/futo/platformplayer/views/overlays/slideup/SlideUpMenuItem.kt
+++ b/app/src/main/java/com/futo/platformplayer/views/overlays/slideup/SlideUpMenuItem.kt
@@ -82,6 +82,10 @@ class SlideUpMenuItem : ConstraintLayout {
         return isSelected;
     }
 
+    fun setSubText(subText: String) {
+        _subtext.text = subText
+    }
+
     fun setParentClickListener(listener: (()->Unit)?) {
         _parentClickListener = listener;
     }
diff --git a/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayerBase.kt b/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayerBase.kt
index 9ca559ca16887bc0984e7e7d3f0362452b3f19b8..739da3c32c467e0dc27bf5d4eaab2617a91a682e 100644
--- a/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayerBase.kt
+++ b/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayerBase.kt
@@ -110,8 +110,10 @@ abstract class FutoVideoPlayerBase : RelativeLayout {
     private var _didCallSourceChange = false;
     private var _lastState: Int = -1;
 
-    private var _targetTrackVideoHeight = -1;
-    private var _targetTrackAudioBitrate = -1;
+
+    var targetTrackVideoHeight = -1
+        private set
+    private var _targetTrackAudioBitrate = -1
 
     private var _toResume = false;
 
@@ -278,7 +280,7 @@ abstract class FutoVideoPlayerBase : RelativeLayout {
 
     //TODO: Temporary solution, Implement custom track selector without using constraints
     fun selectVideoTrack(height: Int) {
-        _targetTrackVideoHeight = height;
+        targetTrackVideoHeight = height;
         updateTrackSelector();
     }
     fun selectAudioTrack(bitrate: Int) {
@@ -288,10 +290,10 @@ abstract class FutoVideoPlayerBase : RelativeLayout {
     @OptIn(UnstableApi::class)
     private fun updateTrackSelector() {
         var builder = DefaultTrackSelector.Parameters.Builder(context);
-        if(_targetTrackVideoHeight > 0) {
+        if(targetTrackVideoHeight > 0) {
             builder = builder
-                .setMinVideoSize(0, _targetTrackVideoHeight - 10)
-                .setMaxVideoSize(9999, _targetTrackVideoHeight + 10);
+                .setMinVideoSize(0, targetTrackVideoHeight - 10)
+                .setMaxVideoSize(9999, targetTrackVideoHeight + 10);
         }
 
         if(_targetTrackAudioBitrate > 0) {