Skip to main content
wh91966330
Participant
December 22, 2015
Question

How to get a rendered frame from the Mercury engine

  • December 22, 2015
  • 2 replies
  • 1042 views

Hello,

I am developing an Exporter working on Premiere Pro CS 5.5 using software encoder. Currently I got rendered frame from the sequence through RenderVideoFrame() function and send it to the encoder.

It works fine but the rendering speed is too slow to follow the encoding speed. Rendering frames via multi-threads increases the rendering speed but it harms the software encoder speed, and since the Exporter will be running on a render-accelerated hardware that Mercury engine supports, I would like to get a rendered frame from the Mercury engine. I think I can use GetAcceleratedRendererRTStatusForTime() for this, I wonder if this function is what I think. Also I would like to know if there are any sample codes that I can reference.


Thanks

This topic has been closed for replies.

2 replies

wh91966330
Participant
January 5, 2016

Since my customer wants a plugin for CS5.5, and they does not want to change their current environment. So I have no choice.

I found the answer of my question, just using RenderVideoFrame() works with GPU acceleration if possible. But  another problem has occured, the GPU acceleration works only if I render framed with high quality on my PC( by setting renderParms.inRenderQuality = kPrRenderQuality_High ) , which is not useful (rendering frame with high quality takes about double times than low quality but actually does not make a big difference for the videos my customers are handling, so low quality setting is enough). Weird thing is, GPU acceleration works on my customer's PC even though rendering quality is set low, and me and my customers are using the same GPU(quadro 2000). I could not find anything related this problem on the SDK documents or on the web.


Anyone experienced same problem and found a solution?

Maybe the OS is corrupted? or is that kind of SDK bug?

Thanks in advance.

Bruce Bullis
Legend
January 5, 2016

I'm amazed that someone is willing to fund software development, for obsolete versions of PPro.

Perhaps Zac knows something...?

wh91966330
Participant
January 8, 2016

Ok, found a solution again.

GPU acceleration works differently between pixel formats. Previously I rendered frames with the pixel format PrPixelFormat_YUV_420_MPEG2_FIELD_PICTURE_PLANAR_8u_709 only, and it seems this pixel format supports GPU acceleration only in high quality rendering. I changed the pixel format into PrPixelFormat_YUV_420_MPEG2_FRAME_PICTURE_PLANAR_8u_601 and it worked in all rendering quality settings. In the previous post, the reason why GPU worked on my customer's PC is while I was testing on that PC, I tried to change setting in different parts and accidentally I set the pixel format into the one that supports GPU acceleration in all rendering quality.


Hope I could find any information about what pixel type and what rendering options supports GPU acceleration and what does not...Anyway it has been solved.

Well, for the PPro version, the client is the countrywide VOD provider and dominates the whole country's VOD service business, with hundreds of employees and video editing computers mainly using PPro CS5.5 so costs and risks reasons.

Bruce Bullis
Legend
December 22, 2015

First question: why are you targeting an obsolete version of PPro, with your current development? 4.5 years is pretty old, in software years.

All available sample code is in the PPro C++ plug-in SDK, here: http://www.adobe.com/devnet/premiere.html