Add logging around data source reading.

This commit is contained in:
Nicholas Tinsley
2024-07-16 17:48:47 -04:00
parent 21fab7c5ba
commit 10ad73f201
2 changed files with 26 additions and 2 deletions

View File

@@ -9,6 +9,8 @@ import androidx.media3.common.C;
import androidx.media3.common.MediaItem;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.datasource.DataSource;
import androidx.media3.datasource.DataSpec;
import androidx.media3.datasource.TransferListener;
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.source.ProgressiveMediaSource;
@@ -25,7 +27,7 @@ public final class SignalMediaSourceFactory implements MediaSource.Factory {
private final ProgressiveMediaSource.Factory progressiveMediaSourceFactory;
public SignalMediaSourceFactory(@NonNull Context context) {
DataSource.Factory attachmentDataSourceFactory = new SignalDataSource.Factory(context, null, null);
DataSource.Factory attachmentDataSourceFactory = new SignalDataSource.Factory(context, null, ExoPlayerPool.DataSourceTransferListener.INSTANCE);
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory().setConstantBitrateSeekingEnabled(true);
progressiveMediaSourceFactory = new ProgressiveMediaSource.Factory(attachmentDataSourceFactory, extractorsFactory);

View File

@@ -6,6 +6,8 @@ import androidx.annotation.OptIn
import androidx.media3.common.MimeTypes
import androidx.media3.common.util.UnstableApi
import androidx.media3.datasource.DataSource
import androidx.media3.datasource.DataSpec
import androidx.media3.datasource.TransferListener
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.mediacodec.MediaCodecUtil
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
@@ -24,7 +26,7 @@ import kotlin.time.Duration.Companion.seconds
class SimpleExoPlayerPool(context: Context) : ExoPlayerPool<ExoPlayer>(MAXIMUM_RESERVED_PLAYERS) {
private val context: Context = context.applicationContext
private val okHttpClient = AppDependencies.okHttpClient.newBuilder().proxySelector(ContentProxySelector()).build()
private val dataSourceFactory: DataSource.Factory = SignalDataSource.Factory(AppDependencies.application, okHttpClient, null)
private val dataSourceFactory: DataSource.Factory = SignalDataSource.Factory(AppDependencies.application, okHttpClient, DataSourceTransferListener)
private val mediaSourceFactory: MediaSource.Factory = DefaultMediaSourceFactory(dataSourceFactory)
init {
@@ -213,6 +215,26 @@ abstract class ExoPlayerPool<T : ExoPlayer>(
}
}
@UnstableApi
object DataSourceTransferListener : TransferListener {
private val TAG = Log.tag(DataSourceTransferListener::class)
override fun onTransferInitializing(source: DataSource, dataSpec: DataSpec, isNetwork: Boolean) {
Log.d(TAG, "onTransferInitializing() for ${source.uri}")
}
override fun onTransferStart(source: DataSource, dataSpec: DataSpec, isNetwork: Boolean) {
Log.d(TAG, "onTransferStart() for ${source.uri}")
}
override fun onBytesTransferred(source: DataSource, dataSpec: DataSpec, isNetwork: Boolean, bytesTransferred: Int) {
Log.v(TAG, "$bytesTransferred bytes transferred for ${source.uri}")
}
override fun onTransferEnd(source: DataSource, dataSpec: DataSpec, isNetwork: Boolean) {
Log.d(TAG, "onTransferEnd() for ${source.uri}")
}
}
protected abstract fun getMaxSimultaneousPlayback(): Int
data class PoolStats(