annotate 8bps.c @ 2841:bceeca1bb30f libavcodec

vbr audio encode patch by (Justin Ruggles: jruggle, earthlink net) with changes by me int->float as video uses float too remove silent cliping to some per codec range, this should result in an error instead remove change to utils.c as its inconsistant with video
author michael
date Sun, 21 Aug 2005 20:27:00 +0000
parents 1bf080e490db
children ef2149182f1c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1608
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
1 /*
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
2 * Quicktime Planar RGB (8BPS) Video Decoder
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
3 * Copyright (C) 2003 Roberto Togni
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
4 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
9 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
13 * Lesser General Public License for more details.
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
14 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
16 * License along with this library; if not, write to the Free Software
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
18 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
19 */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
20
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
21 /**
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
22 * @file 8bps.c
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
23 * QT 8BPS Video Decoder by Roberto Togni <rtogni at bresciaonline dot it>
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
24 * For more information about the 8BPS format, visit:
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
25 * http://www.pcisys.net/~melanson/codecs/
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
26 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
27 * Supports: PAL8 (RGB 8bpp, paletted)
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
28 * : BGR24 (RGB 24bpp) (can also output it as RGBA32)
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
29 * : RGBA32 (RGB 32bpp, 4th plane is probably alpha and it's ignored)
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
30 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
31 */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
32
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
33 #include <stdio.h>
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
34 #include <stdlib.h>
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
35
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
36 #include "common.h"
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
37 #include "avcodec.h"
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
38
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
39
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
40 const enum PixelFormat pixfmt_rgb24[] = {PIX_FMT_BGR24, PIX_FMT_RGBA32, -1};
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
41
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
42 /*
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
43 * Decoder context
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
44 */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
45 typedef struct EightBpsContext {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
46
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
47 AVCodecContext *avctx;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
48 AVFrame pic;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
49
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
50 unsigned char planes;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
51 unsigned char planemap[4];
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
52 } EightBpsContext;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
53
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
54
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
55 /*
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
56 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
57 * Decode a frame
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
58 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
59 */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
60 static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, uint8_t *buf, int buf_size)
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
61 {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
62 EightBpsContext * const c = (EightBpsContext *)avctx->priv_data;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
63 unsigned char *encoded = (unsigned char *)buf;
2418
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
64 unsigned char *pixptr, *pixptr_end;
1608
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
65 unsigned int height = avctx->height; // Real image height
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
66 unsigned int dlen, p, row;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
67 unsigned char *lp, *dp;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
68 unsigned char count;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
69 unsigned int px_inc;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
70 unsigned int planes = c->planes;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
71 unsigned char *planemap = c->planemap;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
72
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
73 if(c->pic.data[0])
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
74 avctx->release_buffer(avctx, &c->pic);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
75
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
76 c->pic.reference = 0;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
77 c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
78 if(avctx->get_buffer(avctx, &c->pic) < 0){
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
79 av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
80 return -1;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
81 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
82
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
83 /* Set data pointer after line lengths */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
84 dp = encoded + planes * (height << 1);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
85
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
86 /* Ignore alpha plane, don't know what to do with it */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
87 if (planes == 4)
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
88 planes--;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
89
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
90 px_inc = planes + (avctx->pix_fmt == PIX_FMT_RGBA32);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
91
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
92 for (p = 0; p < planes; p++) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
93 /* Lines length pointer for this plane */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
94 lp = encoded + p * (height << 1);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
95
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
96 /* Decode a plane */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
97 for(row = 0; row < height; row++) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
98 pixptr = c->pic.data[0] + row * c->pic.linesize[0] + planemap[p];
2418
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
99 pixptr_end = pixptr + c->pic.linesize[0];
1608
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
100 dlen = be2me_16(*(unsigned short *)(lp+row*2));
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
101 /* Decode a row of this plane */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
102 while(dlen > 0) {
2788
1bf080e490db fix segfault (bug #1165640)
michael
parents: 2453
diff changeset
103 if(dp + 1 >= buf+buf_size) return -1;
1608
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
104 if ((count = *dp++) <= 127) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
105 count++;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
106 dlen -= count + 1;
2418
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
107 if (pixptr + count * px_inc > pixptr_end)
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
108 break;
2788
1bf080e490db fix segfault (bug #1165640)
michael
parents: 2453
diff changeset
109 if(dp + count > buf+buf_size) return -1;
1608
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
110 while(count--) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
111 *pixptr = *dp++;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
112 pixptr += px_inc;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
113 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
114 } else {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
115 count = 257 - count;
2418
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
116 if (pixptr + count * px_inc > pixptr_end)
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
117 break;
1608
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
118 while(count--) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
119 *pixptr = *dp;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
120 pixptr += px_inc;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
121 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
122 dp++;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
123 dlen -= 2;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
124 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
125 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
126 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
127 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
128
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
129 if (avctx->palctrl) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
130 memcpy (c->pic.data[1], avctx->palctrl->palette, AVPALETTE_SIZE);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
131 if (avctx->palctrl->palette_changed) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
132 c->pic.palette_has_changed = 1;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
133 avctx->palctrl->palette_changed = 0;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
134 } else
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
135 c->pic.palette_has_changed = 0;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
136 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
137
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
138 *data_size = sizeof(AVFrame);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
139 *(AVFrame*)data = c->pic;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
140
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
141 /* always report that the buffer was completely consumed */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
142 return buf_size;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
143 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
144
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
145
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
146 /*
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
147 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
148 * Init 8BPS decoder
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
149 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
150 */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
151 static int decode_init(AVCodecContext *avctx)
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
152 {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
153 EightBpsContext * const c = (EightBpsContext *)avctx->priv_data;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
154
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
155 c->avctx = avctx;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
156 avctx->has_b_frames = 0;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
157
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
158 c->pic.data[0] = NULL;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
159
2429
4b350cc506a7 Use avcodec_check_dimensions instead of custom hack
rtognimp
parents: 2418
diff changeset
160 if (avcodec_check_dimensions(avctx, avctx->width, avctx->height) < 0) {
2418
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
161 return 1;
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
162 }
82af834636c2 Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents: 1608
diff changeset
163
1608
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
164 switch (avctx->bits_per_sample) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
165 case 8:
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
166 avctx->pix_fmt = PIX_FMT_PAL8;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
167 c->planes = 1;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
168 c->planemap[0] = 0; // 1st plane is palette indexes
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
169 if (avctx->palctrl == NULL) {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
170 av_log(avctx, AV_LOG_ERROR, "Error: PAL8 format but no palette from demuxer.\n");
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
171 return -1;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
172 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
173 break;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
174 case 24:
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
175 avctx->pix_fmt = avctx->get_format(avctx, pixfmt_rgb24);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
176 c->planes = 3;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
177 c->planemap[0] = 2; // 1st plane is red
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
178 c->planemap[1] = 1; // 2nd plane is green
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
179 c->planemap[2] = 0; // 3rd plane is blue
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
180 break;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
181 case 32:
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
182 avctx->pix_fmt = PIX_FMT_RGBA32;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
183 c->planes = 4;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
184 #ifdef WORDS_BIGENDIAN
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
185 c->planemap[0] = 1; // 1st plane is red
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
186 c->planemap[1] = 2; // 2nd plane is green
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
187 c->planemap[2] = 3; // 3rd plane is blue
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
188 c->planemap[3] = 0; // 4th plane is alpha???
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
189 #else
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
190 c->planemap[0] = 2; // 1st plane is red
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
191 c->planemap[1] = 1; // 2nd plane is green
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
192 c->planemap[2] = 0; // 3rd plane is blue
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
193 c->planemap[3] = 3; // 4th plane is alpha???
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
194 #endif
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
195 break;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
196 default:
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
197 av_log(avctx, AV_LOG_ERROR, "Error: Unsupported color depth: %u.\n", avctx->bits_per_sample);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
198 return -1;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
199 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
200
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
201 return 0;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
202 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
203
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
204
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
205
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
206
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
207 /*
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
208 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
209 * Uninit 8BPS decoder
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
210 *
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
211 */
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
212 static int decode_end(AVCodecContext *avctx)
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
213 {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
214 EightBpsContext * const c = (EightBpsContext *)avctx->priv_data;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
215
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
216 if (c->pic.data[0])
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
217 avctx->release_buffer(avctx, &c->pic);
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
218
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
219 return 0;
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
220 }
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
221
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
222
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
223
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
224 AVCodec eightbps_decoder = {
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
225 "8bps",
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
226 CODEC_TYPE_VIDEO,
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
227 CODEC_ID_8BPS,
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
228 sizeof(EightBpsContext),
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
229 decode_init,
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
230 NULL,
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
231 decode_end,
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
232 decode_frame,
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
233 CODEC_CAP_DR1,
639972344c6f 8BPS decoder
rtognimp
parents:
diff changeset
234 };