sequence_number = -1;
timestamp = -1.;
is_keyframe = 0;
- draw_point = 0;
- set_pixel_color(BLACK);
+ pixel_rgb = 0x000000; // BLACK
+ pixel_yuv = 0x008080;
stipple = 0;
if(do_opengl)
case BC_YUV444P:
case BC_RGB_FLOATP:
case BC_RGBA_FLOATP:
+ case BC_GBRP:
break;
default:
this->u_offset = sz;
this->v_offset = sz + sz;
break;
+ case BC_GBRP:
+ if( this->v_offset ) break;
+ this->y_offset = 0;
+ this->u_offset = sz * sizeof(uint8_t);
+ this->v_offset = 2 * sz * sizeof(uint8_t);
+ break;
case BC_RGBA_FLOATP:
if( this->v_offset || a ) break;
a = this->data + 3 * sz * sizeof(float);
case BC_YUV410P:
bzero(get_y(), sz);
- bzero(get_u(), w / 4 * h / 4);
- bzero(get_v(), w / 4 * h / 4);
+ memset(get_u(), 0x80, w / 4 * h / 4);
+ memset(get_v(), 0x80, w / 4 * h / 4);
break;
case BC_YUV411P:
case BC_YUV420P:
case BC_YUV420PI:
bzero(get_y(), sz);
- bzero(get_u(), sz / 4);
- bzero(get_v(), sz / 4);
+ memset(get_u(), 0x80, sz / 4);
+ memset(get_v(), 0x80, sz / 4);
break;
case BC_YUV422P:
bzero(get_y(), sz);
- bzero(get_u(), sz / 2);
- bzero(get_v(), sz / 2);
+ memset(get_u(), 0x80, sz / 2);
+ memset(get_v(), 0x80, sz / 2);
+ break;
+
+ case BC_GBRP:
+ bzero(get_y(), sz);
+ bzero(get_u(), sz);
+ bzero(get_b(), sz);
break;
case BC_RGBA_FLOATP: if( a ) {
float *ap = (float *)a;
- for( int i=sz; --i>=0; ++ap ) *ap = 1.f; }
+ for( int i=sz; --i>=0; ++ap ) *ap = 0.f; }
case BC_RGB_FLOATP: {
float *rp = (float *)y;
for( int i=sz; --i>=0; ++rp ) *rp = 0.f;
break; }
case BC_YUV444P:
bzero(get_y(), sz);
- bzero(get_u(), sz);
- bzero(get_v(), sz);
+ memset(get_u(), 0x80, sz);
+ memset(get_v(), 0x80, sz);
break;
case BC_YUV888:
int VFrame::draw_pixel(int x, int y)
{
if( x < 0 || y < 0 || x >= get_w() || y >= get_h() ) return 1;
- if( draw_point ) return (this->*draw_point)(x, y);
#define DRAW_PIXEL(type, r, g, b) { \
type **rows = (type**)get_rows(); \