Exemple #1
0
// ---- VIDEO STUFF ---- //
pj_status_t vid_set_stream_window(pjsua_call_media* call_med, pjmedia_dir dir, void* window){
	pj_status_t status = PJ_ENOTFOUND;
	pjsua_vid_win *w = NULL;
	pjsua_vid_win_id wid;
	pjmedia_vid_dev_stream *dev;


	// We are looking for a rendering video dev
	if (call_med->type == PJMEDIA_TYPE_VIDEO
			&& (call_med->dir & dir)) {

		const char* dirName = (dir == PJMEDIA_DIR_RENDER) ? "render" : "capture";
		PJ_LOG(4, (THIS_FILE, "Has video %s media...", dirName));

		wid = (dir == PJMEDIA_DIR_RENDER) ? call_med->strm.v.rdr_win_id : call_med->strm.v.cap_win_id;
		w = &pjsua_var.win[wid];
		// Make sure we have a render dev
		if (w) {
			dev = pjmedia_vid_port_get_stream( (dir == PJMEDIA_DIR_RENDER) ? w->vp_rend : w->vp_cap);
			if (dev) {
				status = pjmedia_vid_dev_stream_set_cap(dev,
						PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW,
						(void*) window);
				PJ_LOG(4, (THIS_FILE, "Set %s window >> %x - %x", dirName, dev, window));
			}
		}
	}

	return status;
}
Exemple #2
0
static pj_status_t codec_on_event(pjmedia_event *event,
                                  void *user_data)
{
    codec_port_data_t *port_data = (codec_port_data_t*)user_data;

    if (event->type == PJMEDIA_EVENT_FMT_CHANGED) {
        pjmedia_vid_codec *codec = port_data->codec;
        pjmedia_vid_codec_param codec_param;
        pj_status_t status;

        status = pjmedia_vid_codec_get_param(codec, &codec_param);
        if (status != PJ_SUCCESS)
            return status;

        status = pjmedia_vid_dev_stream_set_cap(
                     pjmedia_vid_port_get_stream(port_data->rdr_port),
                     PJMEDIA_VID_DEV_CAP_FORMAT,
                     &codec_param.dec_fmt);
        if (status != PJ_SUCCESS)
            return status;
    }

    return PJ_SUCCESS;
}