binary string question
Peter Abel
PeterAbel at gmx.net
Mon Nov 10 17:13:12 EST 2003
Dan Jones <djones at shcorp.com> wrote in message news:<mailman.567.1068251716.702.python-list at python.org>...
...
...
...
> static void ccvt_420p(int width, int height, const unsigned char *src,
> unsigned char *dst, int push)
> {
> int line, col, linewidth;
> int y, u, v, yy, vr, ug, vg, ub;
> int r, g, b;
> const unsigned char *py, *pu, *pv;
>
> linewidth = width >> 1;
> py = src;
> pu = py + (width * height);
> pv = pu + (width * height) / 4;
>
> y = *py++;
I guess here you're using char as int.
> yy = y << 8;
> u = *pu - 128;
...
...
...
> for (line = 0; line < height; line++) {
> for (col = 0; col < width; col++) {
> r = (yy + vr) >> 8;
> g = (yy - ug - vg) >> 8;
> b = (yy + ub ) >> 8;
...
...
...
> And here's what I have so far:
>
>
> def yuv420p_to_rgb24(WIDTH, HEIGHT, source):
> line, col, linewidth = 0,0,0
> y,u,v,yy,vr,ug,vg,ub = 0,0,0,0,0,0,0,0
> r,g,b = 0,0,0
> linewidth = WIDTH >> 1
To do the same in pyhton ...
> sourceframe = list(source)
... use sourceframe = map(ord,source) instead !!
> py = 0
> pu = py + (WIDTH * HEIGHT)
> pv = pu + (WIDTH * HEIGHT) / 4
> destination = []
> destindex = 0
>
!!!! *y* becomes an int because *sourceframe* is a list of ints !!!!
> y = sourceframe[py]
> py += 1
*********The following line has no effect**********************
> int(y)
***************************************************************
!!!! Now *y* is an int and can be shifted !!!!
> yy = y << 8 # This is where it blows up
...
...
...
Regards
Peter
More information about the Python-list
mailing list