36 #define CHARSET_CHARS 256
38 #define CROP_SCREENS 1
63 static const int mc_colors[5]={0x0,0xb,0xc,0xf,0x1};
71 int blockx, blocky, x,
y;
77 for (blocky = 0; blocky <
C64YRES; blocky += 8) {
78 for (blockx = 0; blockx <
C64XRES; blockx += 8) {
79 for (y = blocky; y < blocky + 8 && y <
C64YRES; y++) {
80 for (x = blockx; x < blockx + 8 && x <
C64XRES; x += 2) {
81 if(x < width && y < height) {
84 luma = (src[(x + 0 + y * p->
linesize[0])] +
85 src[(x + 1 + y * p->
linesize[0])]) / 2;
87 luma = src[(x + y * p->
linesize[0])];
107 int lowdiff, highdiff;
117 for (a=0; a < 256; a++) {
118 if(i < c->mc_pal_size -1 && a == c->
mc_luma_vals[i + 1]) {
134 for (y = 0; y < 8; y++) {
136 for (x = 0; x < 4; x++) {
137 pix = best_cb[y * 4 + x];
140 if (index1[pix] >= 3)
150 row1 |= 3-(index2[pix] & 3);
152 row1 |= 3-(index1[pix] & 3);
155 row2 |= 3-(index2[pix] & 3);
157 row2 |= 3-(index1[pix] & 3);
161 row1 |= 3-(index2[pix] & 3);
163 row1 |= 3-(index1[pix] & 3);
166 charset[y+0x000] = row1;
170 if (highdiff > 0 && lowdiff > 0 && c->
mc_use_5col) {
171 if (lowdiff > highdiff) {
172 for (x = 0; x < 32; x++)
175 for (x = 0; x < 32; x++)
186 colrammap[charpos] = (highdiff > 0);
259 for (a = 0; a < 256; a++) {
260 temp = colram[charmap[a + 0x000]] << 0;
261 temp |= colram[charmap[a + 0x100]] << 1;
262 temp |= colram[charmap[a + 0x200]] << 2;
263 if (a < 0xe8) temp |= colram[charmap[a + 0x300]] << 3;
269 const AVFrame *p,
int *got_packet)
294 screen_size = b_width * b_height;
329 int alloc_size = charset_size + c->
mc_lifetime*(screen_size + colram_size);
348 memcpy(buf, charset, charset_size);
352 req_size += charset_size;
358 for (y = 0; y < b_height; y++) {
359 for (x = 0; x < b_width; x++) {
360 buf[y * b_width + x] = charmap[y * b_width + x];
365 req_size += screen_size;
372 req_size += colram_size;
390 pkt->
size = req_size;
392 *got_packet = !!req_size;
397 #if CONFIG_A64MULTI_ENCODER
398 AVCodec ff_a64multi_encoder = {
411 #if CONFIG_A64MULTI5_ENCODER
412 AVCodec ff_a64multi5_encoder = {
414 .long_name =
NULL_IF_CONFIG_SMALL(
"Multicolor charset for Commodore 64, extended with 5th color (colram)"),