|
List Info
Thread: Re: CR-Client: add RGB32->YUY2 color converter plus test harness
|
|
| Re: CR-Client: add RGB32->YUY2 color
converter plus test harness |
  United States |
2007-05-08 13:26:12 |
Eric Hyche wrote:
>
>> -----Original Message-----
>> From: Greg Wright [mailto:gwright real.com]
>> Sent: Tuesday, May 08, 2007 1:28 PM
>> To: ehyche real.com
>> Cc: video-dev lists.helixcommunity.org
>> Subject: Re: [Video-dev] CR-Client: add
RGB32->YUY2 color
>> converter plus test harness
>>
>> Eric Hyche wrote:
>>> Description
>>> ---------------------------------------
>>> Currently, we do not have a one-step
RGB32->YUY2
>>> color converter in our color conversion
library,
>>> and if RGB32->YUY2 color conversion is
needed, then
>>> we have to do a two-step
RGB32->I420->YUY2 conversion.
>>> This change adds a one-step RGB32->YUY2
color
>>> converter. It uses multiplies instead of
lookups,
>>> so it may not be as efficient as it could be.
But
>>> since it's a one-step converter, it's way more
>>> efficient than what we currently have.
>> True for systems with FPUs. I don't see this being
>> used on those systems, however, I think we should
>> note this and re-write the converter as we have
>> time.
>>
>
> Well, the actual RGB->YUV computation is
fixed-point,
> so it should work pretty well regardless of whether
> an FPU is present or not.
Ah, yes. I just read that fixed-point part and went
right to floating point.
The attached frames look nice.
Looking at it a bit more, you are not supporting RGB
images with negative pitch. That may be a problem as
Unix and Windows have opposite pitches for RGB.
+ /* check if bottom-up bitmaps: */
+ if (src_pitch <= 0)
+ {
+ return -1; /* not supported */
+ }
+ if (dest_pitch <= 0)
+ {
+ return -1; /* not supported */
+ }
I see other converters doing stuff like:
/* check if bottom-up bitmaps: */
if (src_pitch < 0) src_ptr -= (src_height-1) *
src_pitch;
if (dest_pitch < 0) dest_ptr -= (dest_height-1) *
dest_pitch;
I think we need to support negative pitches. I *think* that
what you will find is that RGB images that go through the
site on windows will have a negative pitch.
--greg.
>
>>> For chroma
>>> subsampling, I did the simplest possible
thing:
>>> alternated outputting U and V for each input
>>> RGB pixel.
>> Did you test the output quality of your version
>> versus the two-step process by capturing a few
>> random frames? We want to make sure that it is
>> still good because of how it is going to be used.
>>
>
> I dumped out frame 484 and frame 860 from both the
> RGB32 and YUY2 raw files, and have attached them
> to this email. As you can see, there's no *obvious*
> color problems.
>
> Eric
>
>> The code itself looks good.
>>
>> --greg.
>>
>>
>>> Also, I added a test harness in
video/colconverter/test
>>> which reads each raw RGB32 frame and converts
it
>>> to YUY2 and then writes all the converted
frames
>>> out to a new file.
>>>
>>> Files Added
>>> -----------------------------------------
>>> video/colconverter/test/Umakefil
>>> video/colconverter/test/win32.pcf
>>> video/colconverter/test/rgb32_to_yuy2.cpp
>>>
>>> Files Modified
>>> -----------------------------------------
>>> video/colconverter/hxcolor.cpp
>>> video/colconverter/rgb2yuv.c
>>> video/colconverter/pub/colorlib.h
>>>
>>> Testing
>>> -----------------------------------------
>>> I produced a raw RGB32 file using dtdrive and
>>> binwrtr and then converted this raw RGB32 file
>>> to YUY2 and viewed it using PYUV (a
third-party
>>> raw viewing tool for Windows and Linux found
at:
>>> http://dsplab.diei.unipg.it/pyuv_raw_video_sequence_pl
ayer).
>>>
>>>
>>> Index: colconverter/hxcolor.cpp
>>>
============================================================
=======
>>> RCS file:
/cvsroot/video/colconverter/hxcolor.cpp,v
>>> retrieving revision 1.8
>>> diff -u -w -u -w -r1.8 hxcolor.cpp
>>> --- colconverter/hxcolor.cpp 11 Mar 2005
19:58:04 -0000 1.8
>>> +++ colconverter/hxcolor.cpp 8 May 2007
15:55:55 -0000
>>>  -239,6 +239,7 
>>> #endif
>>> {CID_ARGB32,
RGB32toRGB32},
>>> {CID_YUVA,
ARGBtoYUVA},
>>> + {CID_YUY2,
RGB32toYUY2},
>>> {CID_UNKNOWN,
0} };
>>>
>>> static CCLINK pcclARGB32 [] = { {CID_I420,
RGB32toI420},
>>>  -253,6 +254,7 
>>> {CID_BGR32,
RGB32toBGR32},
>>> {CID_RGB32,
RGB32toRGB32},
>>> {CID_YUVA,
ARGBtoYUVA},
>>> + {CID_YUY2,
RGB32toYUY2},
>>> {CID_UNKNOWN,
0} };
>>>
>>> static CCLINK pcclYUVA [] = { {CID_UNKNOWN,
0} };
>>> Index: colconverter/rgb2yuv.c
>>>
============================================================
=======
>>> RCS file:
/cvsroot/video/colconverter/rgb2yuv.c,v
>>> retrieving revision 1.4
>>> diff -u -w -u -w -r1.4 rgb2yuv.c
>>> --- colconverter/rgb2yuv.c 29 Dec 2004
02:07:37 -0000 1.4
>>> +++ colconverter/rgb2yuv.c 8 May 2007
15:55:55 -0000
>>>  -1104,4 +1104,106 
>>> return 0;
>>> }
>>>
>>>
+//////////////////////////////////////////////////////
>>> +//
>>> +// RGB32toYUY2
>>> +//
>>>
+//////////////////////////////////////////////////////
>>> +
>>> +int RGB32toYUY2 (unsigned char* dest_ptr,
>>> + int dest_width,
>>> + int dest_height,
>>> + int dest_pitch,
>>> + int dest_x,
>>> + int dest_y,
>>> + int dest_dx,
>>> + int dest_dy,
>>> + unsigned char* src_ptr,
>>> + int src_width,
>>> + int src_height,
>>> + int src_pitch,
>>> + int src_x,
>>> + int src_y,
>>> + int src_dx,
>>> + int src_dy)
>>> +{
>>> + /* scale factors: */
>>> + int scale_x = 0;
>>> + int scale_y = 0;
>>> + int x = 0;
>>> + int y = 0;
>>> + unsigned char* pSrc = NULL;
>>> + unsigned char* pDst = NULL;
>>> + int iR = 0;
>>> + int iG = 0;
>>> + int iB = 0;
>>> + int iY = 0;
>>> + int iU = 0;
>>> + int iV = 0;
>>> +
>>> + /* check arguments: */
>>> + if (!chk_args (dest_ptr, dest_width,
dest_height, dest_pitch,
>>> + dest_x, dest_y, dest_dx,
dest_dy,
>> src_ptr, src_width,
>>> src_height,
>>> + src_pitch, src_x, src_y,
src_dx,
>> src_dy, &scale_x,
>>> &scale_y))
>>> + {
>>> + return -1;
>>> + }
>>> +
>>> + /* Only support 1:1 scale */
>>> + if (scale_x != 1 || scale_y != 1)
>>> + {
>>> + return -1;
>>> + }
>>> +
>>> + /* check if bottom-up bitmaps: */
>>> + if (src_pitch <= 0)
>>> + {
>>> + return -1; /* not supported */
>>> + }
>>> + if (dest_pitch <= 0)
>>> + {
>>> + return -1; /* not supported */
>>> + }
>>> +
>>> + /* Run through each row */
>>> + for (y = 0; y < src_dy; y++)
>>> + {
>>> + /* Get the src and dst row pointers
*/
>>> + pSrc = src_ptr + (src_y + y) *
src_pitch + src_x * 4;
>>> + pDst = dest_ptr + (dest_y + y) *
dest_pitch + dest_x * 2;
>>> + /* Loop along each row */
>>> + for (x = 0; x < src_dx; x++)
>>> + {
>>> + /* Convert RGB to YUV, using the
following
>> fixed-point formula:
>>> + *
>>> + * Y = (r * 2104 + g * 4130 + b
* 802 +
>> 4096 + 131072) >>
>>> 13
>>> + * U = (r * -1214 + g * -2384 + b
* 3598 +
>> 4096 + 1048576) >>
>>> 13
>>> + * V = (r * 3598 + g * -3013 + b
* -585 +
>> 4096 + 1048576) >>
>>> 13
>>> + */
>>> +#if defined(_WINDOWS)
>>> + iR = pSrc[2];
>>> + iG = pSrc[1];
>>> + iB = pSrc[0];
>>> +#else
>>> + iR = pSrc[0];
>>> + iG = pSrc[1];
>>> + iB = pSrc[2];
>>> +#endif
>>> + iY = (iR * 2104 + iG * 4130 + iB
* 802 +
>> 4096 + 131072) >>
>>> 13;
>>> + iU = (iR * -1214 - iG * 2384 + iB
* 3598 +
>> 4096 + 1048576) >>
>>> 13;
>>> + iV = (iR * 3598 - iG * 3013 - iB
* 585 +
>> 4096 + 1048576) >>
>>> 13;
>>> + /* Write out the Y */
>>> + pDst[0] = (unsigned char) iY;
>>> + /* If we are even, write out U. If
odd, write V */
>>> + pDst[1] = (unsigned char) ((x
& 1) ? iV : iU);
>>> + /* Advance the src pointer */
>>> + pSrc += 4;
>>> + /* Advance the dst pointer */
>>> + pDst += 2;
>>> + }
>>> + }
>>> +
>>> + return 0;
>>> +}
>>> +
>>> /* rgb2yuv.c -- end of file */
>>> Index: colconverter/pub/colorlib.h
>>>
============================================================
=======
>>> RCS file:
/cvsroot/video/colconverter/pub/colorlib.h,v
>>> retrieving revision 1.5
>>> diff -u -w -u -w -r1.5 colorlib.h
>>> --- colconverter/pub/colorlib.h 29 Dec 2004
02:08:59 -0000 1.5
>>> +++ colconverter/pub/colorlib.h 8 May 2007
15:55:55 -0000
>>>  -276,6 +276,7 
>>> int RGB555toI420 (unsigned char *, int, int,
int, int,
>> int, int, int,
>>> unsigned char *, int, int, int, int, int, int,
int);
>>> int RGB8toI420 (unsigned char *, int, int,
int, int,
>> int, int, int,
>>> unsigned char *, int, int, int, int, int, int,
int);
>>> int ARGBtoYUVA (unsigned char *, int, int,
int, int,
>> int, int, int,
>>> unsigned char *, int, int, int, int, int, int,
int);
>>> +int RGB32toYUY2 (unsigned char *, int, int,
int, int,
>> int, int, int,
>>> unsigned char *, int, int, int, int, int, int,
int);
>>> int BGR_32toI420 (unsigned char *, int, int,
int, int,
>> int, int, int,
>>> unsigned char *, int, int, int, int, int, int,
int);
>>> int BGR24toI420 (unsigned char *, int, int,
int, int,
>> int, int, int,
>>> unsigned char *, int, int, int, int, int, int,
int);
>>>
>>> =============================================
>>> Eric Hyche (ehyche real.com)
>>> Technical Lead
>>> RealNetworks, Inc.
>>>
>>>
>>>
>>
------------------------------------------------------------
--
>> ----------
>>>
_______________________________________________
>>> Video-dev mailing list
>>> Video-dev helixcommunity.org
>>> http://lists.helixcommunity.org/mailman/listinfo/video
-dev
>>
>>
------------------------------------------------------------
------------
>>
>> _______________________________________________
>> Video-dev mailing list
>> Video-dev helixcommunity.org
>> http://lists.helixcommunity.org/mailman/listinfo/video
-dev
_______________________________________________
Video-dev mailing list
Video-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/video
-dev
|
|
| RE: CR-Client: add RGB32->YUY2 color
converter plus test harness |
  United States |
2007-05-08 13:35:33 |
So if it has a negative pitch, where does dest_ptr
point to? Just past the last pixel? That's what
I gather from this:
> /* check if bottom-up bitmaps: */
> if (src_pitch < 0) src_ptr -= (src_height-1) *
src_pitch;
> if (dest_pitch < 0) dest_ptr -= (dest_height-1)
* dest_pitch;
That seems to move the pointer from just past the
last pixel of the image to just past the last
pixel of the first row.
Eric
=============================================
Eric Hyche (ehyche real.com)
Technical Lead
RealNetworks, Inc.
> -----Original Message-----
> From: Greg Wright [mailto:gwright real.com]
> Sent: Tuesday, May 08, 2007 2:26 PM
> To: ehyche real.com
> Cc: video-dev lists.helixcommunity.org
> Subject: Re: [Video-dev] CR-Client: add RGB32->YUY2
color
> converter plus test harness
>
> Eric Hyche wrote:
> >
> >> -----Original Message-----
> >> From: Greg Wright [mailto:gwright real.com]
> >> Sent: Tuesday, May 08, 2007 1:28 PM
> >> To: ehyche real.com
> >> Cc: video-dev lists.helixcommunity.org
> >> Subject: Re: [Video-dev] CR-Client: add
RGB32->YUY2 color
> >> converter plus test harness
> >>
> >> Eric Hyche wrote:
> >>> Description
> >>> ---------------------------------------
> >>> Currently, we do not have a one-step
RGB32->YUY2
> >>> color converter in our color conversion
library,
> >>> and if RGB32->YUY2 color conversion is
needed, then
> >>> we have to do a two-step
RGB32->I420->YUY2 conversion.
> >>> This change adds a one-step RGB32->YUY2
color
> >>> converter. It uses multiplies instead of
lookups,
> >>> so it may not be as efficient as it could
be. But
> >>> since it's a one-step converter, it's way
more
> >>> efficient than what we currently have.
> >> True for systems with FPUs. I don't see this
being
> >> used on those systems, however, I think we
should
> >> note this and re-write the converter as we
have
> >> time.
> >>
> >
> > Well, the actual RGB->YUV computation is
fixed-point,
> > so it should work pretty well regardless of
whether
> > an FPU is present or not.
>
> Ah, yes. I just read that fixed-point part and went
> right to floating point.
>
> The attached frames look nice.
>
> Looking at it a bit more, you are not supporting RGB
> images with negative pitch. That may be a problem as
> Unix and Windows have opposite pitches for RGB.
>
> + /* check if bottom-up bitmaps: */
> + if (src_pitch <= 0)
> + {
> + return -1; /* not supported */
> + }
> + if (dest_pitch <= 0)
> + {
> + return -1; /* not supported */
> + }
>
>
> I see other converters doing stuff like:
>
> /* check if bottom-up bitmaps: */
> if (src_pitch < 0) src_ptr -= (src_height-1) *
src_pitch;
> if (dest_pitch < 0) dest_ptr -= (dest_height-1)
* dest_pitch;
>
>
> I think we need to support negative pitches. I *think*
that
> what you will find is that RGB images that go through
the
> site on windows will have a negative pitch.
>
> --greg.
>
>
>
> >
> >>> For chroma
> >>> subsampling, I did the simplest possible
thing:
> >>> alternated outputting U and V for each
input
> >>> RGB pixel.
> >> Did you test the output quality of your
version
> >> versus the two-step process by capturing a
few
> >> random frames? We want to make sure that it
is
> >> still good because of how it is going to be
used.
> >>
> >
> > I dumped out frame 484 and frame 860 from both
the
> > RGB32 and YUY2 raw files, and have attached them
> > to this email. As you can see, there's no
*obvious*
> > color problems.
> >
> > Eric
> >
> >> The code itself looks good.
> >>
> >> --greg.
> >>
> >>
> >>> Also, I added a test harness in
video/colconverter/test
> >>> which reads each raw RGB32 frame and
converts it
> >>> to YUY2 and then writes all the converted
frames
> >>> out to a new file.
> >>>
> >>> Files Added
> >>> -----------------------------------------
> >>> video/colconverter/test/Umakefil
> >>> video/colconverter/test/win32.pcf
> >>> video/colconverter/test/rgb32_to_yuy2.cpp
> >>>
> >>> Files Modified
> >>> -----------------------------------------
> >>> video/colconverter/hxcolor.cpp
> >>> video/colconverter/rgb2yuv.c
> >>> video/colconverter/pub/colorlib.h
> >>>
> >>> Testing
> >>> -----------------------------------------
> >>> I produced a raw RGB32 file using dtdrive
and
> >>> binwrtr and then converted this raw RGB32
file
> >>> to YUY2 and viewed it using PYUV (a
third-party
> >>> raw viewing tool for Windows and Linux
found at:
> >>> http://dsplab.diei.unipg.it/pyuv_raw_video_sequence_pl
ayer).
> >>>
> >>>
> >>> Index: colconverter/hxcolor.cpp
> >>>
>
============================================================
=======
> >>> RCS file:
/cvsroot/video/colconverter/hxcolor.cpp,v
> >>> retrieving revision 1.8
> >>> diff -u -w -u -w -r1.8 hxcolor.cpp
> >>> --- colconverter/hxcolor.cpp 11 Mar
2005 19:58:04
> -0000 1.8
> >>> +++ colconverter/hxcolor.cpp 8 May 2007
15:55:55 -0000
> >>>  -239,6 +239,7 
> >>> #endif
> >>>
{CID_ARGB32, RGB32toRGB32},
> >>>
{CID_YUVA, ARGBtoYUVA},
> >>> +
{CID_YUY2, RGB32toYUY2},
> >>>
{CID_UNKNOWN, 0} };
> >>>
> >>> static CCLINK pcclARGB32 [] = {
{CID_I420, RGB32toI420},
> >>>  -253,6 +254,7 
> >>>
{CID_BGR32, RGB32toBGR32},
> >>>
{CID_RGB32, RGB32toRGB32},
> >>>
{CID_YUVA, ARGBtoYUVA},
> >>> +
{CID_YUY2, RGB32toYUY2},
> >>>
{CID_UNKNOWN, 0} };
> >>>
> >>> static CCLINK pcclYUVA [] = {
{CID_UNKNOWN, 0} };
> >>> Index: colconverter/rgb2yuv.c
> >>>
>
============================================================
=======
> >>> RCS file:
/cvsroot/video/colconverter/rgb2yuv.c,v
> >>> retrieving revision 1.4
> >>> diff -u -w -u -w -r1.4 rgb2yuv.c
> >>> --- colconverter/rgb2yuv.c 29 Dec
2004 02:07:37
> -0000 1.4
> >>> +++ colconverter/rgb2yuv.c 8 May 2007
15:55:55 -0000
> >>>  -1104,4 +1104,106 
> >>> return 0;
> >>> }
> >>>
> >>>
+//////////////////////////////////////////////////////
> >>> +//
> >>> +// RGB32toYUY2
> >>> +//
> >>>
+//////////////////////////////////////////////////////
> >>> +
> >>> +int RGB32toYUY2 (unsigned char*
dest_ptr,
> >>> + int
dest_width,
> >>> + int
dest_height,
> >>> + int
dest_pitch,
> >>> + int dest_x,
> >>> + int dest_y,
> >>> + int dest_dx,
> >>> + int dest_dy,
> >>> + unsigned char* src_ptr,
> >>> + int
src_width,
> >>> + int
src_height,
> >>> + int
src_pitch,
> >>> + int src_x,
> >>> + int src_y,
> >>> + int src_dx,
> >>> + int src_dy)
> >>> +{
> >>> + /* scale factors: */
> >>> + int scale_x = 0;
> >>> + int scale_y = 0;
> >>> + int x = 0;
> >>> + int y = 0;
> >>> + unsigned char* pSrc = NULL;
> >>> + unsigned char* pDst = NULL;
> >>> + int iR = 0;
> >>> + int iG = 0;
> >>> + int iB = 0;
> >>> + int iY = 0;
> >>> + int iU = 0;
> >>> + int iV = 0;
> >>> +
> >>> + /* check arguments: */
> >>> + if (!chk_args (dest_ptr, dest_width,
dest_height, dest_pitch,
> >>> + dest_x, dest_y,
dest_dx, dest_dy,
> >> src_ptr, src_width,
> >>> src_height,
> >>> + src_pitch, src_x,
src_y, src_dx,
> >> src_dy, &scale_x,
> >>> &scale_y))
> >>> + {
> >>> + return -1;
> >>> + }
> >>> +
> >>> + /* Only support 1:1 scale */
> >>> + if (scale_x != 1 || scale_y != 1)
> >>> + {
> >>> + return -1;
> >>> + }
> >>> +
> >>> + /* check if bottom-up bitmaps: */
> >>> + if (src_pitch <= 0)
> >>> + {
> >>> + return -1; /* not supported */
> >>> + }
> >>> + if (dest_pitch <= 0)
> >>> + {
> >>> + return -1; /* not supported */
> >>> + }
> >>> +
> >>> + /* Run through each row */
> >>> + for (y = 0; y < src_dy; y++)
> >>> + {
> >>> + /* Get the src and dst row
pointers */
> >>> + pSrc = src_ptr + (src_y + y) *
src_pitch + src_x * 4;
> >>> + pDst = dest_ptr + (dest_y + y) *
dest_pitch + dest_x * 2;
> >>> + /* Loop along each row */
> >>> + for (x = 0; x < src_dx; x++)
> >>> + {
> >>> + /* Convert RGB to YUV, using
the following
> >> fixed-point formula:
> >>> + *
> >>> + * Y = (r * 2104 + g * 4130
+ b * 802 +
> >> 4096 + 131072) >>
> >>> 13
> >>> + * U = (r * -1214 + g * -2384
+ b * 3598 +
> >> 4096 + 1048576) >>
> >>> 13
> >>> + * V = (r * 3598 + g * -3013
+ b * -585 +
> >> 4096 + 1048576) >>
> >>> 13
> >>> + */
> >>> +#if defined(_WINDOWS)
> >>> + iR = pSrc[2];
> >>> + iG = pSrc[1];
> >>> + iB = pSrc[0];
> >>> +#else
> >>> + iR = pSrc[0];
> >>> + iG = pSrc[1];
> >>> + iB = pSrc[2];
> >>> +#endif
> >>> + iY = (iR * 2104 + iG * 4130
+ iB * 802 +
> >> 4096 + 131072) >>
> >>> 13;
> >>> + iU = (iR * -1214 - iG * 2384
+ iB * 3598 +
> >> 4096 + 1048576) >>
> >>> 13;
> >>> + iV = (iR * 3598 - iG * 3013
- iB * 585 +
> >> 4096 + 1048576) >>
> >>> 13;
> >>> + /* Write out the Y */
> >>> + pDst[0] = (unsigned char)
iY;
> >>> + /* If we are even, write out
U. If odd, write V */
> >>> + pDst[1] = (unsigned char) ((x
& 1) ? iV : iU);
> >>> + /* Advance the src pointer
*/
> >>> + pSrc += 4;
> >>> + /* Advance the dst pointer
*/
> >>> + pDst += 2;
> >>> + }
> >>> + }
> >>> +
> >>> + return 0;
> >>> +}
> >>> +
> >>> /* rgb2yuv.c -- end of file */
> >>> Index: colconverter/pub/colorlib.h
> >>>
>
============================================================
=======
> >>> RCS file:
/cvsroot/video/colconverter/pub/colorlib.h,v
> >>> retrieving revision 1.5
> >>> diff -u -w -u -w -r1.5 colorlib.h
> >>> --- colconverter/pub/colorlib.h 29 Dec
2004 02:08:59
> -0000 1.5
> >>> +++ colconverter/pub/colorlib.h 8 May 2007
15:55:55 -0000
> >>>  -276,6 +276,7 
> >>> int RGB555toI420 (unsigned char *, int,
int, int, int,
> >> int, int, int,
> >>> unsigned char *, int, int, int, int, int,
int, int);
> >>> int RGB8toI420 (unsigned char *, int,
int, int, int,
> >> int, int, int,
> >>> unsigned char *, int, int, int, int, int,
int, int);
> >>> int ARGBtoYUVA (unsigned char *, int,
int, int, int,
> >> int, int, int,
> >>> unsigned char *, int, int, int, int, int,
int, int);
> >>> +int RGB32toYUY2 (unsigned char *, int,
int, int, int,
> >> int, int, int,
> >>> unsigned char *, int, int, int, int, int,
int, int);
> >>> int BGR_32toI420 (unsigned char *, int,
int, int, int,
> >> int, int, int,
> >>> unsigned char *, int, int, int, int, int,
int, int);
> >>> int BGR24toI420 (unsigned char *, int,
int, int, int,
> >> int, int, int,
> >>> unsigned char *, int, int, int, int, int,
int, int);
> >>>
> >>>
=============================================
> >>> Eric Hyche (ehyche real.com)
> >>> Technical Lead
> >>> RealNetworks, Inc.
> >>>
> >>>
> >>>
> >>
------------------------------------------------------------
--
> >> ----------
> >>>
_______________________________________________
> >>> Video-dev mailing list
> >>> Video-dev helixcommunity.org
> >>> http://lists.helixcommunity.org/mailman/listinfo/video
-dev
> >>
> >>
>
------------------------------------------------------------
--
> ----------
> >>
> >>
_______________________________________________
> >> Video-dev mailing list
> >> Video-dev helixcommunity.org
> >> http://lists.helixcommunity.org/mailman/listinfo/video
-dev
>
_______________________________________________
Video-dev mailing list
Video-dev helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/video
-dev
|
|
[1-2]
|
|