X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fvframe.C;h=3eca676452ca8536fa3f78993e68a24bf35fd9a1;hb=219e9cae947fc9454f65c210d600800158d798fb;hp=799041921aad42bed98d9154cc7d67ff95a2b47a;hpb=4c463964715f67d36cc3ecb92f414cb9f7ba720d;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/vframe.C b/cinelerra-5.1/guicast/vframe.C index 79904192..3eca6764 100644 --- a/cinelerra-5.1/guicast/vframe.C +++ b/cinelerra-5.1/guicast/vframe.C @@ -279,7 +279,6 @@ int VFrame::reset_parameters(int do_opengl) sequence_number = -1; timestamp = -1.; is_keyframe = 0; - draw_point = 0; pixel_rgb = 0x000000; // BLACK pixel_yuv = 0x008080; stipple = 0; @@ -355,6 +354,7 @@ if( memory_type != VFrame::SHARED ) case BC_YUV444P: case BC_RGB_FLOATP: case BC_RGBA_FLOATP: + case BC_GBRP: break; default: @@ -446,6 +446,12 @@ void VFrame::create_row_pointers() 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); @@ -885,27 +891,33 @@ int VFrame::clear_frame() 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; @@ -916,8 +928,8 @@ int VFrame::clear_frame() 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: @@ -1347,7 +1359,6 @@ void VFrame::set_stiple(int mask) 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(); \