littletom1201 / lavfilters

Automatically exported from code.google.com/p/lavfilters
GNU General Public License v2.0
0 stars 0 forks source link

Custom Pixel Format Converters/Chroma scalers #67

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Describe the issue you're having:
swscale, due to its very general nature, is very slow.
A custom implementation for the most common scalers would probably be faster, 
and easier to manage/extend.

Implementation Notes:
The following common operations should be included:
YUV420 <-> YUV422
YUV422 <-> YUV444
YUV420  -> RGB
YUV422  -> RGB
YUV444  -> RGB
YUV 9/10bit -> YUV 8bit (dithering)

Optionally:
YUV420 -> NV12
YUV422 -> YUY2/UYVY (already implemented in C)

Dithering:
http://en.wikipedia.org/wiki/Ordered_dithering
http://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dithering
Other algorithms?

Original issue reported on code.google.com by h.lepp...@gmail.com on 17 Aug 2011 at 9:01

GoogleCodeExporter commented 9 years ago
I started to implement some of these conversions.

Progress so far:
YUV444 9/10bit -> AYUV, shows a 60% performance increase to the old code.

Original comment by h.lepp...@gmail.com on 20 Aug 2011 at 1:44

GoogleCodeExporter commented 9 years ago
Also implemented are YUV444 9/10 -> Y410 and YUV420 9/10 -> YV12/NV12

Original comment by h.lepp...@gmail.com on 24 Aug 2011 at 6:56

GoogleCodeExporter commented 9 years ago
Only missing now is a implementation of YUV420 -> YUV422 (based on the 
upscaling in the RGB code)

422->444 is never used outside of RGB, and can be skipped.

Original comment by h.lepp...@gmail.com on 3 Sep 2011 at 6:56

GoogleCodeExporter commented 9 years ago
NV12 -> YV12 would still be beneficial, the swscale converter is dead slow.

Original comment by h.lepp...@gmail.com on 24 Sep 2011 at 3:10

GoogleCodeExporter commented 9 years ago
The 420->422 converter has been implemented, completing all important 
converters.

Original comment by h.lepp...@gmail.com on 30 Sep 2011 at 7:30