YUV -> RGB is a relatively simple converstion: R = Y + 1.403V
G = Y - 0.344U - 0.714V B = Y + 1.770U It seems to me that I re-wrote this as a Core Image Kernel using dot products... but I can lay my hands on that source code just now. Here's an untested example adapted from Ms. Black's QC Kitchen... kernel vec4 yuv2rgb(sampler image) { const vec3 yuv_r = vec3(1.0000, 0.0000, 1.4022 ); const vec3 yuv_g = vec3(1.0000, -0.3457, -0.7145); const vec3 yuv_b = vec3(1.0000, 1.7710, 0.0000); vec4 pixel = sample(image, samplerCoord(image)); /* YUVA image */ vec3 pixel_yuv = pixel.xyz; vec3 pel; pel.r = dot(pixel_yuv,yuv_r); pel.g = dot(pixel_yuv,yuv_g); pel.b = dot(pixel_yuv,yuv_b); return vec4(pel.r,pel.g,pel.b,pixel.a); } Hope that helps... Patrick Sheffield Sheffield Softworks On Oct 5, 2011, at 12:55 PM, nisar....@gmail.com wrote: > You guessed it right and my first approach was to develop a provider but QC > was raising an exception whenever it called the outputImageProvider... > function. I got overwhelmed and decided to choose an easier approach, but yes > you are right I should follow the right approach. > > Another reason for switching to consumer was the input image pixel format > which is 2yuv... (from decklink) and the QCPlugin supports RGBA type formats > and I don't have a clue how to make the conversion. > > I also saw your movieloader patch and its code which can be a great help so > will try again tomorrow. > > Thanks > Nisar > *** This Message Has Been Sent Using BlackBerry Internet Service from > Mobilink *** > > From: vade <dokt...@me.com> > Date: Wed, 05 Oct 2011 15:44:11 -0400 > To: Nisar Ahmed<nisar....@gmail.com> > Cc: Christopher Wright<christopher_wri...@apple.com>; quartzcomposer-dev list > list<quartzcomposer-dev@lists.apple.com> > Subject: Re: Drawing inside QC Plugin using CIContext > > It looks like you are outputting an image from a decklink card (I am assuming > this is going to be for a digitizer / video input replacement?) > > Assuming my assumption is correct, why not output the CVPIxelBufferRef ? It > looks like you create one from the decklink IDeckLinkVideoInputFrame handler > in your decklink callback, and make the patch be a provider, rather than a > consumer and use the factory method > > outputImageProviderFromBufferWithPixelFormat:pixelsWide:pixelsHigh:baseAddress:bytesPerRow:releaseCallback:releaseContext:colorSpace:shouldColorMatch, > or a custom QCPLuginOutputImageProvider class you implement and just output > an image :) > > QC will handle everything else you need and you can additionally use image > filters, CI Filters and GLSL shaders on your output image. > > > > > On Oct 5, 2011, at 12:08 PM, Nisar Ahmed wrote: > >> Yes you are correct, I added this and it worked but..... >> >> //Creating image from a CVImageBufferRef >> (Format=PAL) >> image = [[CIImage alloc] initWithCVImageBuffer:pixelBuffer]; >> >> //Resizing width and height of image to match input port's >> width and height >> width = [image extent].size.width*(self.inputWidth/2.0); >> height = [image extent].size.height*(self.inputHeight/2.0); >> >> glViewport(self.inputX, self.inputY, width, height); >> glMatrixMode(GL_MODELVIEW); >> glLoadIdentity(); >> >> glMatrixMode(GL_PROJECTION); >> glLoadIdentity(); >> glOrtho(0, width, 0, height, -1.0, 1.0); >> [ciContext drawImage:image inRect:CGRectMake(0, 0, width, >> height) fromRect:[image extent]]; >> >> Now I can see correct image inside. BUT the whole of QC View background is >> painted in White and it's no more transparent like in other consumer >> patches. The image in question is in PAL format. >> >> I have also attached a screen shot for reference >> >> Thank you >> Nisar >> >> >> >> On Wed, Oct 5, 2011 at 8:27 PM, Christopher Wright >> <christopher_wri...@apple.com> wrote: >>> Now I am a little confused about inRect and fromRect parameters of >>> drawImage since the coordinate system is different and which OpenGL >>> function should I include or remove from this function for it to work. >>> >>> I can only see a blank screen on top right corner of QC View >> >> You'll probably want to change the Projection matrix, since QC will have it >> set to something you probably aren't interested in. >> >> -- >> Christopher Wright >> christopher_wri...@apple.com >> >> >> <Screen shot 2011-10-05 at 9.07.16 PM.png> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/quartzcomposer-dev/doktorp%40mac.com >> >> This email sent to dokt...@mac.com > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/quartzcomposer-dev/psheffield%40earthlink.net > > This email sent to psheffi...@earthlink.net
_______________________________________________ Do not post admin requests to the list. They will be ignored. Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com