From: anton@khirnov.net
To: 739314@bugs.debian.org
Subject: Re: FTBFS with libav10
Date: Wed, 26 Feb 2014 08:49:06 +0100

Index: linphone-3.6.1/mediastreamer2/src/videofilters/nowebcam.c
===================================================================
--- linphone-3.6.1.orig/mediastreamer2/src/videofilters/nowebcam.c	2013-02-20 13:38:36.504652970 +0000
+++ linphone-3.6.1/mediastreamer2/src/videofilters/nowebcam.c	2014-02-26 07:21:49.232963255 +0000
@@ -56,20 +56,25 @@
 #ifndef NO_FFMPEG
 	AVCodecContext av_context;
 	int got_picture=0;
-	AVFrame orig;
+	AVFrame *orig;
 	mblk_t *ret;
 	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.");
 		return NULL;
 	}
 
+	orig = av_frame_alloc();
+	if (!orig)
+		return NULL;
+
 	avcodec_get_context_defaults(&av_context);
 	if (avcodec_open(&av_context,codec)<0){
+		av_frame_free(&orig);
 		ms_error("jpeg2yuv: avcodec_open failed");
 		return NULL;
 	}
@@ -79,6 +84,7 @@
 
 	if (avcodec_decode_video2(&av_context,&orig,&got_picture,&pkt) < 0) {
 		ms_error("jpeg2yuv: avcodec_decode_video failed");
+		av_frame_free(&orig);
 		avcodec_close(&av_context);
 		return NULL;
 	}
@@ -90,24 +96,27 @@
                 NULL, NULL, NULL);
 	if (sws_ctx==NULL) {
 		ms_error("jpeg2yuv: ms_sws_getContext() failed.");
+		av_frame_free(&orig);
 		avcodec_close(&av_context);
 		freemsg(ret);
 		return NULL;
 	}
 
 #if LIBSWSCALE_VERSION_INT >= AV_VERSION_INT(0,9,0)	
-	if (sws_scale(sws_ctx,(const uint8_t* const *)orig.data,orig.linesize,0,av_context.height,dest.planes,dest.strides)<0){
+	if (sws_scale(sws_ctx,(const uint8_t* const *)orig->data,orig->linesize,0,av_context.height,dest.planes,dest.strides)<0){
 #else
-	if (sws_scale(sws_ctx,(uint8_t**)orig.data,orig.linesize,0,av_context.height,dest.planes,dest.strides)<0){
+	if (sws_scale(sws_ctx,(uint8_t**)orig->data,orig->linesize,0,av_context.height,dest.planes,dest.strides)<0){
 #endif
 		ms_error("jpeg2yuv: ms_sws_scale() failed.");
 		sws_freeContext(sws_ctx);
 		avcodec_close(&av_context);
+		av_frame_free(&orig);
 		freemsg(ret);
 		return NULL;
 	}
 	sws_freeContext(sws_ctx);
 	avcodec_close(&av_context);
+	av_frame_free(&orig);
 	return ret;
 #elif TARGET_OS_IPHONE
 	MSPicture dest;
Index: linphone-3.6.1/mediastreamer2/src/videofilters/videoenc.c
===================================================================
--- linphone-3.6.1.orig/mediastreamer2/src/videofilters/videoenc.c	2013-06-14 15:21:26.654950046 +0000
+++ linphone-3.6.1/mediastreamer2/src/videofilters/videoenc.c	2014-02-26 07:47:37.095279237 +0000
@@ -223,19 +223,15 @@
 }
 
 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);
-}
-
-static void enc_snow_init(MSFilter *f){
-	enc_init(f,CODEC_ID_SNOW);
+	enc_init(f,AV_CODEC_ID_MPEG4);
 }
 
 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 +239,7 @@
 	const int max_br_vbv=128000;
 
 	avcodec_get_context_defaults(c);
-	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;  
@@ -269,8 +265,7 @@
 
 	/* 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){
-		/*snow does not like 1st pass rate control*/
+	if (s->maxbr<max_br_vbv){
 		c->rc_max_rate=c->bit_rate;
 		c->rc_min_rate=0;
 		c->rc_buffer_size=c->rc_max_rate;
@@ -287,9 +282,6 @@
 	c->gop_size=(int)s->fps*10; /*emit I frame every 10 seconds*/
 	c->pix_fmt=PIX_FMT_YUV420P;
 	s->comp_buf=allocb(c->bit_rate*2,0);
-	if (s->codec==CODEC_ID_SNOW){
-		c->strict_std_compliance=-2;
-	}
 	
 	ms_message("Codec size set to w=%i/h=%i",c->width, c->height);
 
@@ -304,7 +296,7 @@
 #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 +305,7 @@
 		c->flags|=CODEC_FLAG_OBMC;
 		c->flags|=CODEC_FLAG_AC_PRED;
 		*/
-		s->codec=CODEC_ID_H263P;
+		s->codec=AV_CODEC_ID_H263P;
 	}
 }
 
@@ -331,13 +323,11 @@
 	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==CODEC_ID_MJPEG){
+	else if (s->codec==AV_CODEC_ID_MJPEG){
 		/**/
 	}else {
 		ms_error("Unsupported codec id %i",s->codec);
@@ -724,12 +714,12 @@
 	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)
 	{
 		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;
@@ -766,8 +756,9 @@
 static void process_frame(MSFilter *f, mblk_t *inm){
 	EncState *s=(EncState*)f->data;
 	AVFrame pict;
+	AVPacket pkt;
 	AVCodecContext *c=&s->av_context;
-	int error;
+	int error, got_output;
 	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;
@@ -789,23 +780,18 @@
 		s->req_vfu=FALSE;
 	}
 	comp_buf->b_rptr=comp_buf->b_wptr=comp_buf->b_datap->db_base;
-	if (s->codec==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);
-		comp_buf->b_wptr+=4;
-		comp_buf_sz-=4;
-	}
 
-	error=avcodec_encode_video(c, (uint8_t*)comp_buf->b_wptr,comp_buf_sz, &pict);
+	pkt.data = (uint8_t *)comp_buf->b_wptr;
+	pkt.size = comp_buf_sz;
+	error=avcodec_encode_video2(c, &pkt, &pict, &got_output);
 
-	if (error<=0) ms_warning("ms_AVencoder_process: error %i.",error);
-	else{
+	if (error<0) ms_warning("ms_AVencoder_process: error %i.",error);
+	else if (got_output) {
 		s->framenum++;
 		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;
@@ -837,7 +823,6 @@
 
 static int enc_set_br(MSFilter *f, void *arg){
 	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*/
@@ -847,8 +832,8 @@
 		ms_filter_unlock(f);
 		return 0;
 	}
-	if (s->maxbr>=1024000 && s->codec!=CODEC_ID_H263P){
-		if (s->codec!=CODEC_ID_H263P){
+	if (s->maxbr>=1024000 && s->codec!=AV_CODEC_ID_H263P){
+		if (s->codec!=AV_CODEC_ID_H263P){
 			s->vsize.width = MS_VIDEO_SIZE_SVGA_W;
 			s->vsize.height = MS_VIDEO_SIZE_SVGA_H;
 		}else{
@@ -857,7 +842,7 @@
 		}
 		s->fps=25;
 	}else if (s->maxbr>=800000 ){
-		if (s->codec!=CODEC_ID_H263P){
+		if (s->codec!=AV_CODEC_ID_H263P){
 			s->vsize.width = MS_VIDEO_SIZE_VGA_W;
 			s->vsize.height = MS_VIDEO_SIZE_VGA_H;
 		}else{
@@ -874,7 +859,7 @@
 		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;
@@ -887,8 +872,8 @@
 	}else if (s->maxbr>=64000){
 		s->vsize.width=MS_VIDEO_SIZE_QCIF_W;
 		s->vsize.height=MS_VIDEO_SIZE_QCIF_H;
-		s->fps=snow ? 7 : 5;
-		s->qmin=snow ? 4 : 5;
+		s->fps=5;
+		s->qmin=5;
 	}else{
 		s->vsize.width=MS_VIDEO_SIZE_QCIF_W;
 		s->vsize.height=MS_VIDEO_SIZE_QCIF_H;
@@ -963,22 +948,6 @@
 	methods
 };
 
-MSFilterDesc ms_snow_enc_desc={
-	MS_SNOW_ENC_ID,
-	"MSSnowEnc",
-	N_("A video snow encoder using ffmpeg library."),
-	MS_FILTER_ENCODER,
-	"x-snow",
-	1, /*MS_YUV420P is assumed on this input */
-	1,
-	enc_snow_init,
-	enc_preprocess,
-	enc_process,
-	enc_postprocess,
-	enc_uninit,
-	methods
-};
-
 MSFilterDesc ms_mjpeg_enc_desc={
 	MS_JPEG_ENC_ID,
 	"MSJpegEnc",
@@ -1045,26 +1014,6 @@
 	.methods=methods
 };
 
-MSFilterDesc ms_snow_enc_desc={
-	.id=MS_SNOW_ENC_ID,
-	.name="MSSnowEnc",
-	.text=N_("The snow codec is royalty-free and is open-source. \n"
-		"It uses innovative techniques that makes it one of most promising video "
-		"codec. It is implemented within the ffmpeg project.\n"
-		"However it is under development, quite unstable and compatibility with other versions "
-		"cannot be guaranteed."),
-	.category=MS_FILTER_ENCODER,
-	.enc_fmt="x-snow",
-	.ninputs=1, /*MS_YUV420P is assumed on this input */
-	.noutputs=1,
-	.init=enc_snow_init,
-	.preprocess=enc_preprocess,
-	.process=enc_process,
-	.postprocess=enc_postprocess,
-	.uninit=enc_uninit,
-	.methods=methods
-};
-
 MSFilterDesc ms_mjpeg_enc_desc={
 	.id=MS_JPEG_ENC_ID,
 	.name="MSMJpegEnc",
@@ -1085,15 +1034,13 @@
 
 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))
-		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: linphone-3.6.1/mediastreamer2/src/videofilters/jpegwriter.c
===================================================================
--- linphone-3.6.1.orig/mediastreamer2/src/videofilters/jpegwriter.c	2013-02-20 13:38:36.504652970 +0000
+++ linphone-3.6.1/mediastreamer2/src/videofilters/jpegwriter.c	2014-02-26 07:43:01.362474399 +0000
@@ -36,9 +36,9 @@
 
 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;
 }
@@ -83,10 +83,9 @@
 		MSPicture yuvbuf, yuvjpeg;
 		mblk_t *m=ms_queue_peek_last(f->inputs[0]);
 		if (ms_yuv_buf_init_from_mblk(&yuvbuf,m)==0){
-			int error;
-			int comp_buf_sz=msgdsize(m);
-			uint8_t *comp_buf=(uint8_t*)alloca(comp_buf_sz);
+			int error, got_output;
 			AVFrame pict;
+			AVPacket pkt = { 0 };
 			mblk_t *jpegm;
 			struct SwsContext *sws_ctx;
 			
@@ -128,16 +127,17 @@
 			
 			avcodec_get_frame_defaults(&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);
+			error=avcodec_encode_video2(avctx, &pkt, &pict, &got_output);
 			if (error<0){
 				ms_error("Could not encode jpeg picture.");
-			}else{
-				if (fwrite(comp_buf,error,1,s->file)>0){
+			}else if (got_output) {
+				if (fwrite(pkt.data,pkt.size,1,s->file)>0){
 					ms_message("Snapshot done");
 				}else{
 					ms_error("Error writing snapshot.");
 				}
 			}
+			av_packet_unref(&pkt);
 			cleanup(s,avctx);
 			freemsg(jpegm);
 		}
Index: linphone-3.6.1/mediastreamer2/src/videofilters/videodec.c
===================================================================
--- linphone-3.6.1.orig/mediastreamer2/src/videofilters/videodec.c	2013-02-20 13:38:36.504652970 +0000
+++ linphone-3.6.1/mediastreamer2/src/videofilters/videodec.c	2014-02-26 07:27:45.029778243 +0000
@@ -44,7 +44,6 @@
 	uint8_t dci[512];
 	int dci_size;
 	uint64_t last_error_reported_time;
-	bool_t snow_initialized;
 	bool_t first_image_decoded;
 }DecState;
 
@@ -59,7 +58,6 @@
 	s->input=NULL;
 	s->yuv_msg=NULL;
 	s->output_pix_fmt=PIX_FMT_YUV420P;
-	s->snow_initialized=FALSE;
 	s->outbuf.w=0;
 	s->outbuf.h=0;
 	s->sws_ctx=NULL;
@@ -77,19 +75,15 @@
 }
 
 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);
-}
-
-static void dec_snow_init(MSFilter *f){
-	dec_init(f,CODEC_ID_SNOW);
+	dec_init(f,AV_CODEC_ID_MJPEG);
 }
 
 static void dec_uninit(MSFilter *f){
@@ -133,14 +127,11 @@
 	
 	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){
-			error=avcodec_open(&s->av_context, s->av_codec);
-			if (error!=0) ms_error("avcodec_open() 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;
-			}
+		error=avcodec_open(&s->av_context, s->av_codec);
+		if (error!=0) ms_error("avcodec_open() failed: %i",error);
+		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;
 		}
 	}
 }
@@ -218,30 +209,6 @@
 	return NULL;
 }
 
-static mblk_t * parse_snow_header(DecState *s,mblk_t *inm){
-	if (msgdsize(inm) >= 4){
-		uint32_t h = ntohl(*(uint32_t*)inm->b_rptr);
-		if (!s->snow_initialized){
-			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);
-			else {
-				s->snow_initialized=TRUE;
-				ms_message("Snow decoder initialized,size=%ix%i",
-				s->av_context.width,
-				s->av_context.height);
-			}
-		}
-		inm->b_rptr+=4;
-		return inm;
-	}else {
-		freemsg(inm);
-		return NULL;
-	}
-}
-
 struct jpeghdr {
 	//unsigned int tspec:8;   /* type-specific field */
 	unsigned int off:32;    /* fragment byte offset */
@@ -643,8 +610,7 @@
 	
 	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_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*/
@@ -807,22 +773,6 @@
 	methods
 };
 
-MSFilterDesc ms_snow_dec_desc={
-	MS_SNOW_DEC_ID,
-	"MSSnowDec",
-	N_("A snow decoder using ffmpeg library"),
-	MS_FILTER_DECODER,
-	"snow",
-	1,
-	1,
-	dec_snow_init,
-	dec_preprocess,
-	dec_process,
-	dec_postprocess,
-	dec_uninit,
-	methods
-};
-
 #else
 
 MSFilterDesc ms_h263_dec_desc={
@@ -906,28 +856,11 @@
 	.methods= methods
 };
 
-MSFilterDesc ms_snow_dec_desc={
-	.id=MS_SNOW_DEC_ID,
-	.name="MSSnowDec",
-	.text="A snow decoder using ffmpeg library",
-	.category=MS_FILTER_DECODER,
-	.enc_fmt="x-snow",
-	.ninputs=1,
-	.noutputs=1,
-	.init=dec_snow_init,
-	.preprocess=dec_preprocess,
-	.process=dec_process,
-	.postprocess=dec_postprocess,
-	.uninit=dec_uninit,
-	.methods= methods
-};
-
 #endif
 
 MS_FILTER_DESC_EXPORT(ms_mpeg4_dec_desc)
 MS_FILTER_DESC_EXPORT(ms_h263_dec_desc)
 MS_FILTER_DESC_EXPORT(ms_h263_old_dec_desc)
-MS_FILTER_DESC_EXPORT(ms_snow_dec_desc)
 
 /* decode JPEG image with RTP/jpeg headers */
 MS_FILTER_DESC_EXPORT(ms_jpeg_dec_desc)
Index: linphone-3.6.1/mediastreamer2/src/videofilters/h264dec.c
===================================================================
--- linphone-3.6.1.orig/mediastreamer2/src/videofilters/h264dec.c	2013-02-20 13:38:36.476638972 +0000
+++ linphone-3.6.1/mediastreamer2/src/videofilters/h264dec.c	2014-02-26 07:28:18.578609351 +0000
@@ -56,7 +56,7 @@
 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_defaults(&d->av_context);
 	error=avcodec_open(&d->av_context,codec);
Index: linphone-3.6.1/mediastreamer2/build/iphone/voipdescs.h
===================================================================
--- linphone-3.6.1.orig/mediastreamer2/build/iphone/voipdescs.h	2014-02-26 07:29:46.975799162 +0000
+++ linphone-3.6.1/mediastreamer2/build/iphone/voipdescs.h	2014-02-26 07:29:56.918045450 +0000
@@ -26,7 +26,6 @@
 extern MSFilterDesc ms_mpeg4_dec_desc;
 extern MSFilterDesc ms_h263_dec_desc;
 extern MSFilterDesc ms_h263_old_dec_desc;
-extern MSFilterDesc ms_snow_dec_desc;
 extern MSFilterDesc ms_jpeg_dec_desc;
 extern MSFilterDesc ms_mjpeg_dec_desc;
 extern MSFilterDesc ms_pix_conv_desc;
@@ -76,7 +75,6 @@
 &ms_mpeg4_dec_desc,
 &ms_h263_dec_desc,
 &ms_h263_old_dec_desc,
-&ms_snow_dec_desc,
 &ms_jpeg_dec_desc,
 &ms_mjpeg_dec_desc,
 &ms_pix_conv_desc,
Index: linphone-3.6.1/mediastreamer2/build/win32native/voipdescs.h
===================================================================
--- linphone-3.6.1.orig/mediastreamer2/build/win32native/voipdescs.h	2012-09-12 09:34:36.000000000 +0000
+++ linphone-3.6.1/mediastreamer2/build/win32native/voipdescs.h	2014-02-26 07:30:21.330650191 +0000
@@ -24,8 +24,6 @@
 extern MSFilterDesc ms_mpeg4_enc_desc;
 extern MSFilterDesc ms_mpeg4_dec_desc;
 extern MSFilterDesc ms_h264_dec_desc;
-extern MSFilterDesc ms_snow_enc_desc;
-extern MSFilterDesc ms_snow_dec_desc;
 extern MSFilterDesc ms_theora_enc_desc;
 extern MSFilterDesc ms_theora_dec_desc;
 extern MSFilterDesc ms_mjpeg_enc_desc;
@@ -73,8 +71,6 @@
 &ms_mpeg4_enc_desc,
 &ms_mpeg4_dec_desc,
 &ms_h264_dec_desc,
-&ms_snow_enc_desc,
-&ms_snow_dec_desc,
 &ms_theora_enc_desc,
 &ms_theora_dec_desc,
 &ms_mjpeg_enc_desc,
