Original patch by Zhou Zongyi, zhouzy A os pku edu cn, resubmitted by
James Darnley, james.darnley gmail, changes by me.
Originally committed as revision 25115 to svn://svn.ffmpeg.org/ffmpeg/trunk
... | ... |
@@ -460,6 +460,7 @@ following image formats are supported: |
460 | 460 |
@tab fourcc: 'smc ' |
461 | 461 |
@item QuickTime video (RPZA) @tab @tab X |
462 | 462 |
@tab fourcc: rpza |
463 |
+@item R10K AJA Kona 10-bit RGB Codec @tab @tab X |
|
463 | 464 |
@item R210 Quicktime Uncompressed RGB 10-bit @tab @tab X |
464 | 465 |
@item Raw Video @tab X @tab X |
465 | 466 |
@item RealVideo 1.0 @tab X @tab X |
... | ... |
@@ -289,6 +289,7 @@ OBJS-$(CONFIG_QDRAW_DECODER) += qdrw.o |
289 | 289 |
OBJS-$(CONFIG_QPEG_DECODER) += qpeg.o |
290 | 290 |
OBJS-$(CONFIG_QTRLE_DECODER) += qtrle.o |
291 | 291 |
OBJS-$(CONFIG_QTRLE_ENCODER) += qtrleenc.o |
292 |
+OBJS-$(CONFIG_R10K_DECODER) += r210dec.o |
|
292 | 293 |
OBJS-$(CONFIG_R210_DECODER) += r210dec.o |
293 | 294 |
OBJS-$(CONFIG_RA_144_DECODER) += ra144dec.o ra144.o celp_filters.o |
294 | 295 |
OBJS-$(CONFIG_RA_144_ENCODER) += ra144enc.o ra144.o celp_filters.o |
... | ... |
@@ -163,6 +163,7 @@ void avcodec_register_all(void) |
163 | 163 |
REGISTER_DECODER (QDRAW, qdraw); |
164 | 164 |
REGISTER_DECODER (QPEG, qpeg); |
165 | 165 |
REGISTER_ENCDEC (QTRLE, qtrle); |
166 |
+ REGISTER_DECODER (R10K, r10k); |
|
166 | 167 |
REGISTER_DECODER (R210, r210); |
167 | 168 |
REGISTER_ENCDEC (RAWVIDEO, rawvideo); |
168 | 169 |
REGISTER_DECODER (RL2, rl2); |
... | ... |
@@ -31,7 +31,7 @@ |
31 | 31 |
#include "libavutil/cpu.h" |
32 | 32 |
|
33 | 33 |
#define LIBAVCODEC_VERSION_MAJOR 52 |
34 |
-#define LIBAVCODEC_VERSION_MINOR 88 |
|
34 |
+#define LIBAVCODEC_VERSION_MINOR 89 |
|
35 | 35 |
#define LIBAVCODEC_VERSION_MICRO 0 |
36 | 36 |
|
37 | 37 |
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |
... | ... |
@@ -227,6 +227,7 @@ enum CodecID { |
227 | 227 |
CODEC_ID_ANSI, |
228 | 228 |
CODEC_ID_A64_MULTI, |
229 | 229 |
CODEC_ID_A64_MULTI5, |
230 |
+ CODEC_ID_R10K, |
|
230 | 231 |
|
231 | 232 |
/* various PCM "codecs" */ |
232 | 233 |
CODEC_ID_PCM_S16LE= 0x10000, |
... | ... |
@@ -63,9 +63,15 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, |
63 | 63 |
for (w = 0; w < avctx->width; w++) { |
64 | 64 |
uint32_t pixel = av_be2ne32(*src++); |
65 | 65 |
uint16_t r, g, b; |
66 |
+ if (avctx->codec_id==CODEC_ID_R210) { |
|
66 | 67 |
b = pixel << 6; |
67 | 68 |
g = (pixel >> 4) & 0xffc0; |
68 | 69 |
r = (pixel >> 14) & 0xffc0; |
70 |
+ } else { |
|
71 |
+ b = pixel << 4; |
|
72 |
+ g = (pixel >> 6) & 0xffc0; |
|
73 |
+ r = (pixel >> 16) & 0xffc0; |
|
74 |
+ } |
|
69 | 75 |
*dst++ = r | (r >> 10); |
70 | 76 |
*dst++ = g | (g >> 10); |
71 | 77 |
*dst++ = b | (b >> 10); |
... | ... |
@@ -90,6 +96,7 @@ static av_cold int decode_close(AVCodecContext *avctx) |
90 | 90 |
return 0; |
91 | 91 |
} |
92 | 92 |
|
93 |
+#if CONFIG_R210_DECODER |
|
93 | 94 |
AVCodec r210_decoder = { |
94 | 95 |
"r210", |
95 | 96 |
AVMEDIA_TYPE_VIDEO, |
... | ... |
@@ -102,3 +109,18 @@ AVCodec r210_decoder = { |
102 | 102 |
CODEC_CAP_DR1, |
103 | 103 |
.long_name = NULL_IF_CONFIG_SMALL("Uncompressed RGB 10-bit"), |
104 | 104 |
}; |
105 |
+#endif |
|
106 |
+#if CONFIG_R10K_DECODER |
|
107 |
+AVCodec r10k_decoder = { |
|
108 |
+ "r10k", |
|
109 |
+ AVMEDIA_TYPE_VIDEO, |
|
110 |
+ CODEC_ID_R10K, |
|
111 |
+ 0, |
|
112 |
+ decode_init, |
|
113 |
+ NULL, |
|
114 |
+ decode_close, |
|
115 |
+ decode_frame, |
|
116 |
+ CODEC_CAP_DR1, |
|
117 |
+ .long_name = NULL_IF_CONFIG_SMALL("AJA Kona 10-bit RGB Codec"), |
|
118 |
+}; |
|
119 |
+#endif |
... | ... |
@@ -77,6 +77,7 @@ const AVCodecTag codec_movvideo_tags[] = { |
77 | 77 |
{ CODEC_ID_RAWVIDEO, MKTAG('b', '1', '6', 'g') }, |
78 | 78 |
{ CODEC_ID_RAWVIDEO, MKTAG('b', '4', '8', 'r') }, |
79 | 79 |
|
80 |
+ { CODEC_ID_R10K, MKTAG('R', '1', '0', 'k') }, /* UNCOMPRESSED 10BIT RGB */ |
|
80 | 81 |
{ CODEC_ID_R210, MKTAG('r', '2', '1', '0') }, /* UNCOMPRESSED 10BIT RGB */ |
81 | 82 |
{ CODEC_ID_V210, MKTAG('v', '2', '1', '0') }, /* UNCOMPRESSED 10BIT 4:2:2 */ |
82 | 83 |
|
... | ... |
@@ -179,6 +179,7 @@ const AVCodecTag ff_codec_bmp_tags[] = { |
179 | 179 |
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'V', '9') }, |
180 | 180 |
{ CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'U', '9') }, |
181 | 181 |
{ CODEC_ID_FRWU, MKTAG('F', 'R', 'W', 'U') }, |
182 |
+ { CODEC_ID_R10K, MKTAG('R', '1', '0', 'k') }, |
|
182 | 183 |
{ CODEC_ID_R210, MKTAG('r', '2', '1', '0') }, |
183 | 184 |
{ CODEC_ID_V210, MKTAG('v', '2', '1', '0') }, |
184 | 185 |
{ CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '1') }, |