Ticket #2 (new enhancement)

Opened 2 years ago

Last modified 1 year ago

Switch YUV path from YUV 4:2:2 ('2vuy') to YUV 4:2:0 ('y420')

Reported by: tick Assigned to: feelgood
Priority: normal Milestone: Sometime after 1.0
Component: Perian-Main Version:
Severity: normal Keywords:
Cc:

Description (Last modified by feelgood)

  • Lower bandwidth requirements for the uploaded data versus either YUV 4:2:2 or RGB 8:8:8.
  • We won't ever hit a slow YUV -> YUV or RGB SW conversion inside QT since it all happens on the GPU via the OpenGL programmable fragment pipeline.
  • It would also be nice at some point (in the future) to support ATI_text_fragment_shader and NV_texture_shader3 for older non ARB_fragment_program compliant (DX8 level) GPUs.

Change History

08/01/06 23:07:47 changed by feelgood

  • owner changed from somebody to feelgood.
  • description changed.
  • summary changed from Switch YUV from 4:2:2 to 4:2:0 to Switch YUV path from YUV 4:2:2 ('2vuy') to YUV 4:2:0 ('y420').

09/25/06 18:24:33 changed by tick

  • component changed from component1 to Perian-Main.

10/01/06 16:12:55 changed by tick

  • milestone changed from 1.0 to 1.2.

Moving to 1.2 for now.

02/19/07 12:25:40 changed by astrange

Stuff to do here:

* figure out how to expose 'y420' through the CoreVideo? path; it's only supported through GWorlds. This involves making up a new pixel format, which stuff won't read outside any specially modified players, which means: * we have to rewrite QTVisualCompositor inside a player :(

Writing the shaders is pretty simple, it's trivially just uploading the planes as three textures, then using the GL texture sampler and a matrix multiply. Stuff we could add to that: * bicubic scaling/something better than bilinear in the fragment program * gamma correction (QT does 2.2 -> 1.8 conversion, but who knows if that's right) * respect the YUV color matrix setting in the mpeg4/h264 video header (which we don't expose), or in the mov atoms * dithering (Windows players use a nice one which hides some kinds of compression artifacts very well) * soft clipping; YUV->RGB involves scaling 16-235 to 0-255 and with compression some of those values may go out of range

07/03/07 17:46:14 changed by tick

  • milestone changed from 1.2 to Sometime after 1.0.