summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs/mediastreamer')
-rw-r--r--media-libs/mediastreamer/Manifest3
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.7.3-ffmpeg-0.11.patch94
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.7.3-sdl-build.patch220
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.7.3-v4l-automagic.patch40
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.7.3-videoenc_282.patch130
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.8.2-autopoint.patch17
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.8.2-ffmpeg-1.0.patch59
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.8.2-libav9.patch115
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.8.2-v4l-automagic.patch54
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.9.0-libav9.patch120
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.9.0-tests.patch26
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.9.0-underlinking.patch57
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.9.0-v4l-automagic.patch55
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.9.0-xxd.patch18
-rw-r--r--media-libs/mediastreamer/mediastreamer-2.7.3-r3.ebuild130
-rw-r--r--media-libs/mediastreamer/mediastreamer-2.8.2.ebuild138
-rw-r--r--media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild174
-rw-r--r--media-libs/mediastreamer/mediastreamer-2.9.0.ebuild172
-rw-r--r--media-libs/mediastreamer/metadata.xml22
19 files changed, 1644 insertions, 0 deletions
diff --git a/media-libs/mediastreamer/Manifest b/media-libs/mediastreamer/Manifest
new file mode 100644
index 000000000000..9d6af71e067a
--- /dev/null
+++ b/media-libs/mediastreamer/Manifest
@@ -0,0 +1,3 @@
+DIST mediastreamer-2.7.3.tar.gz 758146 SHA256 c3cbea285f1e85259b2ac06d3f1730b4258e280011598b91f5b90b8432bf1dc0 SHA512 f9ebfa12b1c760b5c24b5496466d92148a170ee2d522d9085db3fb72cc93f8e3e71ba1ae14f57d94a33b752450555c7d3ebf59267447203861247a8685e18259 WHIRLPOOL c1528bcca27c979ac29d6ccb6e32eac53ddd9e69d3f034056ad579d5ff6cd295c9224db6b841d6aa708e2c60251b192e85d6843342c14f8ead75d9f137c8d818
+DIST mediastreamer-2.8.2.tar.gz 882966 SHA256 a62ebb008913db6e03e27bd1ec30bb560ae4219da5255c0e91853b5e894a4f33 SHA512 2041d9fbba0f831aea6bdd3259b21742a37cfdbdf473b0bc4f20bd730371395ddf2866804ae496e9864adf5fcd0d24e03193d5d8feadd54e6ff0b3adda01ff60 WHIRLPOOL cecd47766dff3df76271b3209f7f967a00165861283c34633361a07bf8a416e63d5c5c6dd364a1558f1f865803eaf4a1888bd3bcf42cb0e159b12107045b61ab
+DIST mediastreamer-2.9.0.tar.gz 3578877 SHA256 c245b9444c2abb4c84433606e01f0b3ce29ce78de0afe1e191f4f3c62656acd5 SHA512 8c31ab07c659dce84c410dfb5814b6cdf3defcd4055814922f58e2886bfeecfd5bab294c408858a29e72fcf53f35a1f7748113e1f2863baa329daedae07ef2f0 WHIRLPOOL 9e425ff2e461ceb6dae3890e6bd8035de65f5b3fd0590e01b75259c0d27dd54cfd37cb88d43752c2903c954ac44e353e4ed63588d3f08ec690da77293a31ba68
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.7.3-ffmpeg-0.11.patch b/media-libs/mediastreamer/files/mediastreamer-2.7.3-ffmpeg-0.11.patch
new file mode 100644
index 000000000000..c242b5fe139c
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.7.3-ffmpeg-0.11.patch
@@ -0,0 +1,94 @@
+Fix build with recent ffmpeg releases.
+https://bugs.gentoo.org/show_bug.cgi?id=419453
+
+Index: mediastreamer-2.7.3/src/videoenc.c
+===================================================================
+--- mediastreamer-2.7.3.orig/src/videoenc.c
++++ mediastreamer-2.7.3/src/videoenc.c
+@@ -53,7 +53,6 @@ void ms_ffmpeg_log_callback(void* ptr, i
+
+ void ms_ffmpeg_check_init(){
+ if(!avcodec_initialized){
+- avcodec_init();
+ avcodec_register_all();
+ avcodec_initialized=TRUE;
+ #ifdef ENABLE_LOG_FFMPEG
+@@ -107,6 +106,7 @@ typedef struct EncState{
+ uint32_t framenum;
+ VideoStarter starter;
+ bool_t req_vfu;
++ AVDictionary * ff_opts;
+ }EncState;
+
+ static int enc_set_fps(MSFilter *f, void *arg){
+@@ -214,6 +214,7 @@ static void enc_init(MSFilter *f, enum C
+ s->req_vfu=FALSE;
+ s->framenum=0;
+ s->av_context.codec=NULL;
++ s->ff_opts = NULL;
+ }
+
+ static void enc_h263_init(MSFilter *f){
+@@ -300,9 +301,9 @@ static void prepare_h263(EncState *s){
+ if (s->profile==0){
+ s->codec=CODEC_ID_H263;
+ }else{
+- c->flags|=CODEC_FLAG_H263P_UMV;
++ av_dict_set(&(s->ff_opts), "umv", "1", 0);
+ c->flags|=CODEC_FLAG_AC_PRED;
+- c->flags|=CODEC_FLAG_H263P_SLICE_STRUCT;
++ av_dict_set(&(s->ff_opts), "structured_slices", "1", 0);
+ /*
+ c->flags|=CODEC_FLAG_OBMC;
+ c->flags|=CODEC_FLAG_AC_PRED;
+@@ -342,9 +343,9 @@ static void enc_preprocess(MSFilter *f){
+ ms_error("could not find encoder for codec id %i",s->codec);
+ return;
+ }
+- error=avcodec_open(&s->av_context, s->av_codec);
++ error=avcodec_open2(&s->av_context, s->av_codec, &(s->ff_opts));
+ if (error!=0) {
+- ms_error("avcodec_open() failed: %i",error);
++ ms_error("avcodec_open2() failed: %i",error);
+ return;
+ }
+ video_starter_init(&s->starter);
+@@ -372,7 +373,7 @@ static void add_rfc2190_header(mblk_t **
+ // assume video size is CIF or QCIF
+ if (context->width == 352 && context->height == 288) header->b_wptr[1] = 0x60;
+ else header->b_wptr[1] = 0x40;
+- if (context->coded_frame->pict_type != FF_I_TYPE) header->b_wptr[1] |= 0x10;
++ if (context->coded_frame->pict_type != AV_PICTURE_TYPE_I) header->b_wptr[1] |= 0x10;
+ header->b_wptr += 4;
+ header->b_cont = *packet;
+ *packet = header;
+@@ -779,7 +780,7 @@ static void process_frame(MSFilter *f, m
+ s->req_vfu=TRUE;
+ }
+ if (s->req_vfu){
+- pict.pict_type=FF_I_TYPE;
++ pict.pict_type=AV_PICTURE_TYPE_I;
+ s->req_vfu=FALSE;
+ }
+ comp_buf->b_rptr=comp_buf->b_wptr=comp_buf->b_datap->db_base;
+@@ -799,7 +800,7 @@ static void process_frame(MSFilter *f, m
+ if (s->framenum==1){
+ video_starter_first_frame (&s->starter,f->ticker->time);
+ }
+- if (c->coded_frame->pict_type==FF_I_TYPE){
++ if (c->coded_frame->pict_type==AV_PICTURE_TYPE_I){
+ ms_message("Emitting I-frame");
+ }
+ comp_buf->b_wptr+=error;
+Index: mediastreamer-2.7.3/src/h264dec.c
+===================================================================
+--- mediastreamer-2.7.3.orig/src/h264dec.c
++++ mediastreamer-2.7.3/src/h264dec.c
+@@ -46,7 +46,6 @@ typedef struct _DecData{
+ static void ffmpeg_init(){
+ static bool_t done=FALSE;
+ if (!done){
+- avcodec_init();
+ avcodec_register_all();
+ done=TRUE;
+ }
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.7.3-sdl-build.patch b/media-libs/mediastreamer/files/mediastreamer-2.7.3-sdl-build.patch
new file mode 100644
index 000000000000..2f7207e27ab0
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.7.3-sdl-build.patch
@@ -0,0 +1,220 @@
+commit c0ae6c3f9f78ae9e9e4c7030e7054dc5c0267e2c
+Author: Simon Morlat <simon.morlat@linphone.org>
+Date: Mon Apr 11 22:46:37 2011 +0200
+
+ fix SDL output that wasn't compiling anymore and bugfix videodisplay test program
+
+diff --git a/src/msfilter.c b/src/msfilter.c
+index d8d84f3..4b84b8b 100644
+--- a/src/msfilter.c
++++ b/src/msfilter.c
+@@ -169,9 +169,7 @@ int ms_filter_link(MSFilter *f1, int pin1, MSFilter *f2, int pin2){
+
+ int ms_filter_unlink(MSFilter *f1, int pin1, MSFilter *f2, int pin2){
+ MSQueue *q;
+- ms_return_val_if_fail(f1, -1);
+- ms_return_val_if_fail(f2, -1);
+- ms_message("ms_filter_unlink: %s:%p,%i-->%s:%p,%i",f1->desc->name,f1,pin1,f2->desc->name,f2,pin2);
++ ms_message("ms_filter_unlink: %s:%p,%i-->%s:%p,%i",f1 ? f1->desc->name : "!NULL!",f1,pin1,f2 ? f2->desc->name : "!NULL!",f2,pin2);
+ ms_return_val_if_fail(pin1<f1->desc->noutputs, -1);
+ ms_return_val_if_fail(pin2<f2->desc->ninputs, -1);
+ ms_return_val_if_fail(f1->outputs[pin1]!=NULL,-1);
+diff --git a/src/videoout.c b/src/videoout.c
+index ca36b0f..5bdc6dd 100644
+--- a/src/videoout.c
++++ b/src/videoout.c
+@@ -114,8 +114,6 @@ void ms_display_destroy(MSDisplay *d);
+ }
+ #endif
+
+-#include "ffmpeg-priv.h"
+-
+ #define SCALE_FACTOR 4.0f
+ #define SELVIEW_POS_INACTIVE -100.0
+
+@@ -462,7 +460,7 @@ void ms_display_desc_set_default_window_id(MSDisplayDesc *desc, long id){
+
+ typedef struct VideoOut
+ {
+- AVRational ratio;
++ struct Rational {int num; int den;} ratio;
+ MSPicture fbuf;
+ MSPicture fbuf_selfview;
+ MSPicture local_pic;
+@@ -474,8 +472,8 @@ typedef struct VideoOut
+ float sv_posx,sv_posy;
+ int background_color[3];
+
+- struct ms_SwsContext *sws1;
+- struct ms_SwsContext *sws2;
++ MSScalerContext *sws1;
++ MSScalerContext *sws2;
+ MSDisplay *display;
+ bool_t own_display;
+ bool_t ready;
+@@ -552,11 +550,11 @@ static void video_out_uninit(MSFilter *f){
+ if (obj->display!=NULL && obj->own_display)
+ ms_display_destroy(obj->display);
+ if (obj->sws1!=NULL){
+- ms_sws_freeContext(obj->sws1);
++ ms_scaler_context_free(obj->sws1);
+ obj->sws1=NULL;
+ }
+ if (obj->sws2!=NULL){
+- ms_sws_freeContext(obj->sws2);
++ ms_scaler_context_free(obj->sws2);
+ obj->sws2=NULL;
+ }
+ if (obj->local_msg!=NULL) {
+@@ -581,11 +579,11 @@ static void video_out_prepare(MSFilter *f){
+ obj->display=NULL;
+ }
+ if (obj->sws1!=NULL){
+- ms_sws_freeContext(obj->sws1);
++ ms_scaler_context_free(obj->sws1);
+ obj->sws1=NULL;
+ }
+ if (obj->sws2!=NULL){
+- ms_sws_freeContext(obj->sws2);
++ ms_scaler_context_free(obj->sws2);
+ obj->sws2=NULL;
+ }
+ if (obj->local_msg!=NULL) {
+@@ -665,13 +663,12 @@ static void video_out_process(MSFilter *f){
+ if (ms_yuv_buf_init_from_mblk(&src,inm)==0){
+
+ if (obj->sws2==NULL){
+- obj->sws2=ms_sws_getContext(src.w,src.h,PIX_FMT_YUV420P,
+- obj->fbuf_selfview.w,obj->fbuf_selfview.h,PIX_FMT_YUV420P,
+- SWS_FAST_BILINEAR, NULL, NULL, NULL);
++ obj->sws2=ms_scaler_create_context(src.w,src.h,MS_YUV420P,
++ obj->fbuf_selfview.w,obj->fbuf_selfview.h,MS_YUV420P,
++ MS_SCALER_METHOD_BILINEAR);
+ }
+ ms_display_lock(obj->display);
+- if (ms_sws_scale(obj->sws2,src.planes,src.strides, 0,
+- src.h, obj->fbuf_selfview.planes, obj->fbuf_selfview.strides)<0){
++ if (ms_scaler_process(obj->sws2,src.planes,src.strides,obj->fbuf_selfview.planes, obj->fbuf_selfview.strides)<0){
+ ms_error("Error in ms_sws_scale().");
+ }
+ if (!mblk_get_precious_flag(inm)) ms_yuv_buf_mirror(&obj->fbuf_selfview);
+@@ -683,9 +680,9 @@ static void video_out_process(MSFilter *f){
+ if (ms_yuv_buf_init_from_mblk(&src,inm)==0){
+
+ if (obj->sws2==NULL){
+- obj->sws2=ms_sws_getContext(src.w,src.h,PIX_FMT_YUV420P,
+- obj->local_pic.w,obj->local_pic.h,PIX_FMT_YUV420P,
+- SWS_FAST_BILINEAR, NULL, NULL, NULL);
++ obj->sws2=ms_scaler_create_context(src.w,src.h,MS_YUV420P,
++ obj->local_pic.w,obj->local_pic.h,MS_YUV420P,
++ MS_SCALER_METHOD_BILINEAR);
+ }
+ if (obj->local_msg==NULL){
+ obj->local_msg=ms_yuv_buf_alloc(&obj->local_pic,
+@@ -693,8 +690,7 @@ static void video_out_process(MSFilter *f){
+ }
+ if (obj->local_pic.planes[0]!=NULL)
+ {
+- if (ms_sws_scale(obj->sws2,src.planes,src.strides, 0,
+- src.h, obj->local_pic.planes, obj->local_pic.strides)<0){
++ if (ms_scaler_process(obj->sws2,src.planes,src.strides,obj->local_pic.planes, obj->local_pic.strides)<0){
+ ms_error("Error in ms_sws_scale().");
+ }
+ if (!mblk_get_precious_flag(inm)) ms_yuv_buf_mirror(&obj->local_pic);
+@@ -731,13 +727,12 @@ static void video_out_process(MSFilter *f){
+ }
+ }
+ if (obj->sws1==NULL){
+- obj->sws1=ms_sws_getContext(src.w,src.h,PIX_FMT_YUV420P,
+- obj->fbuf.w,obj->fbuf.h,PIX_FMT_YUV420P,
+- SWS_FAST_BILINEAR, NULL, NULL, NULL);
++ obj->sws1=ms_scaler_create_context(src.w,src.h,MS_YUV420P,
++ obj->fbuf.w,obj->fbuf.h,MS_YUV420P,
++ MS_SCALER_METHOD_BILINEAR);
+ }
+ ms_display_lock(obj->display);
+- if (ms_sws_scale(obj->sws1,src.planes,src.strides, 0,
+- src.h, obj->fbuf.planes, obj->fbuf.strides)<0){
++ if (ms_scaler_process(obj->sws1,src.planes,src.strides,obj->fbuf.planes, obj->fbuf.strides)<0){
+ ms_error("Error in ms_sws_scale().");
+ }
+ if (obj->mirror && !mblk_get_precious_flag(inm)) ms_yuv_buf_mirror(&obj->fbuf);
+@@ -943,3 +938,4 @@ MSFilterDesc ms_video_out_desc={
+
+
+ MS_FILTER_DESC_EXPORT(ms_video_out_desc)
++
+diff --git a/tests/videodisplay.c b/tests/videodisplay.c
+index 76f67a5..0828c6a 100644
+--- a/tests/videodisplay.c
++++ b/tests/videodisplay.c
+@@ -52,6 +52,7 @@ int main(int argc, char *argv[]){
+ for(i=0;i<1;++i){
+ int n;
+ vs=video_preview_new();
++ /*video_preview_set_display_filter_name(vs,"MSVideoOut");*/
+ video_preview_set_size(vs,vsize);
+ video_preview_start(vs, cam);
+
+@@ -79,11 +80,11 @@ int main(int argc, char *argv[]){
+
+ vs->tee = ms_filter_new(MS_TEE_ID);
+
+- ms_filter_unlink(vs->pixconv,0, vs->output,0);
++ ms_filter_unlink(vs->pixconv,0, vs->output2,0);
+
+ ms_filter_link(vs->pixconv,0,vs->tee,0);
+- ms_filter_link(vs->tee,0,vs->output,0);
+- ms_filter_link(vs->tee,1,vs->output,1);
++ ms_filter_link(vs->tee,0,vs->output2,0);
++ ms_filter_link(vs->tee,1,vs->output2,1);
+
+ //ms_filter_unlink(vs->tee,0,vs->output,0);
+ ms_ticker_attach (vs->ticker, vs->source);
+@@ -92,34 +93,34 @@ int main(int argc, char *argv[]){
+ if (n==500)
+ {
+ int corner=1;
+- ms_filter_call_method(vs->output,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner);
++ ms_filter_call_method(vs->output2,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner);
+ }
+ if (n==600)
+ {
+ int corner=2;
+- ms_filter_call_method(vs->output,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner);
++ ms_filter_call_method(vs->output2,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner);
+ }
+ if (n==700)
+ {
+ int corner=3;
+- ms_filter_call_method(vs->output,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner);
++ ms_filter_call_method(vs->output2,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner);
+ }
+ if (n==800)
+ {
+ int corner=-1;
+- ms_filter_call_method(vs->output,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner);
++ ms_filter_call_method(vs->output2,MS_VIDEO_DISPLAY_SET_LOCAL_VIEW_MODE,&corner);
+ }
+ if (n==900)
+ {
+ ms_ticker_detach (vs->ticker, vs->source);
+
+ ms_filter_unlink(vs->pixconv,0,vs->tee,0);
+- ms_filter_unlink(vs->tee,0,vs->output,0);
+- ms_filter_unlink(vs->tee,1,vs->output,1);
++ ms_filter_unlink(vs->tee,0,vs->output2,0);
++ ms_filter_unlink(vs->tee,1,vs->output2,1);
+ ms_filter_destroy(vs->tee);
+ vs->tee=NULL;
+
+- ms_filter_link(vs->pixconv,0, vs->output,0);
++ ms_filter_link(vs->pixconv,0, vs->output2,0);
+
+
+ ms_ticker_attach (vs->ticker, vs->source);
+@@ -129,3 +130,4 @@ int main(int argc, char *argv[]){
+ }
+ return 0;
+ }
++
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.7.3-v4l-automagic.patch b/media-libs/mediastreamer/files/mediastreamer-2.7.3-v4l-automagic.patch
new file mode 100644
index 000000000000..d103a07fd9af
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.7.3-v4l-automagic.patch
@@ -0,0 +1,40 @@
+=== modified file 'configure.ac'
+--- configure.ac 2011-04-09 08:17:33 +0000
++++ configure.ac 2011-04-09 08:31:18 +0000
+@@ -590,6 +590,15 @@
+ AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${package_prefix}/share" ,[path of data])
+ AC_SUBST(PACKAGE_DATA_DIR)
+
++AC_ARG_ENABLE(v4l,
++ [ --disable-v4l Disable usage of v4l],
++ [case "${enableval}" in
++ yes) v4l=yes ;;
++ no) v4l=no ;;
++ *) AC_MSG_ERROR(bad value ${enableval} for --disable-v4l) ;;
++ esac],[v4l=yes])
++
++if test "$v4l" = "yes" ; then
+ dnl check for video4linux headers
+ AC_CHECK_HEADERS(linux/videodev.h linux/videodev2.h)
+ if test "${ac_cv_header_linux_videodev_h}" = "yes" || \
+@@ -599,8 +608,6 @@
+ found_v4l=no
+ fi
+
+-AM_CONDITIONAL(BUILD_V4L, test x$found_v4l = xyes )
+-
+ AC_ARG_ENABLE(libv4l,
+ [ --disable-libv4l Disable usage of libv4l, really discouraged],
+ [case "${enableval}" in
+@@ -632,6 +639,10 @@
+ ])
+ fi
+ fi
++fi
++
++AM_CONDITIONAL(BUILD_V4L, test x$found_v4l = xyes )
++
+
+ dnl ##################################################
+ dnl # Check for doxygen
+
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.7.3-videoenc_282.patch b/media-libs/mediastreamer/files/mediastreamer-2.7.3-videoenc_282.patch
new file mode 100644
index 000000000000..66d055ede084
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.7.3-videoenc_282.patch
@@ -0,0 +1,130 @@
+Update videoenc.c to the 2.8.2 version. Fixes some but not all problems with
+ffmpeg.
+
+
+--- mediastreamer-2.7.3/src/videoenc.c 2010-12-17 05:59:50.000000000 -0300
++++ mediastreamer-2.8.2/src/videoenc.c 2012-02-17 06:16:20.000000000 -0300
+@@ -164,6 +164,7 @@
+ }else{
+ ms_warning("unsupported video size %s",tmp);
+ ret=FALSE;
++ goto end;
+ }
+ divider=atoi(equal+1);
+ if (divider!=0){
+@@ -174,6 +175,8 @@
+ ret=FALSE;
+ }
+ }else ret=FALSE;
++
++end:
+ ms_free(tmp);
+ return ret;
+ }
+@@ -231,11 +234,7 @@
+
+ static void prepare(EncState *s){
+ AVCodecContext *c=&s->av_context;
+-#ifdef ANDROID
+ const int max_br_vbv=128000;
+-#else
+- const int max_br_vbv=256000;
+-#endif
+
+ avcodec_get_context_defaults(c);
+ if (s->codec==CODEC_ID_MJPEG)
+@@ -315,13 +314,6 @@
+ static void prepare_mpeg4(EncState *s){
+ AVCodecContext *c=&s->av_context;
+ c->max_b_frames=0; /*don't use b frames*/
+- c->flags|=CODEC_FLAG_AC_PRED;
+- c->flags|=CODEC_FLAG_H263P_UMV;
+- /*c->flags|=CODEC_FLAG_QPEL;*/ /*don't enable this one: this forces profile_level to advanced simple profile */
+- c->flags|=CODEC_FLAG_4MV;
+- c->flags|=CODEC_FLAG_GMC;
+- c->flags|=CODEC_FLAG_LOOP_FILTER;
+- c->flags|=CODEC_FLAG_H263P_SLICE_STRUCT;
+ }
+
+ static void enc_uninit(MSFilter *f){
+@@ -681,7 +673,7 @@
+ uint8_t *pbuf_ptr=full_frame->b_rptr;
+ uint8_t *buf_end=full_frame->b_wptr;
+
+- ms_message("image size: %i)", buf_end-pbuf_ptr);
++ ms_message("image size: %li)", (long)(buf_end-pbuf_ptr));
+
+ *lqt=NULL;
+ *cqt=NULL;
+@@ -689,7 +681,7 @@
+ err = find_marker(&pbuf_ptr, buf_end);
+ while (err!=-1)
+ {
+- ms_message("marker found: %x (offset from beginning%i)", err, pbuf_ptr-full_frame->b_rptr);
++ ms_message("marker found: %x (offset from beginning %li)", err, (long)(pbuf_ptr-full_frame->b_rptr));
+ if (err==0xdb)
+ {
+ /* copy DQT table */
+@@ -772,10 +764,12 @@
+ int error;
+ mblk_t *comp_buf=s->comp_buf;
+ int comp_buf_sz=comp_buf->b_datap->db_lim-comp_buf->b_datap->db_base;
++ YuvBuf yuv;
+
++ ms_yuv_buf_init_from_mblk(&yuv, inm);
+ /* convert image if necessary */
+ avcodec_get_frame_defaults(&pict);
+- avpicture_fill((AVPicture*)&pict,(uint8_t*)inm->b_rptr,c->pix_fmt,c->width,c->height);
++ avpicture_fill((AVPicture*)&pict,yuv.planes[0],c->pix_fmt,c->width,c->height);
+
+ /* timestamp used by ffmpeg, unset here */
+ pict.pts=AV_NOPTS_VALUE;
+@@ -796,7 +790,9 @@
+ comp_buf->b_wptr+=4;
+ comp_buf_sz-=4;
+ }
++
+ error=avcodec_encode_video(c, (uint8_t*)comp_buf->b_wptr,comp_buf_sz, &pict);
++
+ if (error<=0) ms_warning("ms_AVencoder_process: error %i.",error);
+ else{
+ s->framenum++;
+@@ -837,6 +833,14 @@
+ EncState *s=(EncState*)f->data;
+ bool_t snow=s->codec==CODEC_ID_SNOW;
+ s->maxbr=*(int*)arg;
++ if (s->av_context.codec!=NULL){
++ /*when we are processing, apply new settings immediately*/
++ ms_filter_lock(f);
++ enc_postprocess(f);
++ enc_preprocess(f);
++ ms_filter_unlock(f);
++ return 0;
++ }
+ if (s->maxbr>=1024000 && s->codec!=CODEC_ID_H263P){
+ s->vsize.width = MS_VIDEO_SIZE_SVGA_W;
+ s->vsize.height = MS_VIDEO_SIZE_SVGA_H;
+@@ -854,7 +858,7 @@
+ s->vsize.height=MS_VIDEO_SIZE_CIF_H;
+ s->fps=17;
+ s->qmin=3;
+- }else if (s->maxbr>=170000){
++ }else if (s->maxbr>=170000 && s->codec!=CODEC_ID_H263P && s->codec!=CODEC_ID_H263){
+ s->vsize.width=MS_VIDEO_SIZE_QVGA_W;
+ s->vsize.height=MS_VIDEO_SIZE_QVGA_H;
+ s->fps=15;
+@@ -875,14 +879,6 @@
+ s->fps=5;
+ s->qmin=5;
+ }
+-
+- if (s->av_context.codec!=NULL){
+- /*apply new settings dynamically*/
+- ms_filter_lock(f);
+- enc_postprocess(f);
+- enc_preprocess(f);
+- ms_filter_unlock(f);
+- }
+ return 0;
+ }
+
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.8.2-autopoint.patch b/media-libs/mediastreamer/files/mediastreamer-2.8.2-autopoint.patch
new file mode 100644
index 000000000000..5704234af060
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.8.2-autopoint.patch
@@ -0,0 +1,17 @@
+--- mediastreamer-2.8.2/configure.ac.orig 2012-06-01 16:31:34.000000000 +0400
++++ mediastreamer-2.8.2/configure.ac 2012-06-01 16:36:08.586809086 +0400
+@@ -191,13 +191,13 @@
+ if test "$mingw_found" != "yes" ; then
+ dnl gettext macro does not work properly under mingw. And we want to use the one provided by GTK.
+ AM_GNU_GETTEXT([external])
+- AM_GNU_GETTEXT_VERSION([0.18])
+ LIBS="$LIBS $LIBINTL"
+ else
+ AC_DEFINE(ENABLE_NLS,1,[Tells whether localisation is possible])
+ AC_DEFINE(HAVE_GETTEXT,1,[Tells wheter localisation is possible])
+ LIBS="$LIBS -lintl"
+ fi
++AM_GNU_GETTEXT_VERSION([0.18])
+
+ AM_CONDITIONAL(BUILD_MACOSX, test x$macosx_found = xyes)
+ AM_CONDITIONAL(BUILD_IOS, test x$ios_found = xyes)
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.8.2-ffmpeg-1.0.patch b/media-libs/mediastreamer/files/mediastreamer-2.8.2-ffmpeg-1.0.patch
new file mode 100644
index 000000000000..293e6e78dcab
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.8.2-ffmpeg-1.0.patch
@@ -0,0 +1,59 @@
+https://bugs.gentoo.org/show_bug.cgi?id=445168
+
+commit f586917ea4d66f9ba8910f0967a8830e54d50784
+Author: Yann Diorcet <yann.diorcet@belledonne-communications.com>
+Date: Tue Jun 5 11:07:48 2012 +0200
+
+ Fixes for new versions of ffmpeg
+
+diff --git a/src/h264dec.c b/src/h264dec.c
+index c4a84ee..5229b5e 100644
+--- a/src/h264dec.c
++++ b/src/h264dec.c
+@@ -45,7 +45,9 @@ typedef struct _DecData{
+ static void ffmpeg_init(){
+ static bool_t done=FALSE;
+ if (!done){
++#ifdef FF_API_AVCODEC_INIT
+ avcodec_init();
++#endif
+ avcodec_register_all();
+ done=TRUE;
+ }
+diff --git a/src/videoenc.c b/src/videoenc.c
+index 21d016f..fb35760 100644
+--- a/src/videoenc.c
++++ b/src/videoenc.c
+@@ -39,6 +39,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ static bool_t avcodec_initialized=FALSE;
+
++#ifndef FF_I_TYPE
++#define FF_I_TYPE AV_PICTURE_TYPE_I
++#endif
++
+ #ifdef ENABLE_LOG_FFMPEG
+
+ void ms_ffmpeg_log_callback(void* ptr, int level, const char* fmt, va_list vl)
+@@ -53,7 +57,9 @@ void ms_ffmpeg_log_callback(void* ptr, int level, const char* fmt, va_list vl)
+
+ void ms_ffmpeg_check_init(){
+ if(!avcodec_initialized){
++#ifdef FF_API_AVCODEC_INIT
+ avcodec_init();
++#endif
+ avcodec_register_all();
+ avcodec_initialized=TRUE;
+ #ifdef ENABLE_LOG_FFMPEG
+@@ -300,10 +306,10 @@ static void prepare_h263(EncState *s){
+ if (s->profile==0){
+ s->codec=CODEC_ID_H263;
+ }else{
++ /*
+ c->flags|=CODEC_FLAG_H263P_UMV;
+ c->flags|=CODEC_FLAG_AC_PRED;
+ c->flags|=CODEC_FLAG_H263P_SLICE_STRUCT;
+- /*
+ c->flags|=CODEC_FLAG_OBMC;
+ c->flags|=CODEC_FLAG_AC_PRED;
+ */
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.8.2-libav9.patch b/media-libs/mediastreamer/files/mediastreamer-2.8.2-libav9.patch
new file mode 100644
index 000000000000..0b335e282cfd
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.8.2-libav9.patch
@@ -0,0 +1,115 @@
+diff -urb mediastreamer-2.8.2.old/src/h264dec.c mediastreamer-2.8.2/src/h264dec.c
+--- mediastreamer-2.8.2.old/src/h264dec.c 2013-06-22 19:13:24.649838347 +0200
++++ mediastreamer-2.8.2/src/h264dec.c 2013-06-22 19:20:52.044822431 +0200
+@@ -55,10 +55,10 @@
+ int error;
+ codec=avcodec_find_decoder(CODEC_ID_H264);
+ if (codec==NULL) ms_fatal("Could not find H264 decoder in ffmpeg.");
+- avcodec_get_context_defaults(&d->av_context);
+- error=avcodec_open(&d->av_context,codec);
++ avcodec_get_context_defaults3(&d->av_context, NULL);
++ error=avcodec_open2(&d->av_context,codec, NULL);
+ if (error!=0){
+- ms_fatal("avcodec_open() failed.");
++ ms_fatal("avcodec_open2() failed.");
+ }
+ }
+
+diff -urb mediastreamer-2.8.2.old/src/jpegwriter.c mediastreamer-2.8.2/src/jpegwriter.c
+--- mediastreamer-2.8.2.old/src/jpegwriter.c 2013-06-22 19:13:24.649838347 +0200
++++ mediastreamer-2.8.2/src/jpegwriter.c 2013-06-22 19:17:57.087828655 +0200
+@@ -90,7 +90,7 @@
+ mblk_t *jpegm;
+ struct SwsContext *sws_ctx;
+
+- AVCodecContext *avctx=avcodec_alloc_context();
++ AVCodecContext *avctx=avcodec_alloc_context3(NULL);
+
+ avctx->width=yuvbuf.w;
+ avctx->height=yuvbuf.h;
+@@ -98,9 +98,9 @@
+ avctx->time_base.den =1;
+ avctx->pix_fmt=PIX_FMT_YUVJ420P;
+
+- error=avcodec_open(avctx,s->codec);
++ error=avcodec_open2(avctx,s->codec,NULL);
+ if (error!=0) {
+- ms_error("avcodec_open() failed: %i",error);
++ ms_error("avcodec_open2() failed: %i",error);
+ cleanup(s,NULL);
+ av_free(avctx);
+ return;
+diff -urb mediastreamer-2.8.2.old/src/nowebcam.c mediastreamer-2.8.2/src/nowebcam.c
+--- mediastreamer-2.8.2.old/src/nowebcam.c 2013-06-22 19:13:24.652838347 +0200
++++ mediastreamer-2.8.2/src/nowebcam.c 2013-06-22 19:20:43.198822745 +0200
+@@ -68,9 +68,9 @@
+ return NULL;
+ }
+
+- avcodec_get_context_defaults(&av_context);
+- if (avcodec_open(&av_context,codec)<0){
+- ms_error("jpeg2yuv: avcodec_open failed");
++ avcodec_get_context_defaults3(&av_context, NULL);
++ if (avcodec_open2(&av_context,codec,NULL)<0){
++ ms_error("jpeg2yuv: avcodec_open2 failed");
+ return NULL;
+ }
+ av_init_packet(&pkt);
+diff -urb mediastreamer-2.8.2.old/src/videodec.c mediastreamer-2.8.2/src/videodec.c
+--- mediastreamer-2.8.2.old/src/videodec.c 2013-06-22 19:13:24.654838347 +0200
++++ mediastreamer-2.8.2/src/videodec.c 2013-06-22 19:28:58.436805127 +0200
+@@ -52,7 +52,7 @@
+ DecState *s=(DecState *)ms_new0(DecState,1);
+ ms_ffmpeg_check_init();
+
+- avcodec_get_context_defaults(&s->av_context);
++ avcodec_get_context_defaults3(&s->av_context, NULL);
+ s->av_codec=NULL;
+ s->codec=cid;
+ s->input=NULL;
+@@ -133,8 +133,8 @@
+ if (s->av_context.codec==NULL){
+ /* we must know picture size before initializing snow decoder*/
+ if (s->codec!=CODEC_ID_SNOW){
+- error=avcodec_open(&s->av_context, s->av_codec);
+- if (error!=0) ms_error("avcodec_open() failed: %i",error);
++ error=avcodec_open2(&s->av_context, s->av_codec,NULL);
++ if (error!=0) ms_error("avcodec_open2() failed: %i",error);
+ if (s->codec==CODEC_ID_MPEG4 && s->dci_size>0){
+ s->av_context.extradata=s->dci;
+ s->av_context.extradata_size=s->dci_size;
+@@ -223,8 +223,8 @@
+ int error;
+ s->av_context.width=h>>16;
+ s->av_context.height=h&0xffff;
+- error=avcodec_open(&s->av_context, s->av_codec);
+- if (error!=0) ms_error("avcodec_open() failed for snow: %i",error);
++ error=avcodec_open2(&s->av_context, s->av_codec, NULL);
++ if (error!=0) ms_error("avcodec_open2() failed for snow: %i",error);
+ else {
+ s->snow_initialized=TRUE;
+ ms_message("Snow decoder initialized,size=%ix%i",
+diff -urb mediastreamer-2.8.2.old/src/videoenc.c mediastreamer-2.8.2/src/videoenc.c
+--- mediastreamer-2.8.2.old/src/videoenc.c 2013-06-22 19:13:24.654838347 +0200
++++ mediastreamer-2.8.2/src/videoenc.c 2013-06-22 19:20:19.732823580 +0200
+@@ -236,7 +236,7 @@
+ AVCodecContext *c=&s->av_context;
+ const int max_br_vbv=128000;
+
+- avcodec_get_context_defaults(c);
++ avcodec_get_context_defaults3(c, NULL);
+ if (s->codec==CODEC_ID_MJPEG)
+ {
+ ms_message("Codec bitrate set to %i",c->bit_rate);
+@@ -342,9 +342,9 @@
+ ms_error("could not find encoder for codec id %i",s->codec);
+ return;
+ }
+- error=avcodec_open(&s->av_context, s->av_codec);
++ error=avcodec_open2(&s->av_context, s->av_codec, NULL);
+ if (error!=0) {
+- ms_error("avcodec_open() failed: %i",error);
++ ms_error("avcodec_open2() failed: %i",error);
+ return;
+ }
+ video_starter_init(&s->starter);
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.8.2-v4l-automagic.patch b/media-libs/mediastreamer/files/mediastreamer-2.8.2-v4l-automagic.patch
new file mode 100644
index 000000000000..f35660ea8c0c
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.8.2-v4l-automagic.patch
@@ -0,0 +1,54 @@
+From 93362c849d4a3ba1748d033369f76e93557f1c06 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Thu, 22 Nov 2012 15:02:21 +0100
+Subject: [PATCH] Support disabling V4L support completely.
+
+---
+ mediastreamer-2.8.2/configure.ac | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/mediastreamer-2.8.2/configure.ac b/mediastreamer-2.8.2/configure.ac
+index d5be955..86703a0 100644
+--- a/mediastreamer-2.8.2/configure.ac
++++ b/mediastreamer-2.8.2/configure.ac
+@@ -624,6 +624,16 @@ PACKAGE_DATA_DIR="$prefix/share"
+ AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${package_prefix}/share" ,[path of data])
+ AC_SUBST(PACKAGE_DATA_DIR)
+
++AC_ARG_ENABLE(v4l,
++ [ --disable-v4l Disable usage of v4l],
++ [case "${enableval}" in
++ yes) v4l=yes ;;
++ no) v4l=no ;;
++ *) AC_MSG_ERROR(bad value ${enableval} for --disable-v4l) ;;
++ esac],[v4l=yes])
++
++if test "$v4l" = "yes" ; then
++
+ dnl check for video4linux headers
+ AC_CHECK_HEADERS(linux/videodev.h linux/videodev2.h)
+ if test "${ac_cv_header_linux_videodev_h}" = "yes" ; then
+@@ -637,9 +647,6 @@ else
+ found_v4l2=no
+ fi
+
+-AM_CONDITIONAL(BUILD_V4L1, test x$found_v4l1 = xyes )
+-AM_CONDITIONAL(BUILD_V4L2, test x$found_v4l2 = xyes )
+-
+ AC_ARG_ENABLE(libv4l1,
+ [ --disable-libv4l1 Disable usage of libv4l1, really discouraged],
+ [case "${enableval}" in
+@@ -680,6 +687,10 @@ this check.
+ fi
+ fi
+
++fi
++
++AM_CONDITIONAL(BUILD_V4L1, test x$found_v4l1 = xyes )
++AM_CONDITIONAL(BUILD_V4L2, test x$found_v4l2 = xyes )
+
+ AC_ARG_ENABLE(tests,
+ [ --enable-tests Disable compilation of tests],
+--
+1.8.0
+
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.9.0-libav9.patch b/media-libs/mediastreamer/files/mediastreamer-2.9.0-libav9.patch
new file mode 100644
index 000000000000..078f360b3382
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.9.0-libav9.patch
@@ -0,0 +1,120 @@
+diff --git a/src/videofilters/h264dec.c b/src/videofilters/h264dec.c
+index 38881c1..f306723 100644
+--- a/src/videofilters/h264dec.c
++++ b/src/videofilters/h264dec.c
+@@ -58,10 +58,10 @@ static void dec_open(DecData *d){
+ int error;
+ codec=avcodec_find_decoder(CODEC_ID_H264);
+ if (codec==NULL) ms_fatal("Could not find H264 decoder in ffmpeg.");
+- avcodec_get_context_defaults(&d->av_context);
+- error=avcodec_open(&d->av_context,codec);
++ avcodec_get_context_defaults3(&d->av_context, NULL);
++ error=avcodec_open2(&d->av_context,codec, NULL);
+ if (error!=0){
+- ms_fatal("avcodec_open() failed.");
++ ms_fatal("avcodec_open2() failed.");
+ }
+ }
+
+diff --git a/src/videofilters/jpegwriter.c b/src/videofilters/jpegwriter.c
+index 891f618..96f5d7f 100644
+--- a/src/videofilters/jpegwriter.c
++++ b/src/videofilters/jpegwriter.c
+@@ -90,7 +90,7 @@ static void jpg_process(MSFilter *f){
+ mblk_t *jpegm;
+ struct SwsContext *sws_ctx;
+
+- AVCodecContext *avctx=avcodec_alloc_context();
++ AVCodecContext *avctx=avcodec_alloc_context3(NULL);
+
+ avctx->width=yuvbuf.w;
+ avctx->height=yuvbuf.h;
+@@ -98,9 +98,9 @@ static void jpg_process(MSFilter *f){
+ avctx->time_base.den =1;
+ avctx->pix_fmt=PIX_FMT_YUVJ420P;
+
+- error=avcodec_open(avctx,s->codec);
++ error=avcodec_open2(avctx,s->codec,NULL);
+ if (error!=0) {
+- ms_error("avcodec_open() failed: %i",error);
++ ms_error("avcodec_open2() failed: %i",error);
+ cleanup(s,NULL);
+ av_free(avctx);
+ return;
+diff --git a/src/videofilters/nowebcam.c b/src/videofilters/nowebcam.c
+index 60e3853..329c453 100644
+--- a/src/videofilters/nowebcam.c
++++ b/src/videofilters/nowebcam.c
+@@ -68,9 +68,9 @@ static mblk_t *jpeg2yuv(uint8_t *jpgbuf, int bufsize, MSVideoSize *reqsize){
+ return NULL;
+ }
+
+- avcodec_get_context_defaults(&av_context);
+- if (avcodec_open(&av_context,codec)<0){
+- ms_error("jpeg2yuv: avcodec_open failed");
++ avcodec_get_context_defaults3(&av_context, NULL);
++ if (avcodec_open2(&av_context,codec,NULL)<0){
++ ms_error("jpeg2yuv: avcodec_open2 failed");
+ return NULL;
+ }
+ av_init_packet(&pkt);
+diff --git a/src/videofilters/videodec.c b/src/videofilters/videodec.c
+index 494debf..c52e207 100644
+--- a/src/videofilters/videodec.c
++++ b/src/videofilters/videodec.c
+@@ -53,7 +53,7 @@ static void dec_init(MSFilter *f, enum CodecID cid){
+ DecState *s=(DecState *)ms_new0(DecState,1);
+ ms_ffmpeg_check_init();
+
+- avcodec_get_context_defaults(&s->av_context);
++ avcodec_get_context_defaults3(&s->av_context, NULL);
+ s->av_codec=NULL;
+ s->codec=cid;
+ s->input=NULL;
+@@ -135,8 +135,8 @@ static void dec_preprocess(MSFilter *f){
+ if (s->av_context.codec==NULL){
+ /* we must know picture size before initializing snow decoder*/
+ if (s->codec!=CODEC_ID_SNOW){
+- error=avcodec_open(&s->av_context, s->av_codec);
+- if (error!=0) ms_error("avcodec_open() failed: %i",error);
++ error=avcodec_open2(&s->av_context, s->av_codec,NULL);
++ if (error!=0) ms_error("avcodec_open2() failed: %i",error);
+ if (s->codec==CODEC_ID_MPEG4 && s->dci_size>0){
+ s->av_context.extradata=s->dci;
+ s->av_context.extradata_size=s->dci_size;
+@@ -225,8 +225,8 @@ static mblk_t * parse_snow_header(DecState *s,mblk_t *inm){
+ int error;
+ s->av_context.width=h>>16;
+ s->av_context.height=h&0xffff;
+- error=avcodec_open(&s->av_context, s->av_codec);
+- if (error!=0) ms_error("avcodec_open() failed for snow: %i",error);
++ error=avcodec_open2(&s->av_context, s->av_codec, NULL);
++ if (error!=0) ms_error("avcodec_open2() failed for snow: %i",error);
+ else {
+ s->snow_initialized=TRUE;
+ ms_message("Snow decoder initialized,size=%ix%i",
+diff --git a/src/videofilters/videoenc.c b/src/videofilters/videoenc.c
+index da35592..09dcc9d 100644
+--- a/src/videofilters/videoenc.c
++++ b/src/videofilters/videoenc.c
+@@ -242,7 +242,7 @@ static void prepare(EncState *s){
+ AVCodecContext *c=&s->av_context;
+ const int max_br_vbv=128000;
+
+- avcodec_get_context_defaults(c);
++ avcodec_get_context_defaults3(c, NULL);
+ if (s->codec==CODEC_ID_MJPEG)
+ {
+ ms_message("Codec bitrate set to %i",c->bit_rate);
+@@ -348,9 +348,9 @@ static void enc_preprocess(MSFilter *f){
+ ms_error("could not find encoder for codec id %i",s->codec);
+ return;
+ }
+- error=avcodec_open(&s->av_context, s->av_codec);
++ error=avcodec_open2(&s->av_context, s->av_codec, NULL);
+ if (error!=0) {
+- ms_error("avcodec_open() failed: %i",error);
++ ms_error("avcodec_open2() failed: %i",error);
+ return;
+ }
+ video_starter_init(&s->starter);
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.9.0-tests.patch b/media-libs/mediastreamer/files/mediastreamer-2.9.0-tests.patch
new file mode 100644
index 000000000000..3bcb8bd36618
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.9.0-tests.patch
@@ -0,0 +1,26 @@
+From d9f448013bd5ea92ce42c99ef3338932ec694b62 Mon Sep 17 00:00:00 2001
+From: hasufell <hasufell@gentoo.org>
+Date: Wed, 9 Oct 2013 21:18:28 +0200
+Subject: [PATCH] fix tests
+
+---
+ configure.ac | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 4b923a9..4aec221 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -873,6 +873,9 @@ case "$target_os" in
+ #hack for macport
+ CUNIT_LIBS+=" -lncurses"
+ ;;
++ *linux*)
++ CUNIT_LIBS+=" -lncurses"
++ ;;
+ *mingw*)
+ CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0501"
+ LIBS="$LIBS -lws2_32 -liphlpapi"
+--
+1.8.3.2
+
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.9.0-underlinking.patch b/media-libs/mediastreamer/files/mediastreamer-2.9.0-underlinking.patch
new file mode 100644
index 000000000000..19d6af803c2c
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.9.0-underlinking.patch
@@ -0,0 +1,57 @@
+From 497ad9c27385c02f4f038b6e787ada9c7b6f8373 Mon Sep 17 00:00:00 2001
+From: hasufell <hasufell@gentoo.org>
+Date: Wed, 9 Oct 2013 18:24:28 +0200
+Subject: [PATCH] fix underlinking
+
+---
+ configure.ac | 20 ++++++++++++++++++++
+ src/Makefile.am | 2 +-
+ 2 files changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9f402bd..4b923a9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -893,6 +893,26 @@ fi
+
+ AM_CONDITIONAL(BUILD_TESTS,test x$found_cunit = xyes)
+
++dnl Check for clock_gettime, in libc for FreeBSD, in rt for linux,
++dnl in rt for Solaris 7, in posix4 for Solaris 2.5.1
++LIB_CLOCK_GETTIME=
++clk_saved_libs=$LIBS
++AC_SEARCH_LIBS([clock_gettime], [rt posix4],
++ [test "$ac_cv_search_clock_gettime" = "none required" ||
++ LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
++AC_SUBST([LIB_CLOCK_GETTIME])
++
++AC_MSG_CHECKING([for working clock_gettime])
++AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]],
++ [[clock_gettime(CLOCK_REALTIME, 0);]])], [gnupg_cv_clock_gettime=yes], [gnupg_cv_clock_gettime=no])
++AC_MSG_RESULT($gnupg_cv_clock_gettime)
++
++if test x"$gnupg_cv_clock_gettime" = xyes; then
++ AC_DEFINE([HAVE_CLOCK_GETTIME], 1,
++ [Define to 1 if you have the `clock_gettime' function.])
++fi
++LIBS=$clk_saved_libs
++
+
+ dnl ##################################################
+ dnl # Check for doxygen
+diff --git a/src/Makefile.am b/src/Makefile.am
+index a315e92..a5e144c 100755
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -266,7 +266,7 @@ voipdescs.h: Makefile $(libmediastreamer_voip_la_SOURCES)
+ awk 'BEGIN { print("MSFilterDesc * ms_voip_filter_descs[]={") } { printf("&%s,\n",$$1) } END{ print("NULL\n};\n") } ' $$builddir/voipdescs.txt >> $$builddir/$@
+
+
+-libmediastreamer_base_la_LIBADD= $(ORTP_LIBS)
++libmediastreamer_base_la_LIBADD= $(ORTP_LIBS) @LIB_CLOCK_GETTIME@
+ libmediastreamer_base_la_LDFLAGS= -no-undefined -version-info $(LIBMEDIASTREAMER_SO_VERSION)
+
+ if !BUILD_WIN32
+--
+1.8.3.2
+
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.9.0-v4l-automagic.patch b/media-libs/mediastreamer/files/mediastreamer-2.9.0-v4l-automagic.patch
new file mode 100644
index 000000000000..c590aef3b713
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.9.0-v4l-automagic.patch
@@ -0,0 +1,55 @@
+From b99ddff6f322c8b466f3cdfd71b0d629cea33aac Mon Sep 17 00:00:00 2001
+From: hasufell <hasufell@gentoo.org>
+Date: Wed, 9 Oct 2013 18:12:46 +0200
+Subject: [PATCH] Support disabling V4L support completely
+
+---
+ configure.ac | 18 +++++++++++++++---
+ 1 file changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 94b6f18..9f402bd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -746,6 +746,16 @@ PACKAGE_DATA_DIR="$prefix/share"
+ AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${package_prefix}/share" ,[path of data])
+ AC_SUBST(PACKAGE_DATA_DIR)
+
++AC_ARG_ENABLE(v4l,
++ [ --disable-v4l Disable usage of v4l],
++ [case "${enableval}" in
++ yes) v4l=yes ;;
++ no) v4l=no ;;
++ *) AC_MSG_ERROR(bad value ${enableval} for --disable-v4l) ;;
++ esac],[v4l=yes])
++
++if test "$v4l" = "yes" ; then
++
+ dnl check for video4linux headers
+ AC_CHECK_HEADERS(linux/videodev.h linux/videodev2.h)
+ if test "${ac_cv_header_linux_videodev_h}" = "yes" ; then
+@@ -759,9 +769,6 @@ else
+ found_v4l2=no
+ fi
+
+-AM_CONDITIONAL(BUILD_V4L1, test x$found_v4l1 = xyes )
+-AM_CONDITIONAL(BUILD_V4L2, test x$found_v4l2 = xyes )
+-
+ AC_ARG_ENABLE(libv4l1,
+ [AS_HELP_STRING([--disable-libv4l1], [Disable usage of libv4l1, really discouraged])],
+ [case "${enableval}" in
+@@ -805,6 +812,11 @@ this check.
+ fi
+ fi
+
++fi
++
++AM_CONDITIONAL(BUILD_V4L1, test x$found_v4l1 = xyes )
++AM_CONDITIONAL(BUILD_V4L2, test x$found_v4l2 = xyes )
++
+
+ AC_PATH_PROG(PCAP,pcap-config,false)
+ AM_CONDITIONAL(HAVE_PCAP, test $PCAP != false)
+--
+1.8.3.2
+
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.9.0-xxd.patch b/media-libs/mediastreamer/files/mediastreamer-2.9.0-xxd.patch
new file mode 100644
index 000000000000..2337e1343002
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.9.0-xxd.patch
@@ -0,0 +1,18 @@
+From: Julian Ospald <hasufell@gentoo.org>
+Date: Fri Oct 11 11:37:19 UTC 2013
+Subject: avoid dependency on vim-core
+
+--- mediastreamer-2.9.0/src/Makefile.am
++++ mediastreamer-2.9.0/src/Makefile.am
+@@ -385,9 +385,9 @@
+ yuv2rgb.fs.h: yuv2rgb.fs
+ builddir=`pwd` && \
+ cd $(top_srcdir)/src && \
+- xxd -i yuv2rgb.fs | sed s/}\;/,0x00}\;/ > $$builddir/yuv2rgb.fs.h
++ xxdi.pl yuv2rgb.fs | sed s/}\;/0x00}\;/ > $$builddir/yuv2rgb.fs.h
+
+ yuv2rgb.vs.h: yuv2rgb.vs
+ builddir=`pwd` && \
+ cd $(top_srcdir)/src && \
+- xxd -i yuv2rgb.vs | sed s/}\;/,0x00}\;/ > $$builddir/yuv2rgb.vs.h
++ xxdi.pl yuv2rgb.vs | sed s/}\;/0x00}\;/ > $$builddir/yuv2rgb.vs.h
diff --git a/media-libs/mediastreamer/mediastreamer-2.7.3-r3.ebuild b/media-libs/mediastreamer/mediastreamer-2.7.3-r3.ebuild
new file mode 100644
index 000000000000..6fc51e252981
--- /dev/null
+++ b/media-libs/mediastreamer/mediastreamer-2.7.3-r3.ebuild
@@ -0,0 +1,130 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit eutils autotools multilib
+
+DESCRIPTION="Mediastreaming library for telephony application"
+HOMEPAGE="http://www.linphone.org/"
+SRC_URI="mirror://nongnu/linphone/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc ppc64 x86 ~x64-macos ~x86-macos"
+# Many cameras will not work or will crash an application if mediastreamer2 is
+# not built with v4l2 support (taken from configure.ac)
+# TODO: run-time test for ipv6: does it really need ortp[ipv6] ?
+IUSE="+alsa amr bindist coreaudio debug examples gsm ilbc ipv6 jack oss portaudio
+pulseaudio sdl +speex static-libs theora v4l video x264 X"
+REQUIRED_USE="|| ( oss alsa jack portaudio coreaudio pulseaudio )
+ video? ( || ( sdl X ) )
+ theora? ( video )
+ X? ( video )
+ v4l? ( video )"
+
+RDEPEND=">=net-libs/ortp-0.16.2[ipv6?]
+ alsa? ( media-libs/alsa-lib )
+ gsm? ( media-sound/gsm )
+ jack? ( >=media-libs/libsamplerate-0.0.13
+ media-sound/jack-audio-connection-kit )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( >=media-sound/pulseaudio-0.9.21 )
+ speex? ( >=media-libs/speex-1.2_beta3 )
+ video? (
+ virtual/ffmpeg
+ v4l? ( media-libs/libv4l
+ sys-kernel/linux-headers )
+ theora? ( media-libs/libtheora )
+ sdl? ( media-libs/libsdl[video,X] )
+ X? ( x11-libs/libX11
+ x11-libs/libXv ) )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ x11-proto/videoproto"
+
+PDEPEND="amr? ( !bindist? ( media-plugins/mediastreamer-amr ) )
+ ilbc? ( media-plugins/mediastreamer-ilbc )
+ video? ( x264? ( media-plugins/mediastreamer-x264 ) )"
+
+DOCS=( AUTHORS ChangeLog NEWS README )
+
+src_prepare() {
+ # respect user's CFLAGS
+ sed -i -e "s:-O2::;s: -g::" configure.ac || die "patching configure.ac failed"
+
+ # change default paths
+ sed -i -e "s:\(\${prefix}/\)lib:\1$(get_libdir):" \
+ -e "s:\(prefix/share\):\1/${PN}:" configure.ac \
+ || die "patching configure.ac failed"
+
+ # fix html doc installation dir
+ sed -i -e "s:\$(pkgdocdir):\$(docdir):" help/Makefile.am \
+ || die "patching help/Makefile.am failed"
+ sed -i -e "s:\(doc_htmldir=\).*:\1\$(htmldir):" help/Makefile.am \
+ || die "patching help/Makefile.am failed"
+
+ epatch "${FILESDIR}/${PN}-2.7.3-v4l-automagic.patch"
+ epatch "${FILESDIR}/${P}-sdl-build.patch"
+ epatch "${FILESDIR}/${P}-videoenc_282.patch"
+ epatch "${FILESDIR}/${P}-ffmpeg-0.11.patch"
+
+ # linux/videodev.h dropped in 2.6.38
+ sed -i -e 's:msv4l.c::' src/Makefile.am || die
+ sed -i -e 's:linux/videodev.h ::' configure.ac || die
+ eautoreconf
+
+ # don't build examples in tests/
+ sed -i -e "s:\(SUBDIRS = .*\) tests \(.*\):\1 \2:" Makefile.in \
+ || die "patching Makefile.in failed"
+}
+
+src_configure() {
+ # Mac OS X Audio Queue is an audio recording facility, available on
+ # 10.5 (Leopard, Darwin9) and onward
+ local macaqsnd="--disable-macaqsnd"
+ if use coreaudio && [[ ${CHOST} == *-darwin* && ${CHOST##*-darwin} -ge 9 ]];
+ then
+ macaqsnd="--enable-macaqsnd"
+ fi
+
+ # strict: don't want -Werror
+ # external-ortp: don't use bundled libs
+ # arts: arts is deprecated
+ econf \
+ --htmldir="${EPREFIX}"/usr/share/doc/${PF}/html \
+ --datadir="${EPREFIX}"/usr/share/${PN} \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ --disable-strict \
+ --enable-external-ortp \
+ --disable-artsc \
+ $(use_enable alsa) \
+ $(use_enable pulseaudio) \
+ $(use_enable coreaudio macsnd) ${macaqsnd} \
+ $(use_enable debug) \
+ $(use_enable gsm) \
+ $(use_enable ipv6) \
+ $(use_enable jack) \
+ $(use_enable oss) \
+ $(use_enable portaudio) \
+ $(use_enable speex) \
+ $(use_enable static-libs static) \
+ $(use_enable theora) \
+ $(use_enable video) \
+ $(use_enable v4l) \
+ $(use_enable v4l libv4l) \
+ $(use_enable sdl) \
+ $(use_enable X x11) \
+ $(use_enable X xv)
+}
+
+src_install() {
+ default
+ find "${ED}" -name '*.la' -exec rm -f {} +
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ doins tests/*.c
+ fi
+}
diff --git a/media-libs/mediastreamer/mediastreamer-2.8.2.ebuild b/media-libs/mediastreamer/mediastreamer-2.8.2.ebuild
new file mode 100644
index 000000000000..871398ead990
--- /dev/null
+++ b/media-libs/mediastreamer/mediastreamer-2.8.2.ebuild
@@ -0,0 +1,138 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit autotools eutils multilib
+
+DESCRIPTION="Mediastreaming library for telephony application"
+HOMEPAGE="http://www.linphone.org/"
+SRC_URI="mirror://nongnu/linphone/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc ppc64 x86"
+# Many cameras will not work or will crash an application if mediastreamer2 is
+# not built with v4l2 support (taken from configure.ac)
+# TODO: run-time test for ipv6: does it really need ortp[ipv6] ?
+IUSE="+alsa amr bindist coreaudio debug doc examples g726 g729 gsm ilbc
+ ipv6 oss portaudio pulseaudio sdl silk +speex static-libs theora v4l
+ video x264 X"
+
+REQUIRED_USE="|| ( oss alsa portaudio coreaudio pulseaudio )
+ video? ( || ( sdl X ) )
+ theora? ( video )
+ X? ( video )
+ v4l? ( video )"
+
+RDEPEND=">=net-libs/ortp-0.17[ipv6?]
+ alsa? ( media-libs/alsa-lib )
+ g726? ( >=media-libs/spandsp-0.0.6_pre1 )
+ gsm? ( media-sound/gsm )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( >=media-sound/pulseaudio-0.9.21 )
+ speex? ( >=media-libs/speex-1.2_beta3 )
+ video? (
+ virtual/ffmpeg
+ v4l? ( media-libs/libv4l
+ sys-kernel/linux-headers )
+ theora? ( media-libs/libtheora )
+ sdl? ( media-libs/libsdl[video,X] )
+ X? ( x11-libs/libX11
+ x11-libs/libXv ) )"
+DEPEND="${RDEPEND}
+ dev-util/intltool
+ virtual/pkgconfig
+ x11-proto/videoproto
+ doc? ( app-doc/doxygen )"
+
+PDEPEND="amr? ( !bindist? ( media-plugins/mediastreamer-amr ) )
+ g729? ( !bindist? ( media-plugins/mediastreamer-bcg729 ) )
+ ilbc? ( media-plugins/mediastreamer-ilbc )
+ video? ( x264? ( media-plugins/mediastreamer-x264 ) )
+ silk? ( !bindist? ( media-plugins/mediastreamer-silk ) )"
+
+src_prepare() {
+ # respect user's CFLAGS
+ sed -i -e "s:-O2::;s: -g::" configure.ac || die "patching configure.ac failed"
+
+ # change default paths
+ sed -i -e "s:\(\${prefix}/\)lib:\1$(get_libdir):" \
+ -e "s:\(prefix/share\):\1/${PN}:" configure.ac \
+ || die "patching configure.ac failed"
+
+ # fix html doc installation dir
+ sed -i -e "s:\$(pkgdocdir):\$(docdir):" help/Makefile.am \
+ || die "patching help/Makefile.am failed"
+ sed -i -e "s:\(doc_htmldir=\).*:\1\$(htmldir):" help/Makefile.am \
+ || die "patching help/Makefile.am failed"
+
+ epatch "${FILESDIR}/${P}-v4l-automagic.patch" \
+ "${FILESDIR}/${P}-autopoint.patch" \
+ "${FILESDIR}/${P}-ffmpeg-1.0.patch" \
+ "${FILESDIR}/${P}-libav9.patch"
+
+ # linux/videodev.h dropped in 2.6.38
+ sed -i -e 's:linux/videodev.h ::' configure.ac || die
+
+ # don't build examples in tests/
+ sed -i -e "/SUBDIRS/s/ tests//" Makefile.in || die
+
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ --htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
+ --datadir="${EPREFIX}"/usr/share/${PN}
+ # arts is deprecated
+ --disable-artsc
+ # don't want -Werror
+ --disable-strict
+ --disable-libv4l1
+ # don't use bundled libs
+ --enable-external-ortp
+ $(use_enable alsa)
+ $(use_enable pulseaudio)
+ $(use_enable coreaudio macsnd)
+ $(use_enable debug)
+ $(use_enable g726 spandsp )
+ $(use_enable gsm)
+ $(use_enable ipv6)
+ $(use_enable oss)
+ $(use_enable portaudio)
+ $(use_enable speex)
+ $(use_enable static-libs static)
+ $(use_enable theora)
+ $(use_enable video)
+ $(use_enable v4l)
+ $(use_enable v4l libv4l2)
+ $(use_enable sdl)
+ $(use_enable X x11)
+ $(use_enable X xv)
+
+ $(use doc || echo ac_cv_path_DOXYGEN=false)
+ )
+
+ # Mac OS X Audio Queue is an audio recording facility, available on
+ # 10.5 (Leopard, Darwin9) and onward
+ if use coreaudio && [[ ${CHOST} == *-darwin* && ${CHOST##*-darwin} -ge 9 ]]
+ then
+ myeconfargs+=( --enable-macaqsnd )
+ else
+ myeconfargs+=( --disable-macaqsnd )
+ fi
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+ prune_libtool_files
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ doins tests/*.c
+ fi
+}
diff --git a/media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild b/media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild
new file mode 100644
index 000000000000..71a94d12beb3
--- /dev/null
+++ b/media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild
@@ -0,0 +1,174 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit autotools eutils
+
+DESCRIPTION="Mediastreaming library for telephony application"
+HOMEPAGE="http://www.linphone.org/"
+SRC_URI="mirror://nongnu/linphone/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0/3"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+# Many cameras will not work or will crash an application if mediastreamer2 is
+# not built with v4l2 support (taken from configure.ac)
+# TODO: run-time test for ipv6: does it really need ortp[ipv6] ?
+IUSE="+alsa amr bindist coreaudio debug doc examples +filters g726 g729 gsm ilbc
+ ipv6 libav ntp-timestamp opengl opus +ortp oss pcap portaudio pulseaudio sdl
+ silk +speex static-libs test theora upnp v4l video x264 X"
+
+REQUIRED_USE="|| ( oss alsa portaudio coreaudio pulseaudio )
+ video? ( || ( opengl sdl X ) )
+ theora? ( video )
+ X? ( video )
+ v4l? ( video )
+ opengl? ( video )"
+
+RDEPEND="alsa? ( media-libs/alsa-lib )
+ g726? ( >=media-libs/spandsp-0.0.6_pre1 )
+ gsm? ( media-sound/gsm )
+ opus? ( media-libs/opus )
+ ortp? ( >=net-libs/ortp-0.21.0[ipv6?] )
+ pcap? ( sys-libs/libcap )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( >=media-sound/pulseaudio-0.9.21 )
+ speex? ( >=media-libs/speex-1.2_beta3 )
+ upnp? ( net-libs/libupnp )
+ video? (
+ libav? ( >=media-video/libav-9.12:0= )
+ !libav? ( >=media-video/ffmpeg-1.2.6-r1:0= )
+
+ opengl? ( media-libs/glew
+ virtual/opengl
+ x11-libs/libX11 )
+ v4l? ( media-libs/libv4l
+ sys-kernel/linux-headers )
+ theora? ( media-libs/libtheora )
+ sdl? ( media-libs/libsdl[video,X] )
+ X? ( x11-libs/libX11
+ x11-libs/libXv ) )"
+DEPEND="${RDEPEND}
+ dev-util/intltool
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen )
+ opengl? ( dev-util/xxdi )
+ test? ( >=dev-util/cunit-2.1_p2[ncurses] )
+ X? ( x11-proto/videoproto )"
+
+PDEPEND="amr? ( !bindist? ( media-plugins/mediastreamer-amr ) )
+ g729? ( !bindist? ( media-plugins/mediastreamer-bcg729 ) )
+ ilbc? ( media-plugins/mediastreamer-ilbc )
+ video? ( x264? ( media-plugins/mediastreamer-x264 ) )
+ silk? ( !bindist? ( media-plugins/mediastreamer-silk ) )"
+
+src_prepare() {
+ # variable causes "command not found" warning and is not
+ # needed anyway
+ sed -i \
+ -e 's/$(ACLOCAL_MACOS_FLAGS)//' \
+ Makefile.am || die
+
+ # respect user's CFLAGS
+ sed -i \
+ -e "s:-O2::;s: -g::" \
+ configure.ac || die "patching configure.ac failed"
+
+ # change default paths
+ sed -i \
+ -e "s:\(prefix/share\):\1/${PN}:" \
+ configure.ac || die "patching configure.ac failed"
+
+ # fix doc installation dir
+ sed -i \
+ -e "s:\$(pkgdocdir):\$(docdir):" \
+ help/Makefile.am || die "patching help/Makefile.am failed"
+
+ # fix html installation dir
+ sed -i \
+ -e "s:\(doc_htmldir=\).*:\1\$(htmldir):" \
+ help/Makefile.am || die "patching help/Makefile.am failed"
+
+ # linux/videodev.h dropped in 2.6.38
+ sed -i \
+ -e 's:linux/videodev.h ::' \
+ configure.ac || die
+
+ epatch "${FILESDIR}/${P}-v4l-automagic.patch" \
+ "${FILESDIR}/${P}-libav9.patch" \
+ "${FILESDIR}/${P}-underlinking.patch" \
+ "${FILESDIR}/${P}-tests.patch" \
+ "${FILESDIR}/${P}-xxd.patch"
+
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ --htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
+ --datadir="${EPREFIX}"/usr/share/${PN}
+ # arts is deprecated
+ --disable-artsc
+ # don't want -Werror
+ --disable-strict
+ --disable-libv4l1
+ # don't use bundled libs
+ --enable-external-ortp
+ $(use_enable alsa)
+ $(use_enable pulseaudio)
+ $(use_enable coreaudio macsnd)
+ $(use_enable debug)
+ $(use_enable filters)
+ $(use_enable g726 spandsp)
+ $(use_enable gsm)
+ $(use_enable ipv6)
+ $(use_enable ntp-timestamp)
+ $(use_enable opengl glx)
+ $(use_enable opus)
+ $(use_enable ortp)
+ $(use_enable oss)
+ $(use_enable pcap)
+ $(use_enable portaudio)
+ $(use_enable speex)
+ $(use_enable static-libs static)
+ $(use_enable theora)
+ $(use_enable upnp)
+ $(use_enable video)
+ $(use_enable v4l)
+ $(use_enable v4l libv4l2)
+ $(use_enable sdl)
+ $(use_enable X x11)
+ $(use_enable X xv)
+
+ $(use doc || echo ac_cv_path_DOXYGEN=false)
+ )
+
+ # Mac OS X Audio Queue is an audio recording facility, available on
+ # 10.5 (Leopard, Darwin9) and onward
+ if use coreaudio && [[ ${CHOST} == *-darwin* && ${CHOST##*-darwin} -ge 9 ]]
+ then
+ myeconfargs+=( --enable-macaqsnd )
+ else
+ myeconfargs+=( --disable-macaqsnd )
+ fi
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ default
+ cd tester || die
+ ./mediastreamer2_tester || die
+}
+
+src_install() {
+ default
+ prune_libtool_files
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ doins tester/*.c
+ fi
+}
diff --git a/media-libs/mediastreamer/mediastreamer-2.9.0.ebuild b/media-libs/mediastreamer/mediastreamer-2.9.0.ebuild
new file mode 100644
index 000000000000..a3b912bfd728
--- /dev/null
+++ b/media-libs/mediastreamer/mediastreamer-2.9.0.ebuild
@@ -0,0 +1,172 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit autotools eutils
+
+DESCRIPTION="Mediastreaming library for telephony application"
+HOMEPAGE="http://www.linphone.org/"
+SRC_URI="mirror://nongnu/linphone/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0/3"
+KEYWORDS="amd64 ppc ppc64 x86"
+# Many cameras will not work or will crash an application if mediastreamer2 is
+# not built with v4l2 support (taken from configure.ac)
+# TODO: run-time test for ipv6: does it really need ortp[ipv6] ?
+IUSE="+alsa amr bindist coreaudio debug doc examples +filters g726 g729 gsm ilbc
+ ipv6 ntp-timestamp opengl opus +ortp oss pcap portaudio pulseaudio sdl silk +speex
+ static-libs test theora upnp v4l video x264 X"
+
+REQUIRED_USE="|| ( oss alsa portaudio coreaudio pulseaudio )
+ video? ( || ( opengl sdl X ) )
+ theora? ( video )
+ X? ( video )
+ v4l? ( video )
+ opengl? ( video )"
+
+RDEPEND="alsa? ( media-libs/alsa-lib )
+ g726? ( >=media-libs/spandsp-0.0.6_pre1 )
+ gsm? ( media-sound/gsm )
+ opus? ( media-libs/opus )
+ ortp? ( >=net-libs/ortp-0.21.0[ipv6?] )
+ pcap? ( sys-libs/libcap )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( >=media-sound/pulseaudio-0.9.21 )
+ speex? ( >=media-libs/speex-1.2_beta3 )
+ upnp? ( net-libs/libupnp )
+ video? (
+ virtual/ffmpeg
+ opengl? ( media-libs/glew
+ virtual/opengl
+ x11-libs/libX11 )
+ v4l? ( media-libs/libv4l
+ sys-kernel/linux-headers )
+ theora? ( media-libs/libtheora )
+ sdl? ( media-libs/libsdl[video,X] )
+ X? ( x11-libs/libX11
+ x11-libs/libXv ) )"
+DEPEND="${RDEPEND}
+ dev-util/intltool
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen )
+ opengl? ( dev-util/xxdi )
+ test? ( >=dev-util/cunit-2.1_p2[ncurses] )
+ X? ( x11-proto/videoproto )"
+
+PDEPEND="amr? ( !bindist? ( media-plugins/mediastreamer-amr ) )
+ g729? ( !bindist? ( media-plugins/mediastreamer-bcg729 ) )
+ ilbc? ( media-plugins/mediastreamer-ilbc )
+ video? ( x264? ( media-plugins/mediastreamer-x264 ) )
+ silk? ( !bindist? ( media-plugins/mediastreamer-silk ) )"
+
+src_prepare() {
+ # variable causes "command not found" warning and is not
+ # needed anyway
+ sed -i \
+ -e 's/$(ACLOCAL_MACOS_FLAGS)//' \
+ Makefile.am || die
+
+ # respect user's CFLAGS
+ sed -i \
+ -e "s:-O2::;s: -g::" \
+ configure.ac || die "patching configure.ac failed"
+
+ # change default paths
+ sed -i \
+ -e "s:\(prefix/share\):\1/${PN}:" \
+ configure.ac || die "patching configure.ac failed"
+
+ # fix doc installation dir
+ sed -i \
+ -e "s:\$(pkgdocdir):\$(docdir):" \
+ help/Makefile.am || die "patching help/Makefile.am failed"
+
+ # fix html installation dir
+ sed -i \
+ -e "s:\(doc_htmldir=\).*:\1\$(htmldir):" \
+ help/Makefile.am || die "patching help/Makefile.am failed"
+
+ # linux/videodev.h dropped in 2.6.38
+ sed -i \
+ -e 's:linux/videodev.h ::' \
+ configure.ac || die
+
+ epatch "${FILESDIR}/${P}-v4l-automagic.patch" \
+ "${FILESDIR}/${P}-libav9.patch" \
+ "${FILESDIR}/${P}-underlinking.patch" \
+ "${FILESDIR}/${P}-tests.patch" \
+ "${FILESDIR}/${P}-xxd.patch"
+
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ --htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
+ --datadir="${EPREFIX}"/usr/share/${PN}
+ # arts is deprecated
+ --disable-artsc
+ # don't want -Werror
+ --disable-strict
+ --disable-libv4l1
+ # don't use bundled libs
+ --enable-external-ortp
+ $(use_enable alsa)
+ $(use_enable pulseaudio)
+ $(use_enable coreaudio macsnd)
+ $(use_enable debug)
+ $(use_enable filters)
+ $(use_enable g726 spandsp)
+ $(use_enable gsm)
+ $(use_enable ipv6)
+ $(use_enable ntp-timestamp)
+ $(use_enable opengl glx)
+ $(use_enable opus)
+ $(use_enable ortp)
+ $(use_enable oss)
+ $(use_enable pcap)
+ $(use_enable portaudio)
+ $(use_enable speex)
+ $(use_enable static-libs static)
+ $(use_enable theora)
+ $(use_enable upnp)
+ $(use_enable video)
+ $(use_enable v4l)
+ $(use_enable v4l libv4l2)
+ $(use_enable sdl)
+ $(use_enable X x11)
+ $(use_enable X xv)
+
+ $(use doc || echo ac_cv_path_DOXYGEN=false)
+ )
+
+ # Mac OS X Audio Queue is an audio recording facility, available on
+ # 10.5 (Leopard, Darwin9) and onward
+ if use coreaudio && [[ ${CHOST} == *-darwin* && ${CHOST##*-darwin} -ge 9 ]]
+ then
+ myeconfargs+=( --enable-macaqsnd )
+ else
+ myeconfargs+=( --disable-macaqsnd )
+ fi
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ default
+ cd tester || die
+ ./mediastreamer2_tester || die
+}
+
+src_install() {
+ default
+ prune_libtool_files
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ doins tester/*.c
+ fi
+}
diff --git a/media-libs/mediastreamer/metadata.xml b/media-libs/mediastreamer/metadata.xml
new file mode 100644
index 000000000000..1375784b247f
--- /dev/null
+++ b/media-libs/mediastreamer/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>bircoph@gentoo.org</email>
+ <name>Andrew Savchenko</name>
+ </maintainer>
+ <use>
+ <flag name="amr">Use of AMR Narrow Band codec plugin</flag>
+ <flag name="filters">Enable compilation of filters</flag>
+ <flag name="g726">Support g726 codec</flag>
+ <flag name="g729">Use g726 codec plugin</flag>
+ <flag name="ilbc">Use of iLBC (RFC3951) codec plugin</flag>
+ <flag name="ntp-timestamp">Turn on NTP timestamping on received
+ packet</flag>
+ <flag name="opus">Enable opus codec support</flag>
+ <flag name="ortp">Enable usage of <pkg>net-libs/ortp</pkg></flag>
+ <flag name="pcap">Enable usage of <pkg>net-libs/libpcap</pkg></flag>
+ <flag name="silk">Use silk (skype protocol) codec plugin</flag>
+ <flag name="video">Enable video support</flag>
+ </use>
+</pkgmetadata>