Moved MediaMuxer class

hh
Laurent 6 years ago
parent cf3a8b2f16
commit fb56773f64
  1. 56
      app/src/main/java/net/pokeranalytics/android/util/video/MMediaMuxer.kt

@ -1,4 +1,4 @@
package net.pokeranalytics.android.model.handhistory
package net.pokeranalytics.android.util.video
import android.app.Activity
import android.app.ProgressDialog
@ -122,18 +122,26 @@ class MMediaMuxer {
private fun bufferEncoder() {
val runnable = Runnable {
try {
Logd("PrepareEncoder start")
Logd(
"PrepareEncoder start"
)
PrepareEncoder()
Logd("PrepareEncoder end")
Logd(
"PrepareEncoder end"
)
} catch (e: IOException) {
Loge(e.message)
Loge(
e.message
)
}
try {
while (mRunning) {
Encode()
}
} finally {
Logd("release")
Logd(
"release"
)
Release()
HideProgressBar()
bitFirst = null
@ -153,14 +161,19 @@ class MMediaMuxer {
@Throws(IOException::class)
private fun PrepareEncoder() {
val codecInfo =
selectCodec(MIME_TYPE)
selectCodec(
MIME_TYPE
)
if (codecInfo == null) {
Loge("Unable to find an appropriate codec for $MIME_TYPE")
}
Logd("found codec: " + codecInfo!!.name)
val colorFormat: Int
colorFormat = try {
selectColorFormat(codecInfo, MIME_TYPE)
selectColorFormat(
codecInfo,
MIME_TYPE
)
} catch (e: Exception) {
CodecCapabilities.COLOR_FormatYUV420SemiPlanar
}
@ -170,8 +183,12 @@ class MMediaMuxer {
_width,
_height
)
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE)
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE)
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE,
BIT_RATE
)
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE,
FRAME_RATE
)
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, colorFormat)
mediaFormat.setInteger(
MediaFormat.KEY_I_FRAME_INTERVAL,
@ -203,7 +220,9 @@ class MMediaMuxer {
val TIMEOUT_USEC: Long = 5000
val inputBufIndex = mediaCodec!!.dequeueInputBuffer(TIMEOUT_USEC)
val ptsUsec =
computePresentationTime(generateIndex.toLong(), FRAME_RATE)
computePresentationTime(generateIndex.toLong(),
FRAME_RATE
)
if (inputBufIndex >= 0) {
val input = bitFirst!![current_index_frame]
val inputBuffer = mediaCodec!!.getInputBuffer(inputBufIndex)
@ -215,17 +234,23 @@ class MMediaMuxer {
val mBufferInfo = MediaCodec.BufferInfo()
val encoderStatus = mediaCodec!!.dequeueOutputBuffer(mBufferInfo, TIMEOUT_USEC)
if (encoderStatus == MediaCodec.INFO_TRY_AGAIN_LATER) { // no output available yet
Loge("No output from encoder available")
Loge(
"No output from encoder available"
)
} else if (encoderStatus == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) { // not expected for an encoder
val newFormat = mediaCodec!!.outputFormat
mTrackIndex = mediaMuxer!!.addTrack(newFormat)
mediaMuxer!!.start()
} else if (encoderStatus < 0) {
Loge("unexpected result from encoder.dequeueOutputBuffer: $encoderStatus")
Loge(
"unexpected result from encoder.dequeueOutputBuffer: $encoderStatus"
)
} else if (mBufferInfo.size != 0) {
val encodedData = mediaCodec!!.getOutputBuffer(encoderStatus)
if (encodedData == null) {
Loge("encoderOutputBuffer $encoderStatus was null")
Loge(
"encoderOutputBuffer $encoderStatus was null"
)
} else {
encodedData.position(mBufferInfo.offset)
encodedData.limit(mBufferInfo.offset + mBufferInfo.size)
@ -364,7 +389,10 @@ class MMediaMuxer {
.getCapabilitiesForType(mimeType)
for (i in capabilities.colorFormats.indices) {
val colorFormat = capabilities.colorFormats[i]
if (isRecognizedFormat(colorFormat)) {
if (isRecognizedFormat(
colorFormat
)
) {
return colorFormat
}
}
Loading…
Cancel
Save