Note that in iOS you actually have to check for: if (vparam.fmt.id == PJMEDIA_FORMAT_BGRA) And write to memory as if it is a YUV buffer, not an BGRA buffer. Also, you may want to set the 0 to 16 instead. See SSpatialLayerConfig.bfFullRange in OpenH264. Thanks, - Marc > Hi Marc, > > The green frames in the beginning of a video call is likely caused by > missing keyframe. Keyframe requests are sent regularly every > PJSUA_VID_REQ_KEYFRAME_INTERVAL, and application can also explicitly > send keyframe using the API pjsua_call_set_vid_strm() with op > PJSUA_CALL_VID_STRM_SEND_KEYFRAME. We also have a pending ticket for > this #1910 (https://trac.pjsip.org/repos/ticket/1910) which aims to do > this automatically within the library. > > To change the color to black, instead of green, you can modify > pjmedia/src/pjmedia/vid_port.c, in function pjmedia_vid_port_create(), > where the initial buffer of the video frame is allocated. Below is an > example of how to set the frame to black in I420 format. For other YUV > formats, which have different ways to represent black, you may need to > modify the code accordingly. > > if (need_frame_buf) { > ..... > vp->frm_buf->type = PJMEDIA_FRAME_TYPE_NONE; > /* Insert the below code after you find the above line ---- */ > /* Note: this will only work for I420 format */ > if (vparam.fmt.id == PJMEDIA_FORMAT_I420) { > pj_memset(vp->frm_buf->buf, 0x80, vp->frm_buf_size); > pj_bzero(vp->frm_buf->buf, > vparam.fmt.det.vid.size.w*vparam.fmt.det.vid.size.h); > } > /* ---- */ > > Unfortunately, currently there's no notification for the first decoded > frame/keyframe received. > > Best regards, > Ming > > On Thu, Jul 21, 2016 at 7:04 AM, Marc <marc@xxxxxxxxxxxxxxxxxxxx> wrote: >> When making a call using OpenH264, we get a few seconds of green frames before the first video frames show up successfully. >> >> It seems that this isn?t an OpenH264 (1.0.0 as that is the only version that compiles with PJSIP) issue, but a PJSIP one. >> >> As a side note, it seems that later versions of OpenH264 have switched to gray: https://github.com/cisco/openh264/issues/1163 >> >> I have commented out oh264_codec_decode and oh264_got_decoded_frame to just return Pj_SUCCESS and do nothing else, and I still get the green screen and obviously no video. >> >> I have also commented out decode_frame in vid_stream.c >> >> This is on iOS using CAEAGLayer as the renderer. >> >> 0 in YUV colorspace turns out to be green. Where exactly should I look to fix this issue so we can get either one of 2 things. >> >> 1. The green should become black (0x80 in YUV) >> 2. A proper notification that we actually have the first decoded frame (or the first key frame) from the RTP H264 stream and we should display the video window. >> >> Thanks >> >> >> _______________________________________________ >> Visit our blog: http://blog.pjsip.org >> >> pjsip mailing list >> pjsip@xxxxxxxxxxxxxxx >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org _______________________________________________ Visit our blog: http://blog.pjsip.org pjsip mailing list pjsip@xxxxxxxxxxxxxxx http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org