readInfo method
Implementation
JpegInfo? readInfo(List<int> bytes) {
input = InputBuffer(bytes, bigEndian: true);
var marker = _nextMarker();
if (marker != JpegMarker.soi) {
return null;
}
final info = JpegInfo();
var hasSOF = false;
var hasSOS = false;
marker = _nextMarker();
while (marker != JpegMarker.eoi && !input.isEOS) {
// EOI (End of image)
switch (marker) {
case JpegMarker.sof0: // SOF0 (Start of Frame, Baseline DCT)
case JpegMarker.sof1: // SOF1 (Start of Frame, Extended DCT)
case JpegMarker.sof2: // SOF2 (Start of Frame, Progressive DCT)
hasSOF = true;
_readFrame(marker, _readBlock());
break;
case JpegMarker.sos: // SOS (Start of Scan)
hasSOS = true;
_skipBlock();
break;
default:
_skipBlock();
break;
}
marker = _nextMarker();
}
if (frame != null) {
info
..width = frame!.samplesPerLine!
..height = frame!.scanLines!;
}
frame = null;
frames.clear();
return (hasSOF && hasSOS) ? info : null;
}