Andy,

Thanks for your reply.

Are you able to capture at 60fps at 1920x1080?

Best,

Nuno

> On 14 Jul 2021, at 20:38, Andy <asmalo...@gmail.com> wrote:
> 
> Yet another "not sure if this applies, but..."
> 
> Maybe take a look at what QRenderCapture is doing in Qt3D? It allows you to 
> capture a QImage per frame, so it might have some of the bit 
> processing/manipulation you're looking for.
> 
> I'm using it to capture video by saving images to a temp dir and then 
> processing them using ffmpeg.
> 
> I use QtConcurrent::run() to do image processing (e.g. adding an overlay) & 
> writing so it doesn't affect the main thread doing the capturing.
> 
> ---
> Andy Maloney  //  https://asmaloney.com <https://asmaloney.com/>
> twitter ~ @asmaloney <https://twitter.com/asmaloney>
> 
> 
> On Tue, Jul 13, 2021 at 9:32 AM Nuno Santos <nuno.san...@imaginando.pt 
> <mailto:nuno.san...@imaginando.pt>> wrote:
> Elvis,
> 
> Thanks for sharing your thoughts. It makes sense.
> 
> I need to dive into the toImage function, try to read directly the bytes from 
> the FBO and see if that has any performance impact.
> 
> Best regards,
> 
> Nuno
> 
> > On 13 Jul 2021, at 14:10, Elvis Stansvik <elvst...@gmail.com 
> > <mailto:elvst...@gmail.com>> wrote:
> > 
> > Hi Nuno,
> > 
> > I'm really out of my waters here, but, provided you don't need to hold
> > on to each AVFrame after you are "done with it", you could perhaps
> > avoid having to allocate a QImage for each frame (which toImage forces
> > you to do) by just allocating a a single AVFrame and a single memory
> > buffer for it, and then do what toImage does, which is make sure the
> > FBO is bound and read the pixels off of it with glReadPixels. Then you
> > could read the pixels straight into the memory buffer used by your
> > AVFrame.
> > 
> > That way you would save the overhead of a new QImage being allocated
> > each time, which might speed things up..?
> > 
> > Just ideas here. Have not worked with GL or ffmpeg before.
> > 
> > Elvis
> > 
> > Den tis 13 juli 2021 kl 11:22 skrev Nuno Santos <nuno.san...@imaginando.pt 
> > <mailto:nuno.san...@imaginando.pt>>:
> >> 
> >> Hi,
> >> 
> >> I’m trying to capture the content of an FBO to a video file. This video 
> >> file should contain the animations generated by a qml scene.
> >> 
> >> To do this, I’m recurring to QOpenGLFramebufferObject class toImage() 
> >> method.
> >> 
> >> My scene is being drawn at 1920x1080. Each call to toImage takes 30 ms! :(
> >> 
> >> If I want to render to file at 60 fps, ideally, this call would need to 
> >> take less than 16 ms to give me room to do other operations, such as video 
> >> encoding and the actual render.
> >> 
> >> As anyone been here before? What other strategies are available to copy 
> >> the FBO data to an image?
> >> 
> >> I’m using libav to encode the video file, therefor I need to fill an 
> >> AVFrame. Right now I’m filling the AVFrame from the QImage generated by 
> >> the FBO toImage method.
> >> 
> >> Does any one knows a method of filling an AVFrame directly from texture 
> >> data?
> >> 
> >> Thanks
> >> 
> >> Best regards,
> >> 
> >> Nuno
> >> _______________________________________________
> >> Interest mailing list
> >> Interest@qt-project.org <mailto:Interest@qt-project.org>
> >> https://lists.qt-project.org/listinfo/interest 
> >> <https://lists.qt-project.org/listinfo/interest>
> 
> _______________________________________________
> Interest mailing list
> Interest@qt-project.org <mailto:Interest@qt-project.org>
> https://lists.qt-project.org/listinfo/interest 
> <https://lists.qt-project.org/listinfo/interest>

_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to