Truxton exif set lens serial number
This corresponds to the [SerialNumber] column of the [EXIF] table in the database.
Syntax
void truxton_exif_set_lens_serial_number( uint64_t exif_handle, char const * serial_number );
Parameters
exif_handle
This handle comes from calling truxton_exif_create() or truxton_file_create_exif().
serial_number
The string representation of a the serial number of the lens of the imaging device.
Remarks
When truxton_exif_save() is called, Truxton must decide which serial number to put into the [SerialNumber] column of the [EXIF] table in the database.
It does this by looking at the body serial number and the lens serial number.
Truxton prioritizes the body serial number over the lens serial number.
If the body serial number is empty and the lens serial number is not, the [SerialNumber] will be populated with the lens serial number.
Also when truxton_exif_save() is called, Truxton will add both lens and body serial numbers as artifacts of type ENTITY_TYPE_SERIAL_NUMBER.
Sample
void add_exif( uint64_t truxton, uint64_t file_handle, uint8_t const * destination_string, size_t max_size )
{
char id[ 40 ];
EXIF_PARSER parser;
parser.Initialize( buffer, buffer_size );
EXIF_DATA data;
if ( fill_exif_data( parser, data ) == 0 )
{
return;
}
uint64_t exif_handle = truxton_create_exif( truxton );
truxton_exif_set_gps_time( exif_handle, data.gps_time );
truxton_exif_set_gps_time_offset( exif_handle, data.offsets.gps_time );
truxton_exif_set_device_time( exif_handle, data.device_time );
truxton_exif_set_device_time_offset( exif_handle, data.offsets.device_time );
truxton_exif_set_latitude( exif_handle, data.latitude );
truxton_exif_set_latitude_offset( exif_handle, data.offsets.latitude );
truxton_exif_set_longitude( exif_handle, data.longitude );
truxton_exif_set_longitude_offset( exif_handle, data.offsets.longitude );
truxton_exif_set_altitude( exif_handle, data.altitude );
truxton_exif_set_altitude_offset( exif_handle, data.offsets.altitude );
truxton_exif_set_heading( exif_handle, data.heading);
truxton_exif_set_heading_offset( exif_handle, data.offsets.heading );
truxton_exif_set_focal_length( exif_handle, data.focal_length );
truxton_exif_set_focal_length_offset( exif_handle, data.offsets.focal_length );
truxton_exif_set_shutter_count( exif_handle, data.shutter_count );
truxton_exif_set_shutter_count_offset( exif_handle, data.offsets.shutter_count );
truxton_exif_set_thumbnail_offset( exif_handle, data.thumbnail_offset );
truxton_exif_set_thumbnail_offset_offset( exif_handle, data.offsets.thumbnail_offset );
truxton_exif_set_thumbnail_length( exif_handle, data.thumbnail_length );
truxton_exif_set_thumbnail_length_offset( exif_handle, data.offsets.thumbnail_length );
truxton_exif_set_make( exif_handle, data.make );
truxton_exif_set_make_offset( exif_handle, data.offsets.make );
truxton_exif_set_model( exif_handle, data.model );
truxton_exif_set_model_offset( exif_handle, data.offsets.model );
truxton_exif_set_body_serial_number( exif_handle, data.body_serial_number );
truxton_exif_set_body_serial_number_offset( exif_handle, data.offsets.body_serial_number );
truxton_exif_set_lens_serial_number( exif_handle, data.lens_serial_number );
truxton_exif_set_lens_serial_number_offset( exif_handle, data.offsets.lens_serial_number );
truxton_file_get_id( file_handle, id, sizeof( id ) );
truxton_exif_set_file_id( exif_handle, id );
truxton_file_get_media_id( file_handle, id, sizeof( id ) );
truxton_exif_set_media_id( exif_handle, id );
truxton_exif_save( exif_handle );
truxton_exif_get_id( exif_handle, id, sizeof( id ) );
printf( "EXIF ID is %s\n", id );
truxton_exif_destroy( exif_handle );
}