Re #1182:
- Added video stream interface in vid_stream.h, the video stream will be able to handle different video formats in encoding and decoding direction.
- Renamed video device stream class identifiers from 'pjmedia_vid_stream*' to 'pjmedia_vid_dev_stream*' as 'pjmedia_vid_stream' is used by video stream interface.
- Added ffmpeg video capability to be able to parse SDP format param for H263 and also decide video format for encoding direction based on remote preference and local format-capability setting.
- Added some new APIs in jitter buffer for handling video stream: pjmedia_jbuf_put_frame3(), pjmedia_jbuf_get_frame3(), pjmedia_jbuf_peek_frame(), and pjmedia_jbuf_remove_frame().
- Moved pjmedia_stream_info_from_sdp() from session to stream
git-svn-id: https://svn.pjsip.org/repos/pjproject/branches/projects/2.0-dev@3420 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjmedia/src/pjmedia-videodev/colorbar_dev.c b/pjmedia/src/pjmedia-videodev/colorbar_dev.c
index 9f5d2c4..74d0622 100644
--- a/pjmedia/src/pjmedia-videodev/colorbar_dev.c
+++ b/pjmedia/src/pjmedia-videodev/colorbar_dev.c
@@ -80,12 +80,12 @@
/* Video stream. */
struct cbar_stream
{
- pjmedia_vid_stream base; /**< Base stream */
- pjmedia_vid_param param; /**< Settings */
- pj_pool_t *pool; /**< Memory pool. */
+ pjmedia_vid_dev_stream base; /**< Base stream */
+ pjmedia_vid_param param; /**< Settings */
+ pj_pool_t *pool; /**< Memory pool. */
- pjmedia_vid_cb vid_cb; /**< Stream callback. */
- void *user_data; /**< Application data. */
+ pjmedia_vid_cb vid_cb; /**< Stream callback. */
+ void *user_data; /**< Application data. */
const struct cbar_fmt_info *cbfi;
const pjmedia_video_format_info *vfi;
@@ -105,25 +105,26 @@
pjmedia_vid_dev_factory *f,
unsigned index,
pjmedia_vid_param *param);
-static pj_status_t cbar_factory_create_stream(pjmedia_vid_dev_factory *f,
- const pjmedia_vid_param *param,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm);
+static pj_status_t cbar_factory_create_stream(
+ pjmedia_vid_dev_factory *f,
+ const pjmedia_vid_param *param,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm);
-static pj_status_t cbar_stream_get_param(pjmedia_vid_stream *strm,
+static pj_status_t cbar_stream_get_param(pjmedia_vid_dev_stream *strm,
pjmedia_vid_param *param);
-static pj_status_t cbar_stream_get_cap(pjmedia_vid_stream *strm,
+static pj_status_t cbar_stream_get_cap(pjmedia_vid_dev_stream *strm,
pjmedia_vid_dev_cap cap,
void *value);
-static pj_status_t cbar_stream_set_cap(pjmedia_vid_stream *strm,
+static pj_status_t cbar_stream_set_cap(pjmedia_vid_dev_stream *strm,
pjmedia_vid_dev_cap cap,
const void *value);
-static pj_status_t cbar_stream_get_frame(pjmedia_vid_stream *strm,
+static pj_status_t cbar_stream_get_frame(pjmedia_vid_dev_stream *strm,
pjmedia_frame *frame);
-static pj_status_t cbar_stream_start(pjmedia_vid_stream *strm);
-static pj_status_t cbar_stream_stop(pjmedia_vid_stream *strm);
-static pj_status_t cbar_stream_destroy(pjmedia_vid_stream *strm);
+static pj_status_t cbar_stream_start(pjmedia_vid_dev_stream *strm);
+static pj_status_t cbar_stream_stop(pjmedia_vid_dev_stream *strm);
+static pj_status_t cbar_stream_destroy(pjmedia_vid_dev_stream *strm);
/* Operations */
static pjmedia_vid_dev_factory_op factory_op =
@@ -136,7 +137,7 @@
&cbar_factory_create_stream
};
-static pjmedia_vid_stream_op stream_op =
+static pjmedia_vid_dev_stream_op stream_op =
{
&cbar_stream_get_param,
&cbar_stream_get_cap,
@@ -354,11 +355,12 @@
}
/* API: create stream */
-static pj_status_t cbar_factory_create_stream(pjmedia_vid_dev_factory *f,
- const pjmedia_vid_param *param,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm)
+static pj_status_t cbar_factory_create_stream(
+ pjmedia_vid_dev_factory *f,
+ const pjmedia_vid_param *param,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm)
{
struct cbar_factory *cf = (struct cbar_factory*)f;
pj_pool_t *pool;
@@ -419,7 +421,7 @@
}
/* API: Get stream info. */
-static pj_status_t cbar_stream_get_param(pjmedia_vid_stream *s,
+static pj_status_t cbar_stream_get_param(pjmedia_vid_dev_stream *s,
pjmedia_vid_param *pi)
{
struct cbar_stream *strm = (struct cbar_stream*)s;
@@ -438,7 +440,7 @@
}
/* API: get capability */
-static pj_status_t cbar_stream_get_cap(pjmedia_vid_stream *s,
+static pj_status_t cbar_stream_get_cap(pjmedia_vid_dev_stream *s,
pjmedia_vid_dev_cap cap,
void *pval)
{
@@ -458,7 +460,7 @@
}
/* API: set capability */
-static pj_status_t cbar_stream_set_cap(pjmedia_vid_stream *s,
+static pj_status_t cbar_stream_set_cap(pjmedia_vid_dev_stream *s,
pjmedia_vid_dev_cap cap,
const void *pval)
{
@@ -552,7 +554,7 @@
}
/* API: Get frame from stream */
-static pj_status_t cbar_stream_get_frame(pjmedia_vid_stream *strm,
+static pj_status_t cbar_stream_get_frame(pjmedia_vid_dev_stream *strm,
pjmedia_frame *frame)
{
struct cbar_stream *stream = (struct cbar_stream*)strm;
@@ -561,7 +563,7 @@
}
/* API: Start stream. */
-static pj_status_t cbar_stream_start(pjmedia_vid_stream *strm)
+static pj_status_t cbar_stream_start(pjmedia_vid_dev_stream *strm)
{
struct cbar_stream *stream = (struct cbar_stream*)strm;
@@ -573,7 +575,7 @@
}
/* API: Stop stream. */
-static pj_status_t cbar_stream_stop(pjmedia_vid_stream *strm)
+static pj_status_t cbar_stream_stop(pjmedia_vid_dev_stream *strm)
{
struct cbar_stream *stream = (struct cbar_stream*)strm;
@@ -586,7 +588,7 @@
/* API: Destroy stream. */
-static pj_status_t cbar_stream_destroy(pjmedia_vid_stream *strm)
+static pj_status_t cbar_stream_destroy(pjmedia_vid_dev_stream *strm)
{
struct cbar_stream *stream = (struct cbar_stream*)strm;
diff --git a/pjmedia/src/pjmedia-videodev/dshow_dev.c b/pjmedia/src/pjmedia-videodev/dshow_dev.c
index 7b14c82..2fdd547 100644
--- a/pjmedia/src/pjmedia-videodev/dshow_dev.c
+++ b/pjmedia/src/pjmedia-videodev/dshow_dev.c
@@ -89,19 +89,19 @@
/* Video stream. */
struct dshow_stream
{
- pjmedia_vid_stream base; /**< Base stream */
- pjmedia_vid_param param; /**< Settings */
- pj_pool_t *pool; /**< Memory pool. */
+ pjmedia_vid_dev_stream base; /**< Base stream */
+ pjmedia_vid_param param; /**< Settings */
+ pj_pool_t *pool; /**< Memory pool. */
- pjmedia_vid_cb vid_cb; /**< Stream callback. */
- void *user_data; /**< Application data. */
+ pjmedia_vid_cb vid_cb; /**< Stream callback. */
+ void *user_data; /**< Application data. */
- pj_bool_t quit_flag;
- pj_bool_t rend_thread_exited;
- pj_bool_t cap_thread_exited;
- pj_bool_t cap_thread_initialized;
- pj_thread_desc cap_thread_desc;
- pj_thread_t *cap_thread;
+ pj_bool_t quit_flag;
+ pj_bool_t rend_thread_exited;
+ pj_bool_t cap_thread_exited;
+ pj_bool_t cap_thread_initialized;
+ pj_thread_desc cap_thread_desc;
+ pj_thread_t *cap_thread;
struct dshow_graph
{
@@ -126,25 +126,26 @@
pjmedia_vid_dev_factory *f,
unsigned index,
pjmedia_vid_param *param);
-static pj_status_t dshow_factory_create_stream(pjmedia_vid_dev_factory *f,
- const pjmedia_vid_param *param,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm);
+static pj_status_t dshow_factory_create_stream(
+ pjmedia_vid_dev_factory *f,
+ const pjmedia_vid_param *param,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm);
-static pj_status_t dshow_stream_get_param(pjmedia_vid_stream *strm,
+static pj_status_t dshow_stream_get_param(pjmedia_vid_dev_stream *strm,
pjmedia_vid_param *param);
-static pj_status_t dshow_stream_get_cap(pjmedia_vid_stream *strm,
+static pj_status_t dshow_stream_get_cap(pjmedia_vid_dev_stream *strm,
pjmedia_vid_dev_cap cap,
void *value);
-static pj_status_t dshow_stream_set_cap(pjmedia_vid_stream *strm,
+static pj_status_t dshow_stream_set_cap(pjmedia_vid_dev_stream *strm,
pjmedia_vid_dev_cap cap,
const void *value);
-static pj_status_t dshow_stream_start(pjmedia_vid_stream *strm);
-static pj_status_t dshow_stream_put_frame(pjmedia_vid_stream *strm,
+static pj_status_t dshow_stream_start(pjmedia_vid_dev_stream *strm);
+static pj_status_t dshow_stream_put_frame(pjmedia_vid_dev_stream *strm,
const pjmedia_frame *frame);
-static pj_status_t dshow_stream_stop(pjmedia_vid_stream *strm);
-static pj_status_t dshow_stream_destroy(pjmedia_vid_stream *strm);
+static pj_status_t dshow_stream_stop(pjmedia_vid_dev_stream *strm);
+static pj_status_t dshow_stream_destroy(pjmedia_vid_dev_stream *strm);
/* Operations */
static pjmedia_vid_dev_factory_op factory_op =
@@ -157,7 +158,7 @@
&dshow_factory_create_stream
};
-static pjmedia_vid_stream_op stream_op =
+static pjmedia_vid_dev_stream_op stream_op =
{
&dshow_stream_get_param,
&dshow_stream_get_cap,
@@ -395,8 +396,8 @@
/* Set the device capabilities here */
param->clock_rate = DEFAULT_CLOCK_RATE;
- param->frame_rate.num = DEFAULT_FPS;
- param->frame_rate.denum = 1;
+ //param->frame_rate.num = DEFAULT_FPS;
+ //param->frame_rate.denum = 1;
param->flags = PJMEDIA_VID_DEV_CAP_FORMAT;
pjmedia_format_copy(¶m->fmt, &di->info.fmt[0]);
@@ -438,7 +439,7 @@
}
/* API: Put frame from stream */
-static pj_status_t dshow_stream_put_frame(pjmedia_vid_stream *strm,
+static pj_status_t dshow_stream_put_frame(pjmedia_vid_dev_stream *strm,
const pjmedia_frame *frame)
{
struct dshow_stream *stream = (struct dshow_stream*)strm;
@@ -697,11 +698,12 @@
}
/* API: create stream */
-static pj_status_t dshow_factory_create_stream(pjmedia_vid_dev_factory *f,
- const pjmedia_vid_param *param,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm)
+static pj_status_t dshow_factory_create_stream(
+ pjmedia_vid_dev_factory *f,
+ const pjmedia_vid_param *param,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm)
{
struct dshow_factory *df = (struct dshow_factory*)f;
pj_pool_t *pool;
@@ -752,12 +754,12 @@
return PJ_SUCCESS;
on_error:
- dshow_stream_destroy((pjmedia_vid_stream *)strm);
+ dshow_stream_destroy((pjmedia_vid_dev_stream *)strm);
return PJ_EUNKNOWN;
}
/* API: Get stream info. */
-static pj_status_t dshow_stream_get_param(pjmedia_vid_stream *s,
+static pj_status_t dshow_stream_get_param(pjmedia_vid_dev_stream *s,
pjmedia_vid_param *pi)
{
struct dshow_stream *strm = (struct dshow_stream*)s;
@@ -776,7 +778,7 @@
}
/* API: get capability */
-static pj_status_t dshow_stream_get_cap(pjmedia_vid_stream *s,
+static pj_status_t dshow_stream_get_cap(pjmedia_vid_dev_stream *s,
pjmedia_vid_dev_cap cap,
void *pval)
{
@@ -796,7 +798,7 @@
}
/* API: set capability */
-static pj_status_t dshow_stream_set_cap(pjmedia_vid_stream *s,
+static pj_status_t dshow_stream_set_cap(pjmedia_vid_dev_stream *s,
pjmedia_vid_dev_cap cap,
const void *pval)
{
@@ -816,7 +818,7 @@
}
/* API: Start stream. */
-static pj_status_t dshow_stream_start(pjmedia_vid_stream *strm)
+static pj_status_t dshow_stream_start(pjmedia_vid_dev_stream *strm)
{
struct dshow_stream *stream = (struct dshow_stream*)strm;
unsigned i;
@@ -842,7 +844,7 @@
}
/* API: Stop stream. */
-static pj_status_t dshow_stream_stop(pjmedia_vid_stream *strm)
+static pj_status_t dshow_stream_stop(pjmedia_vid_dev_stream *strm)
{
struct dshow_stream *stream = (struct dshow_stream*)strm;
unsigned i;
@@ -868,7 +870,7 @@
/* API: Destroy stream. */
-static pj_status_t dshow_stream_destroy(pjmedia_vid_stream *strm)
+static pj_status_t dshow_stream_destroy(pjmedia_vid_dev_stream *strm)
{
struct dshow_stream *stream = (struct dshow_stream*)strm;
unsigned i;
diff --git a/pjmedia/src/pjmedia-videodev/ffmpeg_dev.c b/pjmedia/src/pjmedia-videodev/ffmpeg_dev.c
index abedbf8..6e6ff8e 100644
--- a/pjmedia/src/pjmedia-videodev/ffmpeg_dev.c
+++ b/pjmedia/src/pjmedia-videodev/ffmpeg_dev.c
@@ -67,7 +67,7 @@
typedef struct ffmpeg_stream
{
- pjmedia_vid_stream base;
+ pjmedia_vid_dev_stream base;
ffmpeg_factory *factory;
pj_pool_t *pool;
pjmedia_vid_param param;
@@ -80,31 +80,32 @@
static pj_status_t ffmpeg_factory_destroy(pjmedia_vid_dev_factory *f);
static unsigned ffmpeg_factory_get_dev_count(pjmedia_vid_dev_factory *f);
static pj_status_t ffmpeg_factory_get_dev_info(pjmedia_vid_dev_factory *f,
- unsigned index,
- pjmedia_vid_dev_info *info);
+ unsigned index,
+ pjmedia_vid_dev_info *info);
static pj_status_t ffmpeg_factory_default_param(pj_pool_t *pool,
pjmedia_vid_dev_factory *f,
unsigned index,
pjmedia_vid_param *param);
-static pj_status_t ffmpeg_factory_create_stream(pjmedia_vid_dev_factory *f,
- const pjmedia_vid_param *param,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm);
+static pj_status_t ffmpeg_factory_create_stream(
+ pjmedia_vid_dev_factory *f,
+ const pjmedia_vid_param *param,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm);
-static pj_status_t ffmpeg_stream_get_param(pjmedia_vid_stream *strm,
- pjmedia_vid_param *param);
-static pj_status_t ffmpeg_stream_get_cap(pjmedia_vid_stream *strm,
- pjmedia_vid_dev_cap cap,
- void *value);
-static pj_status_t ffmpeg_stream_set_cap(pjmedia_vid_stream *strm,
- pjmedia_vid_dev_cap cap,
- const void *value);
-static pj_status_t ffmpeg_stream_start(pjmedia_vid_stream *strm);
-static pj_status_t ffmpeg_stream_get_frame(pjmedia_vid_stream *s,
+static pj_status_t ffmpeg_stream_get_param(pjmedia_vid_dev_stream *strm,
+ pjmedia_vid_param *param);
+static pj_status_t ffmpeg_stream_get_cap(pjmedia_vid_dev_stream *strm,
+ pjmedia_vid_dev_cap cap,
+ void *value);
+static pj_status_t ffmpeg_stream_set_cap(pjmedia_vid_dev_stream *strm,
+ pjmedia_vid_dev_cap cap,
+ const void *value);
+static pj_status_t ffmpeg_stream_start(pjmedia_vid_dev_stream *strm);
+static pj_status_t ffmpeg_stream_get_frame(pjmedia_vid_dev_stream *s,
pjmedia_frame *frame);
-static pj_status_t ffmpeg_stream_stop(pjmedia_vid_stream *strm);
-static pj_status_t ffmpeg_stream_destroy(pjmedia_vid_stream *strm);
+static pj_status_t ffmpeg_stream_stop(pjmedia_vid_dev_stream *strm);
+static pj_status_t ffmpeg_stream_destroy(pjmedia_vid_dev_stream *strm);
/* Operations */
static pjmedia_vid_dev_factory_op factory_op =
@@ -117,7 +118,7 @@
&ffmpeg_factory_create_stream
};
-static pjmedia_vid_stream_op stream_op =
+static pjmedia_vid_dev_stream_op stream_op =
{
&ffmpeg_stream_get_param,
&ffmpeg_stream_get_cap,
@@ -152,14 +153,14 @@
const pjmedia_vid_param *param)
{
AVFormatParameters fp;
- pjmedia_video_format_detail *fmt_detail;
+ pjmedia_video_format_detail *vfd;
int err;
PJ_ASSERT_RETURN(ctx && ifmt && dev_name && param, PJ_EINVAL);
PJ_ASSERT_RETURN(param->fmt.detail_type == PJMEDIA_FORMAT_DETAIL_VIDEO,
PJ_EINVAL);
- fmt_detail = (pjmedia_video_format_detail*)param->fmt.detail;
+ vfd = pjmedia_format_get_video_format_detail(¶m->fmt, PJ_TRUE);
/* Init ffmpeg format context */
*ctx = avformat_alloc_context();
@@ -167,11 +168,11 @@
/* Init ffmpeg format param */
pj_bzero(&fp, sizeof(fp));
fp.prealloced_context = 1;
- fp.width = fmt_detail->size.w;
- fp.height = fmt_detail->size.h;
+ fp.width = vfd->size.w;
+ fp.height = vfd->size.h;
fp.pix_fmt = PIX_FMT_BGR24;
- fp.time_base.num = param->frame_rate.denum;
- fp.time_base.den = param->frame_rate.num;
+ fp.time_base.num = vfd->fps.denum;
+ fp.time_base.den = vfd->fps.num;
/* Open capture stream */
err = av_open_input_stream(ctx, NULL, dev_name, ifmt, &fp);
@@ -288,8 +289,8 @@
/* API: get device info */
static pj_status_t ffmpeg_factory_get_dev_info(pjmedia_vid_dev_factory *f,
- unsigned index,
- pjmedia_vid_dev_info *info)
+ unsigned index,
+ pjmedia_vid_dev_info *info)
{
ffmpeg_factory *ff = (ffmpeg_factory*)f;
@@ -308,9 +309,11 @@
{
ffmpeg_factory *ff = (ffmpeg_factory*)f;
ffmpeg_dev_info *info;
- pjmedia_video_format_detail *fmt_detail;
PJ_ASSERT_RETURN(index < ff->dev_count, PJMEDIA_EVID_INVDEV);
+
+ PJ_UNUSED_ARG(pool);
+
info = &ff->dev_info[index];
pj_bzero(param, sizeof(*param));
@@ -321,13 +324,9 @@
/* Set the device capabilities here */
param->flags = PJMEDIA_VID_DEV_CAP_FORMAT;
- pj_memcpy(¶m->fmt, &info->base.fmt[0], sizeof(param->fmt));
param->clock_rate = 90000;
- pjmedia_format_init_video(pool, ¶m->fmt, 320, 240, 25, 1,
- 0, 0);
- fmt_detail = (pjmedia_video_format_detail*)param->fmt.detail;
- param->frame_rate.num = fmt_detail->fps.num;
- param->frame_rate.denum = fmt_detail->fps.denum;
+ pjmedia_format_init_video(¶m->fmt, 0, 320, 240, 25, 1);
+ param->fmt.id = info->base.fmt[0].id;
return PJ_SUCCESS;
}
@@ -335,11 +334,12 @@
/* API: create stream */
-static pj_status_t ffmpeg_factory_create_stream(pjmedia_vid_dev_factory *f,
- const pjmedia_vid_param *param,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm)
+static pj_status_t ffmpeg_factory_create_stream(
+ pjmedia_vid_dev_factory *f,
+ const pjmedia_vid_param *param,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm)
{
ffmpeg_factory *ff = (ffmpeg_factory*)f;
pj_pool_t *pool;
@@ -348,8 +348,8 @@
PJ_ASSERT_RETURN(f && param && p_vid_strm, PJ_EINVAL);
PJ_ASSERT_RETURN(param->dir == PJMEDIA_DIR_CAPTURE, PJ_EINVAL);
PJ_ASSERT_RETURN((unsigned)param->cap_id < ff->dev_count, PJ_EINVAL);
- PJ_ASSERT_RETURN(param->fmt.detail_type == PJMEDIA_FORMAT_DETAIL_VIDEO &&
- param->fmt.detail, PJ_EINVAL);
+ PJ_ASSERT_RETURN(param->fmt.detail_type == PJMEDIA_FORMAT_DETAIL_VIDEO,
+ PJ_EINVAL);
PJ_UNUSED_ARG(cb);
PJ_UNUSED_ARG(user_data);
@@ -371,7 +371,7 @@
}
/* API: Get stream info. */
-static pj_status_t ffmpeg_stream_get_param(pjmedia_vid_stream *s,
+static pj_status_t ffmpeg_stream_get_param(pjmedia_vid_dev_stream *s,
pjmedia_vid_param *pi)
{
ffmpeg_stream *strm = (ffmpeg_stream*)s;
@@ -384,9 +384,9 @@
}
/* API: get capability */
-static pj_status_t ffmpeg_stream_get_cap(pjmedia_vid_stream *s,
- pjmedia_vid_dev_cap cap,
- void *pval)
+static pj_status_t ffmpeg_stream_get_cap(pjmedia_vid_dev_stream *s,
+ pjmedia_vid_dev_cap cap,
+ void *pval)
{
ffmpeg_stream *strm = (ffmpeg_stream*)s;
@@ -398,9 +398,9 @@
}
/* API: set capability */
-static pj_status_t ffmpeg_stream_set_cap(pjmedia_vid_stream *s,
- pjmedia_vid_dev_cap cap,
- const void *pval)
+static pj_status_t ffmpeg_stream_set_cap(pjmedia_vid_dev_stream *s,
+ pjmedia_vid_dev_cap cap,
+ const void *pval)
{
ffmpeg_stream *strm = (ffmpeg_stream*)s;
@@ -413,7 +413,7 @@
/* API: Start stream. */
-static pj_status_t ffmpeg_stream_start(pjmedia_vid_stream *s)
+static pj_status_t ffmpeg_stream_start(pjmedia_vid_dev_stream *s)
{
ffmpeg_stream *strm = (ffmpeg_stream*)s;
ffmpeg_dev_info *info;
@@ -435,7 +435,7 @@
/* API: Get frame from stream */
-static pj_status_t ffmpeg_stream_get_frame(pjmedia_vid_stream *s,
+static pj_status_t ffmpeg_stream_get_frame(pjmedia_vid_dev_stream *s,
pjmedia_frame *frame)
{
ffmpeg_stream *strm = (ffmpeg_stream*)s;
@@ -458,7 +458,7 @@
/* API: Stop stream. */
-static pj_status_t ffmpeg_stream_stop(pjmedia_vid_stream *s)
+static pj_status_t ffmpeg_stream_stop(pjmedia_vid_dev_stream *s)
{
ffmpeg_stream *strm = (ffmpeg_stream*)s;
@@ -472,7 +472,7 @@
/* API: Destroy stream. */
-static pj_status_t ffmpeg_stream_destroy(pjmedia_vid_stream *s)
+static pj_status_t ffmpeg_stream_destroy(pjmedia_vid_dev_stream *s)
{
ffmpeg_stream *strm = (ffmpeg_stream*)s;
diff --git a/pjmedia/src/pjmedia-videodev/sdl_dev.c b/pjmedia/src/pjmedia-videodev/sdl_dev.c
index a60060c..6a05029 100644
--- a/pjmedia/src/pjmedia-videodev/sdl_dev.c
+++ b/pjmedia/src/pjmedia-videodev/sdl_dev.c
@@ -90,28 +90,28 @@
/* Video stream. */
struct sdl_stream
{
- pjmedia_vid_stream base; /**< Base stream */
- pjmedia_vid_param param; /**< Settings */
- pj_pool_t *pool; /**< Memory pool. */
+ pjmedia_vid_dev_stream base; /**< Base stream */
+ pjmedia_vid_param param; /**< Settings */
+ pj_pool_t *pool; /**< Memory pool. */
- pjmedia_vid_cb vid_cb; /**< Stream callback. */
- void *user_data; /**< Application data. */
+ pjmedia_vid_cb vid_cb; /**< Stream callback. */
+ void *user_data; /**< Application data. */
- pj_thread_t *sdl_thread; /**< SDL thread. */
- pj_bool_t is_quitting;
- pj_bool_t is_running;
- pj_bool_t render_exited;
- pj_status_t status;
+ pj_thread_t *sdl_thread; /**< SDL thread. */
+ pj_bool_t is_quitting;
+ pj_bool_t is_running;
+ pj_bool_t render_exited;
+ pj_status_t status;
- SDL_Rect rect; /**< Display rectangle. */
- SDL_Surface *screen; /**< Display screen. */
- SDL_Surface *surf; /**< RGB surface. */
- SDL_Overlay *overlay; /**< YUV overlay. */
+ SDL_Rect rect; /**< Display rectangle. */
+ SDL_Surface *screen; /**< Display screen. */
+ SDL_Surface *surf; /**< RGB surface. */
+ SDL_Overlay *overlay; /**< YUV overlay. */
/* For frame conversion */
- pjmedia_converter *conv;
- pjmedia_conversion_param conv_param;
- pjmedia_frame conv_buf;
+ pjmedia_converter *conv;
+ pjmedia_conversion_param conv_param;
+ pjmedia_frame conv_buf;
pjmedia_video_apply_fmt_param vafp;
};
@@ -128,25 +128,26 @@
pjmedia_vid_dev_factory *f,
unsigned index,
pjmedia_vid_param *param);
-static pj_status_t sdl_factory_create_stream(pjmedia_vid_dev_factory *f,
- const pjmedia_vid_param *param,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm);
+static pj_status_t sdl_factory_create_stream(
+ pjmedia_vid_dev_factory *f,
+ const pjmedia_vid_param *param,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm);
-static pj_status_t sdl_stream_get_param(pjmedia_vid_stream *strm,
+static pj_status_t sdl_stream_get_param(pjmedia_vid_dev_stream *strm,
pjmedia_vid_param *param);
-static pj_status_t sdl_stream_get_cap(pjmedia_vid_stream *strm,
+static pj_status_t sdl_stream_get_cap(pjmedia_vid_dev_stream *strm,
pjmedia_vid_dev_cap cap,
void *value);
-static pj_status_t sdl_stream_set_cap(pjmedia_vid_stream *strm,
+static pj_status_t sdl_stream_set_cap(pjmedia_vid_dev_stream *strm,
pjmedia_vid_dev_cap cap,
const void *value);
-static pj_status_t sdl_stream_put_frame(pjmedia_vid_stream *strm,
+static pj_status_t sdl_stream_put_frame(pjmedia_vid_dev_stream *strm,
const pjmedia_frame *frame);
-static pj_status_t sdl_stream_start(pjmedia_vid_stream *strm);
-static pj_status_t sdl_stream_stop(pjmedia_vid_stream *strm);
-static pj_status_t sdl_stream_destroy(pjmedia_vid_stream *strm);
+static pj_status_t sdl_stream_start(pjmedia_vid_dev_stream *strm);
+static pj_status_t sdl_stream_stop(pjmedia_vid_dev_stream *strm);
+static pj_status_t sdl_stream_destroy(pjmedia_vid_dev_stream *strm);
/* Operations */
static pjmedia_vid_dev_factory_op factory_op =
@@ -159,7 +160,7 @@
&sdl_factory_create_stream
};
-static pjmedia_vid_stream_op stream_op =
+static pjmedia_vid_dev_stream_op stream_op =
{
&sdl_stream_get_param,
&sdl_stream_get_cap,
@@ -407,9 +408,9 @@
break;
}
if (strm->is_running)
- pjmedia_vid_stream_stop(&strm->base);
+ pjmedia_vid_dev_stream_stop(&strm->base);
else
- pjmedia_vid_stream_start(&strm->base);
+ pjmedia_vid_dev_stream_start(&strm->base);
break;
case SDL_VIDEORESIZE:
pevent.event_type = PJMEDIA_EVENT_WINDOW_RESIZE;
@@ -433,7 +434,8 @@
/**
* To process PJMEDIA_EVENT_WINDOW_CLOSE event,
* application should do this in the on_event_cb callback:
- * 1. stop further calls to #pjmedia_vid_stream_put_frame()
+ * 1. stop further calls to
+ * #pjmedia_vid_dev_stream_put_frame()
* 2. return PJ_SUCCESS
* Upon returning from the callback, SDL will destroy its
* own stream.
@@ -483,11 +485,12 @@
}
/* API: create stream */
-static pj_status_t sdl_factory_create_stream(pjmedia_vid_dev_factory *f,
- const pjmedia_vid_param *param,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm)
+static pj_status_t sdl_factory_create_stream(
+ pjmedia_vid_dev_factory *f,
+ const pjmedia_vid_param *param,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm)
{
struct sdl_factory *sf = (struct sdl_factory*)f;
pj_pool_t *pool;
@@ -548,7 +551,7 @@
}
/* API: Get stream info. */
-static pj_status_t sdl_stream_get_param(pjmedia_vid_stream *s,
+static pj_status_t sdl_stream_get_param(pjmedia_vid_dev_stream *s,
pjmedia_vid_param *pi)
{
struct sdl_stream *strm = (struct sdl_stream*)s;
@@ -567,7 +570,7 @@
}
/* API: get capability */
-static pj_status_t sdl_stream_get_cap(pjmedia_vid_stream *s,
+static pj_status_t sdl_stream_get_cap(pjmedia_vid_dev_stream *s,
pjmedia_vid_dev_cap cap,
void *pval)
{
@@ -586,7 +589,7 @@
}
/* API: set capability */
-static pj_status_t sdl_stream_set_cap(pjmedia_vid_stream *s,
+static pj_status_t sdl_stream_set_cap(pjmedia_vid_dev_stream *s,
pjmedia_vid_dev_cap cap,
const void *pval)
{
@@ -605,7 +608,7 @@
}
/* API: Put frame from stream */
-static pj_status_t sdl_stream_put_frame(pjmedia_vid_stream *strm,
+static pj_status_t sdl_stream_put_frame(pjmedia_vid_dev_stream *strm,
const pjmedia_frame *frame)
{
struct sdl_stream *stream = (struct sdl_stream*)strm;
@@ -664,7 +667,7 @@
}
/* API: Start stream. */
-static pj_status_t sdl_stream_start(pjmedia_vid_stream *strm)
+static pj_status_t sdl_stream_start(pjmedia_vid_dev_stream *strm)
{
struct sdl_stream *stream = (struct sdl_stream*)strm;
@@ -677,7 +680,7 @@
}
/* API: Stop stream. */
-static pj_status_t sdl_stream_stop(pjmedia_vid_stream *strm)
+static pj_status_t sdl_stream_stop(pjmedia_vid_dev_stream *strm)
{
struct sdl_stream *stream = (struct sdl_stream*)strm;
unsigned i;
@@ -694,7 +697,7 @@
/* API: Destroy stream. */
-static pj_status_t sdl_stream_destroy(pjmedia_vid_stream *strm)
+static pj_status_t sdl_stream_destroy(pjmedia_vid_dev_stream *strm)
{
struct sdl_stream *stream = (struct sdl_stream*)strm;
SDL_Event sevent;
diff --git a/pjmedia/src/pjmedia-videodev/videodev.c b/pjmedia/src/pjmedia-videodev/videodev.c
index 7ca87cd..522f415 100644
--- a/pjmedia/src/pjmedia-videodev/videodev.c
+++ b/pjmedia/src/pjmedia-videodev/videodev.c
@@ -424,8 +424,8 @@
{
unsigned i;
- /* Allow shutdown() to be called multiple times as long as there is matching
- * number of init().
+ /* Allow shutdown() to be called multiple times as long as there is
+ * matching number of init().
*/
if (vid_subsys.init_count == 0) {
return PJ_SUCCESS;
@@ -546,7 +546,8 @@
PJ_ASSERT_RETURN(vid_subsys.pf, PJMEDIA_EVID_INIT);
for (drv_idx=0; drv_idx<vid_subsys.drv_cnt; ++drv_idx) {
- if (!pj_ansi_stricmp(drv_name, vid_subsys.drv[drv_idx].name)) {
+ if (!pj_ansi_stricmp(drv_name, vid_subsys.drv[drv_idx].name))
+ {
f = vid_subsys.drv[drv_idx].f;
break;
}
@@ -555,7 +556,8 @@
if (!f)
return PJ_ENOTFOUND;
- for (dev_idx=0; dev_idx<vid_subsys.drv[drv_idx].dev_cnt; ++dev_idx) {
+ for (dev_idx=0; dev_idx<vid_subsys.drv[drv_idx].dev_cnt; ++dev_idx)
+ {
pjmedia_vid_dev_info info;
pj_status_t status;
@@ -606,10 +608,11 @@
}
/* API: Open video stream object using the specified parameters. */
-PJ_DEF(pj_status_t) pjmedia_vid_stream_create(const pjmedia_vid_param *prm,
- const pjmedia_vid_cb *cb,
- void *user_data,
- pjmedia_vid_stream **p_vid_strm)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_create(
+ const pjmedia_vid_param *prm,
+ const pjmedia_vid_cb *cb,
+ void *user_data,
+ pjmedia_vid_dev_stream **p_vid_strm)
{
pjmedia_vid_dev_factory *cap_f=NULL, *rend_f=NULL, *f=NULL;
pjmedia_vid_param param;
@@ -674,8 +677,9 @@
}
/* API: Get the running parameters for the specified video stream. */
-PJ_DEF(pj_status_t) pjmedia_vid_stream_get_param(pjmedia_vid_stream *strm,
- pjmedia_vid_param *param)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_get_param(
+ pjmedia_vid_dev_stream *strm,
+ pjmedia_vid_param *param)
{
pj_status_t status;
@@ -694,49 +698,54 @@
}
/* API: Get the value of a specific capability of the video stream. */
-PJ_DEF(pj_status_t) pjmedia_vid_stream_get_cap(pjmedia_vid_stream *strm,
- pjmedia_vid_dev_cap cap,
- void *value)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_get_cap(
+ pjmedia_vid_dev_stream *strm,
+ pjmedia_vid_dev_cap cap,
+ void *value)
{
return strm->op->get_cap(strm, cap, value);
}
/* API: Set the value of a specific capability of the video stream. */
-PJ_DEF(pj_status_t) pjmedia_vid_stream_set_cap(pjmedia_vid_stream *strm,
- pjmedia_vid_dev_cap cap,
- const void *value)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_set_cap(
+ pjmedia_vid_dev_stream *strm,
+ pjmedia_vid_dev_cap cap,
+ const void *value)
{
return strm->op->set_cap(strm, cap, value);
}
/* API: Start the stream. */
-PJ_DEF(pj_status_t) pjmedia_vid_stream_start(pjmedia_vid_stream *strm)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_start(pjmedia_vid_dev_stream *strm)
{
return strm->op->start(strm);
}
-PJ_DEF(pj_status_t) pjmedia_vid_stream_get_frame(pjmedia_vid_stream *strm,
- pjmedia_frame *frame)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_get_frame(
+ pjmedia_vid_dev_stream *strm,
+ pjmedia_frame *frame)
{
pj_assert(strm->op->get_frame);
return strm->op->get_frame(strm, frame);
}
-PJ_DEF(pj_status_t) pjmedia_vid_stream_put_frame(pjmedia_vid_stream *strm,
- const pjmedia_frame *frame)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_put_frame(
+ pjmedia_vid_dev_stream *strm,
+ const pjmedia_frame *frame)
{
pj_assert(strm->op->put_frame);
return strm->op->put_frame(strm, frame);
}
/* API: Stop the stream. */
-PJ_DEF(pj_status_t) pjmedia_vid_stream_stop(pjmedia_vid_stream *strm)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_stop(pjmedia_vid_dev_stream *strm)
{
return strm->op->stop(strm);
}
/* API: Destroy the stream. */
-PJ_DEF(pj_status_t) pjmedia_vid_stream_destroy(pjmedia_vid_stream *strm)
+PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_destroy(
+ pjmedia_vid_dev_stream *strm)
{
return strm->op->destroy(strm);
}