Fixed #1271: protected all video features with PJMEDIA_HAS_VIDEO macro setting.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3667 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
parent
d93c68a997
commit
63b3c13cd2
|
@ -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"
|
||||
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
#include <pj/errno.h>
|
||||
#include <pj/string.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -24,6 +24,10 @@
|
|||
#include <pj/pool.h>
|
||||
#include <pj/string.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -22,7 +22,10 @@
|
|||
#include <pj/os.h>
|
||||
#include <pj/rand.h>
|
||||
|
||||
#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
|
||||
|
|
|
@ -22,7 +22,9 @@
|
|||
#include <pj/os.h>
|
||||
#include <pj/unicode.h>
|
||||
|
||||
#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)
|
||||
|
|
|
@ -19,7 +19,9 @@
|
|||
|
||||
#include <pjmedia-videodev/config.h>
|
||||
|
||||
#if PJMEDIA_VIDEO_DEV_HAS_DSHOW
|
||||
|
||||
#if defined(PJMEDIA_VIDEO_DEV_HAS_DSHOW) && PJMEDIA_VIDEO_DEV_HAS_DSHOW != 0
|
||||
|
||||
|
||||
#include <assert.h>
|
||||
#include <streams.h>
|
||||
|
@ -242,4 +244,5 @@ extern "C" void SourceFilter_SetMediaType(SourceFilter *src,
|
|||
((OutputPin *)src->GetPin(0))->bufSize = pmt->lSampleSize;
|
||||
}
|
||||
|
||||
|
||||
#endif /* PJMEDIA_VIDEO_DEV_HAS_DSHOW */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -37,7 +37,9 @@
|
|||
#include <pj/os.h>
|
||||
#include <pj/unicode.h>
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -22,7 +22,9 @@
|
|||
#include <pj/log.h>
|
||||
#include <pj/os.h>
|
||||
|
||||
#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 <Foundation/Foundation.h>
|
||||
|
@ -1288,4 +1290,5 @@ static pj_status_t sdl_stream_destroy(pjmedia_vid_dev_stream *strm)
|
|||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* PJMEDIA_VIDEO_DEV_HAS_SDL */
|
||||
|
|
|
@ -23,6 +23,10 @@
|
|||
#include <pj/pool.h>
|
||||
#include <pj/string.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
#include <pj/string.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -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; i<stream_cnt; ++i) {
|
||||
status = pjmedia_endpt_create_video_sdp(endpt, pool,
|
||||
&sock_info[i], 0, &m);
|
||||
if (status != PJ_SUCCESS)
|
||||
return status;
|
||||
sdp->media[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; i<stream_cnt; ++i) {
|
||||
status = pjmedia_endpt_create_video_sdp(endpt, pool,
|
||||
&sock_info[i], 0, &m);
|
||||
if (status != PJ_SUCCESS)
|
||||
return status;
|
||||
sdp->media[sdp->media_count++] = m;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Done */
|
||||
*p_sdp = sdp;
|
||||
|
|
|
@ -23,6 +23,52 @@
|
|||
#include <pj/pool.h>
|
||||
#include <pj/string.h>
|
||||
|
||||
|
||||
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 */
|
||||
|
|
|
@ -24,6 +24,10 @@
|
|||
#include <pj/log.h>
|
||||
#include <pj/string.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -24,6 +24,10 @@
|
|||
#include <pj/ctype.h>
|
||||
#include <pj/math.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -25,6 +25,10 @@
|
|||
#include <pj/log.h>
|
||||
#include <pj/pool.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -38,6 +38,9 @@
|
|||
#include <pj/string.h> /* 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 */
|
||||
|
|
|
@ -23,6 +23,10 @@
|
|||
#include <pj/log.h>
|
||||
#include <pj/pool.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -23,9 +23,9 @@
|
|||
#include <pjmedia.h>
|
||||
#include <pjlib.h>
|
||||
|
||||
#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
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
#include <pjmedia/vid_codec.h>
|
||||
#include <pjmedia/port.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -23,6 +23,10 @@
|
|||
#include <pjmedia/vid_codec.h>
|
||||
#include <pjmedia_videodev.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -23,6 +23,10 @@
|
|||
#include <pjmedia/vid_codec.h>
|
||||
#include <pjmedia_videodev.h>
|
||||
|
||||
|
||||
#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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -35,6 +35,10 @@
|
|||
#include <pjmedia-codec.h>
|
||||
#include <pjmedia/transport_srtp.h>
|
||||
|
||||
|
||||
#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0)
|
||||
|
||||
|
||||
#include <stdlib.h> /* atoi() */
|
||||
#include <stdio.h>
|
||||
|
||||
|
@ -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 */
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue