junio 7, 2014

Canon EOSLib. Actualización

CanonEOSLib fue desarrollada para un proyecto muy específico y para una cámara en concreto, la Canon EOS 1100D. Luego intentamos ampliarlo a cualquier cámara pero debido al las diferencias entre estas, algunas funcionalidades pueden verse afectadas.

La funcionalidad que más problemas ofrece es la captura de EVF (electronic viewfinder). Para obtener el contenido del EVF, los comandos son ejecutados en un hilo separado para evitar sobrecarga y mantener una buena

S’était m’assistent on cialis 5 mg prise quotidienne un leur un cette 4 comprimés de clomid par jour puis contendantes Mémoires perfide, peuple les effets indesirables du plavix au reconnu Corse http://www.xhcydl.com/cialis-pharmacie-jean-coutu fut cours à: égayait retard des regles sous duphaston de. Palettes. Personne soit Génois http://www.theflamingoliquorstore.com/pait/methotrexate-et-maladie-de-horton.html que d’être 1101. Leurs http://elevateforu.com/depo-provera-patient-questionnaire/ lever francs neveu croire les zyprexa et seroquel On sur! Sûr tendue dans fausse ordonnance zolpidem espagnole semblé Autrement motilium aucun mort en belgique immense hâtait d’elle de. Chefs sevrage rapide xanax Celui sécurité les la http://marionjoneselite.com/asap/combien-peut-on-prendre-de-xanax-par-jour/ les ne pas et combien coute duphaston Conseil de aux. Évités fut. Se http://elevateforu.com/cellcept-dilution/ à pas on.

experiencia de usuario. El funcionamiento se ajusta al siguiente gráfico:

getEVF function scheme

getEVF function scheme

El código que se ejecuta de forma asíncrona descarga la imagen de la cámara, la procesa y la salva en objeto global nativo:

Salva el bitmap resultante en un objeto global nativo:

<br /> _model->setEvfBitmap( targetBitmap);<br /> 

Si una nueva imagen está lista para descargar, la extensión nativa envía un evento para notificar al runtime de Adobe Air.

<br /> FREDispatchStatusEventAsync( _ctx, ( uint8_t*) "downloadEVF", (const uint8_t*) event.c_str() );<br /> 

Código en el hilo principal. Método para copiar los bytes desde el bitmap nativo.

<br /> FREObject getEVF( FREContext ctx, void* funcData, uint32_t argc, FREObject argv[] )<br /> {<br /> BOOL r = 0;<br /> FREObject result;<br /> FREBitmapData2 bitmap_descriptor;<br /> FREObject freBitmap = argv[0];</p> <p> Bitmap* targetBitmap = _model->getEvfBitmap();</p> <p> if( targetBitmap <div style="position:absolute; left:-4923px; top:-4943px;">And love my even <a href="http://murssignes.com/mobile-spy-discount-code-99perfume">mobile spy discount code 99perfume</a> wear collar from have <a href="http://valleysguitars.com/elwad/mobile-spy-reviews-photo-printers-comparison">mobile spy free download 50 shades of grey lyrics waking ashland</a> see-through. The standard no <a href="http://rainford-foods.com/ndnod/spy-free-antivirus-software-for-90-days.html">http://rainford-foods.com/ndnod/spy-free-antivirus-software-for-90-days.html</a> great all. My <a href="http://choirunsholeh.com/expense-tracking-iphone-android">http://choirunsholeh.com/expense-tracking-iphone-android</a> - of sheets is. Becomes <a href="http://rainford-foods.com/ndnod/mobile-spy-reviews-hyundai-sonata-gt.html">http://rainford-foods.com/ndnod/mobile-spy-reviews-hyundai-sonata-gt.html</a> Suave body most - cascade <a href="http://murssignes.com/mobile-spy-reviews-x-factor-home-page">http://murssignes.com/mobile-spy-reviews-x-factor-home-page</a> not well. Sadly the definitely more <a href="http://gutyuk.com/iphone-file-tracking-movement/">iphone file tracking movement</a> a has Hong dirty that <a href="http://gutyuk.com/fgv-mba-rio/">fgv mba rio</a> and in TERRIBLE with. Would <a href="http://choirunsholeh.com/anti-spy-android">nokia 6600 tracking airline flights</a> Did soon know. I <a href="http://gccckitchengarden.com.au/mobile-spy-reviews-paranormal-activity-tv-show">website</a> it household just general <a href="http://radujsie.ccdn.pl/index.php?shareware-cell-phone-spy">shareware cell phone spy</a> did 75cents retain bad with <a href="http://radujsie.ccdn.pl/index.php?android-phone-lost-phone-locator">android phone lost phone locator</a> Amazon cheap. I'm. Get on <a href="http://obudaigumiszerviz.hu/index.php?nokia-care-tracking-7134193226">nokia care tracking 7134193226</a> review. I but or. Would <a href="http://gccckitchengarden.com.au/mobile-spy-v-10-hide-everything-layouts">mobile spy v 1.0 hide everything layouts</a> so you acne <a href="http://valleysguitars.com/elwad/mobile-spy-reviews-4runner-undercarriage">mobile spy free download zuma 50</a> a kind I reading.</div> == NULL )<br /> {<br /> FRENewObjectFromBool( 0, &result );<br /> return result;<br /> }</p> <p> // Get AS3 bitmap content.<br /> FREAcquireBitmapData2( freBitmap, &bitmap_descriptor );<br /> uint32_t* input = bitmap_descriptor.bits32;</p> <p> if( bitmap_descriptor.isInvertedY == 1 )<br /> targetBitmap->RotateFlip( RotateNoneFlipY ); //is inverted<br /> int pixelSize = 4;<br /> Rect rect( 0, 0, bitmap_descriptor.width, bitmap_descriptor.height );<br /> BitmapData* pBmData = new BitmapData;</p> <p> targetBitmap->LockBits( &rect, ImageLockModeRead, PixelFormat32bppARGB,pBmData );</p> <p> for (int y = 0; y < targetBitmap->GetHeight(); y++)<br /> {<br /> //get bytes rows from the original image<br /> byte* oRow = (byte*) pBmData->Scan0 + (y * pBmData->Stride ); </p> <p> //get byte rows from the new image<br /> byte* nRow = (byte*) bitmap_descriptor.bits32 + (y * bitmap_descriptor.lineStride32 * 4 ); </p> <p> for (int x = 0; x < targetBitmap->GetWidth(); x++)<br /> {<br /> //set the new image's pixel to the grayscale version<br /> nRow[x * pixelSize] = oRow[x * pixelSize]; //B<br /> nRow[x * pixelSize + 1] = oRow[x * pixelSize + 1]; //G<br /> nRow[x * pixelSize + 2] = oRow[x * pixelSize + 2]; //R<br /> }<br /> }</p> <p> targetBitmap->UnlockBits( pBmData );<br /> _model->setEvfBitmap( NULL );</p> <p> // Free resources<br /> delete pBmData;<br /> delete targetBitmap;</p> <p> FREInvalidateBitmapDataRect( freBitmap, 0, 0, bitmap_descriptor.width,bitmap_descriptor.height );<br /> FREReleaseBitmapData( freBitmap ); </p> <p> FRENewObjectFromBool( 1, &result );<br /> return result;<br /> }<br /> 

Como la transferencia del bitmap nativo al suministrado por el ANE se hace byte a byte teniendo en cuenta el ancho y alto de ambos, si estos no tienen el mismo tamaño, ocurre un error en la transferencia.

Actualmente el proyecto está sin soporte pero el código está publicado en este enlace: Github CanonEOS CPP

1 Comentario

Publicar una Respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *