Skip to content

Commit

Permalink
Add interface for ExoPlayerAdapter
Browse files Browse the repository at this point in the history
  • Loading branch information
dsilhavy committed Mar 14, 2024
1 parent 4a88504 commit aaf4e97
Show file tree
Hide file tree
Showing 9 changed files with 63 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ import com.fivegmag.a5gmscommonlibrary.helpers.SessionHandlerMessageTypes
import com.fivegmag.a5gmscommonlibrary.session.PlaybackRequest
import com.fivegmag.a5gmsmediastreamhandler.player.ConsumptionReporter
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ConsumptionReporterExoplayer
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ExoPlayerAdapter
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.IExoPlayerAdapter
import com.fivegmag.a5gmsmediastreamhandler.service.OutgoingMessageHandler
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode

@UnstableApi
class ConsumptionReportingController(
private val exoPlayerAdapter: ExoPlayerAdapter,
private val exoPlayerAdapter: IExoPlayerAdapter,
private val outgoingMessageHandler: OutgoingMessageHandler
) : IConsumptionReportingController {
companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,18 @@ import com.fivegmag.a5gmscommonlibrary.qoeMetricsReporting.QoeMetricsRequest
import com.fivegmag.a5gmscommonlibrary.qoeMetricsReporting.QoeMetricsResponse
import com.fivegmag.a5gmscommonlibrary.session.PlaybackRequest
import com.fivegmag.a5gmsmediastreamhandler.MediaSessionHandlerAdapter
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ExoPlayerAdapter
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.IExoPlayerAdapter
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.QoeMetricsReporterExoplayer
import com.fivegmag.a5gmsmediastreamhandler.service.OutgoingMessageHandler
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import java.lang.Exception
import kotlin.reflect.KClass
import kotlin.reflect.full.primaryConstructor

@UnstableApi
class QoEMetricsReportingController(
private val exoPlayerAdapter: ExoPlayerAdapter,
private val exoPlayerAdapter: IExoPlayerAdapter,
private val outgoingMessageHandler: OutgoingMessageHandler
) : IQoEMetricsReportingController {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ import com.fivegmag.a5gmscommonlibrary.eventbus.PlaybackStateChangedEvent
import com.fivegmag.a5gmscommonlibrary.helpers.ContentTypes
import com.fivegmag.a5gmscommonlibrary.models.EntryPoint
import com.fivegmag.a5gmscommonlibrary.session.PlaybackRequest
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ExoPlayerAdapter
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.IExoPlayerAdapter
import com.fivegmag.a5gmsmediastreamhandler.service.OutgoingMessageHandler
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode

class SessionController(
private val context: Context,
private val exoPlayerAdapter: ExoPlayerAdapter,
private val exoPlayerAdapter: IExoPlayerAdapter,
private val outgoingMessageHandler: OutgoingMessageHandler
) : ISessionController {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import java.lang.Exception
import java.util.Date

class ConsumptionReporterExoplayer(
private val exoPlayerAdapter: ExoPlayerAdapter
private val exoPlayerAdapter: IExoPlayerAdapter
) : ConsumptionReporter() {

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import com.fivegmag.a5gmscommonlibrary.helpers.StatusInformation
import com.fivegmag.a5gmscommonlibrary.helpers.UserAgentTokens

@UnstableApi
class ExoPlayerAdapter() {
class ExoPlayerAdapter() : IExoPlayerAdapter {

private lateinit var playerInstance: ExoPlayer
private lateinit var playerView: PlayerView
Expand All @@ -31,7 +31,7 @@ class ExoPlayerAdapter() {
private lateinit var bandwidthMeter: DefaultBandwidthMeter


fun initialize(
override fun initialize(
exoPlayerView: PlayerView,
context: Context
) {
Expand Down Expand Up @@ -62,7 +62,7 @@ class ExoPlayerAdapter() {
playerInstance.addAnalyticsListener(playerListener)
}

fun attach(url: String, contentType: String = "") {
override fun attach(url: String, contentType: String) {
val mediaItem: MediaItem
when (contentType) {
ContentTypes.DASH -> {
Expand All @@ -89,70 +89,70 @@ class ExoPlayerAdapter() {
activeManifestUrl = url
}

fun hasActiveMediaItem() : Boolean {
override fun hasActiveMediaItem() : Boolean {
return activeMediaItem != null
}

fun getCurrentManifestUri(): String {
override fun getCurrentManifestUri(): String {
return activeManifestUrl
}

fun getCurrentManifestUrl(): String {
override fun getCurrentManifestUrl(): String {
return playerInstance.currentMediaItem?.localConfiguration?.uri.toString()
}

fun preload() {
override fun preload() {
playerInstance.prepare()
}

fun play() {
override fun play() {
playerInstance.play()
}

fun pause() {
override fun pause() {
playerInstance.pause()
}

fun seek(time: Long) {
override fun seek(time: Long) {
TODO("Not yet implemented")
}

fun stop() {
override fun stop() {
playerInstance.stop()
}

fun reset() {
override fun reset() {
TODO("Not yet implemented")
}

fun destroy() {
override fun destroy() {
playerInstance.release()
}

fun getPlayerInstance(): ExoPlayer {
override fun getPlayerInstance(): ExoPlayer {
return playerInstance
}

fun getPlaybackState(): Int {
override fun getPlaybackState(): Int {
return playerInstance.playbackState
}

fun getCurrentPosition(): Long {
override fun getCurrentPosition(): Long {
return playerInstance.currentPosition
}

fun getBufferLength(): Long {
override fun getBufferLength(): Long {
return playerInstance.totalBufferedDuration
}
fun getAverageThroughput(): Long {
override fun getAverageThroughput(): Long {
return bandwidthMeter.bitrateEstimate
}

private fun getLiveLatency(): Long {
return playerInstance.currentLiveOffset
}

fun getCurrentPeriodId(): String {
override fun getCurrentPeriodId(): String {
val dashManifest = playerInstance.currentManifest as DashManifest
val periodId = dashManifest.getPeriod(playerInstance.currentPeriodIndex).id

Expand All @@ -163,7 +163,7 @@ class ExoPlayerAdapter() {
return ""
}

fun getStatusInformation(status: String): Any? {
override fun getStatusInformation(status: String): Any? {
when (status) {
StatusInformation.AVERAGE_THROUGHPUT -> return getAverageThroughput()
StatusInformation.BUFFER_LENGTH -> return getBufferLength()
Expand All @@ -174,7 +174,7 @@ class ExoPlayerAdapter() {
}
}

fun getPlayerState(): String {
override fun getPlayerState(): String {
val state: String?
if (playerInstance.isPlaying) {
state = PlayerStates.PLAYING
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ import org.greenrobot.eventbus.EventBus
class ExoPlayerListener(
private val playerInstance: ExoPlayer,
private val playerView: PlayerView,
) :
AnalyticsListener {
) : AnalyticsListener {

companion object {
const val TAG = "5GMS-ExoPlayerListener"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.fivegmag.a5gmsmediastreamhandler.player.exoplayer

import android.content.Context
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.ui.PlayerView

interface IExoPlayerAdapter {

fun initialize(
exoPlayerView: PlayerView,
context: Context
)

fun attach(url: String, contentType: String = "")
fun hasActiveMediaItem() : Boolean
fun getCurrentManifestUri(): String
fun getCurrentManifestUrl(): String
fun preload()
fun play()
fun pause()
fun seek(time: Long)
fun stop()
fun reset()
fun destroy()
fun getPlayerInstance(): ExoPlayer
fun getPlaybackState(): Int
fun getCurrentPosition(): Long
fun getBufferLength(): Long
fun getAverageThroughput(): Long
fun getCurrentPeriodId(): String
fun getStatusInformation(status: String): Any?
fun getPlayerState(): String
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import java.util.TimerTask

@UnstableApi
class QoeMetricsReporterExoplayer(
private val exoPlayerAdapter: ExoPlayerAdapter
private val exoPlayerAdapter: IExoPlayerAdapter
) : IQoeMetricsReporter {
private val representationSwitchList: RepresentationSwitchList = RepresentationSwitchList(
ArrayList()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import android.os.IBinder
import android.util.Log
import androidx.media3.common.util.UnstableApi
import com.fivegmag.a5gmscommonlibrary.models.ServiceListEntry
import com.fivegmag.a5gmsmediastreamhandler.player.exoplayer.ExoPlayerAdapter

class MessengerService(
private val context: Context
Expand Down

0 comments on commit aaf4e97

Please sign in to comment.