@@ -12,28 +12,23 @@ public class RtspH264Packet: RtspBasePacket {
1212 }
1313
1414 public override func createAndSendPacket( buffer: Array < UInt8 > , ts: UInt64 , callback: ( [ RtpFrame ] ) -> Void ) {
15- var frames = [ RtpFrame] ( )
16- var buffer = buffer
15+ var fixedBuffer = buffer
1716 let dts = ts * 1000
18- var frame = RtpFrame ( )
19- frame. channelIdentifier = channelIdentifier
2017
2118 var header = Array < UInt8 > ( repeating: 0 , count: 5 )
22- buffer = buffer . get ( destiny: & header, index: 0 , length: 5 )
19+ fixedBuffer . get ( destiny: & header, index: 0 , length: header . count )
2320
24- let naluLength = Int ( buffer . count)
21+ let naluLength = Int ( fixedBuffer . count)
2522 let type : UInt8 = header [ 4 ] & 0x1F
26-
23+ var frames = [ RtpFrame ] ( )
2724 if type == RtpConstants . IDR {
2825 var rtpBuffer = getBuffer ( size: stapA!. count + RtpConstants. rtpHeaderLength)
2926 let rtpTs = updateTimeStamp ( buffer: & rtpBuffer, timeStamp: dts)
3027 markPacket ( buffer: & rtpBuffer)
3128 rtpBuffer [ RtpConstants . rtpHeaderLength... RtpConstants . rtpHeaderLength + stapA!. count - 1 ] = stapA![ 0 ... stapA!. count - 1 ]
3229 updateSeq ( buffer: & rtpBuffer)
3330
34- frame. timeStamp = rtpTs
35- frame. length = rtpBuffer. count
36- frame. buffer = rtpBuffer
31+ let frame = RtpFrame ( buffer: rtpBuffer, length: rtpBuffer. count, timeStamp: rtpTs, channelIdentifier: channelIdentifier!)
3732 frames. append ( frame)
3833 sendKeyFrame = true
3934 }
@@ -43,15 +38,13 @@ public class RtspH264Packet: RtspBasePacket {
4338 var rtpBuffer = getBuffer ( size: naluLength + RtpConstants. rtpHeaderLength + 1 )
4439 rtpBuffer [ RtpConstants . rtpHeaderLength] = header [ 4 ]
4540
46- buffer = buffer . get ( destiny: & rtpBuffer, index: RtpConstants . rtpHeaderLength + 1 , length: naluLength)
41+ fixedBuffer . get ( destiny: & rtpBuffer, index: RtpConstants . rtpHeaderLength + 1 , length: naluLength)
4742
4843 let rtpTs = updateTimeStamp ( buffer: & rtpBuffer, timeStamp: dts)
4944 markPacket ( buffer: & rtpBuffer)
5045 updateSeq ( buffer: & rtpBuffer)
5146
52- frame. timeStamp = rtpTs
53- frame. length = rtpBuffer. count
54- frame. buffer = rtpBuffer
47+ let frame = RtpFrame ( buffer: rtpBuffer, length: rtpBuffer. count, timeStamp: rtpTs, channelIdentifier: channelIdentifier!)
5548 frames. append ( frame)
5649 }
5750 // Large NAL unit => Split nal unit
@@ -68,15 +61,15 @@ public class RtspH264Packet: RtspBasePacket {
6861 let length = if ( naluLength - sum > maxPacketSize - RtpConstants. rtpHeaderLength - 2 ) {
6962 maxPacketSize - RtpConstants. rtpHeaderLength - 2
7063 } else {
71- buffer . count
64+ fixedBuffer . count
7265 }
7366 var rtpBuffer = getBuffer ( size: length + RtpConstants. rtpHeaderLength + 2 )
7467 rtpBuffer [ RtpConstants . rtpHeaderLength] = header [ 0 ]
7568 rtpBuffer [ RtpConstants . rtpHeaderLength + 1 ] = header [ 1 ]
7669
7770 let rtpTs = updateTimeStamp ( buffer: & rtpBuffer, timeStamp: dts)
7871
79- buffer = buffer . get ( destiny: & rtpBuffer, index: RtpConstants . rtpHeaderLength + 2 , length: length)
72+ fixedBuffer . get ( destiny: & rtpBuffer, index: RtpConstants . rtpHeaderLength + 2 , length: length)
8073
8174 sum += length
8275 if sum >= naluLength {
@@ -85,9 +78,7 @@ public class RtspH264Packet: RtspBasePacket {
8578 }
8679 updateSeq ( buffer: & rtpBuffer)
8780
88- frame. timeStamp = rtpTs
89- frame. length = rtpBuffer. count
90- frame. buffer = rtpBuffer
81+ let frame = RtpFrame ( buffer: rtpBuffer, length: rtpBuffer. count, timeStamp: rtpTs, channelIdentifier: channelIdentifier!)
9182 frames. append ( frame)
9283 // Switch start bit
9384 header [ 1 ] = header [ 1 ] & 0x7F
0 commit comments