aboutsummaryrefslogtreecommitdiff
path: root/multimedia/cinelerra/ffmpeg.patch
blob: fa67e732b5b6d0faf1277db9b0253fd6e4d4e575 (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
Fix build with ffmpeg/libav trunk / 0.7

Index: cinelerra/cinelerra/ffmpeg.C
===================================================================
--- cinelerra.orig/cinelerra/ffmpeg.C
+++ cinelerra/cinelerra/ffmpeg.C
@@ -364,12 +364,15 @@ int FFMPEG::decode(uint8_t *data, long d
 
 	// NOTE: frame must already have data space allocated
 	
+	AVPacket pkt;
 	got_picture = 0;
-	int length = avcodec_decode_video(context,
+	av_init_packet( &pkt );
+	pkt.data = data;
+	pkt.size = data_size;
+	int length = avcodec_decode_video2(context,
 					  picture,
 					  &got_picture,
-					  data,
-					  data_size);
+					  &pkt);
 	
 	if (length < 0) {
 		printf("FFMPEG::decode error decoding frame\n");
Index: cinelerra/quicktime/qtffmpeg.c
===================================================================
--- cinelerra.orig/quicktime/qtffmpeg.c
+++ cinelerra/quicktime/qtffmpeg.c
@@ -181,6 +181,7 @@ static int decode_wrapper(quicktime_t *f
  
 	if(!result) 
 	{ 
+		AVPacket pkt;
 
 
 // No way to determine if there was an error based on nonzero status.
@@ -189,11 +190,13 @@ static int decode_wrapper(quicktime_t *f
 			ffmpeg->decoder_context[current_field]->skip_frame = AVDISCARD_NONREF /* AVDISCARD_BIDIR */;
 		else
 			ffmpeg->decoder_context[current_field]->skip_frame = AVDISCARD_DEFAULT;
-		result = avcodec_decode_video(ffmpeg->decoder_context[current_field], 
+		av_init_packet( &pkt );
+		pkt.data = ffmpeg->work_buffer;
+		pkt.size = bytes + header_bytes;
+		result = avcodec_decode_video2(ffmpeg->decoder_context[current_field], 
 			&ffmpeg->picture[current_field], 
 			&got_picture, 
-			ffmpeg->work_buffer, 
-			bytes + header_bytes);
+			&pkt);
 
 
 
Index: cinelerra/quicktime/wma.c
===================================================================
--- cinelerra.orig/quicktime/wma.c
+++ cinelerra/quicktime/wma.c
@@ -195,11 +195,14 @@ printf("decode 2 %x %llx %llx\n", chunk_
 			chunk_size);
 #else
 		bytes_decoded = AVCODEC_MAX_AUDIO_FRAME_SIZE;
-		result = avcodec_decode_audio2(codec->decoder_context,
+		AVPacket pkt;
+		av_init_packet( &pkt );
+		pkt.data = codec->packet_buffer;
+		pkt.size = chunk_size;
+		result = avcodec_decode_audio3(codec->decoder_context,
 			(int16_t*)(codec->work_buffer + codec->output_size * sample_size),
 			&bytes_decoded,
-			codec->packet_buffer,
-			chunk_size);
+			&pkt);
 #endif
 
 		pthread_mutex_unlock(&ffmpeg_lock);