158 |
confess "no SOI marker in data" if substr($data,0,2) ne "\xFF\xD8"; |
confess "no SOI marker in data" if substr($data,0,2) ne "\xFF\xD8"; |
159 |
$data = substr($data,2); |
$data = substr($data,2); |
160 |
|
|
161 |
|
my $w = $d->{amvh}->{width} || die "no width?"; |
162 |
|
my $h = $d->{amvh}->{height} || confess "no height?"; |
163 |
|
|
164 |
my $header = |
my $header = |
165 |
"\xFF\xD8". # Start of Image (SOI) marker |
"\xFF\xD8". # Start of Image (SOI) marker |
166 |
#------------------------------------------------------------------ |
#------------------------------------------------------------------ |
178 |
pack("ncnncc9", |
pack("ncnncc9", |
179 |
17, # len |
17, # len |
180 |
8, # sample precision in bits |
8, # sample precision in bits |
181 |
120,160, # X,Y size |
$h,$w, # X,Y size |
182 |
3, # number of components |
3, # number of components |
183 |
1,0x21,0, # Component ID, H+V sampling factors, Quantization table number |
1,0x21,0, # Component ID, H+V sampling factors, Quantization table number |
184 |
2,0x11,1, |
2,0x11,1, |
334 |
); |
); |
335 |
#------------------------------------------------------------------ |
#------------------------------------------------------------------ |
336 |
|
|
337 |
my $header = |
$header = |
338 |
# SOI |
# SOI |
339 |
"\xFF\xD8". |
"\xFF\xD8". |
340 |
# JFIF |
# JFIF |
418 |
# start of frame |
# start of frame |
419 |
"\xff\xc0". |
"\xff\xc0". |
420 |
"\x00\x11\x08". |
"\x00\x11\x08". |
421 |
pack("nn", 120, 160). |
pack("nn", $h, $w). |
422 |
"\x03\x01\x21\x00\x02\x11\x01\x03\x11\x01". |
"\x03\x01\x21\x00\x02\x11\x01\x03\x11\x01". |
423 |
# |
# |
424 |
"\xff\xda". |
"\xff\xda". |