Thanks for the thorough explanation, I am now embedding the aircraft supplied position parameters in the ImageDescription field. The next flight has been postponed 24 hours and is now scheduled to take off at 0705 UTC Friday.

-scott

Andrey Filippov wrote:
Scott,

There is no easy way to write GPS data to Exif bypassing the program in C that does it. The Elphel PHP extension includes parsing Exif data into human readable form, but not the other way around.

Internally camera maintains condensed Exif - "condensed" is what remains from the Exif header if you remove all the constant fields (like camera model) and the Exif pointers and merge the remaining fields together. These condensed Exif headers are copied from the "current" data buffer for each frame that is stored in the output video buffer so the Exif data can be re-assembled with the images when applications read them from the circular video buffer.

When application (such as camogm, streamer or imgsrv) reads image frame and requests Exif header that dynamic data (individual for each acquired frame) is combined with the static template (generated at boot time) and provided to an application as complete Exif header.

The php script that runs at startup:

http://elphel.cvs.sourceforge.net/viewvc/elphel/elphel353-8.0/apps/web/imgsrv/exif.php?view=markup

creates template from the XML file

http://elphel.cvs.sourceforge.net/viewvc/elphel/elphel353-8.0/apps/web/imgsrv/Exif_template.xml?view=markup

and builds the directory for the condensed Exif writable by the applications. This directory does not include the data format of the particular Exif fields - just the offset and length (in bytes) fo that field, referenced by the modified Exif tag number (modified to include both tag number and tag group in a single long number). It is up to the particular application to format data according to Exif conventions and matching the Exif_template.xml

Example of the PHP script

 
http://elphel.cvs.sourceforge.net/viewvc/elphel/elphel353-8.0/packages/web/353/camvc/camvc.php?view=markup

343 if ( $value!==null) elphel_set_exif_field(0x10e, $value.chr(0));

writes string data from $value terminated by zero byte (chr(0) ) to Exif field with the tag 0x10e (group 0) , the tag called "ImageDescription" in Exif. The Exif_template.xml reserves 40 bytes fro the image description, so if you need more you have to modify that template file. It is also possible to add more fileds - you need to define them in Exif_template.xml, then write with elphel_set_exif_field (or directly using the device driver).

It should be possible to write GPS data fileds with PHP script, but that would be more tricky than to wrikte to ImageDescription tag - you'll need to write data in the Exif format, not just string data. Making all such conversions in PHP may add considerable load if the data is updated at high rate, you may need to write a C program, modifying it from this one:

http://elphel.cvs.sourceforge.net/viewvc/elphel/elphel353-8.0/apps/garminusb2nmea-0.12a/nmea2exif.c?view=markup

So the quick fix that I would recommend is to format the required data into a string of <=40 bytes and use elphel_set_exif_field(0x10e, $string_to_write.chr(0));

Andrey



_______________________________________________
Support-list mailing list
Support-list@support.elphel.com
http://support.elphel.com/mailman/listinfo/support-list_support.elphel.com

Reply via email to