diff --git a/net/mediastreamer/Makefile b/net/mediastreamer/Makefile index 5414ab642426..2f526208019b 100644 --- a/net/mediastreamer/Makefile +++ b/net/mediastreamer/Makefile @@ -1,107 +1,105 @@ PORTNAME= mediastreamer -DISTVERSION= 5.2.37 -PORTREVISION= 2 +DISTVERSION= 5.2.94 CATEGORIES= net MAINTAINER= bofh@FreeBSD.org COMMENT= Real-time audio and video streaming and processing WWW= https://www.linphone.org/technical-corner/mediastreamer2 LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/LICENSE.txt LIB_DEPENDS= libbctoolbox.so:net/bctoolbox \ libbzrtp.so:security/bzrtp \ libortp.so:net/ortp \ libspeexdsp.so:audio/speexdsp \ libsrtp2.so:net/libsrtp2 USES= cmake compiler gnome python:build sqlite USE_GITLAB= yes GL_SITE= https://gitlab.linphone.org/BC GL_ACCOUNT= public GL_PROJECT= ${PORTNAME}2 -GL_TAGNAME= bd8ef7b1e5377c8c9598f8d53cac942deae6befc USE_GNOME= libxml2 USE_LDCONFIG= yes CMAKE_ARGS= -DCMAKE_PREFIX_PATH=${LOCALBASE} \ -DENABLE_ALSA=NO \ -DENABLE_BV16=NO \ -DENABLE_DOC=NO \ -DENABLE_JPEG=NO \ -DENABLE_OSS=YES \ -DENABLE_PULSEAUDIO=NO \ -DENABLE_STATIC=NO \ -DENABLE_STRICT=NO \ -DENABLE_TOOLS=NO \ -DENABLE_UNIT_TESTS=NO LDFLAGS+= -pthread OPTIONS_DEFINE= MATROSKA VIDEO OPTIONS_DEFAULT= FFMPEG G729 GLX GSM MATROSKA OPUS QTGL SPEEX THEORA \ V4L VIDEO VPX XVIDEO OPTIONS_GROUP= AUDIOOPT VIDEOOPT OPTIONS_GROUP_AUDIOOPT= G726 G729 GSM OPUS SPEEX OPTIONS_GROUP_VIDEOOPT= FFMPEG GLX QTGL THEORA V4L VPX XVIDEO OPTIONS_SUB= yes AUDIOOPT_DESC= Audio options G726_DESC= G.726 codec support G729_DESC= G.729 codec support VIDEOOPT_DESC= Video options QTGL_DESC= Qt OpenGL rendering support FFMPEG_IMPLIES= VIDEO FFMPEG_LIB_DEPENDS= libavcodec.so.58:multimedia/ffmpeg4 FFMPEG_CMAKE_BOOL= ENABLE_FFMPEG G726_LIB_DEPENDS= libspandsp.so:comms/spandsp G726_CMAKE_BOOL= ENABLE_G726 G729_LIB_DEPENDS= libbcg729.so:audio/bcg729 G729_CMAKE_BOOL= ENABLE_G729 GLX_IMPLIES= VIDEO GLX_USES= gl GLX_USE= GL=gl,glew GLX_CMAKE_BOOL= ENABLE_GL ENABLE_GLX GSM_LIB_DEPENDS= libgsm.so:audio/gsm GSM_CMAKE_BOOL= ENABLE_GSM MATROSKA_LIB_DEPENDS= libbcmatroska2.so:multimedia/bcmatroska2 MATROSKA_CMAKE_BOOL= ENABLE_MKV OPUS_LIB_DEPENDS= libopus.so:audio/opus OPUS_CMAKE_BOOL= ENABLE_OPUS QTGL_IMPLIES= VIDEO QTGL_USES= qt:5 QTGL_USE= QT=core,declarative,gui,network,buildtools:build,qmake:build QTGL_CMAKE_BOOL= ENABLE_QT_GL SPEEX_LIB_DEPENDS= libspeex.so:audio/speex SPEEX_CMAKE_BOOL= ENABLE_SPEEX_CODEC THEORA_IMPLIES= VIDEO THEORA_LIB_DEPENDS= libtheora.so:multimedia/libtheora THEORA_CMAKE_BOOL= ENABLE_THEORA V4L_IMPLIES= VIDEO V4L_BUILD_DEPENDS= v4l_compat>=1.0.20120501:multimedia/v4l_compat V4L_LIB_DEPENDS= libv4l2.so:multimedia/libv4l V4L_CMAKE_BOOL= ENABLE_V4L VIDEO_CMAKE_BOOL= ENABLE_VIDEO VPX_IMPLIES= VIDEO VPX_LIB_DEPENDS= libvpx.so:multimedia/libvpx VPX_CMAKE_BOOL= ENABLE_VPX XVIDEO_IMPLIES= VIDEO XVIDEO_USES= xorg XVIDEO_USE= XORG=x11,xorgproto,xv XVIDEO_CMAKE_BOOL= ENABLE_X11 ENABLE_XV XVIDEO_LDFLAGS= -L${LOCALBASE}/lib -lX11 .include post-patch: @${REINPLACE_CMD} 's,gsm/gsm\.h,gsm.h,' \ ${WRKSRC}/cmake/FindGSM.cmake ${WRKSRC}/src/audiofilters/gsm.c @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${PATCH_WRKSRC}/CMakeLists.txt .if ${CHOSEN_COMPILER_TYPE} == gcc @${REINPLACE_CMD} '/-Wno-format-truncation/d' ${WRKSRC}/CMakeLists.txt .endif .include diff --git a/net/mediastreamer/distinfo b/net/mediastreamer/distinfo index 6c53d29b3b1c..2ba470d18dc5 100644 --- a/net/mediastreamer/distinfo +++ b/net/mediastreamer/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1679147868 -SHA256 (public-mediastreamer2-bd8ef7b1e5377c8c9598f8d53cac942deae6befc_GL0.tar.gz) = 5a2265f2847001be85194894666cfdeec35be6af8e0322cf22230bfecd8da5eb -SIZE (public-mediastreamer2-bd8ef7b1e5377c8c9598f8d53cac942deae6befc_GL0.tar.gz) = 25309923 +TIMESTAMP = 1690560106 +SHA256 (mediastreamer2-5.2.94.tar.bz2) = ae44d252f95c41e754960197a51a1b178d5fc04d2f5df574c3fd024359bb3c6c +SIZE (mediastreamer2-5.2.94.tar.bz2) = 22833409 diff --git a/net/mediastreamer/files/patch-src-base-msfactory.c b/net/mediastreamer/files/patch-src-base-msfactory.c index 04b25a942550..65cd155bb714 100644 --- a/net/mediastreamer/files/patch-src-base-msfactory.c +++ b/net/mediastreamer/files/patch-src-base-msfactory.c @@ -1,29 +1,29 @@ ---- src/base/msfactory.c.orig 2022-06-10 12:50:07 UTC +--- src/base/msfactory.c.orig 2023-07-27 14:00:34 UTC +++ src/base/msfactory.c -@@ -20,11 +20,10 @@ +@@ -23,11 +23,10 @@ #ifdef HAVE_CONFIG_H #include "mediastreamer-config.h" #include "gitversion.h" -#else +#endif # ifndef MEDIASTREAMER_VERSION # define MEDIASTREAMER_VERSION "unknown" # endif -#endif #ifndef MS2_GIT_VERSION #define MS2_GIT_VERSION "unknown" -@@ -194,7 +193,7 @@ void ms_factory_init(MSFactory *obj){ +@@ -197,7 +196,7 @@ void ms_factory_init(MSFactory *obj){ GetNativeSystemInfo( &sysinfo ); num_cpu = sysinfo.dwNumberOfProcessors; -#elif __APPLE__ || __linux__ +#elif __APPLE__ || __linux || __DragonFly__ || __FreeBSD__ num_cpu = sysconf( _SC_NPROCESSORS_CONF); /*check the number of processors configured, not just the one that are currently active.*/ #elif __QNX__ num_cpu = _syspage_ptr->num_cpu; -@@ -1156,4 +1155,3 @@ const MSList *ms_factory_get_filter_decs(const MSFacto +@@ -1166,4 +1165,3 @@ const MSList *ms_factory_get_filter_decs(const MSFacto const MSList *ms_factory_get_filter_decs(const MSFactory *factory) { return factory->desc_list; } - diff --git a/net/mediastreamer/files/patch-src__audiofilters__oss.c b/net/mediastreamer/files/patch-src__audiofilters__oss.c index 23abb375018e..6d01141ba8b5 100644 --- a/net/mediastreamer/files/patch-src__audiofilters__oss.c +++ b/net/mediastreamer/files/patch-src__audiofilters__oss.c @@ -1,293 +1,293 @@ ---- src/audiofilters/oss.c.orig 2017-04-06 09:27:56 UTC +--- src/audiofilters/oss.c.orig 2023-07-27 14:00:34 UTC +++ src/audiofilters/oss.c -@@ -37,95 +37,65 @@ MSFilter *ms_oss_read_new(MSSndCard *card); +@@ -38,95 +38,65 @@ MSFilter *ms_oss_write_new(MSSndCard *card); MSFilter *ms_oss_write_new(MSSndCard *card); -static int configure_fd(int fd, int bits,int stereo, int rate, int *minsz) +static int configure_fd(int fd, int bits,int stereo, int rate, int *minsz, int *mindly) { - int p=0,cond=0; - int i=0; - int min_size=0,blocksize=512; + int p=0; + int min_size=0, blocksize=0; + int smp_size = bits / 8; int err; - //g_message("opening sound device"); - /* unset nonblocking mode */ - /* We wanted non blocking open but now put it back to normal ; thanks Xine !*/ - fcntl(fd, F_SETFL, fcntl(fd, F_GETFL)&~O_NONBLOCK); + err = 1; + ioctl(fd, FIONBIO, &err); - /* reset is maybe not needed but takes time*/ - /*ioctl(fd, SNDCTL_DSP_RESET, 0); */ + switch (bits) { + case 16: + p=AFMT_S16_NE; + break; + default: + close(fd); + return (-1); + } - p=AFMT_S16_NE; - err=ioctl(fd,SNDCTL_DSP_SETFMT,&p); if (err<0){ ms_warning("oss_open: can't set sample format:%s.",strerror(errno)); + close(fd); + return (-1); } - - p = bits; /* 16 bits */ - err=ioctl(fd, SNDCTL_DSP_SAMPLESIZE, &p); - if (err<0){ - ms_warning("oss_open: can't set sample size to %i:%s.",bits,strerror(errno)); - } - p = rate; /* rate in khz*/ err=ioctl(fd, SNDCTL_DSP_SPEED, &p); - if (err<0){ + if (err<0 || p != rate){ ms_warning("oss_open: can't set sample rate to %i:%s.",rate,strerror(errno)); + close(fd); + return (-1); } p = stereo; /* stereo or not */ err=ioctl(fd, SNDCTL_DSP_STEREO, &p); if (err<0){ ms_warning("oss_open: can't set mono/stereo mode:%s.",strerror(errno)); + close(fd); + return (-1); } - if (rate==16000) blocksize=4096; /* oss emulation is not very good at 16khz */ - else blocksize=blocksize*(rate/8000); - - ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &min_size); - - /** - * first try SNDCTL_DSP_SETFRAGMENT - */ - if (min_size>blocksize) { - int size_selector=0; - int frag; - while ((blocksize >> size_selector) != 1)size_selector++; /*compute selector blocksize = 1<< size_selector*/ - frag = (2 << 16) | (size_selector); - if (ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &frag) == -1) { - ms_warning("This OSS driver does not support trying SNDCTL_DSP_SETFRAGMENT"); - ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &min_size); - - /* try to subdivide BLKSIZE to reach block size if necessary */ - if (min_size>blocksize) - { - cond=1; - p=min_size/blocksize; - while(cond) - { - i=ioctl(fd, SNDCTL_DSP_SUBDIVIDE, &p); - ms_message("subdivide bloc min_size [%i] block_size [%i] said error=%i,errno=%i\n",min_size,blocksize,i,errno); - if ((i!=0) || (p==1)) cond=0; - else p=p/2; - } - } - ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &min_size); - } else { - /*it's working*/ - min_size=1 << (frag&0x0FFFF); - ms_message("Max fragment=%x, size selector=%x block size=%i",frag>>16,frag&0x0FFFF,min_size); - } + err=ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &min_size); + if (err<0){ + close(fd); + return (-1); } - if (min_size>blocksize) - { - ms_warning("dsp block size set to %i.",min_size); - }else{ - /* no need to access the card with less latency than needed*/ - min_size=blocksize; + /* compute a 20ms buffer by default */ + blocksize = (rate / 50) * smp_size; + if (stereo) { + blocksize *= 2; + smp_size *= 2; } + if (blocksize > min_size) + blocksize = min_size; ms_message("/dev/dsp opened: rate=%i,bits=%i,stereo=%i blocksize=%i.", - rate,bits,stereo,min_size); + rate,bits,stereo,blocksize); /* start recording !!! Alex */ { -@@ -135,7 +105,8 @@ static int configure_fd(int fd, int bits,int stereo, i +@@ -136,7 +106,8 @@ static int configure_fd(int fd, int bits,int stereo, i res=ioctl(fd, SNDCTL_DSP_SETTRIGGER, &fl); if (res<0) ms_warning("OSS_TRIGGER: %s",strerror(errno)); } - *minsz=min_size; + *minsz=blocksize; + *mindly = ((uint64_t)1000000 * (uint64_t)blocksize) / (uint64_t)(2 * rate * smp_size); return fd; } -@@ -156,23 +127,23 @@ typedef struct OssData{ +@@ -157,23 +128,23 @@ typedef struct OssData{ bool_t stereo; } OssData; -static void oss_open(OssData* d, int *minsz){ +static void oss_open(OssData* d, int *minsz, int *mindly){ int fd=open(d->pcmdev,O_RDWR|O_NONBLOCK); if (fd>0) { - d->pcmfd_read=d->pcmfd_write=configure_fd(fd, d->bits, d->stereo, d->rate, minsz); + d->pcmfd_read=d->pcmfd_write=configure_fd(fd, d->bits, d->stereo, d->rate, minsz, mindly); return ; } ms_warning ("Cannot open a single fd in rw mode for [%s] trying to open two",d->pcmdev); d->pcmfd_read=open(d->pcmdev,O_RDONLY|O_NONBLOCK); if (d->pcmfd_read > 0) { - d->pcmfd_read=configure_fd(d->pcmfd_read, d->bits, d->stereo, d->rate, minsz); + d->pcmfd_read=configure_fd(d->pcmfd_read, d->bits, d->stereo, d->rate, minsz, mindly); } else { ms_error("Cannot open fd in ro mode for [%s]",d->pcmdev); } d->pcmfd_write=open(d->pcmdev,O_WRONLY|O_NONBLOCK); if (d->pcmfd_write > 0) { - d->pcmfd_write=configure_fd(d->pcmfd_write, d->bits, d->stereo, d->rate, minsz); + d->pcmfd_write=configure_fd(d->pcmfd_write, d->bits, d->stereo, d->rate, minsz, mindly); } else { ms_error("Cannot open fd in wr mode for [%s]",d->pcmdev); } -@@ -327,61 +298,78 @@ static void * oss_thread(void *p){ +@@ -328,61 +299,78 @@ static void * oss_thread(void *p){ MSSndCard *card=(MSSndCard*)p; OssData *d=(OssData*)card->data; int bsize=0; - uint8_t *rtmpbuff=NULL; - uint8_t *wtmpbuff=NULL; + int mindly=1000; + uint8_t *tmpbuff; int err; - mblk_t *rm=NULL; - bool_t did_read=FALSE; - oss_open(d,&bsize); - if (d->pcmfd_read>=0){ - rtmpbuff=(uint8_t*)alloca(bsize); - } - if (d->pcmfd_write>=0){ - wtmpbuff=(uint8_t*)alloca(bsize); - } + oss_open(d,&bsize,&mindly); + + tmpbuff=(uint8_t*)alloca(bsize); + while(d->read_started || d->write_started){ - did_read=FALSE; - if (d->pcmfd_read>=0){ + while (d->pcmfd_read>=0){ if (d->read_started){ - if (rm==NULL) rm=allocb(bsize,0); - err=read(d->pcmfd_read,rm->b_wptr,bsize); + err=read(d->pcmfd_read,tmpbuff,bsize); if (err<0){ - ms_warning("Fail to read %i bytes from soundcard: %s", - bsize,strerror(errno)); - }else{ - did_read=TRUE; + if (errno != EWOULDBLOCK) { + ms_warning("Fail to read %i bytes from soundcard: %s", + bsize,strerror(errno)); + } + break; + }else if (err>0) { + mblk_t *rm=allocb(err,0); + memcpy(rm->b_wptr,tmpbuff,err); rm->b_wptr+=err; ms_mutex_lock(&d->mutex); putq(&d->rq,rm); ms_mutex_unlock(&d->mutex); - rm=NULL; + } else { + break; } }else { /* case where we have no reader filtern the read is performed for synchronisation */ - int sz = read(d->pcmfd_read,rtmpbuff,bsize); - if( sz==-1) ms_warning("sound device read error %s ",strerror(errno)); - else did_read=TRUE; + int sz = read(d->pcmfd_read,tmpbuff,bsize); + if(sz<0){ + ms_warning("sound device read error %s ",strerror(errno)); + break; + } } } - if (d->pcmfd_write>=0){ - if (d->write_started){ - err=ms_bufferizer_read(d->bufferizer,wtmpbuff,bsize); + + while (d->pcmfd_write>=0){ + struct audio_buf_info ai; + int bufsize; + if (ioctl(d->pcmfd_write, SNDCTL_DSP_GETOSPACE, &ai) < 0) + break; + bufsize = ai.fragstotal * ai.fragsize - ai.bytes; + if (bufsize >= (2 * bsize)){ + /* wait for buffer to empty */ + break; + }else if (d->write_started){ + ms_mutex_lock(&d->mutex); + err=ms_bufferizer_read(d->bufferizer,tmpbuff,bsize); + ms_mutex_unlock(&d->mutex); if (err==bsize){ - err=write(d->pcmfd_write,wtmpbuff,bsize); + err=write(d->pcmfd_write,tmpbuff,bsize); if (err<0){ ms_warning("Fail to write %i bytes from soundcard: %s", - bsize,strerror(errno)); + bsize,strerror(errno)); + break; } + } else { + break; } }else { int sz; - memset(wtmpbuff,0,bsize); - sz = write(d->pcmfd_write,wtmpbuff,bsize); - if( sz!=bsize) ms_warning("sound device write returned %i !",sz); + memset(tmpbuff,0,bsize); + sz = write(d->pcmfd_write,tmpbuff,bsize); + if(sz!=bsize) { + ms_warning("sound device write returned %i !",sz); + break; + } } } - if (!did_read) usleep(20000); /*avoid 100%cpu loop for nothing*/ + usleep(mindly); } if (d->pcmfd_read==d->pcmfd_write && d->pcmfd_read>=0 ) { close(d->pcmfd_read); -@@ -509,10 +497,10 @@ static int set_nchannels(MSFilter *f, void *arg){ +@@ -510,10 +498,10 @@ static MSFilterMethod oss_methods[]={ } static MSFilterMethod oss_methods[]={ - { MS_FILTER_SET_SAMPLE_RATE , set_rate }, + { MS_FILTER_SET_SAMPLE_RATE , set_rate }, { MS_FILTER_GET_SAMPLE_RATE , get_rate }, { MS_FILTER_SET_NCHANNELS , set_nchannels }, - { 0 , NULL } + { 0 , NULL } }; MSFilterDesc oss_read_desc={ diff --git a/net/mediastreamer/files/patch-src__utils__dsptools.c b/net/mediastreamer/files/patch-src__utils__dsptools.c index d7b0753e5980..0b751c65241c 100644 --- a/net/mediastreamer/files/patch-src__utils__dsptools.c +++ b/net/mediastreamer/files/patch-src__utils__dsptools.c @@ -1,11 +1,11 @@ ---- src/utils/dsptools.c.orig 2022-06-10 12:50:07 UTC +--- src/utils/dsptools.c.orig 2023-07-27 14:00:34 UTC +++ src/utils/dsptools.c -@@ -61,7 +61,7 @@ +@@ -62,7 +62,7 @@ #ifdef HAVE_ALLOCA_H #include #else -#if !defined(__APPLE__) +#if !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__DragonFly__) #include #endif #endif diff --git a/net/mediastreamer/files/patch-src_videofilters_ffmpegjpegwriter.c b/net/mediastreamer/files/patch-src_videofilters_ffmpegjpegwriter.c new file mode 100644 index 000000000000..f8df3ce722a1 --- /dev/null +++ b/net/mediastreamer/files/patch-src_videofilters_ffmpegjpegwriter.c @@ -0,0 +1,10 @@ +--- src/videofilters/ffmpegjpegwriter.c.orig 2023-07-28 18:41:49 UTC ++++ src/videofilters/ffmpegjpegwriter.c +@@ -213,6 +213,7 @@ static void jpg_process_frame_task(void *obj) { + freemsg(jpegm); + } + ++end: + freemsg(m); + } + diff --git a/net/mediastreamer/files/patch-src_videofilters_mkv.cpp b/net/mediastreamer/files/patch-src_videofilters_mkv.cpp index 8c12a9bfd23c..7063e607f8c0 100644 --- a/net/mediastreamer/files/patch-src_videofilters_mkv.cpp +++ b/net/mediastreamer/files/patch-src_videofilters_mkv.cpp @@ -1,11 +1,11 @@ ---- src/videofilters/mkv.cpp.orig 2022-06-15 21:27:54 UTC +--- src/videofilters/mkv.cpp.orig 2023-07-27 14:00:34 UTC +++ src/videofilters/mkv.cpp -@@ -1645,7 +1645,7 @@ static matroska_block *matroska_write_block(Matroska * +@@ -1647,7 +1647,7 @@ static matroska_block *matroska_write_block(Matroska * codecPrivateElt = (ebml_binary *)EBML_MasterAddElt(blockGroup, &MATROSKA_ContextCodecState, FALSE); EBML_BinarySetData(codecPrivateElt, codecPrivateData, codecPrivateDataSize); } - MATROSKA_BlockSetTrackNum(block, trackNum); + MATROSKA_BlockGetFrameEnd(block, trackNum); MATROSKA_LinkBlockWithReadTracks(block, obj->tracks, TRUE); MATROSKA_LinkBlockWriteSegmentInfo(block, obj->info); MATROSKA_BlockSetKeyframe(block, isKeyFrame); diff --git a/net/mediastreamer/pkg-plist b/net/mediastreamer/pkg-plist index 7c3a357dd91e..34848fc7af76 100644 --- a/net/mediastreamer/pkg-plist +++ b/net/mediastreamer/pkg-plist @@ -1,87 +1,86 @@ include/OpenGL/EGL/egl.h include/OpenGL/EGL/eglext.h include/OpenGL/EGL/eglplatform.h include/OpenGL/GLES2/gl2.h include/OpenGL/GLES2/gl2ext.h include/OpenGL/GLES2/gl2platform.h include/OpenGL/GLES3/gl3.h include/OpenGL/GLES3/gl31.h include/OpenGL/GLES3/gl32.h include/OpenGL/GLES3/gl3platform.h include/OpenGL/KHR/khrplatform.h include/OpenGL/LICENSE include/OpenGL/README.md include/OpenGL/angle_windowsstore.h include/mediastreamer2/allfilters.h include/mediastreamer2/android_utils.h include/mediastreamer2/bitratecontrol.h include/mediastreamer2/bits_rw.h include/mediastreamer2/box-plot.h include/mediastreamer2/devices.h include/mediastreamer2/dsptools.h include/mediastreamer2/dtls_srtp.h include/mediastreamer2/dtmfgen.h include/mediastreamer2/flowcontrol.h include/mediastreamer2/formats.h include/mediastreamer2/ice.h include/mediastreamer2/mediastream.h include/mediastreamer2/ms_srtp.h include/mediastreamer2/msanalysedisplay.h include/mediastreamer2/msasync.h include/mediastreamer2/msaudiomixer.h include/mediastreamer2/mschanadapter.h include/mediastreamer2/mscodecutils.h include/mediastreamer2/mscommon.h include/mediastreamer2/msconference.h include/mediastreamer2/msequalizer.h include/mediastreamer2/mseventqueue.h include/mediastreamer2/msextdisplay.h include/mediastreamer2/msfactory.h include/mediastreamer2/msfileplayer.h include/mediastreamer2/msfilerec.h include/mediastreamer2/msfilter.h include/mediastreamer2/msgenericplc.h include/mediastreamer2/msinterfaces.h include/mediastreamer2/msitc.h include/mediastreamer2/msjava.h include/mediastreamer2/msjpegwriter.h include/mediastreamer2/msmediaplayer.h include/mediastreamer2/msmediarecorder.h include/mediastreamer2/msmire.h include/mediastreamer2/msogl.h include/mediastreamer2/msogl_functions.h include/mediastreamer2/mspcapfileplayer.h include/mediastreamer2/msqrcodereader.h include/mediastreamer2/msqueue.h include/mediastreamer2/msrtp.h include/mediastreamer2/msrtt4103.h include/mediastreamer2/mssndcard.h include/mediastreamer2/mstee.h include/mediastreamer2/msticker.h include/mediastreamer2/mstonedetector.h include/mediastreamer2/msudp.h include/mediastreamer2/msutils.h include/mediastreamer2/msv4l.h include/mediastreamer2/msvaddtx.h include/mediastreamer2/msvideo.h include/mediastreamer2/msvideoout.h include/mediastreamer2/msvideopresets.h include/mediastreamer2/msvideoqualitycontroller.h include/mediastreamer2/msvideorouter.h -include/mediastreamer2/msvideoswitcher.h include/mediastreamer2/msvolume.h include/mediastreamer2/mswebcam.h include/mediastreamer2/qualityindicator.h include/mediastreamer2/rfc3984.h include/mediastreamer2/stun.h include/mediastreamer2/upnp_igd.h include/mediastreamer2/x11_helper.h include/mediastreamer2/zrtp.h lib/libmediastreamer.so lib/libmediastreamer.so.11 %%QTGL%%lib/mediastreamer/plugins/libmsqogl.so share/Mediastreamer2/cmake/Mediastreamer2Config.cmake share/Mediastreamer2/cmake/Mediastreamer2ConfigVersion.cmake share/Mediastreamer2/cmake/Mediastreamer2Targets-%%CMAKE_BUILD_TYPE%%.cmake share/Mediastreamer2/cmake/Mediastreamer2Targets.cmake %%VIDEO%%share/images/nowebcamCIF.jpg