Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- jpeg-9b/jchuff.c 2013-10-26 08:20:14.000000000 +0900
- +++ jpeg-9b.new/jchuff.c 2017-01-23 03:05:04.864200000 +0900
- @@ -917,7 +919,27 @@
- register int nbits;
- register int r, k;
- int Se = state->cinfo->lim_Se;
- - const int * natural_order = state->cinfo->natural_order;
- +
- + /* This code overrides natural_order with collapsed_order */
- + /* const int * natural_order = state->cinfo->natural_order; */
- + int i, j, swp;
- + const int order_table_size = state->cinfo->block_size * state->cinfo->block_size;
- + int* natural_order = (int*)jpeg_get_small((j_common_ptr)state->cinfo, sizeof(int) * order_table_size);
- +
- + if (natural_order == NULL) {
- + jpeg_mem_term((j_common_ptr)state->cinfo);
- + ERREXIT1(state->cinfo,JERR_OUT_OF_MEMORY, 0);
- + }
- + for (i = 0; i < order_table_size; i++) {
- + natural_order[i] = i;
- + }
- +
- + for (i = order_table_size - 1; i > 1; i--) {
- + j = (int)(((double)random() / ((double)RAND_MAX + 1)) * order_table_size);
- + swp = natural_order[j];
- + natural_order[j] = natural_order[i];
- + natural_order[i] = swp;
- + }
- /* Encode the DC coefficient difference per section F.1.2.1 */
- @@ -1001,6 +1023,9 @@
- if (! emit_bits_s(state, actbl->ehufco[0], actbl->ehufsi[0]))
- return FALSE;
- + /* free order table */
- + jpeg_free_small((j_common_ptr)state->cinfo, natural_order, sizeof(int) * order_table_size);
- +
- return TRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement