... o devo approfondire il flusso di dati alla ricerca della sequenza 0xFF 0xD8
?Dovrei aspettarmi un indicatore JPEG SOI all'inizio del flusso di dati?
Da this Q, ho appreso cosa APPn non deve seguire immediatamente SOI. Ci sono casi JPEG conformi alle specifiche dove posizione SOI! = Inizio del flusso?
Una citazione dalle specifiche (allegato B, § 1.1.2):
Marcatori servono per identificare le varie parti strutturali delle formati di dati compressi. La maggior parte dei marcatori inizia segmenti di marcatori contenenti un gruppo correlato di parametri; alcuni indicatori stanno da soli. Tutti i marcatori sono codici a due byte assegnati: un byte X'FF 'seguito da un byte che è diverso da 0 o X'FF' (vedere la Tabella B.1). Qualsiasi marker può essere opzionalmente preceduto da un numero qualsiasi di byte di riempimento, a cui sono assegnati byte codice X'FF '.
È piuttosto logico se i byte della spazzatura casuali all'inizio invalida l'intero flusso, ma stavo parlando dei byte di riempimento, che sembra essere consentito dalle specifiche (vedere la modifica). –
Sì, la specifica potrebbe dirlo, ma molte implementazioni inclusa l'implementazione di riferimento gestiscono SOI in modo diverso (ho dato libjpeg, come esempi). Tuttavia, i byte di riempimento (e talvolta anche la spazzatura casuale) che precedono il marcatore sono accettati volentieri per tutti gli altri marcatori nella maggior parte delle implementazioni che ho incontrato ... fino ad un certo punto almeno. – nmaier