From b32c80d0cfc7b47fc344f8e5873771f803fbeb4d Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Tue, 19 Jul 2011 11:11:07 +0000 Subject: Fixed #1271: protected all video features with PJMEDIA_HAS_VIDEO macro setting. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3667 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-codec/ffmpeg_codecs.c | 6 +- pjmedia/src/pjmedia-codec/h263_packetizer.c | 7 +++ pjmedia/src/pjmedia-codec/h264_packetizer.c | 7 +++ pjmedia/src/pjmedia-videodev/colorbar_dev.c | 5 +- pjmedia/src/pjmedia-videodev/dshow_dev.c | 4 +- pjmedia/src/pjmedia-videodev/dshowclasses.cpp | 5 +- pjmedia/src/pjmedia-videodev/errno.c | 7 +++ pjmedia/src/pjmedia-videodev/ffmpeg_dev.c | 5 +- pjmedia/src/pjmedia-videodev/sdl_dev.c | 5 +- pjmedia/src/pjmedia-videodev/videodev.c | 7 +++ pjmedia/src/pjmedia/avi_player.c | 6 ++ pjmedia/src/pjmedia/endpoint.c | 28 ++++++--- pjmedia/src/pjmedia/format.c | 87 +++++++++++++++------------ pjmedia/src/pjmedia/vid_codec.c | 6 ++ pjmedia/src/pjmedia/vid_codec_util.c | 7 +++ pjmedia/src/pjmedia/vid_port.c | 7 +++ pjmedia/src/pjmedia/vid_stream.c | 4 ++ pjmedia/src/pjmedia/vid_tee.c | 7 +++ pjmedia/src/test/test.c | 6 +- pjmedia/src/test/test.h | 6 +- pjmedia/src/test/vid_codec_test.c | 5 ++ pjmedia/src/test/vid_dev_test.c | 7 +++ pjmedia/src/test/vid_port_test.c | 7 +++ pjsip-apps/src/samples/aviplay.c | 15 +++++ pjsip-apps/src/samples/simpleua.c | 23 +++---- pjsip-apps/src/samples/vid_streamutil.c | 17 ++++++ pjsip/src/pjsua-lib/pjsua_acc.c | 15 +++++ pjsip/src/pjsua-lib/pjsua_call.c | 4 ++ pjsip/src/pjsua-lib/pjsua_dump.c | 4 ++ pjsip/src/pjsua-lib/pjsua_media.c | 7 ++- 30 files changed, 255 insertions(+), 71 deletions(-) diff --git a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c index ddf02c1a..007905af 100644 --- a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c +++ b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c @@ -31,9 +31,11 @@ /* - * Only build this file if PJMEDIA_HAS_FFMPEG_CODEC != 0 + * Only build this file if PJMEDIA_HAS_FFMPEG_CODEC != 0 and + * PJMEDIA_HAS_VIDEO != 0 */ -#if defined(PJMEDIA_HAS_FFMPEG_CODEC) && PJMEDIA_HAS_FFMPEG_CODEC != 0 +#if defined(PJMEDIA_HAS_FFMPEG_CODEC) && PJMEDIA_HAS_FFMPEG_CODEC != 0 && \ + defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) #define THIS_FILE "ffmpeg_codecs.c" diff --git a/pjmedia/src/pjmedia-codec/h263_packetizer.c b/pjmedia/src/pjmedia-codec/h263_packetizer.c index 149c2e64..fd751366 100644 --- a/pjmedia/src/pjmedia-codec/h263_packetizer.c +++ b/pjmedia/src/pjmedia-codec/h263_packetizer.c @@ -22,6 +22,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "h263_packetizer.c" @@ -285,3 +289,6 @@ PJ_DEF(pj_status_t) pjmedia_h263_unpacketize (pjmedia_h263_packetizer *pktz, return PJ_SUCCESS; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia-codec/h264_packetizer.c b/pjmedia/src/pjmedia-codec/h264_packetizer.c index 8eb22d6f..8d59c863 100644 --- a/pjmedia/src/pjmedia-codec/h264_packetizer.c +++ b/pjmedia/src/pjmedia-codec/h264_packetizer.c @@ -24,6 +24,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "h264_packetizer.c" #define DBG_PACKETIZE 0 @@ -528,3 +532,6 @@ PJ_DEF(pj_status_t) pjmedia_h264_unpacketize(pjmedia_h264_packetizer *pktz, return PJ_SUCCESS; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia-videodev/colorbar_dev.c b/pjmedia/src/pjmedia-videodev/colorbar_dev.c index 7d6c348f..ef343e00 100644 --- a/pjmedia/src/pjmedia-videodev/colorbar_dev.c +++ b/pjmedia/src/pjmedia-videodev/colorbar_dev.c @@ -22,7 +22,10 @@ #include #include -#if PJMEDIA_VIDEO_DEV_HAS_CBAR_SRC + +#if defined(PJMEDIA_VIDEO_DEV_HAS_CBAR_SRC) && \ + PJMEDIA_VIDEO_DEV_HAS_CBAR_SRC != 0 + #define THIS_FILE "colorbar_dev.c" #define DEFAULT_CLOCK_RATE 90000 diff --git a/pjmedia/src/pjmedia-videodev/dshow_dev.c b/pjmedia/src/pjmedia-videodev/dshow_dev.c index c69393fa..cfc7a7e6 100644 --- a/pjmedia/src/pjmedia-videodev/dshow_dev.c +++ b/pjmedia/src/pjmedia-videodev/dshow_dev.c @@ -22,7 +22,9 @@ #include #include -#if PJMEDIA_VIDEO_DEV_HAS_DSHOW + +#if defined(PJMEDIA_VIDEO_DEV_HAS_DSHOW) && PJMEDIA_VIDEO_DEV_HAS_DSHOW != 0 + #ifdef _MSC_VER # pragma warning(push, 3) diff --git a/pjmedia/src/pjmedia-videodev/dshowclasses.cpp b/pjmedia/src/pjmedia-videodev/dshowclasses.cpp index bdddd01f..333d1420 100644 --- a/pjmedia/src/pjmedia-videodev/dshowclasses.cpp +++ b/pjmedia/src/pjmedia-videodev/dshowclasses.cpp @@ -19,7 +19,9 @@ #include -#if PJMEDIA_VIDEO_DEV_HAS_DSHOW + +#if defined(PJMEDIA_VIDEO_DEV_HAS_DSHOW) && PJMEDIA_VIDEO_DEV_HAS_DSHOW != 0 + #include #include @@ -242,4 +244,5 @@ extern "C" void SourceFilter_SetMediaType(SourceFilter *src, ((OutputPin *)src->GetPin(0))->bufSize = pmt->lSampleSize; } + #endif /* PJMEDIA_VIDEO_DEV_HAS_DSHOW */ diff --git a/pjmedia/src/pjmedia-videodev/errno.c b/pjmedia/src/pjmedia-videodev/errno.c index c0729ca0..6a553ec9 100644 --- a/pjmedia/src/pjmedia-videodev/errno.c +++ b/pjmedia/src/pjmedia-videodev/errno.c @@ -25,6 +25,10 @@ * Message must be limited to 64 chars! */ + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #if defined(PJ_HAS_ERROR_STRING) && (PJ_HAS_ERROR_STRING != 0) static const struct @@ -110,3 +114,6 @@ PJ_DEF(pj_str_t) pjmedia_videodev_strerror(pj_status_t statcode, return errstr; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia-videodev/ffmpeg_dev.c b/pjmedia/src/pjmedia-videodev/ffmpeg_dev.c index aa02c87b..3c0de4a6 100644 --- a/pjmedia/src/pjmedia-videodev/ffmpeg_dev.c +++ b/pjmedia/src/pjmedia-videodev/ffmpeg_dev.c @@ -37,7 +37,9 @@ #include #include -#if PJMEDIA_VIDEO_DEV_HAS_FFMPEG + +#if defined(PJMEDIA_VIDEO_DEV_HAS_FFMPEG) && PJMEDIA_VIDEO_DEV_HAS_FFMPEG != 0 + #define THIS_FILE "ffmpeg.c" @@ -511,4 +513,5 @@ static pj_status_t ffmpeg_stream_destroy(pjmedia_vid_dev_stream *s) # pragma comment( lib, "avutil.lib") #endif + #endif /* PJMEDIA_VIDEO_DEV_HAS_FFMPEG */ diff --git a/pjmedia/src/pjmedia-videodev/sdl_dev.c b/pjmedia/src/pjmedia-videodev/sdl_dev.c index 115b362e..3e437ad8 100644 --- a/pjmedia/src/pjmedia-videodev/sdl_dev.c +++ b/pjmedia/src/pjmedia-videodev/sdl_dev.c @@ -22,7 +22,9 @@ #include #include -#if PJMEDIA_VIDEO_DEV_HAS_SDL + +#if defined(PJMEDIA_VIDEO_DEV_HAS_SDL) && PJMEDIA_VIDEO_DEV_HAS_SDL != 0 + #if defined(PJ_DARWINOS) && PJ_DARWINOS!=0 # include @@ -1288,4 +1290,5 @@ static pj_status_t sdl_stream_destroy(pjmedia_vid_dev_stream *strm) # endif #endif + #endif /* PJMEDIA_VIDEO_DEV_HAS_SDL */ diff --git a/pjmedia/src/pjmedia-videodev/videodev.c b/pjmedia/src/pjmedia-videodev/videodev.c index 833608e8..f626a555 100644 --- a/pjmedia/src/pjmedia-videodev/videodev.c +++ b/pjmedia/src/pjmedia-videodev/videodev.c @@ -23,6 +23,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "videodev.c" #define DEFINE_CAP(name, info) {name, info} @@ -804,3 +808,6 @@ PJ_DEF(pj_status_t) pjmedia_vid_dev_stream_destroy( { return strm->op->destroy(strm); } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia/avi_player.c b/pjmedia/src/pjmedia/avi_player.c index ce8d914a..d15932ee 100644 --- a/pjmedia/src/pjmedia/avi_player.c +++ b/pjmedia/src/pjmedia/avi_player.c @@ -32,6 +32,9 @@ #include +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "avi_player.c" #define AVIF_MUSTUSEINDEX 0x00000020 @@ -709,3 +712,6 @@ static pj_status_t avi_on_destroy(pjmedia_port *this_port) pj_file_close(fport->fd); return PJ_SUCCESS; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia/endpoint.c b/pjmedia/src/pjmedia/endpoint.c index 75831f1f..385850ba 100644 --- a/pjmedia/src/pjmedia/endpoint.c +++ b/pjmedia/src/pjmedia/endpoint.c @@ -523,6 +523,9 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_audio_sdp(pjmedia_endpt *endpt, return PJ_SUCCESS; } + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + /* Create m=video SDP media line */ PJ_DEF(pj_status_t) pjmedia_endpt_create_video_sdp(pjmedia_endpt *endpt, pj_pool_t *pool, @@ -530,6 +533,8 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_video_sdp(pjmedia_endpt *endpt, unsigned options, pjmedia_sdp_media **p_m) { + + const pj_str_t STR_VIDEO = { "video", 5 }; pjmedia_sdp_media *m; pjmedia_vid_codec_info codec_info[PJMEDIA_VID_CODEC_MGR_MAX_CODECS]; @@ -661,6 +666,8 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_video_sdp(pjmedia_endpt *endpt, return PJ_SUCCESS; } +#endif /* PJMEDIA_HAS_VIDEO */ + /** * Create a "blank" SDP session description. The SDP will contain basic SDP @@ -729,7 +736,6 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_sdp( pjmedia_endpt *endpt, const pj_sockaddr *addr0; pjmedia_sdp_session *sdp; pjmedia_sdp_media *m; - unsigned i; pj_status_t status; /* Sanity check arguments */ @@ -750,14 +756,20 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_sdp( pjmedia_endpt *endpt, return status; sdp->media[sdp->media_count++] = m; - /* The remaining stream, if any, are videos (by convention as well) */ - for (i=1; imedia[sdp->media_count++] = m; +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + { + unsigned i; + + /* The remaining stream, if any, are videos (by convention as well) */ + for (i=1; imedia[sdp->media_count++] = m; + } } +#endif /* Done */ *p_sdp = sdp; diff --git a/pjmedia/src/pjmedia/format.c b/pjmedia/src/pjmedia/format.c index a5612dae..95a46e37 100644 --- a/pjmedia/src/pjmedia/format.c +++ b/pjmedia/src/pjmedia/format.c @@ -23,6 +23,52 @@ #include #include + +PJ_DEF(void) pjmedia_format_init_audio( pjmedia_format *fmt, + pj_uint32_t fmt_id, + unsigned clock_rate, + unsigned channel_count, + unsigned bits_per_sample, + unsigned frame_time_usec, + pj_uint32_t avg_bps, + pj_uint32_t max_bps) +{ + fmt->id = fmt_id; + fmt->type = PJMEDIA_TYPE_AUDIO; + fmt->detail_type = PJMEDIA_FORMAT_DETAIL_AUDIO; + + fmt->det.aud.clock_rate = clock_rate; + fmt->det.aud.channel_count = channel_count; + fmt->det.aud.bits_per_sample = bits_per_sample; + fmt->det.aud.frame_time_usec = frame_time_usec; + fmt->det.aud.avg_bps = avg_bps; + fmt->det.aud.max_bps = max_bps; +} + + +PJ_DEF(pjmedia_audio_format_detail*) +pjmedia_format_get_audio_format_detail(const pjmedia_format *fmt, + pj_bool_t assert_valid) +{ + if (fmt->detail_type==PJMEDIA_FORMAT_DETAIL_AUDIO) { + return (pjmedia_audio_format_detail*) &fmt->det.aud; + } else { + pj_assert(!assert_valid || !"Invalid audio format detail"); + return NULL; + } +} + + +PJ_DEF(pjmedia_format*) pjmedia_format_copy(pjmedia_format *dst, + const pjmedia_format *src) +{ + return (pjmedia_format*)pj_memcpy(dst, src, sizeof(*src)); +} + + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + static pj_status_t apply_packed_fmt(const pjmedia_video_format_info *fi, pjmedia_video_apply_fmt_param *aparam); @@ -56,28 +102,6 @@ static pjmedia_video_format_info built_in_vid_fmt_info[] = {PJMEDIA_FORMAT_I422JPEG, "I422JPG", PJMEDIA_COLOR_MODEL_YUV, 16, 3, &apply_planar_422}, }; - -PJ_DEF(void) pjmedia_format_init_audio( pjmedia_format *fmt, - pj_uint32_t fmt_id, - unsigned clock_rate, - unsigned channel_count, - unsigned bits_per_sample, - unsigned frame_time_usec, - pj_uint32_t avg_bps, - pj_uint32_t max_bps) -{ - fmt->id = fmt_id; - fmt->type = PJMEDIA_TYPE_AUDIO; - fmt->detail_type = PJMEDIA_FORMAT_DETAIL_AUDIO; - - fmt->det.aud.clock_rate = clock_rate; - fmt->det.aud.channel_count = channel_count; - fmt->det.aud.bits_per_sample = bits_per_sample; - fmt->det.aud.frame_time_usec = frame_time_usec; - fmt->det.aud.avg_bps = avg_bps; - fmt->det.aud.max_bps = max_bps; -} - PJ_DEF(void) pjmedia_format_init_video( pjmedia_format *fmt, pj_uint32_t fmt_id, unsigned width, @@ -112,18 +136,6 @@ PJ_DEF(void) pjmedia_format_init_video( pjmedia_format *fmt, } } -PJ_DEF(pjmedia_audio_format_detail*) -pjmedia_format_get_audio_format_detail(const pjmedia_format *fmt, - pj_bool_t assert_valid) -{ - if (fmt->detail_type==PJMEDIA_FORMAT_DETAIL_AUDIO) { - return (pjmedia_audio_format_detail*) &fmt->det.aud; - } else { - pj_assert(!assert_valid || !"Invalid audio format detail"); - return NULL; - } -} - PJ_DEF(pjmedia_video_format_detail*) pjmedia_format_get_video_format_detail(const pjmedia_format *fmt, pj_bool_t assert_valid) @@ -136,12 +148,6 @@ pjmedia_format_get_video_format_detail(const pjmedia_format *fmt, } } -PJ_DEF(pjmedia_format*) pjmedia_format_copy(pjmedia_format *dst, - const pjmedia_format *src) -{ - return (pjmedia_format*)pj_memcpy(dst, src, sizeof(*src)); -} - static pj_status_t apply_packed_fmt(const pjmedia_video_format_info *fi, pjmedia_video_apply_fmt_param *aparam) @@ -364,3 +370,4 @@ PJ_DEF(void) pjmedia_video_format_mgr_destroy(pjmedia_video_format_mgr *mgr) video_format_mgr_instance = NULL; } +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia/vid_codec.c b/pjmedia/src/pjmedia/vid_codec.c index 8eded7df..5a3b9fad 100644 --- a/pjmedia/src/pjmedia/vid_codec.c +++ b/pjmedia/src/pjmedia/vid_codec.c @@ -24,6 +24,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "vid_codec.c" static pjmedia_vid_codec_mgr *def_vid_codec_mgr; @@ -729,3 +733,5 @@ pjmedia_vid_codec_mgr_dealloc_codec(pjmedia_vid_codec_mgr *mgr, return (*codec->factory->op->dealloc_codec)(codec->factory, codec); } + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia/vid_codec_util.c b/pjmedia/src/pjmedia/vid_codec_util.c index 17e713a3..d3fea7a9 100644 --- a/pjmedia/src/pjmedia/vid_codec_util.c +++ b/pjmedia/src/pjmedia/vid_codec_util.c @@ -24,6 +24,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "vid_codec_util.c" /* If this is set to non-zero, H.264 custom negotiation will require @@ -617,3 +621,6 @@ PJ_DEF(pj_status_t) pjmedia_vid_codec_h264_apply_fmtp( return PJ_SUCCESS; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia/vid_port.c b/pjmedia/src/pjmedia/vid_port.c index e5db8b10..672d2296 100644 --- a/pjmedia/src/pjmedia/vid_port.c +++ b/pjmedia/src/pjmedia/vid_port.c @@ -25,6 +25,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define SIGNATURE PJMEDIA_SIG_VID_PORT #define THIS_FILE "vid_port.c" @@ -946,3 +950,6 @@ static pj_status_t vid_pasv_port_get_frame(struct pjmedia_port *this_port, return status; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia/vid_stream.c b/pjmedia/src/pjmedia/vid_stream.c index 216674b5..4a4fa18c 100644 --- a/pjmedia/src/pjmedia/vid_stream.c +++ b/pjmedia/src/pjmedia/vid_stream.c @@ -38,6 +38,9 @@ #include /* memcpy() */ +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "vid_stream.c" #define ERRLEVEL 1 #define LOGERR_(expr) stream_perror expr @@ -1938,3 +1941,4 @@ PJ_DEF(pj_status_t) pjmedia_vid_stream_info_from_sdp( return status; } +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/pjmedia/vid_tee.c b/pjmedia/src/pjmedia/vid_tee.c index dd12ec3e..4ba737a9 100644 --- a/pjmedia/src/pjmedia/vid_tee.c +++ b/pjmedia/src/pjmedia/vid_tee.c @@ -23,6 +23,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define TEE_PORT_NAME "vid_tee" #define TEE_PORT_SIGN PJMEDIA_SIG_PORT_VID_TEE #define MAX_DST_PORT_COUNT 20 @@ -382,3 +386,6 @@ static pj_status_t tee_destroy(pjmedia_port *port) return PJ_SUCCESS; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/test/test.c b/pjmedia/src/test/test.c index d243ed8a..82b20e17 100644 --- a/pjmedia/src/test/test.c +++ b/pjmedia/src/test/test.c @@ -58,9 +58,11 @@ int test_main(void) mem = &caching_pool.factory; +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) pjmedia_video_format_mgr_create(pool, 64, 0, NULL); pjmedia_converter_mgr_create(pool, NULL); pjmedia_vid_codec_mgr_create(pool, NULL); +#endif #if HAS_VID_PORT_TEST DO_TEST(vid_port_test()); @@ -99,10 +101,12 @@ on_return: PJ_LOG(3,(THIS_FILE,"Looks like everything is okay!")); } +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) pjmedia_video_format_mgr_destroy(pjmedia_video_format_mgr_instance()); pjmedia_converter_mgr_destroy(pjmedia_converter_mgr_instance()); pjmedia_vid_codec_mgr_destroy(pjmedia_vid_codec_mgr_instance()); - +#endif + pj_pool_release(pool); pj_caching_pool_destroy(&caching_pool); diff --git a/pjmedia/src/test/test.h b/pjmedia/src/test/test.h index abd7d0bd..f7fae812 100644 --- a/pjmedia/src/test/test.h +++ b/pjmedia/src/test/test.h @@ -23,9 +23,9 @@ #include #include -#define HAS_VID_DEV_TEST 1 -#define HAS_VID_PORT_TEST 0 -#define HAS_VID_CODEC_TEST 1 +#define HAS_VID_DEV_TEST PJMEDIA_HAS_VIDEO +#define HAS_VID_PORT_TEST PJMEDIA_HAS_VIDEO +#define HAS_VID_CODEC_TEST PJMEDIA_HAS_VIDEO #define HAS_SDP_NEG_TEST 1 #define HAS_JBUF_TEST 1 #define HAS_MIPS_TEST 1 diff --git a/pjmedia/src/test/vid_codec_test.c b/pjmedia/src/test/vid_codec_test.c index 36ca19ac..41171a9a 100644 --- a/pjmedia/src/test/vid_codec_test.c +++ b/pjmedia/src/test/vid_codec_test.c @@ -4,6 +4,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "vid_codec.c" #define BYPASS_CODEC 0 @@ -465,3 +469,4 @@ on_return: } +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/test/vid_dev_test.c b/pjmedia/src/test/vid_dev_test.c index 0b4572a5..08b60a54 100644 --- a/pjmedia/src/test/vid_dev_test.c +++ b/pjmedia/src/test/vid_dev_test.c @@ -23,6 +23,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "vid_dev_test.c" #define LOOP_DURATION 10 @@ -292,3 +296,6 @@ on_return: return rc; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjmedia/src/test/vid_port_test.c b/pjmedia/src/test/vid_port_test.c index 5d04e24b..b47cd1b5 100644 --- a/pjmedia/src/test/vid_port_test.c +++ b/pjmedia/src/test/vid_port_test.c @@ -23,6 +23,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #define THIS_FILE "vid_dev_test.c" #define LOOP_DURATION 6 @@ -239,3 +243,6 @@ on_return: return rc; } + + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjsip-apps/src/samples/aviplay.c b/pjsip-apps/src/samples/aviplay.c index a6602ba1..a949256a 100644 --- a/pjsip-apps/src/samples/aviplay.c +++ b/pjsip-apps/src/samples/aviplay.c @@ -54,6 +54,9 @@ */ +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + /* For logging purpose. */ #define THIS_FILE "aviplay.c" @@ -529,3 +532,15 @@ int main(int argc, char *argv[]) { return pj_run_app(&main_func, argc, argv, 0); } + +#else + +int main(int argc, char *argv[]) +{ + PJ_UNUSED_ARG(argc); + PJ_UNUSED_ARG(argv); + puts("Error: this sample requires video capability (PJMEDIA_HAS_VIDEO == 1)"); + return -1; +} + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjsip-apps/src/samples/simpleua.c b/pjsip-apps/src/samples/simpleua.c index 056de017..58cde4c0 100644 --- a/pjsip-apps/src/samples/simpleua.c +++ b/pjsip-apps/src/samples/simpleua.c @@ -103,7 +103,7 @@ static pjsip_inv_session *g_inv; /* Current invite session. */ static pjmedia_stream *g_med_stream; /* Call's audio stream. */ static pjmedia_snd_port *g_snd_port; /* Sound device. */ -#if PJMEDIA_HAS_VIDEO +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) static pjmedia_vid_stream *g_med_vstream; /* Call's video stream. */ static pjmedia_vid_port *g_vid_capturer;/* Call's video capturer. */ static pjmedia_vid_port *g_vid_renderer;/* Call's video renderer. */ @@ -373,8 +373,8 @@ int main(int argc, char *argv[]) #endif +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) /* Init video subsystem */ -#if PJMEDIA_HAS_VIDEO pool = pjmedia_endpt_create_pool(g_med_endpt, "Video subsystem", 512, 512); status = pjmedia_video_format_mgr_create(pool, 64, 0, NULL); PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); @@ -385,7 +385,7 @@ int main(int argc, char *argv[]) status = pjmedia_vid_dev_subsys_init(&cp.factory); PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); -# if PJMEDIA_HAS_FFMPEG_CODEC +# if defined(PJMEDIA_HAS_FFMPEG_CODEC) && PJMEDIA_HAS_FFMPEG_CODEC!=0 /* Init ffmpeg video codecs */ status = pjmedia_codec_ffmpeg_init(NULL, &cp.factory); PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); @@ -557,8 +557,8 @@ int main(int argc, char *argv[]) if (g_snd_port) pjmedia_snd_port_destroy(g_snd_port); +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) /* Destroy video ports */ -#if PJMEDIA_HAS_VIDEO if (g_vid_capturer) pjmedia_vid_port_destroy(g_vid_capturer); if (g_vid_renderer) @@ -568,9 +568,15 @@ int main(int argc, char *argv[]) /* Destroy streams */ if (g_med_stream) pjmedia_stream_destroy(g_med_stream); -#if PJMEDIA_HAS_VIDEO +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) if (g_med_vstream) pjmedia_vid_stream_destroy(g_med_vstream); + + /* Deinit ffmpeg codec */ +# if defined(PJMEDIA_HAS_FFMPEG_CODEC) && PJMEDIA_HAS_FFMPEG_CODEC!=0 + pjmedia_codec_ffmpeg_deinit(); +# endif + #endif /* Destroy media transports */ @@ -579,11 +585,6 @@ int main(int argc, char *argv[]) pjmedia_transport_close(g_med_transport[i]); } - /* Deinit ffmpeg codec */ -#if PJMEDIA_HAS_FFMPEG_CODEC - pjmedia_codec_ffmpeg_deinit(); -#endif - /* Deinit pjmedia endpoint */ if (g_med_endpt) pjmedia_endpt_destroy(g_med_endpt); @@ -885,7 +886,7 @@ static void call_on_media_update( pjsip_inv_session *inv, * which is video stream. With this media port interface, we can attach * the port directly to a renderer/capture video device. */ -#if PJMEDIA_HAS_VIDEO +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) if (local_sdp->media_count > 1) { pjmedia_vid_stream_info vstream_info; pjmedia_vid_port_param vport_param; diff --git a/pjsip-apps/src/samples/vid_streamutil.c b/pjsip-apps/src/samples/vid_streamutil.c index 4d50b387..21be5c7c 100644 --- a/pjsip-apps/src/samples/vid_streamutil.c +++ b/pjsip-apps/src/samples/vid_streamutil.c @@ -35,6 +35,10 @@ #include #include + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + + #include /* atoi() */ #include @@ -927,3 +931,16 @@ on_exit: return (status == PJ_SUCCESS) ? 0 : 1; } + + +#else + +int main(int argc, char *argv[]) +{ + PJ_UNUSED_ARG(argc); + PJ_UNUSED_ARG(argv); + puts("Error: this sample requires video capability (PJMEDIA_HAS_VIDEO == 1)"); + return -1; +} + +#endif /* PJMEDIA_HAS_VIDEO */ diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index 6947c1aa..98fe5cd8 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -382,6 +382,13 @@ PJ_DEF(pj_status_t) pjsua_acc_add( const pjsua_acc_config *cfg, /* Must have a transport */ PJ_ASSERT_RETURN(pjsua_var.tpdata[0].data.ptr != NULL, PJ_EINVALIDOP); + /* Verify media count */ +#if !defined(PJMEDIA_HAS_VIDEO) || (PJMEDIA_HAS_VIDEO == 0) + PJ_ASSERT_RETURN(cfg->max_video_cnt == 0, PJ_EINVAL); +#endif + PJ_ASSERT_RETURN(cfg->max_audio_cnt + cfg->max_video_cnt <= + PJSUA_MAX_CALL_MEDIA, PJ_ETOOMANY); + PJSUA_LOCK(); /* Find empty account id. */ @@ -641,6 +648,14 @@ PJ_DEF(pj_status_t) pjsua_acc_modify( pjsua_acc_id acc_id, PJ_ASSERT_RETURN(acc_id>=0 && acc_id<(int)PJ_ARRAY_SIZE(pjsua_var.acc), PJ_EINVAL); + /* Verify media count */ +#if !defined(PJMEDIA_HAS_VIDEO) || (PJMEDIA_HAS_VIDEO == 0) + PJ_ASSERT_RETURN(cfg->max_video_cnt == 0, PJ_EINVAL); +#endif + PJ_ASSERT_RETURN(cfg->max_audio_cnt + cfg->max_video_cnt <= + PJSUA_MAX_CALL_MEDIA, PJ_ETOOMANY); + + PJSUA_LOCK(); acc = &pjsua_var.acc[acc_id]; diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index f8abc938..2679a3ad 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -1465,10 +1465,12 @@ PJ_DEF(pj_status_t) pjsua_call_get_stream_info( pjsua_call_id call_id, status = pjmedia_stream_get_info(call_med->strm.a.stream, &psi->info.aud); break; +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) case PJMEDIA_TYPE_VIDEO: status = pjmedia_vid_stream_get_info(call_med->strm.v.stream, &psi->info.vid); break; +#endif default: status = PJMEDIA_EINVALIMEDIATYPE; break; @@ -1512,6 +1514,7 @@ PJ_DEF(pj_status_t) pjsua_call_get_stream_stat( pjsua_call_id call_id, status = pjmedia_stream_get_stat_jbuf(call_med->strm.a.stream, &stat->jbuf); break; +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) case PJMEDIA_TYPE_VIDEO: status = pjmedia_vid_stream_get_stat(call_med->strm.v.stream, &stat->rtcp); @@ -1519,6 +1522,7 @@ PJ_DEF(pj_status_t) pjsua_call_get_stream_stat( pjsua_call_id call_id, status = pjmedia_vid_stream_get_stat_jbuf(call_med->strm.v.stream, &stat->jbuf); break; +#endif default: status = PJMEDIA_EINVALIMEDIATYPE; break; diff --git a/pjsip/src/pjsua-lib/pjsua_dump.c b/pjsip/src/pjsua-lib/pjsua_dump.c index f94e036f..8dec22b8 100644 --- a/pjsip/src/pjsua-lib/pjsua_dump.c +++ b/pjsip/src/pjsua-lib/pjsua_dump.c @@ -312,6 +312,8 @@ static void dump_media_session(const char *indent, info.tx_pt, info.param->setting.frm_per_pkt* info.param->info.frm_ptime); + +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) } else if (call_med->type == PJMEDIA_TYPE_VIDEO) { pjmedia_vid_stream *stream = call_med->strm.v.stream; pjmedia_vid_stream_info info; @@ -343,6 +345,8 @@ static void dump_media_session(const char *indent, vfd->size.w, vfd->size.h, vfd->fps.num*1.0/vfd->fps.denum); } +#endif /* PJMEDIA_HAS_VIDEO */ + } else { has_stat = PJ_FALSE; } diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 94e81566..f9995045 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -1247,6 +1247,7 @@ pj_status_t pjsua_call_media_init(pjsua_call_media *call_med, call_med->tp_st = PJSUA_MED_TP_IDLE; +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) /* While in initial call, set default video devices */ if (type == PJMEDIA_TYPE_VIDEO) { call_med->strm.v.rdr_dev = acc->cfg.vid_rend_dev; @@ -1262,6 +1263,8 @@ pj_status_t pjsua_call_media_init(pjsua_call_media *call_med, call_med->strm.v.cap_dev = info.id; } } +#endif + } else if (call_med->tp_st == PJSUA_MED_TP_DISABLED) { /* Media is being reenabled. */ call_med->tp_st = PJSUA_MED_TP_INIT; @@ -1650,10 +1653,12 @@ pj_status_t pjsua_media_channel_create_sdp(pjsua_call_id call_id, status = pjmedia_endpt_create_audio_sdp(pjsua_var.med_endpt, pool, &tpinfo.sock_info, 0, &m); break; +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) case PJMEDIA_TYPE_VIDEO: status = pjmedia_endpt_create_video_sdp(pjsua_var.med_endpt, pool, &tpinfo.sock_info, 0, &m); break; +#endif default: pj_assert(!"Invalid call_med media type"); return PJ_EBUG; @@ -2124,7 +2129,7 @@ pj_status_t pjsua_media_channel_update(pjsua_call_id call_id, call->audio_idx = mi; } break; -#if PJMEDIA_HAS_VIDEO +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) case PJMEDIA_TYPE_VIDEO: status = video_channel_update(call_med, tmp_pool, local_sdp, remote_sdp); -- cgit v1.2.3