Le 27/03/13 13:16, Luca Barbato a écrit :
+static int getsgnctxno(int flag, uint8_t *xorbit) >+{ >+ int vcontrib, hcontrib; >+ static const int contribtab[3][3] = {{ 0, -1, 1 }, {-1, -1, 0 }, { 1, 0, 1 }}; >+ static const int ctxlbltab[3][3] = {{13, 12, 11 }, {10, 9, 10 }, {11, 12, 13 }}; >+ static const int xorbittab[3][3] = {{ 1, 1, 1 }, { 1, 0, 0 }, { 0, 0, 0 }}; >+ >+ hcontrib = contribtab[flag & JPEG2000_T1_SIG_E ? flag & JPEG2000_T1_SGN_E ? 1 : 2 : 0] >+ [flag & JPEG2000_T1_SIG_W ? flag & JPEG2000_T1_SGN_W ? 1 : 2 : 0] + 1; >+ vcontrib = contribtab[flag & JPEG2000_T1_SIG_S ? flag & JPEG2000_T1_SGN_S ? 1 : 2 : 0] >+ [flag & JPEG2000_T1_SIG_N ? flag & JPEG2000_T1_SGN_N ? 1 : 2 : 0] + 1; >+ *xorbit = xorbittab[hcontrib][vcontrib]; >+ return ctxlbltab[hcontrib][vcontrib]; >+}A switch table might be simpler?
Maybe I admit its not the simpler way _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
