summaryrefslogtreecommitdiff
blob: 4f93d4eed425e978ed15ca225ff855ae0f047701 (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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
diff -ruN OpenCV-2.3.0-0-vanilla/modules/highgui/src/cap_ffmpeg_impl.hpp OpenCV-2.3.0/modules/highgui/src/cap_ffmpeg_impl.hpp
--- OpenCV-2.3.0-0-vanilla/modules/highgui/src/cap_ffmpeg_impl.hpp	2011-07-04 06:21:58.000000000 +0200
+++ OpenCV-2.3.0/modules/highgui/src/cap_ffmpeg_impl.hpp	2011-09-18 20:27:05.000000000 +0200
@@ -489,7 +489,7 @@
         AVCodecContext *enc = &ic->streams[i]->codec;
 #endif
 
-        if( CODEC_TYPE_VIDEO == enc->codec_type && video_stream < 0) {
+        if( AVMEDIA_TYPE_VIDEO == enc->codec_type && video_stream < 0) {
             AVCodec *codec = avcodec_find_decoder(enc->codec_id);
             if (!codec ||
             avcodec_open(enc, codec) < 0)
@@ -576,15 +576,27 @@
 		        continue;
     		}
 
-#if LIBAVFORMAT_BUILD > 4628
-        avcodec_decode_video(video_st->codec,
-                             picture, &got_picture,
-                             packet.data, packet.size);
-#else
-        avcodec_decode_video(&video_st->codec,
-                             picture, &got_picture,
-                             packet.data, packet.size);
-#endif
+
+		AVPacket avpkt;
+		av_init_packet(&avpkt);
+		avpkt.data = packet.data;
+		avpkt.size = packet.size;
+		//
+		// HACK for CorePNG to decode as normal PNG by default
+		// same method used by ffmpeg
+		avpkt.flags = AV_PKT_FLAG_KEY;
+		avcodec_decode_video2(video_st->codec,
+                              picture, &got_picture, &avpkt);
+//Functions Removed from ffmpeg on 4/19/11
+//#if LIBAVFORMAT_BUILD > 4628
+//        avcodec_decode_video(video_st->codec,
+//                             picture, &got_picture,
+//                             packet.data, packet.size);
+//#else
+//        avcodec_decode_video(&video_st->codec,
+//                             picture, &got_picture,
+//                             packet.data, packet.size);
+//#endif
 
         if (got_picture) {
             // we have a new picture, so memorize it
@@ -822,24 +834,25 @@
 #endif
 };
 
-static const char * icvFFMPEGErrStr(int err)
-{
-    switch(err) {
-    case AVERROR_NUMEXPECTED:
-		return "Incorrect filename syntax";
-    case AVERROR_INVALIDDATA:
-		return "Invalid data in header";
-    case AVERROR_NOFMT:
-		return "Unknown format";
-    case AVERROR_IO:
-		return "I/O error occurred";
-    case AVERROR_NOMEM:
-		return "Memory allocation error";
-    default:
-		break;
-    }
-  	return "Unspecified error";
-}
+//Deprecated Errors, should be using AVERROR(EINVAL) to return error strings
+//static const char * icvFFMPEGErrStr(int err)
+//{
+//    switch(err) {
+//    case AVERROR_NUMEXPECTED:
+//		return "Incorrect filename syntax";
+//    case AVERROR_INVALIDDATA:
+//		return "Invalid data in header";
+//    case AVERROR_NOFMT:
+//		return "Unknown format";
+//    case AVERROR_IO:
+//		return "I/O error occurred";
+//    case AVERROR_NOMEM:
+//		return "Memory allocation error";
+//    default:
+//		break;
+//    }
+//  	return "Unspecified error";
+//}
 
 /* function internal to FFMPEG (libavformat/riff.c) to lookup codec id by fourcc tag*/
 extern "C" {
@@ -918,7 +931,7 @@
 #endif
 
 #if LIBAVFORMAT_BUILD > 4621
-	c->codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, CODEC_TYPE_VIDEO);
+	c->codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVMEDIA_TYPE_VIDEO);
 #else
 	c->codec_id = oc->oformat->video_codec;
 #endif
@@ -930,7 +943,7 @@
     //if(codec_tag) c->codec_tag=codec_tag;
 	codec = avcodec_find_encoder(c->codec_id);
 
-	c->codec_type = CODEC_TYPE_VIDEO;
+	c->codec_type = AVMEDIA_TYPE_VIDEO;
 
 	/* put sample parameters */
 	c->bit_rate = bitrate;
@@ -1015,7 +1028,7 @@
         AVPacket pkt;
         av_init_packet(&pkt);
 
-        pkt.flags |= PKT_FLAG_KEY;
+        pkt.flags |= AV_PKT_FLAG_KEY;
         pkt.stream_index= video_st->index;
         pkt.data= (uint8_t *)picture;
         pkt.size= sizeof(AVPicture);
@@ -1035,7 +1048,7 @@
 			pkt.pts = c->coded_frame->pts;
 #endif
             if(c->coded_frame->key_frame)
-                pkt.flags |= PKT_FLAG_KEY;
+                pkt.flags |= AV_PKT_FLAG_KEY;
             pkt.stream_index= video_st->index;
             pkt.data= outbuf;
             pkt.size= out_size;
@@ -1237,7 +1250,7 @@
 	av_register_all ();
 
 	/* auto detect the output format from the name and fourcc code. */
-	fmt = guess_format(NULL, filename, NULL);
+	fmt = av_guess_format(NULL, filename, NULL);
 	if (!fmt)
         return false;
 
@@ -1260,7 +1273,7 @@
 #endif
 
     // alloc memory for context
-	oc = av_alloc_format_context();
+	oc = avformat_alloc_context();
 	assert (oc);
 
 	/* set file name */
@@ -1336,7 +1349,7 @@
     /* open the codec */
     if ( (err=avcodec_open(c, codec)) < 0) {
 		char errtext[256];
-		sprintf(errtext, "Could not open codec '%s': %s", codec->name, icvFFMPEGErrStr(err));
+		sprintf(errtext, "Could not open codec '%s': %s", codec->name, AVERROR(EINVAL));
 		return false;
     }