diff --git a/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/DePacketizer.java b/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/DePacketizer.java index f4a357934..e8d95db3d 100644 --- a/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/DePacketizer.java +++ b/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/DePacketizer.java @@ -304,6 +304,14 @@ private int dePacketizeSingleNALUnitPacket( outBuffer.setLength(newOutLength); + /* coded slice of an IDR picture (keyframe) */ + if(nal_unit_type == 5) + { + /* keyframe received */ + missFrame = false; + lastReceivedKeyframeTime = System.currentTimeMillis(); + } + return BUFFER_PROCESSED_OK; } diff --git a/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/JNIEncoder.java b/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/JNIEncoder.java index 54822bc97..77eebce78 100644 --- a/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/JNIEncoder.java +++ b/src/net/java/sip/communicator/impl/neomedia/codec/video/h264/JNIEncoder.java @@ -245,7 +245,7 @@ public synchronized void open() // average bit rate FFmpeg.avcodeccontext_set_bit_rate(avcontext, bitRate); // so to be 1 in x264 - FFmpeg.avcodeccontext_set_bit_rate_tolerance(avcontext, (int)(bitRate / + FFmpeg.avcodeccontext_set_bit_rate_tolerance(avcontext, (bitRate / frameRate)); FFmpeg.avcodeccontext_set_rc_max_rate(avcontext, bitRate); FFmpeg.avcodeccontext_set_sample_aspect_ratio(avcontext, 0, 0);