OK, I decided to refresh my skills in register combiners programming and here’s the code that do the stuff. It requires the YUV texture in reversed order (R=V, G=U, B=Y). It can be easily done by changing format from GL_RGB to GL_BGR_EXT in glTexImage call.
// texture in format: VUY (R=V, G=U, B=Y)
// spare0.rgb = x = V - 0.5
// spare1.rgb = y = U - 0.5
glCombinerInputNV(GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_A_NV, GL_TEXTURE0_ARB, GL_HALF_BIAS_NORMAL_NV, GL_RGB);
glCombinerInputNV(GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_B_NV, GL_CONSTANT_COLOR0_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
glCombinerInputNV(GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_C_NV, GL_TEXTURE0_ARB, GL_HALF_BIAS_NORMAL_NV, GL_RGB);
glCombinerInputNV(GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_D_NV, GL_CONSTANT_COLOR1_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
glCombinerOutputNV(GL_COMBINER0_NV, GL_RGB, GL_SPARE0_NV, GL_SPARE1_NV, GL_DISCARD_NV, GL_NONE, GL_NONE, GL_TRUE, GL_TRUE, GL_FALSE);
// spare0.a = z = 0.5 * 1.164*(Y - 0.0625) = 0.582*Y - 0.036375
glCombinerInputNV(GL_COMBINER0_NV, GL_ALPHA, GL_VARIABLE_A_NV, GL_TEXTURE0_ARB, GL_UNSIGNED_IDENTITY_NV, GL_BLUE);
glCombinerInputNV(GL_COMBINER0_NV, GL_ALPHA, GL_VARIABLE_B_NV, GL_CONSTANT_COLOR0_NV, GL_UNSIGNED_IDENTITY_NV, GL_ALPHA);
glCombinerInputNV(GL_COMBINER0_NV, GL_ALPHA, GL_VARIABLE_C_NV, GL_CONSTANT_COLOR1_NV, GL_SIGNED_NEGATE_NV, GL_ALPHA);
glCombinerInputNV(GL_COMBINER0_NV, GL_ALPHA, GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_INVERT_NV, GL_ALPHA);
glCombinerOutputNV(GL_COMBINER0_NV, GL_ALPHA, GL_DISCARD_NV, GL_DISCARD_NV, GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE);
float stage0_color0[4] = { 1, 0, 0, 0.582f };
float stage0_color1[4] = { 0, 1, 0, 0.036375f };
glCombinerStageParameterfvNV(GL_COMBINER0_NV, GL_CONSTANT_COLOR0_NV, stage0_color0);
glCombinerStageParameterfvNV(GL_COMBINER0_NV, GL_CONSTANT_COLOR1_NV, stage0_color1);
// spare0.r = z + 0.7980*x = 0.5*R
// spare0.g = z - 0.4065*x
// spare0.b = z + 0.0000*x
glCombinerInputNV(GL_COMBINER1_NV, GL_RGB, GL_VARIABLE_A_NV, GL_SPARE0_NV, GL_SIGNED_IDENTITY_NV, GL_RGB);
glCombinerInputNV(GL_COMBINER1_NV, GL_RGB, GL_VARIABLE_B_NV, GL_CONSTANT_COLOR0_NV, GL_EXPAND_NORMAL_NV, GL_RGB);
glCombinerInputNV(GL_COMBINER1_NV, GL_RGB, GL_VARIABLE_C_NV, GL_SPARE0_NV, GL_SIGNED_IDENTITY_NV, GL_ALPHA);
glCombinerInputNV(GL_COMBINER1_NV, GL_RGB, GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_INVERT_NV, GL_RGB);
glCombinerOutputNV(GL_COMBINER1_NV, GL_RGB, GL_DISCARD_NV, GL_DISCARD_NV, GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE);
float stage1_color0[4] = { 0.5f*(1 + 0.798f), 0.5f*(1 - 0.4065f), 0.5f*(1 + 0), 0 };
glCombinerStageParameterfvNV(GL_COMBINER1_NV, GL_CONSTANT_COLOR0_NV, stage1_color0);
// spare0.r = 2*(z + 0.7980*x + 0.0000*y) = R
// spare0.g = 2*(z - 0.4065*x - 0.1955*y) = G
// spare0.b = 2*(z + 0.0000*x + 1.0000*y) = B
glCombinerInputNV(GL_COMBINER2_NV, GL_RGB, GL_VARIABLE_A_NV, GL_SPARE1_NV, GL_SIGNED_IDENTITY_NV, GL_RGB);
glCombinerInputNV(GL_COMBINER2_NV, GL_RGB, GL_VARIABLE_B_NV, GL_CONSTANT_COLOR0_NV, GL_EXPAND_NORMAL_NV, GL_RGB);
glCombinerInputNV(GL_COMBINER2_NV, GL_RGB, GL_VARIABLE_C_NV, GL_SPARE0_NV, GL_SIGNED_IDENTITY_NV, GL_RGB);
glCombinerInputNV(GL_COMBINER2_NV, GL_RGB, GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_INVERT_NV, GL_RGB);
glCombinerOutputNV(GL_COMBINER2_NV, GL_RGB, GL_DISCARD_NV, GL_DISCARD_NV, GL_SPARE0_NV, GL_SCALE_BY_TWO_NV, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE);
float stage2_color0[4] = { 0, 0.5f*(1 - 0.1955f), 1, 0 };
glCombinerStageParameterfvNV(GL_COMBINER2_NV, GL_CONSTANT_COLOR0_NV, stage2_color0);
// leave the final combiner in the default state
glCombinerParameteriNV(GL_NUM_GENERAL_COMBINERS_NV, 3);
glEnable(GL_PER_STAGE_CONSTANTS_NV);
glEnable(GL_REGISTER_COMBINERS_NV);
It uses 3 generic combiners and 4 constant colors so at least GeForce3 is needed. But…
If primary and secondary colors are not used, two of the constants can be placed there, thus eliminating the need for GL_NV_register_combiners2 extension. Also calculations from the third combiner can be moved to the final combiner so only two combiners are needed. This way everything can work even on GeForce1.
I leave implementation details as an exercise to the reader 
Hope this helps
Kuba
PS. Oops, 1280x1024 recomended to view this monster 
[This message has been edited by coop (edited 11-03-2002).]