MCPcopy Create free account
hub / github.com/creatale/node-dv / IDCT

Function IDCT

deps/opencv/modules/core/src/dxt.cpp:2119–2157  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2117
2118
2119template<typename T> static void
2120IDCT( const T* src, int src_step, T* dft_src, T* dft_dst, T* dst, int dst_step,
2121 int n, int nf, int* factors, const int* itab, const Complex<T>* dft_wave,
2122 const Complex<T>* dct_wave, const void* spec, Complex<T>* buf )
2123{
2124 static const T sin_45 = (T)0.70710678118654752440084436210485;
2125 int j, n2 = n >> 1;
2126
2127 src_step /= sizeof(src[0]);
2128 dst_step /= sizeof(dst[0]);
2129 const T* src1 = src + (n-1)*src_step;
2130
2131 if( n == 1 )
2132 {
2133 dst[0] = src[0];
2134 return;
2135 }
2136
2137 dft_src[0] = (T)(src[0]*2*dct_wave->re*sin_45);
2138 src += src_step;
2139 for( j = 1, dct_wave++; j < n2; j++, dct_wave++,
2140 src += src_step, src1 -= src_step )
2141 {
2142 T t0 = dct_wave->re*src[0] - dct_wave->im*src1[0];
2143 T t1 = -dct_wave->im*src[0] - dct_wave->re*src1[0];
2144 dft_src[j*2-1] = t0;
2145 dft_src[j*2] = t1;
2146 }
2147
2148 dft_src[n-1] = (T)(src[0]*2*dct_wave->re);
2149 CCSIDFT( dft_src, dft_dst, n, nf, factors, itab,
2150 dft_wave, n, spec, buf, 0, 1.0 );
2151
2152 for( j = 0; j < n2; j++, dst += dst_step*2 )
2153 {
2154 dst[0] = dft_dst[j];
2155 dst[dst_step] = dft_dst[n-j-1];
2156 }
2157}
2158
2159
2160static void

Callers 2

IDCT_32fFunction · 0.85
IDCT_64fFunction · 0.85

Calls 1

CCSIDFTFunction · 0.85

Tested by

no test coverage detected