[PD-cvs] externals/gem2pdp pix_2pdp.cpp,1.2,1.3
Jamie Tittle
tigital at users.sourceforge.net
Tue Oct 11 04:37:24 CEST 2005
Update of /cvsroot/pure-data/externals/gem2pdp
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10041
Modified Files:
pix_2pdp.cpp
Log Message:
improved uyvy to yv12 conversion code
Index: pix_2pdp.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/gem2pdp/pix_2pdp.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** pix_2pdp.cpp 18 Jun 2005 06:29:30 -0000 1.2
--- pix_2pdp.cpp 11 Oct 2005 02:37:22 -0000 1.3
***************
*** 8,11 ****
--- 8,12 ----
*
* Copyright (c) 2005 Georg Holzmann <grh at mur.at>
+ * parts Copyright (c) 2005 James Tittle II <tigital at mac.com>
*
*/
***************
*** 44,48 ****
{
t_int psize, px, py;
! short int *pY, *pU, *pV;
unsigned char g1,g2,g3,g4;
t_int helper;
--- 45,49 ----
{
t_int psize, px, py;
! short int *pY, *pY2, *pU, *pV;
unsigned char g1,g2,g3,g4;
t_int helper;
***************
*** 57,60 ****
--- 58,62 ----
pY = m_data;
+ pY2 = m_data + gem_xsize;
pV = m_data+psize;
pU = m_data+psize+(psize>>2);
***************
*** 65,68 ****
--- 67,72 ----
case GL_RGB:
case GL_RGBA:
+ case GL_BGR:
+ case GL_BGRA:
for ( py=0; py<gem_ysize; py++)
{
***************
*** 89,114 ****
// YUV
case GL_YUV422_GEM:
! for ( py=0; py<gem_ysize; py++)
! {
! for ( px=0; px<gem_xsize; px++)
! {
! helper = py*gem_xsize*gem_csize + px*gem_csize;
! g1=gem_image[helper+chU]; // U
! g2=gem_image[helper+chY0]; // Y0
! g3=gem_image[helper+chV]; // V
! g4=gem_image[helper+chY1]; // Y1
!
! if(px%2==0)
! *pY = g2 << 7;
! else
! *pY = g4 << 7;
! pY++;
!
! *pU = (g1-128) << 8;
! *pV = (g3-128) << 8;
! if ( (px%2==0) && (py%2==0) )
! pV++; pU++;
! }
! }
pdp_packet_pass_if_valid(m_pdpoutlet, &m_packet0);
break;
--- 93,121 ----
// YUV
case GL_YUV422_GEM:
! int row=gem_ysize>>1;
! int cols=gem_xsize>>1;
! short u,v;
! unsigned char *pixel = gem_image;
! unsigned char *pixel2 = gem_image + gem_xsize * gem_csize;
! while (row--){
! int col=cols;
! while(col--){
! u=(pixel[0]-128)<<8; v=(pixel[2]-128)<<8;
! *pU = u;
! *pY++ = (pixel[1])<<7;
! *pV = v;
! *pY++ = (pixel[3])<<7;
! *pU = u;
! *pY2++ = (pixel2[1])<<7;
! *pV = v;
! *pY2++ = (pixel2[3])<<7;
! pixel+=4;
! pixel2+=4;
! pU++; pV++;
! }
! pixel += gem_xsize * gem_csize;
! pixel2 += gem_xsize * gem_csize;
! pY += gem_xsize; pY2 += gem_xsize;
! }
pdp_packet_pass_if_valid(m_pdpoutlet, &m_packet0);
break;
***************
*** 140,144 ****
void pix_2pdp::obj_setupCallback(t_class *classPtr)
{
! post( "pix_2pdp : a bridge between a Gem pix and PDP/PiDiP, Georg Holzmann 2005 <grh at mur.at>" );
class_addmethod(classPtr, (t_method)&pix_2pdp::bangMessCallback,
gensym("bang"), A_NULL);
--- 147,151 ----
void pix_2pdp::obj_setupCallback(t_class *classPtr)
{
! post( "pix_2pdp : a bridge between a Gem pix and PDP/PiDiP, Georg Holzmann 2005 <grh at mur.at> & tigital 2005 <tigital at mac.com>" );
class_addmethod(classPtr, (t_method)&pix_2pdp::bangMessCallback,
gensym("bang"), A_NULL);
More information about the Pd-cvs
mailing list