The document contains an M3U playlist file with different quality levels and bandwidth options for streaming media from a company website, as well as code for a bandwidth meter class that limits the estimated bandwidth and code for tracking player logging events.
26. class AbemaBandwidthMeter(
private val default: DefaultBandwidthMeter
) : BandwidthMeter by default, TransferListener<Any> by default {
private var limitBitrate = Long.MAX_VALUE
override fun getBitrateEstimate(): Long {
return Math.min(default.bitrateEstimate, limitBitrate)
}
fun setLimitBitrate(limitBitrate: Long) {
this.limitBitrate = limitBitrate
}
}
27. class AbemaBandwidthMeter(
private val default: DefaultBandwidthMeter
) : BandwidthMeter by default, TransferListener<Any> by default {
private var limitBitrate = Long.MAX_VALUE
override fun getBitrateEstimate(): Long {
return Math.min(default.bitrateEstimate, limitBitrate)
}
fun setLimitBitrate(limitBitrate: Long) {
this.limitBitrate = limitBitrate
}
}
override fun getBitrateEstimate(): Long {
return Math.min(default.bitrateEstimate, limitBitrate)
}
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46. private fun stopVideo() {
…
sendPlayerLog();
}
private fun sendPlayerLog() {
// send log here
}
private fun pauseVideo() {
…
sendPlayerLog();
}
private val programMetaChanged = { meta ->
if (shouldSend) sendPlayerLog()
};
47. private fun stopVideo() {
…
sendPlayerLog();
}
private fun sendPlayerLog() {
// send log here
}}
private fun pauseVideo() {
…
sendPlayerLog();
}
private val programMetaChanged = { meta ->
if (shouldSend) sendPlayerLog()
};
✘
✘
48. private fun sendPlayerLog() {
// send log here
}}
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
…
val logTracker = PlayerLogTracker(…)
player.addTrackers(
logTracker,
…
)
}
class PlayerLogTracker(
metadataDetector: MetadataDetector,
stateDetector: PlaybackStateDetector,
sendPlayerLog: () -> Unit
) {
// call sendPlayerLog()
}
49. private fun sendPlayerLog() {
// send log here
}
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
…
val logTracker = PlayerLogTracker(…)
player.addTrackers(
logTracker,
…
)
}
class PlayerLogTracker(
metadataDetector: MetadataDetector,
stateDetector: PlaybackStateDetector,
sendPlayerLog: () -> Unit
) {
// call sendPlayerLog()
}
✔
✔
✔