/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 * * by the Xiph.Org Foundation and contributors http://www.xiph.org/ * * * ******************************************************************** function: last mod: $Id$ ********************************************************************/ #include <string.h> #include "internal.h" #include "dct.h" /*Performs an inverse 8 point Type-II DCT transform. The output is scaled by a factor of 2 relative to the orthonormal version of the transform. _y: The buffer to store the result in. Data will be placed in every 8th entry (e.g., in a column of an 8x8 block). _x: The input coefficients. The first 8 entries are used (e.g., from a row of an 8x8 block).*/ static void idct8(ogg_int16_t *_y,const ogg_int16_t _x[8]){ … } /*Performs an inverse 8 point Type-II DCT transform. The output is scaled by a factor of 2 relative to the orthonormal version of the transform. _y: The buffer to store the result in. Data will be placed in every 8th entry (e.g., in a column of an 8x8 block). _x: The input coefficients. Only the first 4 entries are used. The other 4 are assumed to be 0.*/ static void idct8_4(ogg_int16_t *_y,const ogg_int16_t _x[8]){ … } /*Performs an inverse 8 point Type-II DCT transform. The output is scaled by a factor of 2 relative to the orthonormal version of the transform. _y: The buffer to store the result in. Data will be placed in every 8th entry (e.g., in a column of an 8x8 block). _x: The input coefficients. Only the first 3 entries are used. The other 5 are assumed to be 0.*/ static void idct8_3(ogg_int16_t *_y,const ogg_int16_t _x[8]){ … } /*Performs an inverse 8 point Type-II DCT transform. The output is scaled by a factor of 2 relative to the orthonormal version of the transform. _y: The buffer to store the result in. Data will be placed in every 8th entry (e.g., in a column of an 8x8 block). _x: The input coefficients. Only the first 2 entries are used. The other 6 are assumed to be 0.*/ static void idct8_2(ogg_int16_t *_y,const ogg_int16_t _x[8]){ … } /*Performs an inverse 8 point Type-II DCT transform. The output is scaled by a factor of 2 relative to the orthonormal version of the transform. _y: The buffer to store the result in. Data will be placed in every 8th entry (e.g., in a column of an 8x8 block). _x: The input coefficients. Only the first entry is used. The other 7 are assumed to be 0.*/ static void idct8_1(ogg_int16_t *_y,const ogg_int16_t _x[1]){ … } /*Performs an inverse 8x8 Type-II DCT transform. The input is assumed to be scaled by a factor of 4 relative to orthonormal version of the transform. All coefficients but the first 3 in zig-zag scan order are assumed to be 0: x x 0 0 0 0 0 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _y: The buffer to store the result in. This may be the same as _x. _x: The input coefficients.*/ static void oc_idct8x8_3(ogg_int16_t _y[64],ogg_int16_t _x[64]){ … } /*Performs an inverse 8x8 Type-II DCT transform. The input is assumed to be scaled by a factor of 4 relative to orthonormal version of the transform. All coefficients but the first 10 in zig-zag scan order are assumed to be 0: x x x x 0 0 0 0 x x x 0 0 0 0 0 x x 0 0 0 0 0 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _y: The buffer to store the result in. This may be the same as _x. _x: The input coefficients.*/ static void oc_idct8x8_10(ogg_int16_t _y[64],ogg_int16_t _x[64]){ … } /*Performs an inverse 8x8 Type-II DCT transform. The input is assumed to be scaled by a factor of 4 relative to orthonormal version of the transform. _y: The buffer to store the result in. This may be the same as _x. _x: The input coefficients.*/ static void oc_idct8x8_slow(ogg_int16_t _y[64],ogg_int16_t _x[64]){ … } /*Performs an inverse 8x8 Type-II DCT transform. The input is assumed to be scaled by a factor of 4 relative to orthonormal version of the transform.*/ void oc_idct8x8_c(ogg_int16_t _y[64],ogg_int16_t _x[64],int _last_zzi){ … }