Skip to content

Commit

Permalink
refactor: convert NextRenderersFactory to kotlin (#17)
Browse files Browse the repository at this point in the history
  • Loading branch information
anilbeesetti committed Sep 3, 2023
1 parent 9aa10d5 commit 0ba5aa6
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 70 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package io.github.anilbeesetti.nextlib.ffcodecs

import android.content.Context
import android.os.Handler
import androidx.media3.common.util.Log
import androidx.media3.exoplayer.DefaultRenderersFactory
import androidx.media3.exoplayer.Renderer
import androidx.media3.exoplayer.audio.AudioRendererEventListener
import androidx.media3.exoplayer.audio.AudioSink
import androidx.media3.exoplayer.mediacodec.MediaCodecSelector
import androidx.media3.exoplayer.video.VideoRendererEventListener

class NextRenderersFactory(context: Context) : DefaultRenderersFactory(context) {
override fun buildAudioRenderers(
context: Context,
extensionRendererMode: Int,
mediaCodecSelector: MediaCodecSelector,
enableDecoderFallback: Boolean,
audioSink: AudioSink,
eventHandler: Handler,
eventListener: AudioRendererEventListener,
out: ArrayList<Renderer>
) {
super.buildAudioRenderers(
context,
extensionRendererMode,
mediaCodecSelector,
enableDecoderFallback,
audioSink,
eventHandler,
eventListener,
out
)

if (extensionRendererMode == EXTENSION_RENDERER_MODE_OFF) return

var extensionRendererIndex = out.size
if (extensionRendererMode == EXTENSION_RENDERER_MODE_PREFER) {
extensionRendererIndex--
}

try {
val renderer = FfmpegAudioRenderer(eventHandler, eventListener, audioSink)
out.add(extensionRendererIndex++, renderer)
Log.i(TAG, "Loaded FfmpegAudioRenderer.")
} catch (e: Exception) {
// The extension is present, but instantiation failed.
throw RuntimeException("Error instantiating Ffmpeg extension", e)
}
}

override fun buildVideoRenderers(
context: Context,
extensionRendererMode: Int,
mediaCodecSelector: MediaCodecSelector,
enableDecoderFallback: Boolean,
eventHandler: Handler,
eventListener: VideoRendererEventListener,
allowedVideoJoiningTimeMs: Long,
out: ArrayList<Renderer>
) {
super.buildVideoRenderers(
context,
extensionRendererMode,
mediaCodecSelector,
enableDecoderFallback,
eventHandler,
eventListener,
allowedVideoJoiningTimeMs,
out
)

if (extensionRendererMode == EXTENSION_RENDERER_MODE_OFF) return

var extensionRendererIndex = out.size
if (extensionRendererMode == EXTENSION_RENDERER_MODE_PREFER) {
extensionRendererIndex--
}

try {
val renderer = FfmpegVideoRenderer(allowedVideoJoiningTimeMs, eventHandler, eventListener, MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY)
out.add(extensionRendererIndex++, renderer)
Log.i(TAG, "Loaded FfmpegVideoRenderer.")
} catch (e: java.lang.Exception) {
// The extension is present, but instantiation failed.
throw java.lang.RuntimeException("Error instantiating Ffmpeg extension", e)
}
}

companion object {
const val TAG = "NextRenderersFactory"
}
}

0 comments on commit 0ba5aa6

Please sign in to comment.