chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size (#3739)
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package com.brentvatne.common.api
|
||||
|
||||
import com.brentvatne.common.toolbox.ReactBridgeUtils.safeGetDouble
|
||||
import com.brentvatne.common.toolbox.ReactBridgeUtils.safeGetInt
|
||||
import com.facebook.react.bridge.ReadableMap
|
||||
|
||||
/**
|
||||
* Class representing bufferConfig for host.
|
||||
* Only generic code here, no reference to the player.
|
||||
* By default, if application don't provide input field, -1 is set instead
|
||||
*/
|
||||
class BufferConfig {
|
||||
var cacheSize = BufferConfigPropUnsetInt
|
||||
var minBufferMs = BufferConfigPropUnsetInt
|
||||
var maxBufferMs = BufferConfigPropUnsetInt
|
||||
var bufferForPlaybackMs = BufferConfigPropUnsetInt
|
||||
var bufferForPlaybackAfterRebufferMs = BufferConfigPropUnsetInt
|
||||
var backBufferDurationMs = BufferConfigPropUnsetInt
|
||||
var maxHeapAllocationPercent = BufferConfigPropUnsetDouble
|
||||
var minBackBufferMemoryReservePercent = BufferConfigPropUnsetDouble
|
||||
var minBufferMemoryReservePercent = BufferConfigPropUnsetDouble
|
||||
|
||||
companion object {
|
||||
val BufferConfigPropUnsetInt = -1
|
||||
val BufferConfigPropUnsetDouble = -1.0
|
||||
|
||||
private val PROP_BUFFER_CONFIG_CACHE_SIZE = "cacheSizeMB"
|
||||
private val PROP_BUFFER_CONFIG_MIN_BUFFER_MS = "minBufferMs"
|
||||
private val PROP_BUFFER_CONFIG_MAX_BUFFER_MS = "maxBufferMs"
|
||||
private val PROP_BUFFER_CONFIG_BUFFER_FOR_PLAYBACK_MS = "bufferForPlaybackMs"
|
||||
private val PROP_BUFFER_CONFIG_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS = "bufferForPlaybackAfterRebufferMs"
|
||||
private val PROP_BUFFER_CONFIG_MAX_HEAP_ALLOCATION_PERCENT = "maxHeapAllocationPercent"
|
||||
private val PROP_BUFFER_CONFIG_MIN_BACK_BUFFER_MEMORY_RESERVE_PERCENT = "minBackBufferMemoryReservePercent"
|
||||
private val PROP_BUFFER_CONFIG_MIN_BUFFER_MEMORY_RESERVE_PERCENT = "minBufferMemoryReservePercent"
|
||||
private val PROP_BUFFER_CONFIG_BACK_BUFFER_DURATION_MS = "backBufferDurationMs"
|
||||
|
||||
@JvmStatic
|
||||
fun parse(src: ReadableMap?): BufferConfig {
|
||||
val bufferConfig = BufferConfig()
|
||||
|
||||
if (src != null) {
|
||||
bufferConfig.cacheSize = safeGetInt(src, PROP_BUFFER_CONFIG_CACHE_SIZE, BufferConfigPropUnsetInt)
|
||||
bufferConfig.minBufferMs = safeGetInt(src, PROP_BUFFER_CONFIG_MIN_BUFFER_MS, BufferConfigPropUnsetInt)
|
||||
bufferConfig.maxBufferMs = safeGetInt(src, PROP_BUFFER_CONFIG_MAX_BUFFER_MS, BufferConfigPropUnsetInt)
|
||||
bufferConfig.bufferForPlaybackMs = safeGetInt(src, PROP_BUFFER_CONFIG_BUFFER_FOR_PLAYBACK_MS, BufferConfigPropUnsetInt)
|
||||
bufferConfig.bufferForPlaybackAfterRebufferMs =
|
||||
safeGetInt(src, PROP_BUFFER_CONFIG_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS, BufferConfigPropUnsetInt)
|
||||
bufferConfig.maxHeapAllocationPercent =
|
||||
safeGetDouble(src, PROP_BUFFER_CONFIG_MAX_HEAP_ALLOCATION_PERCENT, BufferConfigPropUnsetDouble)
|
||||
bufferConfig.minBackBufferMemoryReservePercent = safeGetDouble(
|
||||
src,
|
||||
PROP_BUFFER_CONFIG_MIN_BACK_BUFFER_MEMORY_RESERVE_PERCENT,
|
||||
BufferConfigPropUnsetDouble
|
||||
)
|
||||
bufferConfig.minBufferMemoryReservePercent =
|
||||
safeGetDouble(
|
||||
src,
|
||||
PROP_BUFFER_CONFIG_MIN_BUFFER_MEMORY_RESERVE_PERCENT,
|
||||
BufferConfigPropUnsetDouble
|
||||
)
|
||||
bufferConfig.backBufferDurationMs = safeGetInt(src, PROP_BUFFER_CONFIG_BACK_BUFFER_DURATION_MS, BufferConfigPropUnsetInt)
|
||||
}
|
||||
return bufferConfig
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user