Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,15 @@ import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor
import androidx.media3.datasource.cache.SimpleCache
import androidx.media3.datasource.cronet.CronetDataSource
import androidx.media3.datasource.okhttp.OkHttpDataSource
import androidx.media3.exoplayer.DecoderCounters
import androidx.media3.exoplayer.DecoderReuseEvaluation
import androidx.media3.exoplayer.DefaultLoadControl
import androidx.media3.exoplayer.DefaultRenderersFactory
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.Renderer.STATE_ENABLED
import androidx.media3.exoplayer.Renderer.STATE_STARTED
import androidx.media3.exoplayer.SeekParameters
import androidx.media3.exoplayer.analytics.AnalyticsListener
import androidx.media3.exoplayer.dash.DashMediaSource
import androidx.media3.exoplayer.drm.DefaultDrmSessionManager
import androidx.media3.exoplayer.drm.FrameworkMediaDrm
Expand Down Expand Up @@ -104,6 +107,7 @@ import kotlinx.coroutines.delay
import okhttp3.Interceptor
import org.chromium.net.CronetEngine
import java.io.File
import java.security.SecureRandom
import java.util.UUID
import java.util.concurrent.Executors
import javax.net.ssl.HttpsURLConnection
Expand Down Expand Up @@ -434,7 +438,8 @@ class CS3IPlayer : IPlayer {
return AudioTrack(
this.id?.stripTrackId(),
this.label,
this.language
this.language,
this.sampleMimeType
)
}

Expand All @@ -443,7 +448,8 @@ class CS3IPlayer : IPlayer {
this.id?.stripTrackId(),
this.label,
this.language,
this.sampleMimeType
this.sampleMimeType,
null
)
}

Expand All @@ -454,6 +460,7 @@ class CS3IPlayer : IPlayer {
this.language,
this.width,
this.height,
this.sampleMimeType
)
}

Expand Down Expand Up @@ -1358,6 +1365,7 @@ class CS3IPlayer : IPlayer {
)
setHandleAudioBecomingNoisy(true)
setPlaybackSpeed(playBackSpeed)
this.addAnalyticsListener(tracksAnalyticsListener)
}
}

Expand Down Expand Up @@ -1843,7 +1851,7 @@ class CS3IPlayer : IPlayer {
if (ignoreSSL) {
// Disables ssl check
val sslContext: SSLContext = SSLContext.getInstance("TLS")
sslContext.init(null, arrayOf(SSLTrustManager()), java.security.SecureRandom())
sslContext.init(null, arrayOf(SSLTrustManager()), SecureRandom())
sslContext.createSSLEngine()
HttpsURLConnection.setDefaultHostnameVerifier { _: String, _: SSLSession ->
true
Expand Down Expand Up @@ -1929,4 +1937,39 @@ class CS3IPlayer : IPlayer {
loadOfflinePlayer(context, it)
}
}

private val tracksAnalyticsListener = object : AnalyticsListener {

override fun onVideoInputFormatChanged(
eventTime: AnalyticsListener.EventTime,
format: Format,
decoderReuseEvaluation: DecoderReuseEvaluation?
) {
event(TracksChangedEvent())
}

override fun onAudioInputFormatChanged(
eventTime: AnalyticsListener.EventTime,
format: Format,
decoderReuseEvaluation: DecoderReuseEvaluation?
) {
event(TracksChangedEvent())
}

override fun onVideoDisabled(
eventTime: AnalyticsListener.EventTime,
decoderCounters: DecoderCounters
) {
event(TracksChangedEvent())
}

override fun onAudioDisabled(
eventTime: AnalyticsListener.EventTime,
decoderCounters: DecoderCounters
) {
event(TracksChangedEvent())
}
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,13 @@ open class FullScreenPlayer : AbstractPlayerFragment() {
start()
}
}
playerBinding?.playerVideoInfo?.let {
ObjectAnimator.ofFloat(it, "translationY", titleMove).apply {
duration = 200
start()
}
}

val playerBarMove = if (isShowing) 0f else 50.toPx.toFloat()
playerBinding?.bottomPlayerBar?.let {
ObjectAnimator.ofFloat(it, "translationY", playerBarMove).apply {
Expand Down Expand Up @@ -924,6 +931,7 @@ open class FullScreenPlayer : AbstractPlayerFragment() {

// TITLE
playerVideoTitleRez.startAnimation(fadeAnimation)
playerVideoInfo.startAnimation(fadeAnimation)
playerEpisodeFiller.startAnimation(fadeAnimation)
playerVideoTitleHolder.startAnimation(fadeAnimation)
playerTopHolder.startAnimation(fadeAnimation)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ class GeneratorPlayer : FullScreenPlayer() {
if (tracks.allAudioTracks.any { it.language == preferredAudioTrackLanguage }) {
player.setPreferredAudioTrack(preferredAudioTrackLanguage)
}
updatePlayerInfo()
}

override fun playerStatusChanged() {
Expand Down Expand Up @@ -1494,7 +1495,6 @@ class GeneratorPlayer : FullScreenPlayer() {
if (width != NO_VALUE && height != NO_VALUE) {
player.setMaxVideoSize(width, height, currentVideo?.id)
}

trackDialog.dismissSafe(activity)
}
}
Expand Down Expand Up @@ -1815,6 +1815,7 @@ class GeneratorPlayer : FullScreenPlayer() {
val source = currentSelectedLink?.first?.name ?: currentSelectedLink?.second?.name ?: "NULL"
val headerName = getHeaderName().orEmpty()


val title = when (titleRez) {
0 -> ""
1 -> extra
Expand Down Expand Up @@ -1843,6 +1844,26 @@ class GeneratorPlayer : FullScreenPlayer() {
isVisible = title.isNotBlank()
}
}
private fun updatePlayerInfo() {
val tracks = player.getVideoTracks()

val videoTrack = tracks.currentVideoTrack
val audioTrack = tracks.currentAudioTrack

val videoCodec = videoTrack?.sampleMimeType?.substringAfterLast('/')?.uppercase()
val audioCodec = audioTrack?.sampleMimeType?.substringAfterLast('/')?.uppercase()
val language = listOfNotNull(
audioTrack?.label,
fromTagToLanguageName(audioTrack?.language)?.let { "[$it]" }
).joinToString(" ")

val stats = arrayOf(videoCodec, audioCodec, language).filterNotNull().joinToString(" • ")

playerBinding?.playerVideoInfo?.apply {
text = stats
isVisible = stats.isNotBlank()
}
}

override fun playerDimensionsLoaded(width: Int, height: Int) {
super.playerDimensionsLoaded(width, height)
Expand Down Expand Up @@ -2039,7 +2060,6 @@ class GeneratorPlayer : FullScreenPlayer() {
titleRez = settingsManager.getInt(ctx.getString(R.string.prefer_limit_title_rez_key), 3)
limitTitle = settingsManager.getInt(ctx.getString(R.string.prefer_limit_title_key), 0)
updateForcedEncoding(ctx)

filterSubByLang =
settingsManager.getBoolean(getString(R.string.filter_sub_lang_key), false)
if (filterSubByLang) {
Expand Down Expand Up @@ -2164,6 +2184,7 @@ class GeneratorPlayer : FullScreenPlayer() {
}
}
}

}

@Suppress("DEPRECATION")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ interface Track {
val id: String?
val label: String?
val language: String?
val sampleMimeType : String?
}

data class VideoTrack(
Expand All @@ -190,19 +191,22 @@ data class VideoTrack(
override val language: String?,
val width: Int?,
val height: Int?,
override val sampleMimeType: String?,
) : Track

data class AudioTrack(
override val id: String?,
override val label: String?,
override val language: String?,
override val sampleMimeType: String?,
) : Track

data class TextTrack(
override val id: String?,
override val label: String?,
override val language: String?,
val mimeType: String?,
override val sampleMimeType: String?,
) : Track


Expand Down
12 changes: 12 additions & 0 deletions app/src/main/res/layout/player_custom_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,18 @@
android:gravity="center"
android:textColor="@color/white"
tools:text="1920x1080" />


<TextView
android:id="@+id/player_video_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginBottom="2.5dp"
android:textColor="@color/white"
android:visibility="gone"
tools:text="HEVC" />

<LinearLayout
android:id="@+id/player_video_title_holder"
android:layout_width="match_parent"
Expand Down
15 changes: 15 additions & 0 deletions app/src/main/res/layout/player_custom_layout_tv.xml
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@
android:layout_marginTop="20dp"
android:layout_marginEnd="32dp"
android:orientation="vertical">

<LinearLayout
android:id="@+id/player_video_title_holder"
android:layout_width="wrap_content"
Expand Down Expand Up @@ -297,6 +298,7 @@
tools:visibility="visible"
android:layout_gravity="start"/>
</LinearLayout>

<TextView
android:id="@+id/player_video_title_rez"
android:layout_width="wrap_content"
Expand All @@ -309,6 +311,19 @@
android:textSize="16sp"
tools:text="1920x1080" />

<TextView
android:id="@+id/player_video_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginBottom="2.5dp"
android:textColor="@color/white"
android:textSize="16sp"
android:visibility="gone"
android:layout_gravity="end"
tools:text="HDR10 • HEVC" />


<FrameLayout
android:id="@+id/player_episode_filler_holder"
android:layout_width="wrap_content"
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/res/layout/trailer_custom_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,16 @@
android:textSize="16sp"
android:textStyle="bold"
tools:text="Hello world" />
<TextView
android:id="@+id/player_video_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginBottom="2.5dp"
android:textColor="@color/white"
android:textSize="10sp"
android:visibility="gone"
tools:text="HDR10 • HEVC" />
<ImageView
android:id="@+id/offline_pin"
android:layout_width="16dp"
Expand Down