... oder sollte ich gehen tiefer in die Strom-Daten für 0xFF 0xD8
Sequenz suchen?Sollte ich zu Beginn des Datenstroms JPEG-SOI-Marker erwarten?
Von this Q, habe ich gelernt, was APPn SOI nicht sofort folgen muss. Gibt es spezifikationskonforme JPEG-Fälle, in denen die SOI-Position! = Anfang des Streams ist?
Ein Zitat aus der Spezifikation (Anhang B, § 1.1.2):
Markers dienen, die verschiedenen Bauteile der komprimierten Datenformate zu identifizieren. Die meisten Marker starten Markersegmente, die eine verwandte Gruppe von Parametern enthalten; einige Markierungen stehen alleine. Allen Markern sind Zwei-Byte-Codes zugeordnet: ein X'FF'-Byte, gefolgt von einem Byte, das ungleich 0 oder X'FF 'ist (siehe Tabelle B.1). Jeder Marker kann optional sein, dem eine beliebige Anzahl von Füllbytes vorangestellt ist, denen Bytes mit dem Code X'FF 'zugewiesen sind.
Es ist ziemlich logisch, wenn zufällige Garbbytes am Anfang den gesamten Strom ungültig macht, aber ich sprach über das Auffüllen von Bytes, die von der Spezifikation erlaubt zu sein scheinen (sehen Sie die Änderung). –
Ja, könnte die Spezifikation so sagen, aber viele Implementierungen der Referenzimplementierung Griff SOI anders einschließlich (I gab libjpeg als Beispiele gehen). Füll-Bytes (und manchmal sogar zufälliger Abfall), die der Markierung vorangehen, werden jedoch für alle anderen Markierungen in den meisten Implementierungen, auf die ich gestoßen bin, bis zu einem gewissen Punkt gerne akzeptiert. – nmaier