Skip to content

Commit 87a5a41

Browse files
committed
feat: move to isoparser 1.9.X
1 parent b002be1 commit 87a5a41

File tree

6 files changed

+41
-54
lines changed

6 files changed

+41
-54
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ dependencies {
115115

116116
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
117117
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4"
118-
implementation "com.googlecode.mp4parser:isoparser:1.0.6"
118+
implementation 'org.mp4parser:isoparser:1.9.56'
119119
implementation 'com.github.banketree:AndroidLame-kotlin:v0.0.1'
120120
implementation 'javazoom:jlayer:1.0.1'
121121
}

android/src/main/java/com/reactnativecompressor/Utils/Utils.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ import java.io.FileNotFoundException
1414
import java.io.IOException
1515
import java.net.HttpURLConnection
1616
import java.net.URL
17+
import java.nio.ByteBuffer
1718
import java.util.UUID
1819
import java.util.regex.Pattern
19-
import kotlin.Throwable
20+
2021

2122
object Utils {
2223
private const val TAG = "react-native-compessor"
@@ -328,4 +329,12 @@ object Utils {
328329
-1L
329330
}
330331
}
332+
333+
fun subBuffer(buf: ByteBuffer, start: Int, count: Int = buf.remaining() - start): ByteBuffer {
334+
val newBuf = buf.duplicate()
335+
val bytes = ByteArray(count)
336+
newBuf.position(start)
337+
newBuf[bytes, 0, bytes.size]
338+
return ByteBuffer.wrap(bytes)
339+
}
331340
}

android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/MP4Builder.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package com.reactnativecompressor.Video.VideoCompressor.video
22

33
import android.media.MediaCodec
44
import android.media.MediaFormat
5-
import com.coremedia.iso.boxes.*
6-
import com.googlecode.mp4parser.util.Matrix
5+
import org.mp4parser.Box
6+
import org.mp4parser.boxes.iso14496.part12.*
7+
8+
import org.mp4parser.support.Matrix
79
import java.io.FileOutputStream
810
import java.nio.ByteBuffer
911
import java.nio.channels.FileChannel
@@ -42,7 +44,7 @@ class MP4Builder {
4244
@Throws(Exception::class)
4345
private fun flushCurrentMdat() {
4446
val oldPosition = fc.position()
45-
fc.position(mdat.offset)
47+
fc.position(mdat.getOffset())
4648
mdat.getBox(fc)
4749
fc.position(oldPosition)
4850
mdat.setDataOffset(0)

android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Mdat.kt

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.reactnativecompressor.Video.VideoCompressor.video
22

3-
import com.coremedia.iso.BoxParser
4-
import com.coremedia.iso.IsoFile
5-
import com.coremedia.iso.IsoTypeWriter
6-
import com.coremedia.iso.boxes.Box
7-
import com.coremedia.iso.boxes.Container
8-
import com.googlecode.mp4parser.DataSource
3+
import org.mp4parser.Box
4+
import org.mp4parser.BoxParser
5+
import org.mp4parser.Container
6+
import org.mp4parser.IsoFile
7+
import org.mp4parser.tools.IsoTypeWriter
8+
99
import java.nio.ByteBuffer
1010
import java.nio.channels.WritableByteChannel
1111

@@ -15,15 +15,15 @@ class Mdat : Box {
1515
private var contentSize = (1024 * 1024 * 1024).toLong()
1616
private var dataOffset: Long = 0
1717

18-
override fun getParent(): Container = parent
18+
fun getParent(): Container = parent
1919

20-
override fun setParent(parent: Container) {
20+
fun setParent(parent: Container) {
2121
this.parent = parent
2222
}
2323

2424
override fun getSize(): Long = 16 + contentSize
2525

26-
override fun getOffset(): Long = dataOffset
26+
fun getOffset(): Long = dataOffset
2727

2828
fun setDataOffset(offset: Long) {
2929
dataOffset = offset
@@ -63,12 +63,4 @@ class Mdat : Box {
6363
bb.rewind()
6464
writableByteChannel.write(bb)
6565
}
66-
67-
override fun parse(
68-
dataSource: DataSource?,
69-
header: ByteBuffer?,
70-
contentSize: Long,
71-
boxParser: BoxParser?
72-
) {
73-
}
7466
}

android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Mp4Movie.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.reactnativecompressor.Video.VideoCompressor.video
22

33
import android.media.MediaCodec
44
import android.media.MediaFormat
5-
import com.googlecode.mp4parser.util.Matrix
5+
import org.mp4parser.support.Matrix
66
import java.io.File
77
import java.util.*
88

android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Track.kt

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@ package com.reactnativecompressor.Video.VideoCompressor.video
33
import android.media.MediaCodec
44
import android.media.MediaCodecInfo
55
import android.media.MediaFormat
6-
import com.coremedia.iso.boxes.SampleDescriptionBox
7-
import com.coremedia.iso.boxes.sampleentry.AudioSampleEntry
8-
import com.coremedia.iso.boxes.sampleentry.VisualSampleEntry
9-
import com.googlecode.mp4parser.boxes.mp4.ESDescriptorBox
10-
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.AudioSpecificConfig
11-
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.DecoderConfigDescriptor
12-
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.ESDescriptor
13-
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.SLConfigDescriptor
14-
import com.mp4parser.iso14496.part15.AvcConfigurationBox
6+
import com.reactnativecompressor.Utils.Utils
7+
import org.mp4parser.boxes.iso14496.part1.objectdescriptors.AudioSpecificConfig
8+
import org.mp4parser.boxes.iso14496.part1.objectdescriptors.DecoderConfigDescriptor
9+
import org.mp4parser.boxes.iso14496.part1.objectdescriptors.ESDescriptor
10+
import org.mp4parser.boxes.iso14496.part1.objectdescriptors.SLConfigDescriptor
11+
import org.mp4parser.boxes.iso14496.part12.SampleDescriptionBox
12+
import org.mp4parser.boxes.iso14496.part14.ESDescriptorBox
13+
import org.mp4parser.boxes.iso14496.part15.AvcConfigurationBox
14+
import org.mp4parser.boxes.sampleentry.AudioSampleEntry
15+
import org.mp4parser.boxes.sampleentry.VisualSampleEntry
16+
import java.nio.ByteBuffer
1517
import java.util.*
1618
import kotlin.reflect.jvm.isAccessible
1719

@@ -67,28 +69,10 @@ class Track(id: Int, format: MediaFormat, audio: Boolean) {
6769
VisualSampleEntry(VisualSampleEntry.TYPE3).setup(width, height)
6870

6971
val avcConfigurationBox = AvcConfigurationBox()
70-
if (format.getByteBuffer("csd-0") != null) {
71-
val spsArray = ArrayList<ByteArray>()
72-
val spsBuff = format.getByteBuffer("csd-0")
73-
spsBuff!!.position(4)
74-
75-
val spsBytes = ByteArray(spsBuff.remaining())
76-
spsBuff[spsBytes]
77-
spsArray.add(spsBytes)
78-
79-
val ppsArray = ArrayList<ByteArray>()
80-
val ppsBuff = format.getByteBuffer("csd-1")
81-
ppsBuff?.let {
82-
it.position(4)
83-
84-
val ppsBytes = ByteArray(it.remaining())
85-
it[ppsBytes]
86-
87-
ppsArray.add(ppsBytes)
88-
avcConfigurationBox.sequenceParameterSets = spsArray
89-
avcConfigurationBox.pictureParameterSets = ppsArray
90-
}
91-
}
72+
avcConfigurationBox.sequenceParameterSets =
73+
format.getByteBuffer("csd-0")?.let { listOf(Utils.subBuffer(it, 4)) }
74+
avcConfigurationBox.pictureParameterSets =
75+
format.getByteBuffer("csd-1")?.let { listOf(Utils.subBuffer(it, 4)) }
9276

9377
if (format.containsKey("level")) {
9478
when (format.getInteger("level")) {

0 commit comments

Comments
 (0)