Skip to content

Commit 42fa4a6

Browse files
committed
fix writenalusize on rtmp video packets
1 parent 88ed8de commit 42fa4a6

2 files changed

Lines changed: 8 additions & 20 deletions

File tree

RootEncoder/Sources/RootEncoder/rtmp/flv/video/packet/RtmpH264Packet.swift

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,11 @@ public class RtmpH264Packet: RtmpBasePacket {
5858

5959
let headerSize = getHeaderSize(byteBuffer: buffer)
6060

61-
if headerSize == 0 {
62-
return
63-
}
61+
if headerSize == 0 { return }
6462

6563
let validBuffer = removeHeader(byteBuffer: buffer, size: headerSize)
6664
let size = validBuffer.count
67-
if size > UInt32.max {
68-
return
69-
}
65+
if size < 0 { return }
7066
packetBuffer = [UInt8](repeating: 0, count: header.count + size + naluSize)
7167

7268
let type: Int = Int(validBuffer[0]) & 0x1F
@@ -107,10 +103,8 @@ public class RtmpH264Packet: RtmpBasePacket {
107103
}
108104

109105
private func writeNaluSize(buffer: inout [UInt8], offset: Int, size: Int) {
110-
buffer[offset] = UInt8(size >> 24)
111-
buffer[offset + 1] = UInt8(size >> 16)
112-
buffer[offset + 2] = UInt8(size >> 8)
113-
buffer[offset + 3] = UInt8(size & 0xFF)
106+
let byteArray: Array<UInt8> = withUnsafeBytes(of: UInt32(size)) { Array($0) }.reversed()
107+
buffer[offset..<offset + byteArray.count] = byteArray[0..<byteArray.count]
114108
}
115109

116110
private func removeHeader(byteBuffer: [UInt8], size: Int = -1) -> [UInt8] {

RootEncoder/Sources/RootEncoder/rtmp/flv/video/packet/RtmpH265Packet.swift

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,11 @@ public class RtmpH265Packet: RtmpBasePacket {
5555

5656
let headerSize = getHeaderSize(byteBuffer: buffer)
5757

58-
if headerSize == 0 {
59-
return
60-
}
58+
if headerSize == 0 { return }
6159

6260
let validBuffer = removeHeader(byteBuffer: buffer, size: headerSize)
6361
let size = validBuffer.count
64-
if size > UInt32.max {
65-
return
66-
}
62+
if size < 0 { return }
6763
packetBuffer = [UInt8](repeating: 0, count: header.count + size + naluSize)
6864
header[5] = UInt8(cts >> 16)
6965
header[6] = UInt8(cts >> 8)
@@ -105,10 +101,8 @@ public class RtmpH265Packet: RtmpBasePacket {
105101
}
106102

107103
private func writeNaluSize(buffer: inout [UInt8], offset: Int, size: Int) {
108-
buffer[offset] = UInt8(size >> 24)
109-
buffer[offset + 1] = UInt8(size >> 16)
110-
buffer[offset + 2] = UInt8(size >> 8)
111-
buffer[offset + 3] = UInt8(size & 0xFF)
104+
let byteArray: Array<UInt8> = withUnsafeBytes(of: UInt32(size)) { Array($0) }.reversed()
105+
buffer[offset..<offset + byteArray.count] = byteArray[0..<byteArray.count]
112106
}
113107

114108
private func removeHeader(byteBuffer: [UInt8], size: Int = -1) -> [UInt8] {

0 commit comments

Comments
 (0)