summaryrefslogtreecommitdiff
path: root/pjmedia/src/pjmedia-videodev
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2012-04-10 12:23:35 +0000
committerLiong Sauw Ming <ming@teluu.com>2012-04-10 12:23:35 +0000
commit7710fc25a86323c8e9ecc6d71639971f9ee2cf70 (patch)
tree0ebafefe342ced291da788f827340ab5c4f4b89e /pjmedia/src/pjmedia-videodev
parent1e3cebce45a4f3b897493c1ad2d4bc97109fae2b (diff)
Re #1446 (misc): Modify SDL dev to:
* Resize renderer (instead of recreating it) if format does not change. * Create window in the requested position if PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION is specified. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4035 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src/pjmedia-videodev')
-rw-r--r--pjmedia/src/pjmedia-videodev/sdl_dev.c21
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,
- &param->window_pos);
- }
-
/* Done */
strm->base.op = &stream_op;
*p_vid_strm = &strm->base;