forsyth20121205-174063a80cc13 years agoHistory
116 lines · 2.2 KB · Brainfuck
RawDownload
implement Remap; include "sys.m";include "mpegio.m"; Mpegi, YCbCr: import Mpegio; CLOFF: con 511; width, height, w8: int;out: array of byte;elum: array of int;clamp2 := array[CLOFF + 256 + CLOFF] of int; init(m: ref Mpegi){	width = m.width;	height = m.height;	w8 = width >> 3;	out = array[w8 * height] of byte;	elum = array[width + 1] of int;	for (i := 0; i < CLOFF; i++)		clamp2[i] = 0;	for (i = 0; i < 256; i++)		clamp2[i + CLOFF] = i >> 7;	for (i = CLOFF + 256; i < CLOFF + 256 + CLOFF; i++)		clamp2[i] = 255 >> 7;} remap(p: ref Mpegio->YCbCr): array of byte{	Y := p.Y;	for (e := 0; e <= width; e++)		elum[e] = 0;	m := 0;	n := 0;	for (i := 0; i < height; i++) {		el := 0;		ex := 0;		for (k := 0; k < w8; k++) {			y := (256 - int Y[n++]) + elum[ex];			l := clamp2[y + CLOFF] << 7;			b := l;			y -= l;			t := (3 * y) >> 4;			elum[ex] = t + el;			elum[ex + 1] += t;			el = y - 3 * t;			ex++;			y = (256 - int Y[n++]) + elum[ex];			l = clamp2[y + CLOFF];			b |= l << 6;			y -= l << 7;			t = (3 * y) >> 4;			elum[ex] = t + el;			elum[ex + 1] += t;			el = y - 3 * t;			ex++;			y = (256 - int Y[n++]) + elum[ex];			l = clamp2[y + CLOFF];			b |= l << 5;			y -= l << 7;			t = (3 * y) >> 4;			elum[ex] = t + el;			elum[ex + 1] += t;			el = y - 3 * t;			ex++;			y = (256 - int Y[n++]) + elum[ex];			l = clamp2[y + CLOFF];			b |= l << 4;			y -= l << 7;			t = (3 * y) >> 4;			elum[ex] = t + el;			elum[ex + 1] += t;			el = y - 3 * t;			ex++;			y = (256 - int Y[n++]) + elum[ex];			l = clamp2[y + CLOFF];			b |= l << 3;			y -= l << 7;			t = (3 * y) >> 4;			elum[ex] = t + el;			elum[ex + 1] += t;			el = y - 3 * t;			ex++;			y = (256 - int Y[n++]) + elum[ex];			l = clamp2[y + CLOFF];			b |= l << 2;			y -= l << 7;			t = (3 * y) >> 4;			elum[ex] = t + el;			elum[ex + 1] += t;			el = y - 3 * t;			ex++;			y = (256 - int Y[n++]) + elum[ex];			l = clamp2[y + CLOFF];			b |= l << 1;			y -= l << 7;			t = (3 * y) >> 4;			elum[ex] = t + el;			elum[ex + 1] += t;			el = y - 3 * t;			ex++;			y = (256 - int Y[n++]) + elum[ex];			l = clamp2[y + CLOFF];			out[m++] = byte (b | l);			y -= l << 7;			t = (3 * y) >> 4;			elum[ex] = t + el;			elum[ex + 1] += t;			el = y - 3 * t;			ex++;		}	}	return out;}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t