summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Ballier <aballier@gentoo.org>2016-09-05 10:29:09 +0200
committerAlexis Ballier <aballier@gentoo.org>2016-09-05 10:29:18 +0200
commita90dcab374205a544499e3fc16dc79a6b1ecd208 (patch)
tree6b3423f644d13c345a4da439087ed0bcd955d9da /media-libs/mediastreamer
parentapp-emulation/qemu: fix installation with USE=python, bug #592908 (diff)
downloadgentoo-a90dcab374205a544499e3fc16dc79a6b1ecd208.tar.gz
gentoo-a90dcab374205a544499e3fc16dc79a6b1ecd208.tar.bz2
gentoo-a90dcab374205a544499e3fc16dc79a6b1ecd208.zip
media-libs/mediastreamer: fix build with ffmpeg-3, part of bug #539872
Package-Manager: portage-2.3.0
Diffstat (limited to 'media-libs/mediastreamer')
-rw-r--r--media-libs/mediastreamer/files/mediastreamer-2.9.0-ffmpeg3.patch482
-rw-r--r--media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild5
2 files changed, 485 insertions, 2 deletions
diff --git a/media-libs/mediastreamer/files/mediastreamer-2.9.0-ffmpeg3.patch b/media-libs/mediastreamer/files/mediastreamer-2.9.0-ffmpeg3.patch
new file mode 100644
index 00000000000..a536270897b
--- /dev/null
+++ b/media-libs/mediastreamer/files/mediastreamer-2.9.0-ffmpeg3.patch
@@ -0,0 +1,482 @@
+Index: mediastreamer-2.9.0/src/utils/ffmpeg-priv.h
+===================================================================
+--- mediastreamer-2.9.0.orig/src/utils/ffmpeg-priv.h
++++ mediastreamer-2.9.0/src/utils/ffmpeg-priv.h
+@@ -69,9 +69,6 @@ static inline int avcodec_decode_video2(
+ return avcodec_decode_video(avctx,picture, got_picture_ptr,avpkt->data,avpkt->size);
+ }
+ #endif
+-#if (LIBAVCODEC_VERSION_MAJOR >= 56)
+-#include <libavcodec/old_codec_ids.h>
+-#endif
+ #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54,25,0)
+ #define CodecID AVCodecID
+ #endif
+Index: mediastreamer-2.9.0/src/videofilters/h264dec.c
+===================================================================
+--- mediastreamer-2.9.0.orig/src/videofilters/h264dec.c
++++ mediastreamer-2.9.0/src/videofilters/h264dec.c
+@@ -56,7 +56,7 @@ static void ffmpeg_init(){
+ static void dec_open(DecData *d){
+ AVCodec *codec;
+ int error;
+- codec=avcodec_find_decoder(CODEC_ID_H264);
++ codec=avcodec_find_decoder(AV_CODEC_ID_H264);
+ if (codec==NULL) ms_fatal("Could not find H264 decoder in ffmpeg.");
+ avcodec_get_context_defaults3(&d->av_context, NULL);
+ error=avcodec_open2(&d->av_context,codec, NULL);
+@@ -119,7 +119,7 @@ static mblk_t *get_as_yuvmsg(MSFilter *f
+ s->outbuf.w=ctx->width;
+ s->outbuf.h=ctx->height;
+ s->sws_ctx=sws_getContext(ctx->width,ctx->height,ctx->pix_fmt,
+- ctx->width,ctx->height,PIX_FMT_YUV420P,SWS_FAST_BILINEAR,
++ ctx->width,ctx->height,AV_PIX_FMT_YUV420P,SWS_FAST_BILINEAR,
+ NULL, NULL, NULL);
+ }
+ #if LIBSWSCALE_VERSION_INT >= AV_VERSION_INT(0,9,0)
+@@ -272,7 +272,7 @@ static void dec_process(MSFilter *f){
+ int len;
+ int got_picture=0;
+ AVPacket pkt;
+- avcodec_get_frame_defaults(&orig);
++ av_frame_unref(&orig);
+ av_init_packet(&pkt);
+ pkt.data = p;
+ pkt.size = end-p;
+Index: mediastreamer-2.9.0/src/videofilters/jpegwriter.c
+===================================================================
+--- mediastreamer-2.9.0.orig/src/videofilters/jpegwriter.c
++++ mediastreamer-2.9.0/src/videofilters/jpegwriter.c
+@@ -36,9 +36,9 @@ typedef struct {
+
+ static void jpg_init(MSFilter *f){
+ JpegWriter *s=ms_new0(JpegWriter,1);
+- s->codec=avcodec_find_encoder(CODEC_ID_MJPEG);
++ s->codec=avcodec_find_encoder(AV_CODEC_ID_MJPEG);
+ if (s->codec==NULL){
+- ms_error("Could not find CODEC_ID_MJPEG !");
++ ms_error("Could not find AV_CODEC_ID_MJPEG !");
+ }
+ f->data=s;
+ }
+@@ -96,7 +96,7 @@ static void jpg_process(MSFilter *f){
+ avctx->height=yuvbuf.h;
+ avctx->time_base.num = 1;
+ avctx->time_base.den =1;
+- avctx->pix_fmt=PIX_FMT_YUVJ420P;
++ avctx->pix_fmt=AV_PIX_FMT_YUVJ420P;
+
+ error=avcodec_open2(avctx,s->codec,NULL);
+ if (error!=0) {
+@@ -105,7 +105,7 @@ static void jpg_process(MSFilter *f){
+ av_free(avctx);
+ return;
+ }
+- sws_ctx=sws_getContext(avctx->width,avctx->height,PIX_FMT_YUV420P,
++ sws_ctx=sws_getContext(avctx->width,avctx->height,AV_PIX_FMT_YUV420P,
+ avctx->width,avctx->height,avctx->pix_fmt,SWS_FAST_BILINEAR,NULL, NULL, NULL);
+ if (sws_ctx==NULL) {
+ ms_error(" sws_getContext() failed.");
+@@ -126,13 +126,18 @@ static void jpg_process(MSFilter *f){
+ }
+ sws_freeContext(sws_ctx);
+
+- avcodec_get_frame_defaults(&pict);
++ av_frame_unref(&pict);
+ avpicture_fill((AVPicture*)&pict,(uint8_t*)jpegm->b_rptr,avctx->pix_fmt,avctx->width,avctx->height);
+- error=avcodec_encode_video(avctx, (uint8_t*)comp_buf,comp_buf_sz, &pict);
++ AVPacket pkt;
++ av_init_packet(&pkt);
++ pkt.buf = (uint8_t*)comp_buf;
++ pkt.size = comp_buf_sz;
++ int got_packet;
++ error=avcodec_encode_video2(avctx, &pkt, &pict, &got_packet);
+ if (error<0){
+ ms_error("Could not encode jpeg picture.");
+- }else{
+- if (fwrite(comp_buf,error,1,s->file)>0){
++ }else if(got_packet){
++ if (fwrite(comp_buf,pkt.size,1,s->file)>0){
+ ms_message("Snapshot done");
+ }else{
+ ms_error("Error writing snapshot.");
+Index: mediastreamer-2.9.0/src/videofilters/nowebcam.c
+===================================================================
+--- mediastreamer-2.9.0.orig/src/videofilters/nowebcam.c
++++ mediastreamer-2.9.0/src/videofilters/nowebcam.c
+@@ -61,7 +61,7 @@ static mblk_t *jpeg2yuv(uint8_t *jpgbuf,
+ struct SwsContext *sws_ctx;
+ AVPacket pkt;
+ MSPicture dest;
+- AVCodec *codec=avcodec_find_decoder(CODEC_ID_MJPEG);
++ AVCodec *codec=avcodec_find_decoder(AV_CODEC_ID_MJPEG);
+
+ if (codec==NULL){
+ ms_error("Could not find MJPEG decoder in ffmpeg.");
+@@ -84,9 +84,9 @@ static mblk_t *jpeg2yuv(uint8_t *jpgbuf,
+ }
+ ret=ms_yuv_buf_alloc(&dest, reqsize->width,reqsize->height);
+ /* not using SWS_FAST_BILINEAR because it doesn't play well with
+- * av_context.pix_fmt set to PIX_FMT_YUVJ420P by jpeg decoder */
++ * av_context.pix_fmt set to AV_PIX_FMT_YUVJ420P by jpeg decoder */
+ sws_ctx=sws_getContext(av_context.width,av_context.height,av_context.pix_fmt,
+- reqsize->width,reqsize->height,PIX_FMT_YUV420P,SWS_BILINEAR,
++ reqsize->width,reqsize->height,AV_PIX_FMT_YUV420P,SWS_BILINEAR,
+ NULL, NULL, NULL);
+ if (sws_ctx==NULL) {
+ ms_error("jpeg2yuv: ms_sws_getContext() failed.");
+Index: mediastreamer-2.9.0/src/videofilters/videodec.c
+===================================================================
+--- mediastreamer-2.9.0.orig/src/videofilters/videodec.c
++++ mediastreamer-2.9.0/src/videofilters/videodec.c
+@@ -40,7 +40,7 @@ typedef struct DecState{
+ YuvBuf outbuf;
+ mblk_t *yuv_msg;
+ struct SwsContext *sws_ctx;
+- enum PixelFormat output_pix_fmt;
++ enum AVPixelFormat output_pix_fmt;
+ uint8_t dci[512];
+ int dci_size;
+ uint64_t last_error_reported_time;
+@@ -58,7 +58,7 @@ static void dec_init(MSFilter *f, enum C
+ s->codec=cid;
+ s->input=NULL;
+ s->yuv_msg=NULL;
+- s->output_pix_fmt=PIX_FMT_YUV420P;
++ s->output_pix_fmt=AV_PIX_FMT_YUV420P;
+ s->snow_initialized=FALSE;
+ s->outbuf.w=0;
+ s->outbuf.h=0;
+@@ -77,19 +77,19 @@ static void dec_init(MSFilter *f, enum C
+ }
+
+ static void dec_h263_init(MSFilter *f){
+- dec_init(f,CODEC_ID_H263);
++ dec_init(f,AV_CODEC_ID_H263);
+ }
+
+ static void dec_mpeg4_init(MSFilter *f){
+- dec_init(f,CODEC_ID_MPEG4);
++ dec_init(f,AV_CODEC_ID_MPEG4);
+ }
+
+ static void dec_mjpeg_init(MSFilter *f){
+- dec_init(f,CODEC_ID_MJPEG);
++ dec_init(f,AV_CODEC_ID_MJPEG);
+ }
+
+ static void dec_snow_init(MSFilter *f){
+- dec_init(f,CODEC_ID_SNOW);
++ dec_init(f,AV_CODEC_ID_SNOW);
+ }
+
+ static void dec_uninit(MSFilter *f){
+@@ -134,10 +134,10 @@ static void dec_preprocess(MSFilter *f){
+ s->first_image_decoded = FALSE;
+ if (s->av_context.codec==NULL){
+ /* we must know picture size before initializing snow decoder*/
+- if (s->codec!=CODEC_ID_SNOW){
++ if (s->codec!=AV_CODEC_ID_SNOW){
+ 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){
++ if (s->codec==AV_CODEC_ID_MPEG4 && s->dci_size>0){
+ s->av_context.extradata=s->dci;
+ s->av_context.extradata_size=s->dci_size;
+ }
+@@ -643,8 +643,8 @@ static void dec_process_frame(MSFilter *
+
+ if (f->desc->id==MS_H263_DEC_ID) inm=skip_rfc2429_header(inm);
+ else if (f->desc->id==MS_H263_OLD_DEC_ID) inm=skip_rfc2190_header(inm);
+- else if (s->codec==CODEC_ID_SNOW && s->input==NULL) inm=parse_snow_header(s,inm);
+- else if (s->codec==CODEC_ID_MJPEG && f->desc->id==MS_JPEG_DEC_ID) inm=read_rfc2435_header(s,inm);
++ else if (s->codec==AV_CODEC_ID_SNOW && s->input==NULL) inm=parse_snow_header(s,inm);
++ else if (s->codec==AV_CODEC_ID_MJPEG && f->desc->id==MS_JPEG_DEC_ID) inm=read_rfc2435_header(s,inm);
+
+ if (inm){
+ /* accumulate the video packet until we have the rtp markbit*/
+Index: mediastreamer-2.9.0/src/videofilters/videoenc.c
+===================================================================
+--- mediastreamer-2.9.0.orig/src/videofilters/videoenc.c
++++ mediastreamer-2.9.0/src/videofilters/videoenc.c
+@@ -223,19 +223,19 @@ static void enc_init(MSFilter *f, enum C
+ }
+
+ static void enc_h263_init(MSFilter *f){
+- enc_init(f,CODEC_ID_H263P);
++ enc_init(f,AV_CODEC_ID_H263P);
+ }
+
+ static void enc_mpeg4_init(MSFilter *f){
+- enc_init(f,CODEC_ID_MPEG4);
++ enc_init(f,AV_CODEC_ID_MPEG4);
+ }
+
+ static void enc_snow_init(MSFilter *f){
+- enc_init(f,CODEC_ID_SNOW);
++ enc_init(f,AV_CODEC_ID_SNOW);
+ }
+
+ static void enc_mjpeg_init(MSFilter *f){
+- enc_init(f,CODEC_ID_MJPEG);
++ enc_init(f,AV_CODEC_ID_MJPEG);
+ }
+
+ static void prepare(EncState *s){
+@@ -243,7 +243,7 @@ static void prepare(EncState *s){
+ const int max_br_vbv=128000;
+
+ avcodec_get_context_defaults3(c, NULL);
+- if (s->codec==CODEC_ID_MJPEG)
++ if (s->codec==AV_CODEC_ID_MJPEG)
+ {
+ ms_message("Codec bitrate set to %i",c->bit_rate);
+ c->width = s->vsize.width;
+@@ -251,7 +251,7 @@ static void prepare(EncState *s){
+ c->time_base.num = 1;
+ c->time_base.den = (int)s->fps;
+ c->gop_size=(int)s->fps*5; /*emit I frame every 5 seconds*/
+- c->pix_fmt=PIX_FMT_YUVJ420P;
++ c->pix_fmt=AV_PIX_FMT_YUVJ420P;
+ s->comp_buf=allocb(c->bit_rate*2,0);
+ return;
+ }
+@@ -269,7 +269,7 @@ static void prepare(EncState *s){
+
+ /* ffmpeg vbv rate control consumes too much cpu above a certain target bitrate.
+ We don't use it above max_br_vbv */
+- if (s->codec!=CODEC_ID_SNOW && s->maxbr<max_br_vbv){
++ if (s->codec!=AV_CODEC_ID_SNOW && s->maxbr<max_br_vbv){
+ /*snow does not like 1st pass rate control*/
+ c->rc_max_rate=c->bit_rate;
+ c->rc_min_rate=0;
+@@ -285,9 +285,9 @@ static void prepare(EncState *s){
+ c->time_base.num = 1;
+ c->time_base.den = (int)s->fps;
+ c->gop_size=(int)s->fps*10; /*emit I frame every 10 seconds*/
+- c->pix_fmt=PIX_FMT_YUV420P;
++ c->pix_fmt=AV_PIX_FMT_YUV420P;
+ s->comp_buf=allocb(c->bit_rate*2,0);
+- if (s->codec==CODEC_ID_SNOW){
++ if (s->codec==AV_CODEC_ID_SNOW){
+ c->strict_std_compliance=-2;
+ }
+
+@@ -304,7 +304,7 @@ static void prepare_h263(EncState *s){
+ #endif
+ c->rtp_payload_size = s->mtu/2;
+ if (s->profile==0){
+- s->codec=CODEC_ID_H263;
++ s->codec=AV_CODEC_ID_H263;
+ }else{
+ /*
+ c->flags|=CODEC_FLAG_H263P_UMV;
+@@ -313,7 +313,7 @@ static void prepare_h263(EncState *s){
+ c->flags|=CODEC_FLAG_OBMC;
+ c->flags|=CODEC_FLAG_AC_PRED;
+ */
+- s->codec=CODEC_ID_H263P;
++ s->codec=AV_CODEC_ID_H263P;
+ }
+ }
+
+@@ -331,13 +331,13 @@ static void enc_preprocess(MSFilter *f){
+ EncState *s=(EncState*)f->data;
+ int error;
+ prepare(s);
+- if (s->codec==CODEC_ID_H263P || s->codec==CODEC_ID_H263)
++ if (s->codec==AV_CODEC_ID_H263P || s->codec==AV_CODEC_ID_H263)
+ prepare_h263(s);
+- else if (s->codec==CODEC_ID_MPEG4)
++ else if (s->codec==AV_CODEC_ID_MPEG4)
+ prepare_mpeg4(s);
+- else if (s->codec==CODEC_ID_SNOW){
++ else if (s->codec==AV_CODEC_ID_SNOW){
+ /**/
+- }else if (s->codec==CODEC_ID_MJPEG){
++ }else if (s->codec==AV_CODEC_ID_MJPEG){
+ /**/
+ }else {
+ ms_error("Unsupported codec id %i",s->codec);
+@@ -724,12 +724,12 @@ static void split_and_send(MSFilter *f,
+ uint8_t *psc;
+ uint32_t timestamp=f->ticker->time*90LL;
+
+- if (s->codec==CODEC_ID_MPEG4 || s->codec==CODEC_ID_SNOW)
++ if (s->codec==AV_CODEC_ID_MPEG4 || s->codec==AV_CODEC_ID_SNOW)
+ {
+ mpeg4_fragment_and_send(f,s,frame,timestamp);
+ return;
+ }
+- else if (s->codec==CODEC_ID_MJPEG)
++ else if (s->codec==AV_CODEC_ID_MJPEG)
+ {
+ mblk_t *lqt=NULL;
+ mblk_t *cqt=NULL;
+@@ -765,7 +765,7 @@ static void split_and_send(MSFilter *f,
+
+ static void process_frame(MSFilter *f, mblk_t *inm){
+ EncState *s=(EncState*)f->data;
+- AVFrame pict;
++ AVFrame pict = {};
+ AVCodecContext *c=&s->av_context;
+ int error;
+ mblk_t *comp_buf=s->comp_buf;
+@@ -774,7 +774,7 @@ static void process_frame(MSFilter *f, m
+
+ ms_yuv_buf_init_from_mblk(&yuv, inm);
+ /* convert image if necessary */
+- avcodec_get_frame_defaults(&pict);
++ av_frame_unref(&pict);
+ avpicture_fill((AVPicture*)&pict,yuv.planes[0],c->pix_fmt,c->width,c->height);
+
+ /* timestamp used by ffmpeg, unset here */
+@@ -789,7 +789,7 @@ static void process_frame(MSFilter *f, m
+ s->req_vfu=FALSE;
+ }
+ comp_buf->b_rptr=comp_buf->b_wptr=comp_buf->b_datap->db_base;
+- if (s->codec==CODEC_ID_SNOW){
++ if (s->codec==AV_CODEC_ID_SNOW){
+ //prepend picture size
+ uint32_t header=((s->vsize.width&0xffff)<<16) | (s->vsize.height&0xffff);
+ *(uint32_t*)comp_buf->b_wptr=htonl(header);
+@@ -797,10 +797,15 @@ static void process_frame(MSFilter *f, m
+ comp_buf_sz-=4;
+ }
+
+- error=avcodec_encode_video(c, (uint8_t*)comp_buf->b_wptr,comp_buf_sz, &pict);
++ AVPacket pkt;
++ av_init_packet(&pkt);
++ pkt.data = (uint8_t*)comp_buf->b_wptr;
++ pkt.size = comp_buf_sz;
++ int got_packet;
++ error=avcodec_encode_video2(c, &pkt, &pict, &got_packet);
+
+ if (error<=0) ms_warning("ms_AVencoder_process: error %i.",error);
+- else{
++ else if(got_packet){
+ s->framenum++;
+ if (s->framenum==1){
+ video_starter_first_frame (&s->starter,f->ticker->time);
+@@ -808,7 +813,7 @@ static void process_frame(MSFilter *f, m
+ if (c->coded_frame->pict_type==FF_I_TYPE){
+ ms_message("Emitting I-frame");
+ }
+- comp_buf->b_wptr+=error;
++ comp_buf->b_wptr+=pkt.size;
+ split_and_send(f,s,comp_buf);
+ }
+ freemsg(inm);
+@@ -837,7 +842,7 @@ static int enc_get_br(MSFilter *f, void
+
+ static int enc_set_br(MSFilter *f, void *arg){
+ EncState *s=(EncState*)f->data;
+- bool_t snow=s->codec==CODEC_ID_SNOW;
++ bool_t snow=s->codec==AV_CODEC_ID_SNOW;
+ s->maxbr=*(int*)arg;
+ if (s->av_context.codec!=NULL){
+ /*when we are processing, apply new settings immediately*/
+@@ -847,11 +852,11 @@ static int enc_set_br(MSFilter *f, void
+ ms_filter_unlock(f);
+ return 0;
+ }
+- if (s->maxbr>=1024000 && s->codec!=CODEC_ID_H263P){
++ if (s->maxbr>=1024000 && s->codec!=AV_CODEC_ID_H263P){
+ s->vsize.width = MS_VIDEO_SIZE_SVGA_W;
+ s->vsize.height = MS_VIDEO_SIZE_SVGA_H;
+ s->fps=25;
+- }else if (s->maxbr>=800000 && s->codec!=CODEC_ID_H263P){
++ }else if (s->maxbr>=800000 && s->codec!=AV_CODEC_ID_H263P){
+ s->vsize.width = MS_VIDEO_SIZE_VGA_W;
+ s->vsize.height = MS_VIDEO_SIZE_VGA_H;
+ s->fps=25;
+@@ -864,7 +869,7 @@ static int enc_set_br(MSFilter *f, void
+ s->vsize.height=MS_VIDEO_SIZE_CIF_H;
+ s->fps=17;
+ s->qmin=3;
+- }else if (s->maxbr>=170000 && s->codec!=CODEC_ID_H263P && s->codec!=CODEC_ID_H263){
++ }else if (s->maxbr>=170000 && s->codec!=AV_CODEC_ID_H263P && s->codec!=AV_CODEC_ID_H263){
+ s->vsize.width=MS_VIDEO_SIZE_QVGA_W;
+ s->vsize.height=MS_VIDEO_SIZE_QVGA_H;
+ s->fps=15;
+@@ -1075,15 +1080,15 @@ MSFilterDesc ms_mjpeg_enc_desc={
+
+ void __register_ffmpeg_encoders_if_possible(void){
+ ms_ffmpeg_check_init();
+- if (avcodec_find_encoder(CODEC_ID_MPEG4))
++ if (avcodec_find_encoder(AV_CODEC_ID_MPEG4))
+ ms_filter_register(&ms_mpeg4_enc_desc);
+- if (avcodec_find_encoder(CODEC_ID_H263)){
++ if (avcodec_find_encoder(AV_CODEC_ID_H263)){
+ ms_filter_register(&ms_h263_enc_desc);
+ ms_filter_register(&ms_h263_old_enc_desc);
+ }
+- if (avcodec_find_encoder(CODEC_ID_SNOW))
++ if (avcodec_find_encoder(AV_CODEC_ID_SNOW))
+ ms_filter_register(&ms_snow_enc_desc);
+- if (avcodec_find_encoder(CODEC_ID_MJPEG))
++ if (avcodec_find_encoder(AV_CODEC_ID_MJPEG))
+ {
+ ms_filter_register(&ms_mjpeg_enc_desc);
+ }
+Index: mediastreamer-2.9.0/src/voip/msvideo.c
+===================================================================
+--- mediastreamer-2.9.0.orig/src/voip/msvideo.c
++++ mediastreamer-2.9.0/src/voip/msvideo.c
+@@ -351,21 +351,21 @@ void ms_rgb_to_yuv(const uint8_t rgb[3],
+ int ms_pix_fmt_to_ffmpeg(MSPixFmt fmt){
+ switch(fmt){
+ case MS_RGBA32:
+- return PIX_FMT_RGBA;
++ return AV_PIX_FMT_RGBA;
+ case MS_RGB24:
+- return PIX_FMT_RGB24;
++ return AV_PIX_FMT_RGB24;
+ case MS_RGB24_REV:
+- return PIX_FMT_BGR24;
++ return AV_PIX_FMT_BGR24;
+ case MS_YUV420P:
+- return PIX_FMT_YUV420P;
++ return AV_PIX_FMT_YUV420P;
+ case MS_YUYV:
+- return PIX_FMT_YUYV422;
++ return AV_PIX_FMT_YUYV422;
+ case MS_UYVY:
+- return PIX_FMT_UYVY422;
++ return AV_PIX_FMT_UYVY422;
+ case MS_YUY2:
+- return PIX_FMT_YUYV422; /* <- same as MS_YUYV */
++ return AV_PIX_FMT_YUYV422; /* <- same as MS_YUYV */
+ case MS_RGB565:
+- return PIX_FMT_RGB565;
++ return AV_PIX_FMT_RGB565;
+ default:
+ ms_fatal("format not supported.");
+ return -1;
+@@ -375,19 +375,19 @@ int ms_pix_fmt_to_ffmpeg(MSPixFmt fmt){
+
+ MSPixFmt ffmpeg_pix_fmt_to_ms(int fmt){
+ switch(fmt){
+- case PIX_FMT_RGB24:
++ case AV_PIX_FMT_RGB24:
+ return MS_RGB24;
+- case PIX_FMT_BGR24:
++ case AV_PIX_FMT_BGR24:
+ return MS_RGB24_REV;
+- case PIX_FMT_YUV420P:
++ case AV_PIX_FMT_YUV420P:
+ return MS_YUV420P;
+- case PIX_FMT_YUYV422:
++ case AV_PIX_FMT_YUYV422:
+ return MS_YUYV; /* same as MS_YUY2 */
+- case PIX_FMT_UYVY422:
++ case AV_PIX_FMT_UYVY422:
+ return MS_UYVY;
+- case PIX_FMT_RGBA:
++ case AV_PIX_FMT_RGBA:
+ return MS_RGBA32;
+- case PIX_FMT_RGB565:
++ case AV_PIX_FMT_RGB565:
+ return MS_RGB565;
+ default:
+ ms_fatal("format not supported.");
diff --git a/media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild b/media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild
index 71a94d12beb..1b1abb88daa 100644
--- a/media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild
+++ b/media-libs/mediastreamer/mediastreamer-2.9.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
@@ -100,7 +100,8 @@ src_prepare() {
"${FILESDIR}/${P}-libav9.patch" \
"${FILESDIR}/${P}-underlinking.patch" \
"${FILESDIR}/${P}-tests.patch" \
- "${FILESDIR}/${P}-xxd.patch"
+ "${FILESDIR}/${P}-xxd.patch" \
+ "${FILESDIR}/${P}-ffmpeg3.patch"
eautoreconf
}