After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 734003 - videoconvert: No fast-path for I420 to RGB (24bit) convertion
videoconvert: No fast-path for I420 to RGB (24bit) convertion
Status: RESOLVED WONTFIX
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
1.4.0
Other Linux
: Normal enhancement
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-07-30 20:05 UTC by Jake Foytik
Modified: 2015-03-11 07:48 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Jake Foytik 2014-07-30 20:05:49 UTC
On Windows and Linux, I am seeing poor performance for converting video from I420 to BGR. This seems to be related to Bug 721701 ( https://bugzilla.gnome.org/show_bug.cgi?id=721701 ). I have verified that Orc is enabled, but there does not seem to be a fast path for I420->BGR. Is this correct?

The following pipelines were tested on linux x86_64 with Orc enabled:
gst-launch-1.0 videotestsrc ! video/x-raw,format=I420,width=1280,height=1024 ! videoconvert ! video/x-raw,format=BGRA ! fakesink sync=true
CPU 4%

gst-launch-1.0 videotestsrc ! video/x-raw,format=I420,width=1280,height=1024 ! videoconvert ! video/x-raw,format=BGR ! fakesink sync=true
CPU 8%


Also, when testing conversion of I420->BGRA, I see fast performance with gstreamer x86_64. However, gstreamer x86 performs much slower and posts the warning:
' ORC: WARNING: orccompiler.c(382): orc_program_compile_full(): program video_convert_orc_convert_I420_BGRA failed to compile, reason: register overflow for vector reg '
Is it possible to get the Orc optimization on the 32 bit build?
Comment 1 Nicolas Dufresne (ndufresne) 2014-07-30 21:09:54 UTC
There is indeed no fast-path for converting I420 to 24bit (not-padded) BGR. This is not a very common conversion. Would be nice to know why you need that.

The second part is a different subject, I would suggest you file a separate bug.
Comment 2 Jake Foytik 2014-07-31 14:35:22 UTC
Thanks, I didn't realize I420->BGR was uncommon. I can make do with converting to BGRA.

I filed a separate bug for the I420->BGRA x86 issue. https://bugzilla.gnome.org/show_bug.cgi?id=734043
Comment 3 Nicolas Dufresne (ndufresne) 2014-07-31 15:02:33 UTC
Thanks, about BGR, most people actually have BGRx in mind (padded 24bit). This is because 32bit aligned pixels can be indexed as 32bit int, while BGR need to be indexed byte per byte.
Comment 4 Sebastian Dröge (slomo) 2014-08-01 12:06:09 UTC
Note that an orc fast path for RGB (3 bytes / 24 bits) is not possible right now.