From 4b2514743ef9f8f1366b17129423de0cb944be31 Mon Sep 17 00:00:00 2001 From: Sebastien Vincent Date: Wed, 6 Jan 2010 13:14:09 +0000 Subject: [PATCH] Fix freeze/acceleration of video in a call. --- .../impl/neomedia/codec/video/h264/H264Parser.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/H264Parser.java b/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/H264Parser.java index 9658e2def..8e3019d90 100644 --- a/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/H264Parser.java +++ b/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/H264Parser.java @@ -40,6 +40,11 @@ public class H264Parser private final int encodedFramePaddingSize; + /** + * If last processed packet has a marker (indicate end of frame). + */ + private boolean lastHasMarker = false; + public H264Parser() { this(0); @@ -67,7 +72,8 @@ public boolean pushRTPInput(Buffer inputBuffer) (inputBuffer.getFlags() & Buffer.FLAG_RTP_MARKER) != 0; // if the timestamp changes we are starting receiving a new frame - if(!(currentStamp == lastTimestamp)) + // this is also the case when last processed packet has marker + if(!(currentStamp == lastTimestamp) || lastHasMarker) { reset(); } @@ -116,6 +122,7 @@ else if (type == 28) return false; } + lastHasMarker = hasMarker; return hasMarker; }