... czy powinienem zagłębić się w strumień danych, szukając sekwencji 0xFF 0xD8
?Czy powinienem oczekiwać znacznika JPEG SOI na samym początku strumienia danych?
Od this Q, nauczyłem się, co APPn nie musi natychmiast podążać za SOI. Czy istnieją specyfikacje zgodne ze zdjęciami JPEG, w których pozycja SOI! = Początek strumienia?
cytat ze specyfikacji (załącznik B, § 1.1.2):
Markery służą do określenia różnych części konstrukcyjnych skompresowanych formatów danych. Większość znaczników rozpoczyna segmenty znaczników zawierające powiązaną grupę parametrów; niektóre markery są samodzielne. Wszystkie znaczniki mają przypisane kody dwubajtowe: bajt X'FF ', po którym następuje bajt o numerze nie równy 0 lub X'FF' (patrz Tabela B.1). Każdy znacznik może opcjonalnie być poprzedzony dowolną liczbą bajtów wypełniających, które są bajtami o kodzie X'FF '.
To całkiem logiczne, że losowe bajty na początku unieważniają cały strumień, ale mówiłem o bajtach dopełnienia, co wydaje się być dozwolone przez specyfikację (zobacz edycję). –
Tak, specyfikacja może tak mówić, ale wiele implementacji, w tym implementacja referencyjna, obsługuje inaczej SOI (dałem libjpeg, idź jako przykłady). Jednak wypełnienie bajtów (a czasem nawet losowych śmieci) poprzedzających znacznik są chętnie akceptowane dla wszystkich innych znaczników w większości implementacji, które napotkałem ... przynajmniej do pewnego punktu. – nmaier