summaryrefslogtreecommitdiffstats
path: root/package/freerdp/freerdp-0001-ffmpeg.patch
blob: 4f9820abeae84be217e38d0be2d21d45379b924b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Fix freerdp compile with newer ffmpeg versions.

Downloaded from https://github.com/pld-linux/freerdp/blob/master/freerdp-ffmpeg.patch

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

--- 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;
 	}
OpenPOWER on IntegriCloud