Lectura de salida de una webcam USB en Linux

Estaba experimentando con un poco de hilo y escritura en C. Así que escribí este pequeño programa en C para obtener datos de una cámara web y volcarlo en un archivo. La siguiente es la fuente:

#include <stdio.h>
#include <stdlib.h>
#define SIZE 307200 // number of pixels (640x480 for my webcam)
int main() {
    FILE *camera, *grab;
    camera=fopen("/dev/video0", "rb");
    grab=fopen("grab.raw", "wb");
    float data[SIZE];
    fread(data, sizeof(data[0]), SIZE, camera);
    fwrite(data, sizeof(data[0]), SIZE, grab);
    fclose(camera);
    fclose(grab); 
    return 0;
}

El programa funciona cuando se compila (gcc -o snap camera.c). Lo que me sorprendió fue que el archivo de salida no era un volcado de datos en bruto, sino un archivo JPEG. Salida de lafile&nbsp;El comando en Linux en el archivo de salida de programas mostró que se trataba de una imagen JPEG: JFIF Standard 1.01. El archivo se podía ver en un visor de imágenes, aunque un poco saturado.

¿Cómo o por qué sucede esto? No usé ninguna biblioteca de codificación JPEG en la fuente o el programa. ¿La cámara emite JPEG de forma nativa? La cámara web es una Sony Playstation 2 EyeToy fabricada por Logitech. El sistema es Debian Linux.