[AT&T Samsung Galaxy S II SGH-I777] elherr:
Yes indeed. Location is accurate.

If you want more info than you ever wanted on EXIF, here it is. Extensibile yes, easy to read in hex, no. Little endian makes it more fun.

http://gvsoft.homedns.org/exif/exif-explanation.html

http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf

The TIFF spec is the meaty part.

*** Somewhat later -- AHA! Each EXIF IFD directory entry MUST be EXACTLY 12 bytes in length. They are not with the new camera. Starting with tag 0x0112 (Orientation), some are truncated to 10 bytes. Now -- to figure out where this is happening.

*** And later yet.... it looks like the bad voodoo could be occuring either in exynos_exif_write_data or the calling function exynos_exif_create. Tired and have to get up early. Perhaps I can jack around a bit more tomorrow.

Here is the dump from bad EXIF with tags highlighted (little endian). Note that IFD entries 0x0112 and 0x0213 are only 10 bytes. They should be 12 bytes and are with the old camera (pre Feb 2013).

00000000 ff d8 ff e1 f2 ca 45 78 69 66 00 00 49 49 2a 00 |......Exif..II*.|
00000010 08 00 00 00 0a 00 [B]00 01[/B] 04 00 01 00 00 00 c0 0c |................|
00000020 00 00 [B]01 01[/B] 04 00 01 00 00 00 90 09 00 00 [B]0f 01[/B] |................|
00000030 02 00 08 00 00 00 86 00 00 00 [B]10 01[/B] 02 00 09 00 |................|
00000040 00 00 8e 00 00 00 [B]12 01[/B] 03 00 01 00 00 00 06 00 |................|
00000050 [B]31 01[/B] 02 00 06 00 00 00 97 00 00 00 [B]32 01[/B] 02 00 |1...........2...|
00000060 14 00 00 00 9d 00 00 00 [B]13 02[/B] 03 00 01 00 00 00 |................|
00000070 01 00 [B]69 87[/B] 04 00 01 00 00 00 b1 00 00 00 [B]25 88[/B] |..i...........%.|
00000080 04 00 01 00 00 00 3d 02 00 00 0a 03 00 00 00 00 |......=.........|
00000090 00 00 53 61 6d 73 75 6e 67 00 53 47 48 2d 49 37 |..Samsung.SGH-I7|
000000a0 37 37 00 4a 44 51 33 39 00 32 30 31 33 3a 30 33 |77.JDQ39.2013:03|
000000b0 3a 30 39 20 31 36 3a 32 33 3a 33 39 00 16 00 9a |:09 16:23:39....|

0x8769 & 0x8825 do not seem to be in the EXIF spec I have but are in exif.h

#define EXIF_TAG_EXIF_IFD_POINTER 0x8769
#define EXIF_TAG_GPS_IFD_POINTER 0x8825

exynos_exif.c exynos_exif_create using sizeof() for EXIF_TYPE_SHORT parms and writing only two bytes for tag value instead of four?

count = exynos_exif_write_data(pointer, EXIF_TAG_ORIENTATION,
EXIF_TYPE_SHORT, 1, NULL, NULL, &exif_attributes->orientation, sizeof(exif_attributes->orientation));
pointer += count;

count = exynos_exif_write_data(pointer, EXIF_TAG_YCBCR_POSITIONING,
EXIF_TYPE_SHORT, 1, NULL, NULL, &exif_attributes->ycbcr_positioning, sizeof(exif_attributes->ycbcr_positioning));
pointer += count;

count = exynos_exif_write_data(pointer, EXIF_TAG_EXPOSURE_PROGRAM,
EXIF_TYPE_SHORT, 1, NULL, NULL, &exif_attributes->exposure_program, sizeof(exif_attributes->exposure_program));
pointer += count;

count = exynos_exif_write_data(pointer, EXIF_TAG_ISO_SPEED_RATING,
EXIF_TYPE_SHORT, 1, NULL, NULL, &exif_attributes->iso_speed_rating, sizeof(exif_attributes->iso_speed_rating));
pointer += count;

count = exynos_exif_write_data(pointer, EXIF_TAG_METERING_MODE,
EXIF_TYPE_SHORT, 1, NULL, NULL, &exif_attributes->metering_mode, sizeof(exif_attributes->metering_mode));
pointer += count;

count = exynos_exif_write_data(pointer, EXIF_TAG_FLASH,
EXIF_TYPE_SHORT, 1, NULL, NULL, &exif_attributes->flash, sizeof(exif_attributes->flash));
pointer += count;

count = exynos_exif_write_data(pointer, EXIF_TAG_RESOLUTION_UNIT,
EXIF_TYPE_SHORT, 1, NULL, NULL, &exif_attributes->resolution_unit, s
izeof(exif_attributes->resolution_unit));
pointer += count;

IFD entry format (from TIFF manual):

IFD Entry
Each 12-byte IFD entry has the following format:
Bytes 0-1 The Tag that identifies the field.
Bytes 2-3 The field Type.
Bytes 4-7 The number of values, Count of the indicated Type.
Bytes 8-11
The Value Offset, the file offset (in bytes) of the Value for the field.
The Value is expected to begin on a word boundary; the correspond-
ing Value Offset will thus be an even number. This file offset may
point anywhere in the file, even after the image data.

Minor tidbit:

Old camera

00000250 01 00 00 64 00 00 00 41 53 43 49 49 00 00 00 55 |...d...ASCII...U|
00000260 73 65 72 20 63 6f 6d 6d 65 6e 74 73 53 43 45 46 |ser commentsSCEF|

New camera

00000230 00 00 00 00 00 00 49 49 43 53 41 55 73 65 72 20 |......IICSAUser |
00000240 63 6f 6d 6d 65 6e 74 73 00 09 00 00 00 04 00 04 |comments........|