On Saturday, July 16, 2016 7:02:25 PM CEST, Brian Matherly wrote:
> I think this would be a good optimization.
>
> QImage::Format_RGBA8888 is not available in Qt 4.8. So we would 
> need some pre-processor conditionals to use either the previous 
> way or the new way depending on version.

Oh, right. I used it in my qtblend transition - than I guess I will enable 
it only on Qt5.

> Are you sure that line order is the same between Qt and MLT 
> image formats? For some reason I was thinking that line 0 is the 
> bottom for MLT and the top for Qt. If that is the case, the new 
> method can not be used for services that need to draw on the 
> image because, for example, text would be written upside down. 
> It may not matter for some services like your transition that 
> don't have any directional component. Maybe the difference could 
> be compensated by applying a transform to the painter. Could you 
> check this out and report back?

I can confirm that you can draw text directly on the QImage 
(Format_RGBA8888) through a QPainter and it displays correctly in MLT.

> The documentation it a little confusing. It states: "The order 
> of the colors is the same on any architecture if read as bytes 
> 0xRR,0xGG,0xBB,0xAA.". I think what they are trying to say is 
> that the color order will be the same on any architecture if you 
> look at the bytes, but if you look at each pixel as an int, the 
> order will appear differently depending on the endianess of the 
> system. So I think this will work for us on big or little endian 
> systems since. If we find that it does not work on big-endian 
> systems, we can just put a check in place and either convert the 
> easy way or the hard (current) way.


Ok for me.

regards,

jb

> From: Jean-Baptiste Mardelle <j...@kdenlive.org>
> To: mlt-devel@lists.sourceforge.net 
> Sent: Saturday, July 16, 2016 8:56 AM
> Subject: [Mlt-devel] Optimizing Qt functions
>
> Hi,
>
> Following my tests with the qtblend transitions, I realized that the QImage 
> format Format_RGBA8888 allows for a much simpler conversion between MLT and 
> QImage, avoiding the need to copy data. We can in fact simply create a 
> QImage directly from MLT's image buffer (with format=mlt_image_rgb24a):
>
> QImage img( *image, *width, *height, QImage::Format_RGBA8888 );
>
> We can then use a QPainter to draw directly on the buffer.
> So for instance, in filter_audiowaveform we currently do (line 214):
>
> QImage qimg( *width, *height, QImage::Format_ARGB32 );
> copy_mlt_to_qimage_rgba( *image, &qimg );
> draw_waveforms( filter, frame, &qimg, audio, channels, samples );
> copy_qimage_to_mlt_rgba( &qimg, *image );
>
> This can be replaced by:
>
> QImage qimg( *image, *width, *height, QImage::Format_RGBA8888 );
> draw_waveforms( filter, frame, &qimg, audio, channels, samples );
>
> In my tests, this results in a 8% speedup when rendering a simple video 
> with the audiowaveform filter.
>
> My only concern is that in the doc ( 
> http://doc.qt.io/qt-5/qimage.html#Format-enum ) it says that  
> QImage::Format_RGBA8888 behaves differently on big endian systems, and I am 
> not sure if this would affect us...
>
> Can anyone with a better understanding or a big endian system tell me if 
> this works on such systems ?
>
> Seems like something we might want to use in our Qt producers/filters, what 
> do you think?
>
> regards,
>
> jb
>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
> patterns at an interface-level. Reveals which users, apps, and 
> protocols are 
> consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
> J-Flow, sFlow and other flows. Make informed decisions using 
> capacity planning
> reports.http://sdm.link/zohodev2dev


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Mlt-devel mailing list
Mlt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlt-devel

Reply via email to