📄 switched_filters.c
字号:
//
//
//
#include <math.h>
#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include "global.h"
#include "elements.h"
#include "defines.h"
#include "fmo.h"
#include "vlc.h"
#include "mbuffer.h"
#include "header.h"
#include "adaptive_filter.h"
#ifdef SWITCHED_FILTERS
#include "switched_filters.h"
#endif
#ifdef SWITCHED_FILTERS
extern double STANDARD_2D_FILTER[15][SQR_FILTER];
double SYMMETRIC_1[15][SQR_FILTER] = {
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
-1.0/128.0, -2.0/128.0, 97.0/128.0, 42.0/128.0, -11.0/128.0, 3.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // a_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
3.0/128.0, -16.0/128.0, 77.0/128.0, 77.0/128.0, -16.0/128.0, 3.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // b_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
3.0/128.0, -11.0/128.0, 42.0/128.0, 97.0/128.0, -2.0/128.0, -1.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // c_pos
{
0.0/128.0, 0.0/128.0, -1.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -2.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 97.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 42.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -11.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 3.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // d_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -7.0/128.0, 4.0/128.0, -2.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, 4.0/128.0, 66.0/128.0, 36.0/128.0, 1.0/128.0, 0.0/128.0,
0.0/128.0, -2.0/128.0, 36.0/128.0, 7.0/128.0, -6.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, 1.0/128.0, -6.0/128.0, 2.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // e_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -4.0/128.0, -1.0/128.0, -1.0/128.0, -4.0/128.0, 0.0/128.0,
0.0/128.0, -2.0/128.0, 56.0/128.0, 56.0/128.0, -2.0/128.0, 0.0/128.0,
0.0/128.0, -7.0/128.0, 25.0/128.0, 25.0/128.0, -7.0/128.0, 0.0/128.0,
0.0/128.0, 1.0/128.0, -4.0/128.0, -4.0/128.0, 1.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // f_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, -2.0/128.0, 4.0/128.0, -7.0/128.0, 0.0/128.0,
0.0/128.0, 1.0/128.0, 36.0/128.0, 66.0/128.0, 4.0/128.0, 0.0/128.0,
0.0/128.0, -6.0/128.0, 7.0/128.0, 36.0/128.0, -2.0/128.0, 0.0/128.0,
0.0/128.0, 2.0/128.0, -6.0/128.0, 1.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // g_pos
{
0.0/128.0, 0.0/128.0, 3.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -16.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 77.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 77.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -16.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 3.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // h_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -4.0/128.0, -2.0/128.0, -7.0/128.0, 1.0/128.0, 0.0/128.0,
0.0/128.0, -1.0/128.0, 56.0/128.0, 25.0/128.0, -4.0/128.0, 0.0/128.0,
0.0/128.0, -1.0/128.0, 56.0/128.0, 25.0/128.0, -4.0/128.0, 0.0/128.0,
0.0/128.0, -4.0/128.0, -2.0/128.0, -7.0/128.0, 1.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // i_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -6.0/128.0, -6.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -6.0/128.0, 44.0/128.0, 44.0/128.0, -6.0/128.0, 0.0/128.0,
0.0/128.0, -6.0/128.0, 44.0/128.0, 44.0/128.0, -6.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -6.0/128.0, -6.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // j_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 1.0/128.0, -7.0/128.0, -2.0/128.0, -4.0/128.0, 0.0/128.0,
0.0/128.0, -4.0/128.0, 25.0/128.0, 56.0/128.0, -1.0/128.0, 0.0/128.0,
0.0/128.0, -4.0/128.0, 25.0/128.0, 56.0/128.0, -1.0/128.0, 0.0/128.0,
0.0/128.0, 1.0/128.0, -7.0/128.0, -2.0/128.0, -4.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // k_pos
{
0.0/128.0, 0.0/128.0, 3.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -11.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 42.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 97.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -2.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -1.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // l_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, 1.0/128.0, -6.0/128.0, 2.0/128.0, 0.0/128.0,
0.0/128.0, -2.0/128.0, 36.0/128.0, 7.0/128.0, -6.0/128.0, 0.0/128.0,
0.0/128.0, 4.0/128.0, 66.0/128.0, 36.0/128.0, 1.0/128.0, 0.0/128.0,
0.0/128.0, -7.0/128.0, 4.0/128.0, -2.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // m_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 1.0/128.0, -4.0/128.0, -4.0/128.0, 1.0/128.0, 0.0/128.0,
0.0/128.0, -7.0/128.0, 25.0/128.0, 25.0/128.0, -7.0/128.0, 0.0/128.0,
0.0/128.0, -2.0/128.0, 56.0/128.0, 56.0/128.0, -2.0/128.0, 0.0/128.0,
0.0/128.0, -4.0/128.0, -1.0/128.0, -1.0/128.0, -4.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // n_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 2.0/128.0, -6.0/128.0, 1.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, -6.0/128.0, 7.0/128.0, 36.0/128.0, -2.0/128.0, 0.0/128.0,
0.0/128.0, 1.0/128.0, 36.0/128.0, 66.0/128.0, 4.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, -2.0/128.0, 4.0/128.0, -7.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
} // o_pos
};
//
//
//
double SYMMETRIC_2[15][SQR_FILTER] = {
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
4.0/128.0, -14.0/128.0, 108.0/128.0, 38.0/128.0, -12.0/128.0, 4.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // a_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
6.0/128.0, -23.0/128.0, 81.0/128.0, 81.0/128.0, -23.0/128.0, 6.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // b_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
4.0/128.0, -12.0/128.0, 38.0/128.0, 108.0/128.0, -14.0/128.0, 4.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // c_pos
{
0.0/128.0, 0.0/128.0, 4.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -14.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 108.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 38.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -12.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 4.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // d_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -6.0/128.0, 2.0/128.0, -4.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, 2.0/128.0, 71.0/128.0, 38.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -4.0/128.0, 38.0/128.0, 7.0/128.0, -7.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, 0.0/128.0, -7.0/128.0, 4.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // e_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, -2.0/128.0, -2.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, 58.0/128.0, 58.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, -9.0/128.0, 26.0/128.0, 26.0/128.0, -9.0/128.0, 0.0/128.0,
0.0/128.0, 2.0/128.0, -5.0/128.0, -5.0/128.0, 2.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // f_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, -4.0/128.0, 2.0/128.0, -6.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 38.0/128.0, 71.0/128.0, 2.0/128.0, 0.0/128.0,
0.0/128.0, -7.0/128.0, 7.0/128.0, 38.0/128.0, -4.0/128.0, 0.0/128.0,
0.0/128.0, 4.0/128.0, -7.0/128.0, 0.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // g_pos
{
0.0/128.0, 0.0/128.0, 6.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -23.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 81.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 81.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -23.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 6.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // h_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, -3.0/128.0, -9.0/128.0, 2.0/128.0, 0.0/128.0,
0.0/128.0, -2.0/128.0, 58.0/128.0, 26.0/128.0, -5.0/128.0, 0.0/128.0,
0.0/128.0, -2.0/128.0, 58.0/128.0, 26.0/128.0, -5.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, -3.0/128.0, -9.0/128.0, 2.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // i_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 1.0/128.0, -7.0/128.0, -7.0/128.0, 1.0/128.0, 0.0/128.0,
0.0/128.0, -7.0/128.0, 45.0/128.0, 45.0/128.0, -7.0/128.0, 0.0/128.0,
0.0/128.0, -7.0/128.0, 45.0/128.0, 45.0/128.0, -7.0/128.0, 0.0/128.0,
0.0/128.0, 1.0/128.0, -7.0/128.0, -7.0/128.0, 1.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // j_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 2.0/128.0, -9.0/128.0, -3.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, -5.0/128.0, 26.0/128.0, 58.0/128.0, -2.0/128.0, 0.0/128.0,
0.0/128.0, -5.0/128.0, 26.0/128.0, 58.0/128.0, -2.0/128.0, 0.0/128.0,
0.0/128.0, 2.0/128.0, -9.0/128.0, -3.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // k_pos
{
0.0/128.0, 0.0/128.0, 4.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -12.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 38.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 108.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, -14.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 4.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // l_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, 0.0/128.0, -7.0/128.0, 4.0/128.0, 0.0/128.0,
0.0/128.0, -4.0/128.0, 38.0/128.0, 7.0/128.0, -7.0/128.0, 0.0/128.0,
0.0/128.0, 2.0/128.0, 71.0/128.0, 38.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, -6.0/128.0, 2.0/128.0, -4.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // m_pos
{
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0,
0.0/128.0, 2.0/128.0, -5.0/128.0, -5.0/128.0, 2.0/128.0, 0.0/128.0,
0.0/128.0, -9.0/128.0, 26.0/128.0, 26.0/128.0, -9.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, 58.0/128.0, 58.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, -3.0/128.0, -2.0/128.0, -2.0/128.0, -3.0/128.0, 0.0/128.0,
0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0, 0.0/128.0
}, // n_pos
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -