Go to the documentation of this file.
   35         for (
i = 0; 
i < 64; 
i++)
 
   36             qmat[
i] = (qsrc[
i] * 
scale + 50) / 100;
 
   38         for (
i = 0; 
i < 64; 
i++)
 
   39             qmat[
i] = (5000 * qsrc[
i] / 
quality + 50) / 100;
 
   43 #define DCT_TEMPLATE(blk, step, SOP, shift)                         \ 
   44     const unsigned t0 =-39409U * blk[7 * step] - 58980U * blk[1 * step]; \ 
   45     const unsigned t1 = 39410U * blk[1 * step] - 58980U * blk[7 * step]; \ 
   46     const unsigned t2 =-33410U * blk[5 * step] -167963U * blk[3 * step]; \ 
   47     const unsigned t3 = 33410U * blk[3 * step] -167963U * blk[5 * step]; \ 
   48     const unsigned t4 =          blk[3 * step] +          blk[7 * step]; \ 
   49     const unsigned t5 =          blk[1 * step] +          blk[5 * step]; \ 
   50     const unsigned t6 = 77062U * t4            + 51491U * t5;            \ 
   51     const unsigned t7 = 77062U * t5            - 51491U * t4;            \ 
   52     const unsigned t8 = 35470U * blk[2 * step] - 85623U * blk[6 * step]; \ 
   53     const unsigned t9 = 35470U * blk[6 * step] + 85623U * blk[2 * step]; \ 
   54     const unsigned tA = SOP(blk[0 * step] - blk[4 * step]);              \ 
   55     const unsigned tB = SOP(blk[0 * step] + blk[4 * step]);              \ 
   57     blk[0 * step] = (int)(  t1 + t6  + t9 + tB) >> shift;                \ 
   58     blk[1 * step] = (int)(  t3 + t7  + t8 + tA) >> shift;                \ 
   59     blk[2 * step] = (int)(  t2 + t6  - t8 + tA) >> shift;                \ 
   60     blk[3 * step] = (int)(  t0 + t7  - t9 + tB) >> shift;                \ 
   61     blk[4 * step] = (int)(-(t0 + t7) - t9 + tB) >> shift;                \ 
   62     blk[5 * step] = (int)(-(t2 + t6) - t8 + tA) >> shift;                \ 
   63     blk[6 * step] = (int)(-(t3 + t7) + t8 + tA) >> shift;                \ 
   64     blk[7 * step] = (int)(-(t1 + t6) + t9 + tB) >> shift;                \ 
   66 #define SOP_ROW(a) (((a) * (1U << 16)) + 0x2000) 
   67 #define SOP_COL(a) (((a) + 32) * (1U << 16)) 
   75     for (
i = 0; 
i < 8; 
i++) {
 
   81     for (
i = 0; 
i < 8; 
i++) {
 
   87     for (j = 0; j < 8; j++) {
 
   88         for (
i = 0; 
i < 8; 
i++)
 
  
void ff_mss34_gen_quant_mat(uint16_t *qmat, int quality, int luma)
Generate quantisation matrix for given quality.
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But a word about quality
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
#define i(width, name, range_min, range_max)
#define DCT_TEMPLATE(blk, step, SOP, shift)
const uint8_t ff_mjpeg_std_chrominance_quant_tbl[64]
const uint8_t ff_mjpeg_std_luminance_quant_tbl[64]
static void scale(int *out, const int *in, const int w, const int h, const int shift)
The exact code depends on how similar the blocks are and how related they are to the block
void ff_mss34_dct_put(uint8_t *dst, ptrdiff_t stride, int *block)
Transform and output DCT block.