Bugzilla
Quick Search
Browse
Advanced Search
Reports
Quick Search Help
Documentation
New Account
Log In
Login with GitHub
Remember
Forgot Password
Mozilla Home
Privacy
Cookies
Legal
Attachment 8724896 Details for
Bug 1252200
Test program that generates an image that can be used to repro this bug
test004.c (text/x-csrc), 3.58 KB, created by
DRC
(
hide
)
Description:
Test program that generates an image that can be used to repro this bug
Filename:
MIME Type:
Creator:
DRC
Size:
3.58 KB
patch
obsolete
>#include <stdlib.h> >#include <string.h> >#include <strings.h> >#include <stdio.h> >#include <err.h> > >#define KB * 1024 > >/* copied from the source because I don't want to think about what a valid table has to look like */ >static char quanttab[] = { > 16, 11, 10, 16, 24, 40, 51, 61, > 12, 12, 14, 19, 26, 58, 60, 55, > 14, 13, 16, 24, 40, 57, 69, 56, > 14, 17, 22, 29, 51, 87, 80, 62, > 18, 22, 37, 56, 68, 109, 103, 77, > 24, 35, 55, 64, 81, 104, 113, 92, > 49, 64, 78, 87, 103, 121, 120, 101, > 72, 92, 95, 98, 112, 100, 103, 99 >}; >static int quanttab_size = sizeof(quanttab); > >// Huffman tables per JPEG spec >static const unsigned char dclumbits[16]= >{ > 0, 1, 5, 1, 1, 1, 1, 1, > 1, 0, 0, 0, 0, 0, 0, 0 >}; >static const unsigned char dclumvals[]= >{ > 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 >}; > >static const unsigned char aclumbits[16]= >{ > 0, 2, 1, 3, 3, 2, 4, 3, > 5, 5, 4, 4, 0, 0, 1, 0x7d >}; >static const unsigned char aclumvals[]= >{ > 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, > 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, > 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, > 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, > 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, > 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, > 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, > 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, > 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, > 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, > 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, > 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, > 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, > 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, > 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, > 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, > 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, > 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, > 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, > 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, > 0xf9, 0xfa >}; > >#define write_byte(jpg, byte) {img[off] = (byte); off++;} >#define write_word(j, w) {write_byte(j, (w>>8)&0xff); write_byte(j, w&0xff);} > >#define WIDTH "\x40\x40" >#define HEIGHT "\x3C\x3C" > >int main(void) { > puts("preparing..."); > unsigned char head[] = > /*SOI*/ "\xFF\xD8" > /*DQT*/ "\xFF\xDB\x00\x43\x00" /*values in quanttab*/; > unsigned char sof[] = > /*SOF*/ "\xFF\xC0\x00\x11\x08" WIDTH HEIGHT > "\x03\x00\x22\x00\x01\x22\x01\x02\x22\x00"; > unsigned char sos[] = > /*SOS*/ "\xFF\xDA\x00\x08\x01\x00\x00\x00\x3F\x00" > /*EOI*/ "\xFF\xD9"; > > int headlen = sizeof(head)-1; > int soflen = sizeof(sof)-1; > int soslen = sizeof(sos)-1; > int i, len, nval, soses = 0; > > unsigned char img[8000 KB]; > memcpy(img, head, headlen); > int off = headlen; > memcpy(img+off, quanttab, quanttab_size); > off += quanttab_size; > > // Write default Huffman tables > write_byte(jpg, 0xff); write_byte(jpg, 0xc4); // DHT marker > nval=0; for(i=0; i<16; i++) nval+=dclumbits[i]; > len=19+nval; > write_word(jpg, len); // DHT length > write_byte(jpg, 0x00); // Huffman class > for(i=0; i<16; i++) write_byte(jpg, dclumbits[i]); > for(i=0; i<nval; i++) write_byte(jpg, dclumvals[i]); > > write_byte(jpg, 0xff); write_byte(jpg, 0xc4); // DHT marker > nval=0; for(i=0; i<16; i++) nval+=aclumbits[i]; > len=19+nval; > write_word(jpg, len); // DHT length > write_byte(jpg, 0x10); // Huffman class > for(i=0; i<16; i++) write_byte(jpg, aclumbits[i]); > for(i=0; i<nval; i++) write_byte(jpg, aclumvals[i]); > > memcpy(img+off, sof, soflen); > off += soflen; > memcpy(img+off, sos, soslen); > off += soslen; > > FILE *f = fopen("oom.jpg", "w"); > if (!f) err(1, "fopen"); > if (fwrite(img, off, 1, f) != 1) > errx(1, "fwrite"); > if (fclose(f)) > err(1, "fclose"); > > return 0; >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
Attachments on
bug 1252200
: 8724896