PDA

View Full Version : GL_NVX_ycrcb spec?



nrg
05-04-2003, 10:16 AM
Any ideas where I could find specification for GL_NVX_ycrcb extension?

It sounds like a way to use YUV images as a textures... without converting them to RGB first.

Link from delphi3d.net does not work (http://oss.sgi.com/projects/ogl-sample/registry/NVX/ycrcb.txt)

Thanks!

marcus256
05-05-2003, 12:21 AM
Originally posted by nrg:

Any ideas where I could find specification for GL_NVX_ycrcb extension?

It sounds like a way to use YUV images as a textures... without converting them to RGB first.

Link from delphi3d.net does not work (http://oss.sgi.com/projects/ogl-sample/registry/NVX/ycrcb.txt)

Thanks!

Is this the same as GL_APPLE_ycbcr_422?
See http://oss.sgi.com/projects/ogl-sample/registry/APPLE/ycbcr_422.txt

nrg
05-05-2003, 11:43 AM
Originally posted by marcus256:
Is this the same as GL_APPLE_ycbcr_422?
See http://oss.sgi.com/projects/ogl-sample/registry/APPLE/ycbcr_422.txt



I don't know if it's the same..

at least I can find these from the nvidia's glext.h:

#ifndef GL_SGIX_ycrcb
#define GL_YCRCB_422_SGIX 0x81BB
#define GL_YCRCB_444_SGIX 0x81BC
#endif

Maybe I should just try those values for
NVX extension http://www.opengl.org/discussion_boards/ubb/smile.gif

I don't see any other extensions in the extensions list (gf4) related to
yuv-textures than this http://www.opengl.org/discussion_boards/ubb/frown.gif

marcus256
05-05-2003, 11:17 PM
I suppose the "X" in GL_NVX_ycrcb stands for experimental, so there may not be a proper (official) specification yet (before the X is removed).

marcus256
05-06-2003, 11:17 AM
...why didn't they use GL_SGIX_ycrcb instead?

Uhm?

Anyway, I'm a bit confused that no alternate colorspace support, such as YCrCb, YIQ or YUV has been added to OpenGL yet. Voodoo / Glide 2.x had YIQ_422. I'm sure most hardware can support it (if not, it's a super easy addition).

dorbie
05-06-2003, 11:46 AM
If by most hardware supporting it you mean that it could get converted to rgb somewhere in the pipeline then yes you're right, that should also explain some of what's going on here.

Broadcast markets want this for various things, mainly video streaming without software getting in the way. 422 is a related issue and I'd argue that it isn't a virtuous thing unless that happens to be how your data is getting fed to you as digital video and you need to decode it (yea I know it's trying to save space in the color domain). These things don't necessarily have innate value, sometimes they're just necessary for integration (input or output).

The tying of these features to broadcast markets and their other related needs for things like genlock and destination alpha channel output tend to make it the preserve of extensions on high end cards running professional applications. For other markets it just hasn't been a factor.


[This message has been edited by dorbie (edited 05-06-2003).]

yooyo
05-08-2003, 10:12 PM
I have same problem... but I found somwhere on the net following:

#define GL_YCRCB 0x600B

If I use this constant in glTexImage2D I got grayscale or green picture in half X resolution.
After many trying I giveup of this extension.

yooyo

Adrian67
05-08-2003, 11:27 PM
Is it possible to convert to/from ycrcb using the colour matrix functions in the imaging subset?

Bob
05-09-2003, 12:49 AM
Originally posted by Adrian67:
Is it possible to convert to/from ycrcb using the colour matrix functions in the imaging subset?
Should be possible. Google gave me this matrix.



ycrcb_to_rgb =
1.0000 1.0000 1.0000 0
0 -0.3441 1.7730 0
1.4020 -0.7141 0 0
0 0 0 1.0000

However, the page mentioned YCrCb everywhere but where the matrix was, there it said YCbCr instead. Dunno if it was a typo or if the matrix actually is YCbCr to RGB. Try swap some rows if it doesn't work with YCrCb. Was a little bit too quick quith my mouse though and lost the page before I could note the adress.

Inverting it for RGB to YCrCb.



rgb_to_ycrcb =
0.2990 -0.1687 0.5000 0
0.5870 -0.3311 -0.4187 0
0.1139 0.4998 -0.0813 0
0 0 0 1.0000

nrg
05-09-2003, 02:43 AM
Originally posted by Bob:



ycrcb_to_rgb =
1.0000 1.0000 1.0000 0
0 -0.3441 1.7730 0
1.4020 -0.7141 0 0
0 0 0 1.0000

However, the page mentioned YCrCb everywhere but where the matrix was, there it said YCbCr instead. Dunno if it was a typo or if the matrix actually is YCbCr to RGB. Try swap some rows if it doesn't work with YCrCb. Was a little bit too quick quith my mouse though and lost the page before I could note the adress.

Inverting it for RGB to YCrCb.



rgb_to_ycrcb =
0.2990 -0.1687 0.5000 0
0.5870 -0.3311 -0.4187 0
0.1139 0.4998 -0.0813 0
0 0 0 1.0000


If somebody finds out that this matrix works, please tell about it!

I think I'm going to try it someday..

btw. Is imaging-subset accelerated on gf4? I suppose yes.

I'm planning to use realtime-video as a texture.. and there's not much sense in converting from yuv->rgb in software/cpu if card/gpu is able to do this.

marcus256
05-09-2003, 04:20 AM
nrg,

> btw. Is imaging-subset accelerated on gf4? I suppose yes.

I don't think so. At least not the entire imaging subset. I'm pretty syre the color matrix is not accelerated (give it a try and see what speed you get).