Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: third_party/libopenjpeg20/t1.c

Issue 1416783002: Merge to M46: upgrade openjpeg to commit# cf352af (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@2490
Patch Set: Fix pdfium:168 since we are already half way there Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libopenjpeg20/pi.c ('k') | third_party/libopenjpeg20/t2.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * The copyright in this software is being made available under the 2-clauses 2 * The copyright in this software is being made available under the 2-clauses
3 * BSD License, included below. This software may be subject to other third 3 * BSD License, included below. This software may be subject to other third
4 * party and contributor rights, including patent rights, and no such rights 4 * party and contributor rights, including patent rights, and no such rights
5 * are granted under this license. 5 * are granted under this license.
6 * 6 *
7 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium 7 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
8 * Copyright (c) 2002-2014, Professor Benoit Macq 8 * Copyright (c) 2002-2014, Professor Benoit Macq
9 * Copyright (c) 2001-2003, David Janssens 9 * Copyright (c) 2001-2003, David Janssens
10 * Copyright (c) 2002-2003, Yannick Verschueren 10 * Copyright (c) 2002-2003, Yannick Verschueren
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 @param orient 288 @param orient
289 @param roishift Region of interest shifting value 289 @param roishift Region of interest shifting value
290 @param cblksty Code-block style 290 @param cblksty Code-block style
291 */ 291 */
292 static OPJ_BOOL opj_t1_decode_cblk( opj_t1_t *t1, 292 static OPJ_BOOL opj_t1_decode_cblk( opj_t1_t *t1,
293 opj_tcd_cblk_dec_t* cblk, 293 opj_tcd_cblk_dec_t* cblk,
294 OPJ_UINT32 orient, 294 OPJ_UINT32 orient,
295 OPJ_UINT32 roishift, 295 OPJ_UINT32 roishift,
296 OPJ_UINT32 cblksty); 296 OPJ_UINT32 cblksty);
297 297
298 OPJ_BOOL opj_t1_allocate_buffers( opj_t1_t *t1, 298 static OPJ_BOOL opj_t1_allocate_buffers( opj_t1_t *t1,
299 OPJ_UINT32 w, 299 OPJ_UINT32 w,
300 OPJ_UINT32 h); 300 OPJ_UINT32 h);
301 301
302 /*@}*/ 302 /*@}*/
303 303
304 /*@}*/ 304 /*@}*/
305 305
306 /* ----------------------------------------------------------------------- */ 306 /* ----------------------------------------------------------------------- */
307 307
308 OPJ_BYTE opj_t1_getctxno_zc(OPJ_UINT32 f, OPJ_UINT32 orient) { 308 static OPJ_BYTE opj_t1_getctxno_zc(OPJ_UINT32 f, OPJ_UINT32 orient) {
309 return lut_ctxno_zc[(orient << 8) | (f & T1_SIG_OTH)]; 309 return lut_ctxno_zc[(orient << 8) | (f & T1_SIG_OTH)];
310 } 310 }
311 311
312 OPJ_BYTE opj_t1_getctxno_sc(OPJ_UINT32 f) { 312 static OPJ_BYTE opj_t1_getctxno_sc(OPJ_UINT32 f) {
313 return lut_ctxno_sc[(f & (T1_SIG_PRIM | T1_SGN)) >> 4]; 313 return lut_ctxno_sc[(f & (T1_SIG_PRIM | T1_SGN)) >> 4];
314 } 314 }
315 315
316 OPJ_UINT32 opj_t1_getctxno_mag(OPJ_UINT32 f) { 316 static OPJ_UINT32 opj_t1_getctxno_mag(OPJ_UINT32 f) {
317 OPJ_UINT32 tmp1 = (f & T1_SIG_OTH) ? T1_CTXNO_MAG + 1 : T1_CTXNO_MAG; 317 OPJ_UINT32 tmp1 = (f & T1_SIG_OTH) ? T1_CTXNO_MAG + 1 : T1_CTXNO_MAG;
318 OPJ_UINT32 tmp2 = (f & T1_REFINE) ? T1_CTXNO_MAG + 2 : tmp1; 318 OPJ_UINT32 tmp2 = (f & T1_REFINE) ? T1_CTXNO_MAG + 2 : tmp1;
319 return (tmp2); 319 return (tmp2);
320 } 320 }
321 321
322 OPJ_BYTE opj_t1_getspb(OPJ_UINT32 f) { 322 static OPJ_BYTE opj_t1_getspb(OPJ_UINT32 f) {
323 return lut_spb[(f & (T1_SIG_PRIM | T1_SGN)) >> 4]; 323 return lut_spb[(f & (T1_SIG_PRIM | T1_SGN)) >> 4];
324 } 324 }
325 325
326 OPJ_INT16 opj_t1_getnmsedec_sig(OPJ_UINT32 x, OPJ_UINT32 bitpos) { 326 static OPJ_INT16 opj_t1_getnmsedec_sig(OPJ_UINT32 x, OPJ_UINT32 bitpos) {
327 » if (bitpos > T1_NMSEDEC_FRACBITS) { 327 » if (bitpos > 0) {
328 » » return lut_nmsedec_sig[(x >> (bitpos - T1_NMSEDEC_FRACBITS)) & ( (1 << T1_NMSEDEC_BITS) - 1)]; 328 » » return lut_nmsedec_sig[(x >> (bitpos)) & ((1 << T1_NMSEDEC_BITS) - 1)];
329 } 329 }
330 330
331 return lut_nmsedec_sig0[x & ((1 << T1_NMSEDEC_BITS) - 1)]; 331 return lut_nmsedec_sig0[x & ((1 << T1_NMSEDEC_BITS) - 1)];
332 } 332 }
333 333
334 OPJ_INT16 opj_t1_getnmsedec_ref(OPJ_UINT32 x, OPJ_UINT32 bitpos) { 334 static OPJ_INT16 opj_t1_getnmsedec_ref(OPJ_UINT32 x, OPJ_UINT32 bitpos) {
335 » if (bitpos > T1_NMSEDEC_FRACBITS) { 335 » if (bitpos > 0) {
336 » » return lut_nmsedec_ref[(x >> (bitpos - T1_NMSEDEC_FRACBITS)) & ( (1 << T1_NMSEDEC_BITS) - 1)]; 336 » » return lut_nmsedec_ref[(x >> (bitpos)) & ((1 << T1_NMSEDEC_BITS) - 1)];
337 } 337 }
338 338
339 return lut_nmsedec_ref0[x & ((1 << T1_NMSEDEC_BITS) - 1)]; 339 return lut_nmsedec_ref0[x & ((1 << T1_NMSEDEC_BITS) - 1)];
340 } 340 }
341 341
342 void opj_t1_updateflags(opj_flag_t *flagsp, OPJ_UINT32 s, OPJ_UINT32 stride) { 342 static void opj_t1_updateflags(opj_flag_t *flagsp, OPJ_UINT32 s, OPJ_UINT32 stri de) {
343 opj_flag_t *np = flagsp - stride; 343 opj_flag_t *np = flagsp - stride;
344 opj_flag_t *sp = flagsp + stride; 344 opj_flag_t *sp = flagsp + stride;
345 345
346 static const opj_flag_t mod[] = { 346 static const opj_flag_t mod[] = {
347 T1_SIG_S, T1_SIG_S|T1_SGN_S, 347 T1_SIG_S, T1_SIG_S|T1_SGN_S,
348 T1_SIG_E, T1_SIG_E|T1_SGN_E, 348 T1_SIG_E, T1_SIG_E|T1_SGN_E,
349 T1_SIG_W, T1_SIG_W|T1_SGN_W, 349 T1_SIG_W, T1_SIG_W|T1_SGN_W,
350 T1_SIG_N, T1_SIG_N|T1_SGN_N 350 T1_SIG_N, T1_SIG_N|T1_SGN_N
351 }; 351 };
352 352
353 np[-1] |= T1_SIG_SE; 353 np[-1] |= T1_SIG_SE;
354 np[0] |= mod[s]; 354 np[0] |= mod[s];
355 np[1] |= T1_SIG_SW; 355 np[1] |= T1_SIG_SW;
356 356
357 flagsp[-1] |= mod[s+2]; 357 flagsp[-1] |= mod[s+2];
358 flagsp[0] |= T1_SIG; 358 flagsp[0] |= T1_SIG;
359 flagsp[1] |= mod[s+4]; 359 flagsp[1] |= mod[s+4];
360 360
361 sp[-1] |= T1_SIG_NE; 361 sp[-1] |= T1_SIG_NE;
362 sp[0] |= mod[s+6]; 362 sp[0] |= mod[s+6];
363 sp[1] |= T1_SIG_NW; 363 sp[1] |= T1_SIG_NW;
364 } 364 }
365 365
366 void opj_t1_enc_sigpass_step( opj_t1_t *t1, 366 static void opj_t1_enc_sigpass_step( opj_t1_t *t1,
367 opj_flag_t *flagsp, 367 opj_flag_t *flagsp,
368 OPJ_INT32 *datap, 368 OPJ_INT32 *datap,
369 OPJ_UINT32 orient, 369 OPJ_UINT32 orient,
370 OPJ_INT32 bpno, 370 OPJ_INT32 bpno,
371 OPJ_INT32 one, 371 OPJ_INT32 one,
372 OPJ_INT32 *nmsedec, 372 OPJ_INT32 *nmsedec,
373 OPJ_BYTE type, 373 OPJ_BYTE type,
374 OPJ_UINT32 vsc 374 OPJ_UINT32 vsc
375 ) 375 )
376 { 376 {
377 OPJ_INT32 v; 377 OPJ_INT32 v;
378 OPJ_UINT32 flag; 378 OPJ_UINT32 flag;
379 379
380 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 380 opj_mqc_t *mqc = t1->mqc; /* MQC component */
381 381
382 flag = vsc ? (OPJ_UINT32)((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_S W | T1_SGN_S))) : (OPJ_UINT32)(*flagsp); 382 flag = vsc ? (OPJ_UINT32)((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_S W | T1_SGN_S))) : (OPJ_UINT32)(*flagsp);
383 if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) { 383 if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) {
384 v = opj_int_abs(*datap) & one ? 1 : 0; 384 v = opj_int_abs(*datap) & one ? 1 : 0;
385 opj_mqc_setcurctx(mqc, opj_t1_getctxno_zc(flag, orient)); /* ESSAI */ 385 opj_mqc_setcurctx(mqc, opj_t1_getctxno_zc(flag, orient)); /* ESSAI */
386 if (type == T1_TYPE_RAW) { /* BYPASS/LAZY MODE */ 386 if (type == T1_TYPE_RAW) { /* BYPASS/LAZY MODE */
387 opj_mqc_bypass_enc(mqc, (OPJ_UINT32)v); 387 opj_mqc_bypass_enc(mqc, (OPJ_UINT32)v);
388 } else { 388 } else {
389 opj_mqc_encode(mqc, (OPJ_UINT32)v); 389 opj_mqc_encode(mqc, (OPJ_UINT32)v);
390 } 390 }
391 if (v) { 391 if (v) {
392 v = *datap < 0 ? 1 : 0; 392 v = *datap < 0 ? 1 : 0;
393 » » » *nmsedec +=» opj_t1_getnmsedec_sig((OPJ_UINT32)opj_in t_abs(*datap), (OPJ_UINT32)(bpno + T1_NMSEDEC_FRACBITS)); 393 » » » *nmsedec +=» opj_t1_getnmsedec_sig((OPJ_UINT32)opj_in t_abs(*datap), (OPJ_UINT32)(bpno));
394 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc(flag)); /* ESSAI */ 394 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc(flag)); /* ESSAI */
395 if (type == T1_TYPE_RAW) { /* BYPASS/LAZY MODE */ 395 if (type == T1_TYPE_RAW) { /* BYPASS/LAZY MODE */
396 opj_mqc_bypass_enc(mqc, (OPJ_UINT32)v); 396 opj_mqc_bypass_enc(mqc, (OPJ_UINT32)v);
397 } else { 397 } else {
398 opj_mqc_encode(mqc, (OPJ_UINT32)(v ^ opj_t1_gets pb((OPJ_UINT32)flag))); 398 opj_mqc_encode(mqc, (OPJ_UINT32)(v ^ opj_t1_gets pb((OPJ_UINT32)flag)));
399 } 399 }
400 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->flags_stri de); 400 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->flags_stri de);
401 } 401 }
402 *flagsp |= T1_VISIT; 402 *flagsp |= T1_VISIT;
403 } 403 }
(...skipping 16 matching lines...) Expand all
420 if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) { 420 if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) {
421 if (opj_raw_decode(raw)) { 421 if (opj_raw_decode(raw)) {
422 v = (OPJ_INT32)opj_raw_decode(raw); /* ESSAI */ 422 v = (OPJ_INT32)opj_raw_decode(raw); /* ESSAI */
423 *datap = v ? -oneplushalf : oneplushalf; 423 *datap = v ? -oneplushalf : oneplushalf;
424 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->fl ags_stride); 424 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->fl ags_stride);
425 } 425 }
426 *flagsp |= T1_VISIT; 426 *flagsp |= T1_VISIT;
427 } 427 }
428 } 428 }
429 429
430 INLINE void opj_t1_dec_sigpass_step_mqc( 430 static INLINE void opj_t1_dec_sigpass_step_mqc(
431 opj_t1_t *t1, 431 opj_t1_t *t1,
432 opj_flag_t *flagsp, 432 opj_flag_t *flagsp,
433 OPJ_INT32 *datap, 433 OPJ_INT32 *datap,
434 OPJ_INT32 orient, 434 OPJ_INT32 orient,
435 OPJ_INT32 oneplushalf) 435 OPJ_INT32 oneplushalf)
436 { 436 {
437 OPJ_INT32 v, flag; 437 OPJ_INT32 v, flag;
438 438
439 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 439 opj_mqc_t *mqc = t1->mqc; /* MQC component */
440 440
441 flag = *flagsp; 441 flag = *flagsp;
442 if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) { 442 if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) {
443 opj_mqc_setcurctx(mqc, opj_t1_getctxno_zc((OPJ_UINT32)fl ag, (OPJ_UINT32)orient)); 443 opj_mqc_setcurctx(mqc, opj_t1_getctxno_zc((OPJ_UINT32)fl ag, (OPJ_UINT32)orient));
444 if (opj_mqc_decode(mqc)) { 444 if (opj_mqc_decode(mqc)) {
445 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_U INT32)flag)); 445 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_U INT32)flag));
446 v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UIN T32)flag); 446 v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UIN T32)flag);
447 *datap = v ? -oneplushalf : oneplushalf; 447 *datap = v ? -oneplushalf : oneplushalf;
448 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->fl ags_stride); 448 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->fl ags_stride);
449 } 449 }
450 *flagsp |= T1_VISIT; 450 *flagsp |= T1_VISIT;
451 } 451 }
452 } /* VSC and BYPASS by Antonin */ 452 } /* VSC and BYPASS by Antonin */
453 453
454 INLINE void opj_t1_dec_sigpass_step_mqc_vsc( 454 static INLINE void opj_t1_dec_sigpass_step_mqc_vsc(
455 opj_t1_t *t1, 455 opj_t1_t *t1,
456 opj_flag_t *flagsp, 456 opj_flag_t *flagsp,
457 OPJ_INT32 *datap, 457 OPJ_INT32 *datap,
458 OPJ_INT32 orient, 458 OPJ_INT32 orient,
459 OPJ_INT32 oneplushalf, 459 OPJ_INT32 oneplushalf,
460 OPJ_INT32 vsc) 460 OPJ_INT32 vsc)
461 { 461 {
462 OPJ_INT32 v, flag; 462 OPJ_INT32 v, flag;
463 463
464 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 464 opj_mqc_t *mqc = t1->mqc; /* MQC component */
465 465
466 flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S ))) : (*flagsp); 466 flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S ))) : (*flagsp);
467 if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) { 467 if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) {
468 opj_mqc_setcurctx(mqc, opj_t1_getctxno_zc((OPJ_UINT32)flag, (OPJ _UINT32)orient)); 468 opj_mqc_setcurctx(mqc, opj_t1_getctxno_zc((OPJ_UINT32)flag, (OPJ _UINT32)orient));
469 if (opj_mqc_decode(mqc)) { 469 if (opj_mqc_decode(mqc)) {
470 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)fl ag)); 470 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)fl ag));
471 v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag ); 471 v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag );
472 *datap = v ? -oneplushalf : oneplushalf; 472 *datap = v ? -oneplushalf : oneplushalf;
473 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->flags_stri de); 473 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->flags_stri de);
474 } 474 }
475 *flagsp |= T1_VISIT; 475 *flagsp |= T1_VISIT;
476 } 476 }
477 } /* VSC and BYPASS by Antonin */ 477 } /* VSC and BYPASS by Antonin */
478 478
479 479
480 480
481 void opj_t1_enc_sigpass(opj_t1_t *t1, 481 static void opj_t1_enc_sigpass(opj_t1_t *t1,
482 OPJ_INT32 bpno, 482 OPJ_INT32 bpno,
483 OPJ_UINT32 orient, 483 OPJ_UINT32 orient,
484 OPJ_INT32 *nmsedec, 484 OPJ_INT32 *nmsedec,
485 OPJ_BYTE type, 485 OPJ_BYTE type,
486 OPJ_UINT32 cblksty 486 OPJ_UINT32 cblksty
487 ) 487 )
488 { 488 {
489 OPJ_UINT32 i, j, k, vsc; 489 OPJ_UINT32 i, j, k, vsc;
490 OPJ_INT32 one; 490 OPJ_INT32 one;
491 491
(...skipping 11 matching lines...) Expand all
503 bpno, 503 bpno,
504 one, 504 one,
505 nmsedec, 505 nmsedec,
506 type, 506 type,
507 vsc); 507 vsc);
508 } 508 }
509 } 509 }
510 } 510 }
511 } 511 }
512 512
513 void opj_t1_dec_sigpass_raw( 513 static void opj_t1_dec_sigpass_raw(
514 opj_t1_t *t1, 514 opj_t1_t *t1,
515 OPJ_INT32 bpno, 515 OPJ_INT32 bpno,
516 OPJ_INT32 orient, 516 OPJ_INT32 orient,
517 OPJ_INT32 cblksty) 517 OPJ_INT32 cblksty)
518 { 518 {
519 OPJ_INT32 one, half, oneplushalf, vsc; 519 OPJ_INT32 one, half, oneplushalf, vsc;
520 OPJ_UINT32 i, j, k; 520 OPJ_UINT32 i, j, k;
521 one = 1 << bpno; 521 one = 1 << bpno;
522 half = one >> 1; 522 half = one >> 1;
523 oneplushalf = one | half; 523 oneplushalf = one | half;
524 for (k = 0; k < t1->h; k += 4) { 524 for (k = 0; k < t1->h; k += 4) {
525 for (i = 0; i < t1->w; ++i) { 525 for (i = 0; i < t1->w; ++i) {
526 for (j = k; j < k + 4 && j < t1->h; ++j) { 526 for (j = k; j < k + 4 && j < t1->h; ++j) {
527 vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == t1->h - 1)) ? 1 : 0; 527 vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == t1->h - 1)) ? 1 : 0;
528 opj_t1_dec_sigpass_step_raw( 528 opj_t1_dec_sigpass_step_raw(
529 t1, 529 t1,
530 &t1->flags[((j+1) * t1->flags_st ride) + i + 1], 530 &t1->flags[((j+1) * t1->flags_st ride) + i + 1],
531 &t1->data[(j * t1->w) + i], 531 &t1->data[(j * t1->w) + i],
532 orient, 532 orient,
533 oneplushalf, 533 oneplushalf,
534 vsc); 534 vsc);
535 } 535 }
536 } 536 }
537 } 537 }
538 } /* VSC and BYPASS by Antonin */ 538 } /* VSC and BYPASS by Antonin */
539 539
540 void opj_t1_dec_sigpass_mqc( 540 static void opj_t1_dec_sigpass_mqc(
541 opj_t1_t *t1, 541 opj_t1_t *t1,
542 OPJ_INT32 bpno, 542 OPJ_INT32 bpno,
543 OPJ_INT32 orient) 543 OPJ_INT32 orient)
544 { 544 {
545 OPJ_INT32 one, half, oneplushalf; 545 OPJ_INT32 one, half, oneplushalf;
546 OPJ_UINT32 i, j, k; 546 OPJ_UINT32 i, j, k;
547 OPJ_INT32 *data1 = t1->data; 547 OPJ_INT32 *data1 = t1->data;
548 opj_flag_t *flags1 = &t1->flags[1]; 548 opj_flag_t *flags1 = &t1->flags[1];
549 one = 1 << bpno; 549 one = 1 << bpno;
550 half = one >> 1; 550 half = one >> 1;
(...skipping 22 matching lines...) Expand all
573 OPJ_INT32 *data2 = data1 + i; 573 OPJ_INT32 *data2 = data1 + i;
574 opj_flag_t *flags2 = flags1 + i; 574 opj_flag_t *flags2 = flags1 + i;
575 for (j = k; j < t1->h; ++j) { 575 for (j = k; j < t1->h; ++j) {
576 flags2 += t1->flags_stride; 576 flags2 += t1->flags_stride;
577 opj_t1_dec_sigpass_step_mqc(t1, flags2, data2, orient, o neplushalf); 577 opj_t1_dec_sigpass_step_mqc(t1, flags2, data2, orient, o neplushalf);
578 data2 += t1->w; 578 data2 += t1->w;
579 } 579 }
580 } 580 }
581 } /* VSC and BYPASS by Antonin */ 581 } /* VSC and BYPASS by Antonin */
582 582
583 void opj_t1_dec_sigpass_mqc_vsc( 583 static void opj_t1_dec_sigpass_mqc_vsc(
584 opj_t1_t *t1, 584 opj_t1_t *t1,
585 OPJ_INT32 bpno, 585 OPJ_INT32 bpno,
586 OPJ_INT32 orient) 586 OPJ_INT32 orient)
587 { 587 {
588 OPJ_INT32 one, half, oneplushalf, vsc; 588 OPJ_INT32 one, half, oneplushalf, vsc;
589 OPJ_UINT32 i, j, k; 589 OPJ_UINT32 i, j, k;
590 one = 1 << bpno; 590 one = 1 << bpno;
591 half = one >> 1; 591 half = one >> 1;
592 oneplushalf = one | half; 592 oneplushalf = one | half;
593 for (k = 0; k < t1->h; k += 4) { 593 for (k = 0; k < t1->h; k += 4) {
594 for (i = 0; i < t1->w; ++i) { 594 for (i = 0; i < t1->w; ++i) {
595 for (j = k; j < k + 4 && j < t1->h; ++j) { 595 for (j = k; j < k + 4 && j < t1->h; ++j) {
596 vsc = (j == k + 3 || j == t1->h - 1) ? 1 : 0; 596 vsc = (j == k + 3 || j == t1->h - 1) ? 1 : 0;
597 opj_t1_dec_sigpass_step_mqc_vsc( 597 opj_t1_dec_sigpass_step_mqc_vsc(
598 t1, 598 t1,
599 &t1->flags[((j+1) * t1->flags_st ride) + i + 1], 599 &t1->flags[((j+1) * t1->flags_st ride) + i + 1],
600 &t1->data[(j * t1->w) + i], 600 &t1->data[(j * t1->w) + i],
601 orient, 601 orient,
602 oneplushalf, 602 oneplushalf,
603 vsc); 603 vsc);
604 } 604 }
605 } 605 }
606 } 606 }
607 } /* VSC and BYPASS by Antonin */ 607 } /* VSC and BYPASS by Antonin */
608 608
609 609
610 610
611 void opj_t1_enc_refpass_step( opj_t1_t *t1, 611 static void opj_t1_enc_refpass_step( opj_t1_t *t1,
612 opj_flag_t *flagsp, 612 opj_flag_t *flagsp,
613 OPJ_INT32 *datap, 613 OPJ_INT32 *datap,
614 OPJ_INT32 bpno, 614 OPJ_INT32 bpno,
615 OPJ_INT32 one, 615 OPJ_INT32 one,
616 OPJ_INT32 *nmsedec, 616 OPJ_INT32 *nmsedec,
617 OPJ_BYTE type, 617 OPJ_BYTE type,
618 OPJ_UINT32 vsc) 618 OPJ_UINT32 vsc)
619 { 619 {
620 OPJ_INT32 v; 620 OPJ_INT32 v;
621 OPJ_UINT32 flag; 621 OPJ_UINT32 flag;
622 622
623 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 623 opj_mqc_t *mqc = t1->mqc; /* MQC component */
624 624
625 flag = vsc ? (OPJ_UINT32)((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_S W | T1_SGN_S))) : (OPJ_UINT32)(*flagsp); 625 flag = vsc ? (OPJ_UINT32)((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_S W | T1_SGN_S))) : (OPJ_UINT32)(*flagsp);
626 if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) { 626 if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) {
627 » » *nmsedec += opj_t1_getnmsedec_ref((OPJ_UINT32)opj_int_abs(*datap ), (OPJ_UINT32)(bpno + T1_NMSEDEC_FRACBITS)); 627 » » *nmsedec += opj_t1_getnmsedec_ref((OPJ_UINT32)opj_int_abs(*datap ), (OPJ_UINT32)(bpno));
628 v = opj_int_abs(*datap) & one ? 1 : 0; 628 v = opj_int_abs(*datap) & one ? 1 : 0;
629 opj_mqc_setcurctx(mqc, opj_t1_getctxno_mag(flag)); /* ESSAI */ 629 opj_mqc_setcurctx(mqc, opj_t1_getctxno_mag(flag)); /* ESSAI */
630 if (type == T1_TYPE_RAW) { /* BYPASS/LAZY MODE */ 630 if (type == T1_TYPE_RAW) { /* BYPASS/LAZY MODE */
631 opj_mqc_bypass_enc(mqc, (OPJ_UINT32)v); 631 opj_mqc_bypass_enc(mqc, (OPJ_UINT32)v);
632 } else { 632 } else {
633 opj_mqc_encode(mqc, (OPJ_UINT32)v); 633 opj_mqc_encode(mqc, (OPJ_UINT32)v);
634 } 634 }
635 *flagsp |= T1_REFINE; 635 *flagsp |= T1_REFINE;
636 } 636 }
637 } 637 }
638 638
639 INLINE void opj_t1_dec_refpass_step_raw( 639 static INLINE void opj_t1_dec_refpass_step_raw(
640 opj_t1_t *t1, 640 opj_t1_t *t1,
641 opj_flag_t *flagsp, 641 opj_flag_t *flagsp,
642 OPJ_INT32 *datap, 642 OPJ_INT32 *datap,
643 OPJ_INT32 poshalf, 643 OPJ_INT32 poshalf,
644 OPJ_INT32 neghalf, 644 OPJ_INT32 neghalf,
645 OPJ_INT32 vsc) 645 OPJ_INT32 vsc)
646 { 646 {
647 OPJ_INT32 v, t, flag; 647 OPJ_INT32 v, t, flag;
648 648
649 opj_raw_t *raw = t1->raw; /* RAW component */ 649 opj_raw_t *raw = t1->raw; /* RAW component */
650 650
651 flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S ))) : (*flagsp); 651 flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S ))) : (*flagsp);
652 if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) { 652 if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) {
653 v = (OPJ_INT32)opj_raw_decode(raw); 653 v = (OPJ_INT32)opj_raw_decode(raw);
654 t = v ? poshalf : neghalf; 654 t = v ? poshalf : neghalf;
655 *datap += *datap < 0 ? -t : t; 655 *datap += *datap < 0 ? -t : t;
656 *flagsp |= T1_REFINE; 656 *flagsp |= T1_REFINE;
657 } 657 }
658 } /* VSC and BYPASS by Antonin */ 658 } /* VSC and BYPASS by Antonin */
659 659
660 INLINE void opj_t1_dec_refpass_step_mqc( 660 static INLINE void opj_t1_dec_refpass_step_mqc(
661 opj_t1_t *t1, 661 opj_t1_t *t1,
662 opj_flag_t *flagsp, 662 opj_flag_t *flagsp,
663 OPJ_INT32 *datap, 663 OPJ_INT32 *datap,
664 OPJ_INT32 poshalf, 664 OPJ_INT32 poshalf,
665 OPJ_INT32 neghalf) 665 OPJ_INT32 neghalf)
666 { 666 {
667 OPJ_INT32 v, t, flag; 667 OPJ_INT32 v, t, flag;
668 668
669 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 669 opj_mqc_t *mqc = t1->mqc; /* MQC component */
670 670
671 flag = *flagsp; 671 flag = *flagsp;
672 if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) { 672 if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) {
673 opj_mqc_setcurctx(mqc, opj_t1_getctxno_mag((OPJ_UINT32)flag)); /* ESSAI */ 673 opj_mqc_setcurctx(mqc, opj_t1_getctxno_mag((OPJ_UINT32)flag)); /* ESSAI */
674 v = opj_mqc_decode(mqc); 674 v = opj_mqc_decode(mqc);
675 t = v ? poshalf : neghalf; 675 t = v ? poshalf : neghalf;
676 *datap += *datap < 0 ? -t : t; 676 *datap += *datap < 0 ? -t : t;
677 *flagsp |= T1_REFINE; 677 *flagsp |= T1_REFINE;
678 } 678 }
679 } /* VSC and BYPASS by Antonin */ 679 } /* VSC and BYPASS by Antonin */
680 680
681 INLINE void opj_t1_dec_refpass_step_mqc_vsc( 681 static INLINE void opj_t1_dec_refpass_step_mqc_vsc(
682 opj_t1_t *t1, 682 opj_t1_t *t1,
683 opj_flag_t *flagsp, 683 opj_flag_t *flagsp,
684 OPJ_INT32 *datap, 684 OPJ_INT32 *datap,
685 OPJ_INT32 poshalf, 685 OPJ_INT32 poshalf,
686 OPJ_INT32 neghalf, 686 OPJ_INT32 neghalf,
687 OPJ_INT32 vsc) 687 OPJ_INT32 vsc)
688 { 688 {
689 OPJ_INT32 v, t, flag; 689 OPJ_INT32 v, t, flag;
690 690
691 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 691 opj_mqc_t *mqc = t1->mqc; /* MQC component */
692 692
693 flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S ))) : (*flagsp); 693 flag = vsc ? ((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S ))) : (*flagsp);
694 if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) { 694 if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) {
695 opj_mqc_setcurctx(mqc, opj_t1_getctxno_mag((OPJ_UINT32)flag)); /* ESSAI */ 695 opj_mqc_setcurctx(mqc, opj_t1_getctxno_mag((OPJ_UINT32)flag)); /* ESSAI */
696 v = opj_mqc_decode(mqc); 696 v = opj_mqc_decode(mqc);
697 t = v ? poshalf : neghalf; 697 t = v ? poshalf : neghalf;
698 *datap += *datap < 0 ? -t : t; 698 *datap += *datap < 0 ? -t : t;
699 *flagsp |= T1_REFINE; 699 *flagsp |= T1_REFINE;
700 } 700 }
701 } /* VSC and BYPASS by Antonin */ 701 } /* VSC and BYPASS by Antonin */
702 702
703 703
704 void opj_t1_enc_refpass( 704 static void opj_t1_enc_refpass(
705 opj_t1_t *t1, 705 opj_t1_t *t1,
706 OPJ_INT32 bpno, 706 OPJ_INT32 bpno,
707 OPJ_INT32 *nmsedec, 707 OPJ_INT32 *nmsedec,
708 OPJ_BYTE type, 708 OPJ_BYTE type,
709 OPJ_UINT32 cblksty) 709 OPJ_UINT32 cblksty)
710 { 710 {
711 OPJ_UINT32 i, j, k, vsc; 711 OPJ_UINT32 i, j, k, vsc;
712 OPJ_INT32 one; 712 OPJ_INT32 one;
713 713
714 *nmsedec = 0; 714 *nmsedec = 0;
715 one = 1 << (bpno + T1_NMSEDEC_FRACBITS); 715 one = 1 << (bpno + T1_NMSEDEC_FRACBITS);
716 for (k = 0; k < t1->h; k += 4) { 716 for (k = 0; k < t1->h; k += 4) {
717 for (i = 0; i < t1->w; ++i) { 717 for (i = 0; i < t1->w; ++i) {
718 for (j = k; j < k + 4 && j < t1->h; ++j) { 718 for (j = k; j < k + 4 && j < t1->h; ++j) {
719 vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == t1->h - 1)) ? 1 : 0; 719 vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == t1->h - 1)) ? 1 : 0;
720 opj_t1_enc_refpass_step( 720 opj_t1_enc_refpass_step(
721 t1, 721 t1,
722 &t1->flags[((j+1) * t1->flags_st ride) + i + 1], 722 &t1->flags[((j+1) * t1->flags_st ride) + i + 1],
723 &t1->data[(j * t1->data_stride) + i], 723 &t1->data[(j * t1->data_stride) + i],
724 bpno, 724 bpno,
725 one, 725 one,
726 nmsedec, 726 nmsedec,
727 type, 727 type,
728 vsc); 728 vsc);
729 } 729 }
730 } 730 }
731 } 731 }
732 } 732 }
733 733
734 void opj_t1_dec_refpass_raw( 734 static void opj_t1_dec_refpass_raw(
735 opj_t1_t *t1, 735 opj_t1_t *t1,
736 OPJ_INT32 bpno, 736 OPJ_INT32 bpno,
737 OPJ_INT32 cblksty) 737 OPJ_INT32 cblksty)
738 { 738 {
739 OPJ_INT32 one, poshalf, neghalf; 739 OPJ_INT32 one, poshalf, neghalf;
740 OPJ_UINT32 i, j, k; 740 OPJ_UINT32 i, j, k;
741 OPJ_INT32 vsc; 741 OPJ_INT32 vsc;
742 one = 1 << bpno; 742 one = 1 << bpno;
743 poshalf = one >> 1; 743 poshalf = one >> 1;
744 neghalf = bpno > 0 ? -poshalf : -1; 744 neghalf = bpno > 0 ? -poshalf : -1;
745 for (k = 0; k < t1->h; k += 4) { 745 for (k = 0; k < t1->h; k += 4) {
746 for (i = 0; i < t1->w; ++i) { 746 for (i = 0; i < t1->w; ++i) {
747 for (j = k; j < k + 4 && j < t1->h; ++j) { 747 for (j = k; j < k + 4 && j < t1->h; ++j) {
748 vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == t1->h - 1)) ? 1 : 0; 748 vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == t1->h - 1)) ? 1 : 0;
749 opj_t1_dec_refpass_step_raw( 749 opj_t1_dec_refpass_step_raw(
750 t1, 750 t1,
751 &t1->flags[((j+1) * t1->flags_st ride) + i + 1], 751 &t1->flags[((j+1) * t1->flags_st ride) + i + 1],
752 &t1->data[(j * t1->w) + i], 752 &t1->data[(j * t1->w) + i],
753 poshalf, 753 poshalf,
754 neghalf, 754 neghalf,
755 vsc); 755 vsc);
756 } 756 }
757 } 757 }
758 } 758 }
759 } /* VSC and BYPASS by Antonin */ 759 } /* VSC and BYPASS by Antonin */
760 760
761 void opj_t1_dec_refpass_mqc( 761 static void opj_t1_dec_refpass_mqc(
762 opj_t1_t *t1, 762 opj_t1_t *t1,
763 OPJ_INT32 bpno) 763 OPJ_INT32 bpno)
764 { 764 {
765 OPJ_INT32 one, poshalf, neghalf; 765 OPJ_INT32 one, poshalf, neghalf;
766 OPJ_UINT32 i, j, k; 766 OPJ_UINT32 i, j, k;
767 OPJ_INT32 *data1 = t1->data; 767 OPJ_INT32 *data1 = t1->data;
768 opj_flag_t *flags1 = &t1->flags[1]; 768 opj_flag_t *flags1 = &t1->flags[1];
769 one = 1 << bpno; 769 one = 1 << bpno;
770 poshalf = one >> 1; 770 poshalf = one >> 1;
771 neghalf = bpno > 0 ? -poshalf : -1; 771 neghalf = bpno > 0 ? -poshalf : -1;
(...skipping 21 matching lines...) Expand all
793 OPJ_INT32 *data2 = data1 + i; 793 OPJ_INT32 *data2 = data1 + i;
794 opj_flag_t *flags2 = flags1 + i; 794 opj_flag_t *flags2 = flags1 + i;
795 for (j = k; j < t1->h; ++j) { 795 for (j = k; j < t1->h; ++j) {
796 flags2 += t1->flags_stride; 796 flags2 += t1->flags_stride;
797 opj_t1_dec_refpass_step_mqc(t1, flags2, data2, poshalf, neghalf); 797 opj_t1_dec_refpass_step_mqc(t1, flags2, data2, poshalf, neghalf);
798 data2 += t1->w; 798 data2 += t1->w;
799 } 799 }
800 } 800 }
801 } /* VSC and BYPASS by Antonin */ 801 } /* VSC and BYPASS by Antonin */
802 802
803 void opj_t1_dec_refpass_mqc_vsc( 803 static void opj_t1_dec_refpass_mqc_vsc(
804 opj_t1_t *t1, 804 opj_t1_t *t1,
805 OPJ_INT32 bpno) 805 OPJ_INT32 bpno)
806 { 806 {
807 OPJ_INT32 one, poshalf, neghalf; 807 OPJ_INT32 one, poshalf, neghalf;
808 OPJ_UINT32 i, j, k; 808 OPJ_UINT32 i, j, k;
809 OPJ_INT32 vsc; 809 OPJ_INT32 vsc;
810 one = 1 << bpno; 810 one = 1 << bpno;
811 poshalf = one >> 1; 811 poshalf = one >> 1;
812 neghalf = bpno > 0 ? -poshalf : -1; 812 neghalf = bpno > 0 ? -poshalf : -1;
813 for (k = 0; k < t1->h; k += 4) { 813 for (k = 0; k < t1->h; k += 4) {
814 for (i = 0; i < t1->w; ++i) { 814 for (i = 0; i < t1->w; ++i) {
815 for (j = k; j < k + 4 && j < t1->h; ++j) { 815 for (j = k; j < k + 4 && j < t1->h; ++j) {
816 vsc = ((j == k + 3 || j == t1->h - 1)) ? 1 : 0; 816 vsc = ((j == k + 3 || j == t1->h - 1)) ? 1 : 0;
817 opj_t1_dec_refpass_step_mqc_vsc( 817 opj_t1_dec_refpass_step_mqc_vsc(
818 t1, 818 t1,
819 &t1->flags[((j+1) * t1->flags_st ride) + i + 1], 819 &t1->flags[((j+1) * t1->flags_st ride) + i + 1],
820 &t1->data[(j * t1->w) + i], 820 &t1->data[(j * t1->w) + i],
821 poshalf, 821 poshalf,
822 neghalf, 822 neghalf,
823 vsc); 823 vsc);
824 } 824 }
825 } 825 }
826 } 826 }
827 } /* VSC and BYPASS by Antonin */ 827 } /* VSC and BYPASS by Antonin */
828 828
829 829
830 void opj_t1_enc_clnpass_step( 830 static void opj_t1_enc_clnpass_step(
831 opj_t1_t *t1, 831 opj_t1_t *t1,
832 opj_flag_t *flagsp, 832 opj_flag_t *flagsp,
833 OPJ_INT32 *datap, 833 OPJ_INT32 *datap,
834 OPJ_UINT32 orient, 834 OPJ_UINT32 orient,
835 OPJ_INT32 bpno, 835 OPJ_INT32 bpno,
836 OPJ_INT32 one, 836 OPJ_INT32 one,
837 OPJ_INT32 *nmsedec, 837 OPJ_INT32 *nmsedec,
838 OPJ_UINT32 partial, 838 OPJ_UINT32 partial,
839 OPJ_UINT32 vsc) 839 OPJ_UINT32 vsc)
840 { 840 {
841 OPJ_INT32 v; 841 OPJ_INT32 v;
842 OPJ_UINT32 flag; 842 OPJ_UINT32 flag;
843 843
844 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 844 opj_mqc_t *mqc = t1->mqc; /* MQC component */
845 845
846 flag = vsc ? (OPJ_UINT32)((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_S W | T1_SGN_S))) : (OPJ_UINT32)(*flagsp); 846 flag = vsc ? (OPJ_UINT32)((*flagsp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_S W | T1_SGN_S))) : (OPJ_UINT32)(*flagsp);
847 if (partial) { 847 if (partial) {
848 goto LABEL_PARTIAL; 848 goto LABEL_PARTIAL;
849 } 849 }
850 if (!(*flagsp & (T1_SIG | T1_VISIT))) { 850 if (!(*flagsp & (T1_SIG | T1_VISIT))) {
851 opj_mqc_setcurctx(mqc, opj_t1_getctxno_zc(flag, orient)); 851 opj_mqc_setcurctx(mqc, opj_t1_getctxno_zc(flag, orient));
852 v = opj_int_abs(*datap) & one ? 1 : 0; 852 v = opj_int_abs(*datap) & one ? 1 : 0;
853 opj_mqc_encode(mqc, (OPJ_UINT32)v); 853 opj_mqc_encode(mqc, (OPJ_UINT32)v);
854 if (v) { 854 if (v) {
855 LABEL_PARTIAL: 855 LABEL_PARTIAL:
856 » » » *nmsedec += opj_t1_getnmsedec_sig((OPJ_UINT32)opj_int_ab s(*datap), (OPJ_UINT32)(bpno + T1_NMSEDEC_FRACBITS)); 856 » » » *nmsedec += opj_t1_getnmsedec_sig((OPJ_UINT32)opj_int_ab s(*datap), (OPJ_UINT32)(bpno));
857 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc(flag)); 857 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc(flag));
858 v = *datap < 0 ? 1 : 0; 858 v = *datap < 0 ? 1 : 0;
859 opj_mqc_encode(mqc, (OPJ_UINT32)(v ^ opj_t1_getspb((OPJ_ UINT32)flag))); 859 opj_mqc_encode(mqc, (OPJ_UINT32)(v ^ opj_t1_getspb((OPJ_ UINT32)flag)));
860 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->flags_stri de); 860 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->flags_stri de);
861 } 861 }
862 } 862 }
863 *flagsp &= ~T1_VISIT; 863 *flagsp &= ~T1_VISIT;
864 } 864 }
865 865
866 static void opj_t1_dec_clnpass_step_partial( 866 static void opj_t1_dec_clnpass_step_partial(
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 LABEL_PARTIAL: 930 LABEL_PARTIAL:
931 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)fl ag)); 931 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)fl ag));
932 v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag ); 932 v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag );
933 *datap = v ? -oneplushalf : oneplushalf; 933 *datap = v ? -oneplushalf : oneplushalf;
934 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->flags_stri de); 934 opj_t1_updateflags(flagsp, (OPJ_UINT32)v, t1->flags_stri de);
935 } 935 }
936 } 936 }
937 *flagsp &= ~T1_VISIT; 937 *flagsp &= ~T1_VISIT;
938 } 938 }
939 939
940 void opj_t1_enc_clnpass( 940 static void opj_t1_enc_clnpass(
941 opj_t1_t *t1, 941 opj_t1_t *t1,
942 OPJ_INT32 bpno, 942 OPJ_INT32 bpno,
943 OPJ_UINT32 orient, 943 OPJ_UINT32 orient,
944 OPJ_INT32 *nmsedec, 944 OPJ_INT32 *nmsedec,
945 OPJ_UINT32 cblksty) 945 OPJ_UINT32 cblksty)
946 { 946 {
947 OPJ_UINT32 i, j, k; 947 OPJ_UINT32 i, j, k;
948 OPJ_INT32 one; 948 OPJ_INT32 one;
949 OPJ_UINT32 agg, runlen, vsc; 949 OPJ_UINT32 agg, runlen, vsc;
950 950
951 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 951 opj_mqc_t *mqc = t1->mqc; /* MQC component */
952 952
953 *nmsedec = 0; 953 *nmsedec = 0;
954 one = 1 << (bpno + T1_NMSEDEC_FRACBITS); 954 one = 1 << (bpno + T1_NMSEDEC_FRACBITS);
955 for (k = 0; k < t1->h; k += 4) { 955 for (k = 0; k < t1->h; k += 4) {
956 for (i = 0; i < t1->w; ++i) { 956 for (i = 0; i < t1->w; ++i) {
957 if (k + 3 < t1->h) { 957 if (k + 3 < t1->h) {
958 if (cblksty & J2K_CCP_CBLKSTY_VSC) { 958 if (cblksty & J2K_CCP_CBLKSTY_VSC) {
959 agg = !(MACRO_t1_flags(1 + k,1 + i) & (T 1_SIG | T1_VISIT | T1_SIG_OTH) 959 agg = !(MACRO_t1_flags(1 + k,1 + i) & (T 1_SIG | T1_VISIT | T1_SIG_OTH)
960 || MACRO_t1_flags(1 + k + 1,1 + i) & (T1_SIG | T1_VISIT | T1_SIG_OTH) 960 || MACRO_t1_flags(1 + k + 1,1 + i) & (T1_SIG | T1_VISIT | T1_SIG_OTH)
961 || MACRO_t1_flags(1 + k + 2,1 + i) & (T1_SIG | T1_VISIT | T1_SIG_OTH) 961 || MACRO_t1_flags(1 + k + 2,1 + i) & (T1_SIG | T1_VISIT | T1_SIG_OTH)
962 || (MACRO_t1_flags(1 + k + 3,1 + i) 962 || (MACRO_t1_flags(1 + k + 3,1 + i)
963 & (~(T1_SIG_S | T1_SIG_SE | T1_S IG_SW | T1_SGN_S))) & (T1_SIG | T1_VISIT | T1_SIG_OTH)); 963 & (~(T1_SIG_S | T1_SIG_SE | T1_S IG_SW | T1_SGN_S))) & (T1_SIG | T1_VISIT | T1_SIG_OTH));
964 } else { 964 } else {
965 » » » » » agg = !(MACRO_t1_flags(1 + k,1 + i) & (T 1_SIG | T1_VISIT | T1_SIG_OTH) 965 » » » » » agg = !((MACRO_t1_flags(1 + k,1 + i) |
966 » » » » » » || MACRO_t1_flags(1 + k + 1,1 + i) & (T1_SIG | T1_VISIT | T1_SIG_OTH) 966 » » » » » » MACRO_t1_flags(1 + k + 1,1 + i) |
967 » » » » » » || MACRO_t1_flags(1 + k + 2,1 + i) & (T1_SIG | T1_VISIT | T1_SIG_OTH) 967 » » » » » » MACRO_t1_flags(1 + k + 2,1 + i) |
968 » » » » » » || MACRO_t1_flags(1 + k + 3,1 + i) & (T1_SIG | T1_VISIT | T1_SIG_OTH)); 968 » » » » » » MACRO_t1_flags(1 + k + 3,1 + i)) & (T1_SIG | T1_VISIT | T1_SIG_OTH));
969 } 969 }
970 } else { 970 } else {
971 agg = 0; 971 agg = 0;
972 } 972 }
973 if (agg) { 973 if (agg) {
974 for (runlen = 0; runlen < 4; ++runlen) { 974 for (runlen = 0; runlen < 4; ++runlen) {
975 if (opj_int_abs(t1->data[((k + runlen)*t 1->data_stride) + i]) & one) 975 if (opj_int_abs(t1->data[((k + runlen)*t 1->data_stride) + i]) & one)
976 break; 976 break;
977 } 977 }
978 opj_mqc_setcurctx(mqc, T1_CTXNO_AGG); 978 opj_mqc_setcurctx(mqc, T1_CTXNO_AGG);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 } 1054 }
1055 } 1055 }
1056 } 1056 }
1057 } else { 1057 } else {
1058 OPJ_INT32 *data1 = t1->data; 1058 OPJ_INT32 *data1 = t1->data;
1059 opj_flag_t *flags1 = &t1->flags[1]; 1059 opj_flag_t *flags1 = &t1->flags[1];
1060 for (k = 0; k < (t1->h & ~3u); k += 4) { 1060 for (k = 0; k < (t1->h & ~3u); k += 4) {
1061 for (i = 0; i < t1->w; ++i) { 1061 for (i = 0; i < t1->w; ++i) {
1062 OPJ_INT32 *data2 = data1 + i; 1062 OPJ_INT32 *data2 = data1 + i;
1063 opj_flag_t *flags2 = flags1 + i; 1063 opj_flag_t *flags2 = flags1 + i;
1064 » » » » agg = !(MACRO_t1_flags(1 + k,1 + i) & (T1_SIG | T1_VISIT | T1_SIG_OTH) 1064 » » » » agg = !((MACRO_t1_flags(1 + k, 1 + i) |
1065 » » » » » || MACRO_t1_flags(1 + k + 1,1 + i) & (T1 _SIG | T1_VISIT | T1_SIG_OTH) 1065 » » » » » » » MACRO_t1_flags(1 + k + 1 , 1 + i) |
1066 » » » » » || MACRO_t1_flags(1 + k + 2,1 + i) & (T1 _SIG | T1_VISIT | T1_SIG_OTH) 1066 » » » » » » » MACRO_t1_flags(1 + k + 2 , 1 + i) |
1067 » » » » » || MACRO_t1_flags(1 + k + 3,1 + i) & (T1 _SIG | T1_VISIT | T1_SIG_OTH)); 1067 » » » » » » » MACRO_t1_flags(1 + k + 3 , 1 + i)) & (T1_SIG | T1_VISIT | T1_SIG_OTH));
1068 if (agg) { 1068 if (agg) {
1069 opj_mqc_setcurctx(mqc, T1_CTXNO_AGG); 1069 opj_mqc_setcurctx(mqc, T1_CTXNO_AGG);
1070 if (!opj_mqc_decode(mqc)) { 1070 if (!opj_mqc_decode(mqc)) {
1071 continue; 1071 continue;
1072 } 1072 }
1073 opj_mqc_setcurctx(mqc, T1_CTXNO_UNI); 1073 opj_mqc_setcurctx(mqc, T1_CTXNO_UNI);
1074 runlen = opj_mqc_decode(mqc); 1074 runlen = opj_mqc_decode(mqc);
1075 runlen = (runlen << 1) | opj_mqc_decode( mqc); 1075 runlen = (runlen << 1) | opj_mqc_decode( mqc);
1076 flags2 += (OPJ_UINT32)runlen * t1->flags _stride; 1076 flags2 += (OPJ_UINT32)runlen * t1->flags _stride;
1077 data2 += (OPJ_UINT32)runlen * t1->w; 1077 data2 += (OPJ_UINT32)runlen * t1->w;
1078 » » » » » for (j = k + (OPJ_UINT32)runlen; j < k + 4 && j < t1->h; ++j) { 1078 » » » » » for (j = (OPJ_UINT32)runlen; j < 4 && j < t1->h; ++j) {
1079 flags2 += t1->flags_stride; 1079 flags2 += t1->flags_stride;
1080 » » » » » » if (agg && (j == k + (OPJ_UINT32 )runlen)) { 1080 » » » » » » if (agg && (j == (OPJ_UINT32)run len)) {
1081 opj_t1_dec_clnpass_step_ partial(t1, flags2, data2, orient, oneplushalf); 1081 opj_t1_dec_clnpass_step_ partial(t1, flags2, data2, orient, oneplushalf);
1082 } else { 1082 } else {
1083 opj_t1_dec_clnpass_step( t1, flags2, data2, orient, oneplushalf); 1083 opj_t1_dec_clnpass_step( t1, flags2, data2, orient, oneplushalf);
1084 } 1084 }
1085 data2 += t1->w; 1085 data2 += t1->w;
1086 } 1086 }
1087 } else { 1087 } else {
1088 flags2 += t1->flags_stride; 1088 flags2 += t1->flags_stride;
1089 opj_t1_dec_clnpass_step(t1, flags2, data 2, orient, oneplushalf); 1089 opj_t1_dec_clnpass_step(t1, flags2, data 2, orient, oneplushalf);
1090 data2 += t1->w; 1090 data2 += t1->w;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 } else { /* if (qmfbid == 0) */ 1154 } else { /* if (qmfbid == 0) */
1155 w2 = opj_dwt_getnorm_real(level, orient); 1155 w2 = opj_dwt_getnorm_real(level, orient);
1156 } 1156 }
1157 1157
1158 wmsedec = w1 * w2 * stepsize * (1 << bpno); 1158 wmsedec = w1 * w2 * stepsize * (1 << bpno);
1159 wmsedec *= wmsedec * nmsedec / 8192.0; 1159 wmsedec *= wmsedec * nmsedec / 8192.0;
1160 1160
1161 return wmsedec; 1161 return wmsedec;
1162 } 1162 }
1163 1163
1164 OPJ_BOOL opj_t1_allocate_buffers( 1164 static OPJ_BOOL opj_t1_allocate_buffers(
1165 opj_t1_t *t1, 1165 opj_t1_t *t1,
1166 OPJ_UINT32 w, 1166 OPJ_UINT32 w,
1167 OPJ_UINT32 h) 1167 OPJ_UINT32 h)
1168 { 1168 {
1169 OPJ_UINT32 datasize=w * h; 1169 OPJ_UINT32 datasize=w * h;
1170 OPJ_UINT32 flagssize; 1170 OPJ_UINT32 flagssize;
1171 1171
1172 /* encoder uses tile buffer, so no need to allocate */ 1172 /* encoder uses tile buffer, so no need to allocate */
1173 if (!t1->encoder) { 1173 if (!t1->encoder) {
1174 if(datasize > t1->datasize){ 1174 if(datasize > t1->datasize){
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 1281
1282 for (bandno = 0; bandno < res->numbands; ++bandno) { 1282 for (bandno = 0; bandno < res->numbands; ++bandno) {
1283 opj_tcd_band_t* restrict band = &res->bands[bandno]; 1283 opj_tcd_band_t* restrict band = &res->bands[bandno];
1284 1284
1285 for (precno = 0; precno < res->pw * res->ph; ++precno) { 1285 for (precno = 0; precno < res->pw * res->ph; ++precno) {
1286 opj_tcd_precinct_t* precinct = &band->precincts[ precno]; 1286 opj_tcd_precinct_t* precinct = &band->precincts[ precno];
1287 1287
1288 for (cblkno = 0; cblkno < precinct->cw * precinc t->ch; ++cblkno) { 1288 for (cblkno = 0; cblkno < precinct->cw * precinc t->ch; ++cblkno) {
1289 opj_tcd_cblk_dec_t* cblk = &precinct->cb lks.dec[cblkno]; 1289 opj_tcd_cblk_dec_t* cblk = &precinct->cb lks.dec[cblkno];
1290 OPJ_INT32* restrict datap; 1290 OPJ_INT32* restrict datap;
1291 /*void* restrict tiledp;*/
1292 OPJ_UINT32 cblk_w, cblk_h; 1291 OPJ_UINT32 cblk_w, cblk_h;
1293 OPJ_INT32 x, y; 1292 OPJ_INT32 x, y;
1294 OPJ_UINT32 i, j; 1293 OPJ_UINT32 i, j;
1295 1294
1296 if (OPJ_FALSE == opj_t1_decode_cblk( 1295 if (OPJ_FALSE == opj_t1_decode_cblk(
1297 t1, 1296 t1,
1298 cblk, 1297 cblk,
1299 band->bandno, 1298 band->bandno,
1300 (OPJ_UINT32)tccp->roishift, 1299 (OPJ_UINT32)tccp->roishift,
1301 tccp->cblksty)) { 1300 tccp->cblksty)) {
(...skipping 21 matching lines...) Expand all
1323 for (i = 0; i < cblk_w; ++i) { 1322 for (i = 0; i < cblk_w; ++i) {
1324 OPJ_INT32 val = datap[(j * cblk_w) + i]; 1323 OPJ_INT32 val = datap[(j * cblk_w) + i];
1325 OPJ_INT32 mag = abs(val); 1324 OPJ_INT32 mag = abs(val);
1326 if (mag >= thres h) { 1325 if (mag >= thres h) {
1327 mag >>= tccp->roishift; 1326 mag >>= tccp->roishift;
1328 datap[(j * cblk_w) + i] = val < 0 ? -mag : mag; 1327 datap[(j * cblk_w) + i] = val < 0 ? -mag : mag;
1329 } 1328 }
1330 } 1329 }
1331 } 1330 }
1332 } 1331 }
1333
1334 /*tiledp=(void*)&tilec->data[(y * tile_w ) + x];*/
1335 if (tccp->qmfbid == 1) { 1332 if (tccp->qmfbid == 1) {
1336 OPJ_INT32* restrict tiledp = &tilec->data[(OPJ_UINT32)y * tile_w + (OPJ_UINT32)x]; 1333 OPJ_INT32* restrict tiledp = &tilec->data[(OPJ_UINT32)y * tile_w + (OPJ_UINT32)x];
1337 for (j = 0; j < cblk_h; ++j) { 1334 for (j = 0; j < cblk_h; ++j) {
1338 for (i = 0; i < cblk_w; ++i) { 1335 for (i = 0; i < cblk_w; ++i) {
1339 OPJ_INT32 tmp = datap[(j * cblk_w) + i]; 1336 OPJ_INT32 tmp = datap[(j * cblk_w) + i];
1340 » » » » » » » » ((OPJ_INT32*)til edp)[(j * tile_w) + i] = tmp / 2; 1337 » » » » » » » » ((OPJ_INT32*)til edp)[(j * tile_w) + i] = tmp/2;
1341 } 1338 }
1342 } 1339 }
1343 } else { /* if (tccp->qmf bid == 0) */ 1340 } else { /* if (tccp->qmf bid == 0) */
1344 OPJ_FLOAT32* restrict tiledp = (OPJ_FLOAT32*) &tilec->da ta[(OPJ_UINT32)y * tile_w + (OPJ_UINT32)x]; 1341 OPJ_FLOAT32* restrict tiledp = (OPJ_FLOAT32*) &tilec->da ta[(OPJ_UINT32)y * tile_w + (OPJ_UINT32)x];
1345 for (j = 0; j < cblk_h; ++j) { 1342 for (j = 0; j < cblk_h; ++j) {
1346 OPJ_FLOAT32* restrict tiledp2 = tiledp; 1343 OPJ_FLOAT32* restrict tiledp2 = tiledp;
1347 for (i = 0; i < cblk_w; ++i) { 1344 for (i = 0; i < cblk_w; ++i) {
1348 OPJ_FLOAT32 tmp = (OPJ_FLOAT32)*datap * band->st epsize; 1345 OPJ_FLOAT32 tmp = (OPJ_FLOAT32)*datap * band->st epsize;
1349 *tiledp2 = tmp; 1346 *tiledp2 = tmp;
1350 datap++; 1347 datap++;
1351 tiledp2++; 1348 tiledp2++;
1352 /*float tmp = da tap[(j * cblk_w) + i] * band->stepsize;
1353 ((float*)tiledp) [(j * tile_w) + i] = tmp;*/
1354
1355 } 1349 }
1356 tiledp += tile_w; 1350 tiledp += tile_w;
1357 } 1351 }
1358 } 1352 }
1359 /*opj_free(cblk->data);
1360 opj_free(cblk->segs);*/
1361 /*cblk->segs = 00;*/
1362 } /* cblkno */ 1353 } /* cblkno */
1363 /*opj_free(precinct->cblks.dec);*/
1364 } /* precno */ 1354 } /* precno */
1365 } /* bandno */ 1355 } /* bandno */
1366 } /* resno */ 1356 } /* resno */
1367 return OPJ_TRUE; 1357 return OPJ_TRUE;
1368 } 1358 }
1369 1359
1370 1360
1371 OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1, 1361 static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1,
1372 opj_tcd_cblk_dec_t* cblk, 1362 opj_tcd_cblk_dec_t* cblk,
1373 OPJ_UINT32 orient, 1363 OPJ_UINT32 orient,
1374 OPJ_UINT32 roishift, 1364 OPJ_UINT32 roishift,
1375 OPJ_UINT32 cblksty) 1365 OPJ_UINT32 cblksty)
1376 { 1366 {
1377 opj_raw_t *raw = t1->raw; /* RAW component */ 1367 opj_raw_t *raw = t1->raw; /* RAW component */
1378 opj_mqc_t *mqc = t1->mqc; /* MQC component */ 1368 opj_mqc_t *mqc = t1->mqc; /* MQC component */
1379 1369
1380 » OPJ_INT32 bpno; 1370 » OPJ_INT32 bpno_plus_one;
1381 OPJ_UINT32 passtype; 1371 OPJ_UINT32 passtype;
1382 OPJ_UINT32 segno, passno; 1372 OPJ_UINT32 segno, passno;
1383 OPJ_BYTE type = T1_TYPE_MQ; /* BYPASS mode */ 1373 OPJ_BYTE type = T1_TYPE_MQ; /* BYPASS mode */
1384 1374
1385 if(!opj_t1_allocate_buffers( 1375 if(!opj_t1_allocate_buffers(
1386 t1, 1376 t1,
1387 (OPJ_UINT32)(cblk->x1 - cblk->x0), 1377 (OPJ_UINT32)(cblk->x1 - cblk->x0),
1388 (OPJ_UINT32)(cblk->y1 - cblk->y0))) 1378 (OPJ_UINT32)(cblk->y1 - cblk->y0)))
1389 { 1379 {
1390 return OPJ_FALSE; 1380 return OPJ_FALSE;
1391 } 1381 }
1392 1382
1393 » bpno = (OPJ_INT32)(roishift + cblk->numbps - 1); 1383 » bpno_plus_one = (OPJ_INT32)(roishift + cblk->numbps);
1394 passtype = 2; 1384 passtype = 2;
1395 1385
1396 opj_mqc_resetstates(mqc); 1386 opj_mqc_resetstates(mqc);
1397 opj_mqc_setstate(mqc, T1_CTXNO_UNI, 0, 46); 1387 opj_mqc_setstate(mqc, T1_CTXNO_UNI, 0, 46);
1398 opj_mqc_setstate(mqc, T1_CTXNO_AGG, 0, 3); 1388 opj_mqc_setstate(mqc, T1_CTXNO_AGG, 0, 3);
1399 opj_mqc_setstate(mqc, T1_CTXNO_ZC, 0, 4); 1389 opj_mqc_setstate(mqc, T1_CTXNO_ZC, 0, 4);
1400 1390
1401 for (segno = 0; segno < cblk->real_num_segs; ++segno) { 1391 for (segno = 0; segno < cblk->real_num_segs; ++segno) {
1402 opj_tcd_seg_t *seg = &cblk->segs[segno]; 1392 opj_tcd_seg_t *seg = &cblk->segs[segno];
1403 1393
1404 /* BYPASS mode */ 1394 /* BYPASS mode */
1405 » » type = ((bpno <= ((OPJ_INT32) (cblk->numbps) - 1) - 4) && (passt ype < 2) && (cblksty & J2K_CCP_CBLKSTY_LAZY)) ? T1_TYPE_RAW : T1_TYPE_MQ; 1395 » » type = ((bpno_plus_one <= ((OPJ_INT32) (cblk->numbps)) - 4) && ( passtype < 2) && (cblksty & J2K_CCP_CBLKSTY_LAZY)) ? T1_TYPE_RAW : T1_TYPE_MQ;
1406 /* FIXME: slviewer gets here with a null pointer. Why? Partially downloaded and/or corrupt textures? */ 1396 /* FIXME: slviewer gets here with a null pointer. Why? Partially downloaded and/or corrupt textures? */
1407 if(seg->data == 00){ 1397 if(seg->data == 00){
1408 continue; 1398 continue;
1409 } 1399 }
1410 if (type == T1_TYPE_RAW) { 1400 if (type == T1_TYPE_RAW) {
1411 opj_raw_init_dec(raw, (*seg->data) + seg->dataindex, seg ->len); 1401 opj_raw_init_dec(raw, (*seg->data) + seg->dataindex, seg ->len);
1412 } else { 1402 } else {
1413 if (OPJ_FALSE == opj_mqc_init_dec(mqc, (*seg->data) + seg->dataindex , seg->len)) { 1403 if (OPJ_FALSE == opj_mqc_init_dec(mqc, (*seg->data) + seg->dataindex , seg->len)) {
1414 return OPJ_FALSE; 1404 return OPJ_FALSE;
1415 } 1405 }
1416 } 1406 }
1417 1407
1418 for (passno = 0; passno < seg->real_num_passes; ++passno) { 1408 for (passno = 0; passno < seg->real_num_passes; ++passno) {
1419 switch (passtype) { 1409 switch (passtype) {
1420 case 0: 1410 case 0:
1421 if (type == T1_TYPE_RAW) { 1411 if (type == T1_TYPE_RAW) {
1422 opj_t1_dec_sigpass_raw(t1, bpno+1, (OPJ_INT32)orient, (O PJ_INT32)cblksty); 1412 opj_t1_dec_sigpass_raw(t1, bpno_plus_one, (OPJ_INT32)ori ent, (OPJ_INT32)cblksty);
1423 } else { 1413 } else {
1424 if (cblksty & J2K_CCP_CBLKSTY_VSC) { 1414 if (cblksty & J2K_CCP_CBLKSTY_VSC) {
1425 opj_t1_dec_sigpass_mqc_vsc(t1, bpno+1, (OPJ_INT32)or ient); 1415 opj_t1_dec_sigpass_mqc_vsc(t1, bpno_plus_one, (OPJ_I NT32)orient);
1426 } else { 1416 } else {
1427 opj_t1_dec_sigpass_mqc(t1, bpno+1, (OPJ_INT32)orient ); 1417 opj_t1_dec_sigpass_mqc(t1, bpno_plus_one, (OPJ_INT32 )orient);
1428 } 1418 }
1429 } 1419 }
1430 break; 1420 break;
1431 case 1: 1421 case 1:
1432 if (type == T1_TYPE_RAW) { 1422 if (type == T1_TYPE_RAW) {
1433 opj_t1_dec_refpass_raw(t1, bpno+1, (OPJ_INT32)cblkst y); 1423 opj_t1_dec_refpass_raw(t1, bpno_plus_one, (OPJ_INT32 )cblksty);
1434 } else { 1424 } else {
1435 if (cblksty & J2K_CCP_CBLKSTY_VSC) { 1425 if (cblksty & J2K_CCP_CBLKSTY_VSC) {
1436 opj_t1_dec_refpass_mqc_vsc(t1, bpno+1); 1426 opj_t1_dec_refpass_mqc_vsc(t1, bpno_plus_one);
1437 } else { 1427 } else {
1438 opj_t1_dec_refpass_mqc(t1, bpno+1); 1428 opj_t1_dec_refpass_mqc(t1, bpno_plus_one);
1439 } 1429 }
1440 } 1430 }
1441 break; 1431 break;
1442 case 2: 1432 case 2:
1443 opj_t1_dec_clnpass(t1, bpno+1, (OPJ_INT32)orient, (OPJ_INT32 )cblksty); 1433 opj_t1_dec_clnpass(t1, bpno_plus_one, (OPJ_INT32)orient, (OP J_INT32)cblksty);
1444 break; 1434 break;
1445 } 1435 }
1446 1436
1447 if ((cblksty & J2K_CCP_CBLKSTY_RESET) && type == T1_TYPE _MQ) { 1437 if ((cblksty & J2K_CCP_CBLKSTY_RESET) && type == T1_TYPE _MQ) {
1448 opj_mqc_resetstates(mqc); 1438 opj_mqc_resetstates(mqc);
1449 opj_mqc_setstate(mqc, T1_CTXNO_UNI, 0, 46); 1439 opj_mqc_setstate(mqc, T1_CTXNO_UNI, 0, 46);
1450 opj_mqc_setstate(mqc, T1_CTXNO_AGG, 0, 3); 1440 opj_mqc_setstate(mqc, T1_CTXNO_AGG, 0, 3);
1451 opj_mqc_setstate(mqc, T1_CTXNO_ZC, 0, 4); 1441 opj_mqc_setstate(mqc, T1_CTXNO_ZC, 0, 4);
1452 } 1442 }
1453 if (++passtype == 3) { 1443 if (++passtype == 3) {
1454 passtype = 0; 1444 passtype = 0;
1455 » » » » bpno--; 1445 » » » » bpno_plus_one--;
1456 } 1446 }
1457 } 1447 }
1458 } 1448 }
1459 return OPJ_TRUE; 1449 return OPJ_TRUE;
1460 } 1450 }
1461 1451
1462 1452
1463 1453
1464 1454
1465 OPJ_BOOL opj_t1_encode_cblks( opj_t1_t *t1, 1455 OPJ_BOOL opj_t1_encode_cblks( opj_t1_t *t1,
1466 opj_tcd_tile_t *tile, 1456 opj_tcd_tile_t *tile,
1467 opj_tcp_t *tcp, 1457 opj_tcp_t *tcp,
1468 const OPJ_FLOAT64 * mct_norms, 1458 const OPJ_FLOAT64 * mct_norms,
1469 OPJ_UINT32 mct_numcomps 1459 OPJ_UINT32 mct_numcomps
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 1549
1560 } /* cblkno */ 1550 } /* cblkno */
1561 } /* precno */ 1551 } /* precno */
1562 } /* bandno */ 1552 } /* bandno */
1563 } /* resno */ 1553 } /* resno */
1564 } /* compno */ 1554 } /* compno */
1565 return OPJ_TRUE; 1555 return OPJ_TRUE;
1566 } 1556 }
1567 1557
1568 /** mod fixed_quality */ 1558 /** mod fixed_quality */
1569 void opj_t1_encode_cblk(opj_t1_t *t1, 1559 static void opj_t1_encode_cblk(opj_t1_t *t1,
1570 opj_tcd_cblk_enc_t* cblk, 1560 opj_tcd_cblk_enc_t* cblk,
1571 OPJ_UINT32 orient, 1561 OPJ_UINT32 orient,
1572 OPJ_UINT32 compno, 1562 OPJ_UINT32 compno,
1573 OPJ_UINT32 level, 1563 OPJ_UINT32 level,
1574 OPJ_UINT32 qmfbid, 1564 OPJ_UINT32 qmfbid,
1575 OPJ_FLOAT64 stepsize, 1565 OPJ_FLOAT64 stepsize,
1576 OPJ_UINT32 cblksty, 1566 OPJ_UINT32 cblksty,
1577 OPJ_UINT32 numcomps, 1567 OPJ_UINT32 numcomps,
1578 opj_tcd_tile_t * tile, 1568 opj_tcd_tile_t * tile,
1579 const OPJ_FLOAT64 * mct_norms, 1569 const OPJ_FLOAT64 * mct_norms,
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 pass->rate = opj_mqc_numbytes(mqc); 1689 pass->rate = opj_mqc_numbytes(mqc);
1700 /*Preventing generation of FF as last data byte of a pass*/ 1690 /*Preventing generation of FF as last data byte of a pass*/
1701 if((pass->rate>1) && (cblk->data[pass->rate - 1] == 0xFF)){ 1691 if((pass->rate>1) && (cblk->data[pass->rate - 1] == 0xFF)){
1702 pass->rate--; 1692 pass->rate--;
1703 } 1693 }
1704 pass->len = pass->rate - (passno == 0 ? 0 : cblk->passes[passno - 1].rate); 1694 pass->len = pass->rate - (passno == 0 ? 0 : cblk->passes[passno - 1].rate);
1705 } 1695 }
1706 } 1696 }
1707 1697
1708 #if 0 1698 #if 0
1709 void opj_t1_dec_refpass_step( opj_t1_t *t1, 1699 static void opj_t1_dec_refpass_step( opj_t1_t *t1,
1710 opj_flag_t *flagsp, 1700 opj_flag_t *flagsp,
1711 OPJ_INT32 *datap, 1701 OPJ_INT32 *datap,
1712 OPJ_INT32 poshalf, 1702 OPJ_INT32 poshalf,
1713 OPJ_INT32 neghalf, 1703 OPJ_INT32 neghalf,
1714 OPJ_BYTE type, 1704 OPJ_BYTE type,
1715 OPJ_UINT32 vsc) 1705 OPJ_UINT32 vsc)
1716 { 1706 {
1717 OPJ_INT32 t; 1707 OPJ_INT32 t;
1718 OPJ_UINT32 v,flag; 1708 OPJ_UINT32 v,flag;
1719 1709
(...skipping 11 matching lines...) Expand all
1731 t = v ? poshalf : neghalf; 1721 t = v ? poshalf : neghalf;
1732 *datap += *datap < 0 ? -t : t; 1722 *datap += *datap < 0 ? -t : t;
1733 *flagsp |= T1_REFINE; 1723 *flagsp |= T1_REFINE;
1734 } 1724 }
1735 } /* VSC and BYPASS by Antonin */ 1725 } /* VSC and BYPASS by Antonin */
1736 #endif 1726 #endif
1737 1727
1738 1728
1739 1729
1740 #if 0 1730 #if 0
1741 void opj_t1_dec_sigpass_step( opj_t1_t *t1, 1731 static void opj_t1_dec_sigpass_step( opj_t1_t *t1,
1742 opj_flag_t *flagsp, 1732 opj_flag_t *flagsp,
1743 OPJ_INT32 *datap, 1733 OPJ_INT32 *datap,
1744 OPJ_UINT32 orient, 1734 OPJ_UINT32 orient,
1745 OPJ_INT32 oneplushalf, 1735 OPJ_INT32 oneplushalf,
1746 OPJ_BYTE type, 1736 OPJ_BYTE type,
1747 OPJ_UINT32 vsc) 1737 OPJ_UINT32 vsc)
1748 { 1738 {
1749 OPJ_UINT32 v, flag; 1739 OPJ_UINT32 v, flag;
1750 1740
1751 opj_raw_t *raw = t1->raw; /* RAW component */ 1741 opj_raw_t *raw = t1->raw; /* RAW component */
(...skipping 13 matching lines...) Expand all
1765 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc(flag)) ; 1755 opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc(flag)) ;
1766 v = opj_mqc_decode(mqc) ^ opj_t1_getspb(flag); 1756 v = opj_mqc_decode(mqc) ^ opj_t1_getspb(flag);
1767 *datap = v ? -oneplushalf : oneplushalf; 1757 *datap = v ? -oneplushalf : oneplushalf;
1768 opj_t1_updateflags(flagsp, v, t1->flags_stride); 1758 opj_t1_updateflags(flagsp, v, t1->flags_stride);
1769 } 1759 }
1770 } 1760 }
1771 *flagsp |= T1_VISIT; 1761 *flagsp |= T1_VISIT;
1772 } 1762 }
1773 } /* VSC and BYPASS by Antonin */ 1763 } /* VSC and BYPASS by Antonin */
1774 #endif 1764 #endif
OLDNEW
« no previous file with comments | « third_party/libopenjpeg20/pi.c ('k') | third_party/libopenjpeg20/t2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698