vp8 key frame interval

1,868 views
Skip to first unread message

Kanwar bir singh sangha

unread,
Jun 17, 2013, 4:54:31 PM6/17/13
to discuss...@googlegroups.com
Hi - In the chrome debug logs, we see that the key frame interval is set to 3Ms. Does the vp8 encoder send the key-frame every 3millsecs irrespective of this being requested or not ?


VP8 options : picture loss indication = 0, feedback mode = 0, complexity = normal, resilience = off, denoising = 0, error concealment = 0, automatic resize = 0, frame dropping = 1, key frame interval = 3000


Thanks,
Kanwar


Vikas

unread,
Jun 17, 2013, 6:27:52 PM6/17/13
to discuss-webrtc
Hi Kanwar,

I think it probably means that after every 3000 frames we send a key
frame. You can calculate the time based on frame rate, if it's 30fps
that corresponds to 10sec interval for key frame. AFAIK, the VP8
encoder will send a key frame if their is a key frame request as well.

/Vikas

On Jun 17, 1:54 pm, Kanwar bir singh sangha <kbsan...@gmail.com>
wrote:

Dennis E. Dowhy

unread,
Jun 17, 2013, 7:21:29 PM6/17/13
to discuss...@googlegroups.com
I think that's 100 second keyframe interval.


--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



Vikas

unread,
Jun 17, 2013, 7:45:27 PM6/17/13
to discuss-webrtc
Sorry, that's right 100 seconds key frame interval.

Kanwar bir singh sangha

unread,
Jun 17, 2013, 7:54:28 PM6/17/13
to discuss...@googlegroups.com
is there a way to hack it and send it as per our choice ?

Lorenzo Miniero

unread,
Jun 18, 2013, 5:50:40 AM6/18/13
to discuss...@googlegroups.com
As Vikas said, you can request a keyframe by sending a RTCP FIR message.

CT

unread,
Aug 21, 2013, 5:22:23 AM8/21/13
to discuss...@googlegroups.com
Is there any encoder side implementation gap on handling KeyFrameRequests in libjingle wrbrtc distribution?

I am working with the source  of libjingle/webrtc distribition obtained via 
   svn checkout http://libjingle.googlecode.com/svn/trunk/ libjingle-read-only 
( The change log mentions Libjingle 0.7.1 - Oct 2, 2012  - Fix for the "google-ice" ICE option in answer )
Compiled the VS12 solutions files.

I am trying to get FIR key frame request mechanism to work and it seems there is some implementation gap in webrtc in the video_engine_core and libjingle_media projects based on the functions that handle the FIR requests. The FIR request is just ignored - regardless of how hack and force it into the encoder.

On the RX side I have enabled ViECodecImpl::SetKeyFrameRequestCallbackStatus and set key_frame_req_method_ is kKeyFrameReqFirRtcp

The receiver triggers the FIR request ( via VideoCodingModuleImpl::RequestKeyFrame ) and the sender begins processing the rtcp message.

On the sender/encoder side  it reaches VideoCodingModuleImpl::IntraFrameRequest and fails or rather its just ignored because _encoder->InternalSource is FALSE by default. 
{...
  if (_encoder != NULL && _encoder->InternalSource())
     _encoder->RequestFrame(_nextFrameTypes);
...}

Hacking _encoder->InternalSource to TRUE immediately fails in _encoder->RequestFrame

int32_t VCMGenericEncoder::RequestFrame(...) {

 I420VideoFrame image;

 std::vector<VideoFrameType> video_frame_types(frame_types.size(),kDeltaFrame);

 VCMEncodedFrame::ConvertFrameTypes(frame_types, &video_frame_types);

 return _encoder.Encode(image, NULL, &video_frame_types);

}

The above code just dumps a NULL frame to the encoder and also hard-codes the frame type to be delta frames. The encode function does ignores the call due to the null frame.

Is there any other path that should be processing the FIR request where valid data will be fed to the encode function? 
Or does this mean IntraFrameRequest is not supported in libjingle+webrtc distribution? 

Any suggestions on ways to get this working will be greatly appreciated.

Reply all
Reply to author
Forward
0 new messages