How Windows Mobile 6.5 Stored Camera EXIF Data

This article explains how the Windows Mobile 6.5 operating system handled and stored Exchangeable Image File Format (EXIF) metadata within captured photographs. It covers the underlying architectural pipeline—from the hardware camera sensor through the DirectShow multimedia framework—and details how the operating system and original equipment manufacturer (OEM) software embedded technical capture parameters, timestamps, and GPS coordinates directly into standard JPEG file headers.

The DirectShow Capture Architecture

Windows Mobile 6.5 was built on the Windows CE 5.2 kernel and relied on Microsoft’s DirectShow multimedia framework to manage audio and video capture. In this pipeline, the camera hardware communicated with the OS via a Camera Driver (a streaming capture driver implemented as a dynamic link library, or DLL).

When a user triggered the shutter, the camera capture filter received raw pixel data (typically in YUV or RGB format) from the image sensor. Simultaneously, the driver queried the camera hardware registers for real-time capture conditions such as exposure time, ISO speed ratings, focal length, and white balance settings.

The Role of OEM Middleware

Microsoft provided the core Windows Mobile OS and basic camera interfaces, but the operating system lacked a universal, modern camera subsystem. Consequently, the burden of formatting and writing EXIF data fell largely on OEMs (such as HTC, Samsung, and Sony Ericsson) and their custom camera capture applications.

OEMs implemented custom DirectShow transform or encoder filters. When capturing a still frame, the OEM software gathered metadata from three distinct layers:

  1. Static System Information: Device make, device model, and OS build version retrieved via standard Windows CE system APIs.
  2. Sensor Capture Parameters: Real-time settings delivered by the sensor driver via private I/O controls (IOCTLs) or DirectShow property sets.
  3. Location Data: Coordinates captured via the Windows Mobile GPS Intermediate Driver (GPSID), an internal API that allowed multiple applications to query NMEA satellite data concurrently.

Technical Storage Within the JPEG File Structure

Once the raw image frame and metadata were aligned, the software passed the package to an image encoder (either a hardware DSP-assisted encoder or a software JPEG compression library).

Windows Mobile 6.5 stored EXIF data in strict adherence to the EXIF 2.1 or 2.2 standard, embedding the metadata within the JPEG container using standard application markers:

  • SOI Marker (0xFFD8): Indicates the Start of Image.
  • APP1 Marker (0xFFE1): Immediately follows the SOI marker. This block contains the EXIF header identifier (Exif\0\0) followed by TIFF-structured metadata directories.
  • Image File Directories (IFDs):
    • 0th IFD (Primary Image): Stores high-level tags including image resolution, camera manufacturer (e.g., "HTC"), camera model, orientation, and the date/time string formatted as YYYY:MM:DD HH:MM:SS.
    • Exif IFD: Stored as a sub-directory containing granular photography settings: Shutter Speed Value, F-Number, ISO Speed Ratings, Metering Mode, Flash Status, and Digital Zoom Ratio.
    • GPS IFD: If the device featured an active GPS chip and the user enabled geotagging, an additional sub-IFD was written containing latitude, longitude, altitude, timestamp, and geodetic reference datum (typically WGS-84).
    • 1st IFD (Thumbnail): A compressed, low-resolution JPEG thumbnail was frequently generated and embedded directly within the APP1 segment to accelerate image rendering in the Windows Mobile "Pictures & Videos" browser or third-party OEM galleries (such as HTC Manila / TouchFLO 3D).

Final Assembly and Storage

Once the encoder formatted the APP1 segment with its associated TIFF headers, byte-order indicators (little-endian II format was common on ARM-based Windows Mobile devices), and directory offset tags, it proceeded to write the quantization tables (DQT), Huffman tables (DHT), and the Scan data (SOS). The completed file was saved with a .jpg extension directly to either internal flash memory (\My Documents\My Pictures) or a removable Storage Card using the Windows CE FAT/FAT32 file system driver.