From 4435a30a539a97c4dc2c062f19c6ff54b3930035 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Sat, 15 May 2021 23:28:02 +0200 Subject: [PATCH] Use sequence parameter sets for h.264 keyframe detection. RFC 6184 Section 8.5.1 implies that the sender will send a a sequence parameter set in response to PLI. Since a keyframe is useless without parameters, use the SPS to detect keyframes. --- rtpconn/codec.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtpconn/codec.go b/rtpconn/codec.go index 011424c..6ade5da 100644 --- a/rtpconn/codec.go +++ b/rtpconn/codec.go @@ -150,7 +150,7 @@ func isKeyframe(codec string, packet *rtp.Packet) (bool, bool) { return false, false } n := packet.Payload[i+offset] & 0x1F - if n == 5 { + if n == 7 { return true, true } else if n >= 24 { // is this legal? @@ -171,7 +171,7 @@ func isKeyframe(codec string, packet *rtp.Packet) (bool, bool) { // not a starting fragment return false, true } - return (packet.Payload[1]&0x1F == 5), true + return (packet.Payload[1]&0x1F == 7), true } return false, false } else {