Skip to content

Conversation

@wejrox
Copy link

@wejrox wejrox commented Jan 15, 2026

Context

The MuxPlayer used to implement ExoPlayer, but was changed to implement Player.

I raised a support request asking if the team could revert the change, and was informed by Ben that it should be possible.

I checked in with the team and they let me know that the reason this was changed was to work around some issues that seem to be resolved with some more recent improvements to Kotlin.

I'm raising this PR as an external contributor because:

We're looking at the possibility of reverting back, but I don't have any timeline yet that I could share for that, a PR would definitely be appreciated, and thank you for raising attention on this!

I couldn't find any contributor documentation, so let me know if I've missed anything

What prompted the change request?

We're currently trying to integrate the Mux Android player with the IPSOS Dotmetrics SDK.
IPSOS Dotmetrics is the industry standard for measuring user engagement with features, and is integrated by many businesses to drive decisioning and prove value. It already integrates with a number of possible Android players such as Youtube and ExoPlayer.

To integrate, we need to pass an instance of ExoPlayer​ into a Dotmetrics function to register the player.
Unfortunately, the Mux Android player (MuxPlayer) doesn't implement the ExoPlayer​ child class.
Instead, it implements the Player​ class. Dotmetrics requires an ExoPlayer instance because it requires access to the following functions from ExoPlayer:
getVideoFormat and getAudioFormat.

These functions differentiate what kind of content is being shown in the player, which feeds into their metrics.

Testing

  • Unit tests
  • Automated tests
  • Manual verification through the example app

@wejrox wejrox requested a review from a team as a code owner January 15, 2026 02:49
}

@Suppress("unused")
fun addAnalyticsListener(listener: AnalyticsListener) {
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function exists on ExoPlayer and so can be removed since MuxPlayer is now an ExoPlayer

fun addAnalyticsListener(listener: AnalyticsListener) {
exoPlayer.addAnalyticsListener(listener)
@UnstableApi
override fun getSecondaryRenderer(index: Int): Renderer? {
Copy link
Author

@wejrox wejrox Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function has a default implementation but I've added it due to an IDE warning Java default methods are not overridden by delegation.
It's possible to remove this function if we don't care about the warning.

@daytime-em daytime-em changed the base branch from main to releases/v1.5.2 January 15, 2026 22:13
@daytime-em
Copy link
Collaborator

Thank you for your contribution! I should have this merged by early next week

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants