diff options
-rw-r--r-- | pjmedia/src/pjmedia-videodev/sdl_dev.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/pjmedia/src/pjmedia-videodev/sdl_dev.c b/pjmedia/src/pjmedia-videodev/sdl_dev.c index b78c858f..78b520ed 100644 --- a/pjmedia/src/pjmedia-videodev/sdl_dev.c +++ b/pjmedia/src/pjmedia-videodev/sdl_dev.c @@ -734,6 +734,14 @@ static pj_status_t sdl_create_rend(struct sdl_stream * strm, strm->window = SDL_CreateWindowFrom( strm->param.window.info.window); } else { + int x, y; + + x = y = SDL_WINDOWPOS_CENTERED; + if (strm->param.flags & PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION) { + x = strm->param.window_pos.x; + y = strm->param.window_pos.y; + } + /* Create the window where we will draw. */ strm->window = SDL_CreateWindow("pjmedia-SDL video", SDL_WINDOWPOS_CENTERED, @@ -830,6 +838,12 @@ static pj_status_t change_format(struct sdl_stream *strm, { pj_status_t status; + if (new_fmt->id == strm->param.fmt.id) { + SDL_SetWindowSize(strm->window, new_fmt->det.vid.size.w, + new_fmt->det.vid.size.h); + return resize_disp(strm, &new_fmt->det.vid.size); + } + /* Recreate SDL renderer */ status = sdl_create_rend(strm, (new_fmt? new_fmt : &strm->param.fmt)); @@ -934,13 +948,6 @@ static pj_status_t sdl_factory_create_stream( pj_list_insert_after(&strm->sf->streams, &strm->list_entry); pj_mutex_unlock(strm->sf->mutex); - /* Apply the remaining settings */ - if (param->flags & PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION) { - sdl_stream_set_cap(&strm->base, - PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION, - ¶m->window_pos); - } - /* Done */ strm->base.op = &stream_op; *p_vid_strm = &strm->base; |