wil get PP to update the 32-bits color and YUV icons behind the plugins in the effects tab

Now the code above with only the PrPixelFormat_BGRA_4444_32f as being supported by the plugin doesn't work.

A) PP doesn't show a 32-bits color icon.

B) it acts as if the plugin would still support PrPixelFormat_BGRA_4444_8u (or YUV_8u) and doesn't launch the RenderDissolve32f function.

"Starting in CS4, plug-ins no longer need to support 8-bit BGRA at a minimum. If required, Premiere can make intermediate format conversions in the render pipeline, although these inter- mediate conversions will be avoided if possible."

But It seems PP still requiers me to have my transitions to be 8-bit BGRA supported. True?

Unfortunately plugin development isn’t as easy as we all would like but at least it is open for us to develop on.

I suspect that the Editing Mode you’re in has a Player that doesn’t support BGRA_4444_32f and does (because of legacy) support BGRA_4444_8u thus the preview window requires BGRA_8u support to work.

If you do want to support BGRA_4444_8u then you should be able to make common code by converting the 8u to 32f and then continuing your plugin as 32f. (Likewise you should do a YUV_32f to BGRA_32f –although if you don’t know a lot about rec601 and rec709 colorspaces I HIGHLY recommend that you DO NOT start doing this).

Here’s a quick mock up off the top of my head…

float The32fFrame = (float)TheFrame;

int do_32f_to_8u = 0;

switch((*theData)->pixelFormatSupported)

{

case PrPixelFormat_BGRA_4444_8u:

// Flag to un-convert at the end

do_32f_to_8u = 1;

The32fFrame= malloc(heightrowstride4);

// Convert 0..255 (_8u) buffer to 0.0…1.0 (_32f)

// Change this to SSE|2|3|4 intrinsics for a 4x or 8x speedup!

for(int h=0;h<height;h++) // Height

for(int w=0;w<width;w++) // Width

for(int p=0;w<4;p++) // Plane

The32fFrame[4hrowstride+ 4*w + p] =

(float)TheFrame[4h rowstride + 4*w + p]/(float)255.0);

// Now fall through and process as BGRA_32f

case PrPixelFormat_BGRA_4444_32f:

// IMPLEMENT YOUR FILTER/TRANSITION HERE

break;

default:

return WHATEVER THE ERROR CODE IS FOR UNSUPPORTED;

}

//Run a loop that un-does the floating point conversion if necessary.

if(do_32f_to_8u)

// Change 32f back to 8u

for(int h=0;h<height;h++)

for(int w=0;w<width;w++)

for(int p=0;w<4;p++)

TheFrame[4h rowstride + 4*w + p] =

(unsigned int)((float)255.0 * The32fFrame[4h rowstride + 4*w + p]);

free(The32fFrame);

return prNOERR;

· Where “rowstride” is the actual stride of the row, not the frame width.