--- freerdp-1.0.2/channels/drdynvc/tsmf/ffmpeg/tsmf_ffmpeg.c.orig 2013-01-02 22:46:59.000000000 +0100 +++ freerdp-1.0.2/channels/drdynvc/tsmf/ffmpeg/tsmf_ffmpeg.c 2013-09-26 18:29:52.693695785 +0200 @@ -39,7 +39,7 @@ ITSMFDecoder iface; int media_type; - enum CodecID codec_id; + enum AVCodecID codec_id; AVCodecContext* codec_context; AVCodec* codec; AVFrame* frame; @@ -54,7 +54,7 @@ { TSMFFFmpegDecoder* mdecoder = (TSMFFFmpegDecoder*) decoder; - mdecoder->codec_context = avcodec_alloc_context(); + mdecoder->codec_context = avcodec_alloc_context3(NULL); if (!mdecoder->codec_context) { DEBUG_WARN("avcodec_alloc_context failed."); @@ -88,16 +88,6 @@ mdecoder->codec_context->channels = media_type->Channels; mdecoder->codec_context->block_align = media_type->BlockAlign; -#ifdef AV_CPU_FLAG_SSE2 - mdecoder->codec_context->dsp_mask = AV_CPU_FLAG_SSE2 | AV_CPU_FLAG_MMX2; -#else -#if LIBAVCODEC_VERSION_MAJOR < 53 - mdecoder->codec_context->dsp_mask = FF_MM_SSE2 | FF_MM_MMXEXT; -#else - mdecoder->codec_context->dsp_mask = FF_MM_SSE2 | FF_MM_MMX2; -#endif -#endif - return true; } @@ -174,7 +164,7 @@ { TSMFFFmpegDecoder* mdecoder = (TSMFFFmpegDecoder*) decoder; - if (avcodec_open(mdecoder->codec_context, mdecoder->codec) < 0) + if (avcodec_open2(mdecoder->codec_context, mdecoder->codec, NULL) < 0) { DEBUG_WARN("avcodec_open failed."); return false; @@ -337,7 +327,7 @@ #endif if (mdecoder->decoded_size_max == 0) - mdecoder->decoded_size_max = AVCODEC_MAX_AUDIO_FRAME_SIZE + 16; + mdecoder->decoded_size_max = 192000 /* AVCODEC_MAX_AUDIO_FRAME_SIZE */ + 16; mdecoder->decoded_data = xzalloc(mdecoder->decoded_size_max); /* align the memory for SSE2 needs */ dst = (uint8*) (((uintptr_t)mdecoder->decoded_data + 15) & ~ 0x0F); @@ -348,7 +338,7 @@ while (src_size > 0) { /* Ensure enough space for decoding */ - if (mdecoder->decoded_size_max - mdecoder->decoded_size < AVCODEC_MAX_AUDIO_FRAME_SIZE) + if (mdecoder->decoded_size_max - mdecoder->decoded_size < 192000 /* AVCODEC_MAX_AUDIO_FRAME_SIZE */) { mdecoder->decoded_size_max = mdecoder->decoded_size_max * 2 + 16; mdecoder->decoded_data = xrealloc(mdecoder->decoded_data, mdecoder->decoded_size_max); @@ -499,7 +489,6 @@ if (!initialized) { - avcodec_init(); avcodec_register_all(); initialized = true; }