From 5a9fa7a2ce62a732b412e78be8ef17b0a94cab8a Mon Sep 17 00:00:00 2001 From: wrapper Date: Mon, 11 Aug 2025 10:34:10 +0700 Subject: [PATCH 1/3] update table 2 --- encoder/ixheaace_sbr_rom.c | 190 ++++++++++++++++++++++--------------- 1 file changed, 111 insertions(+), 79 deletions(-) diff --git a/encoder/ixheaace_sbr_rom.c b/encoder/ixheaace_sbr_rom.c index 1a9daa7..c3997a5 100644 --- a/encoder/ixheaace_sbr_rom.c +++ b/encoder/ixheaace_sbr_rom.c @@ -741,7 +741,7 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { }, #else {{{ - /*** 8000hz 1ch ***/ + /*** 8000hz 1ch SBR_AAC ***/ {8000, 10000, {7, 11}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {10000, 12000, {11, 13}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {12000, 16000, {14, 13}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, @@ -750,7 +750,7 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {32000, 48001, {14, 15}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 8000hz 2ch ***/ + /*** 8000hz 2ch SBR_AAC ***/ {16000, 24000, {6, 9}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {24000, 28000, {9, 11}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {28000, 36000, {11, 11}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, @@ -762,7 +762,7 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {0}}}, {{ - /*** 11025hz 1ch ***/ + /*** 11025hz 1ch SBR_AAC ***/ {8000, 10000, {5, 6}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {10000, 12000, {8, 12}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {12000, 16000, {12, 13}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, @@ -770,10 +770,10 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {20000, 24000, {13, 13}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {24000, 32000, {14, 14}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {32000, 48000, {15, 15}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {48000, 64001, {15, 15}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {48000, 66001, {15, 15}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 11025hz 2ch ***/ + /*** 11025hz 2ch SBR_AAC ***/ {16000, 24000, {7, 9}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {24000, 28000, {10, 10}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {28000, 36000, {12, 12}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, @@ -781,11 +781,11 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {44000, 52000, {14, 13}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {52000, 60000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {60000, 76000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {76000, 128001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {76000, 132301, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}}, {{ - /*** 12000hz 1ch ***/ + /*** 12000hz 1ch SBR_AAC ***/ {8000, 10000, {4, 6}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {10000, 12000, {7, 11}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {12000, 16000, {11, 12}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, @@ -793,10 +793,10 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {20000, 24000, {12, 12}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {24000, 32000, {13, 13}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {32000, 48000, {14, 14}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {48000, 64001, {15, 15}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {48000, 72001, {15, 15}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 12000hz 2ch ***/ + /*** 12000hz 2ch SBR_AAC ***/ {16000, 24000, {6, 9}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {24000, 28000, {9, 10}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {28000, 36000, {11, 12}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, @@ -804,11 +804,12 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {44000, 52000, {13, 13}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {52000, 60000, {14, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {60000, 76000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {76000, 128001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {76000, 128000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {128000, 144001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}}, {{ - /*** 16000hz 1ch ***/ + /*** 16000hz 1ch SBR_AAC ***/ {6000, 8000, {0, 0}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {8000, 10000, {1, 0}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {10000, 12000, {2, 6}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, @@ -818,10 +819,10 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {22000, 28000, {10, 12}, 2, {2, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {28000, 36000, {12, 13}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {36000, 44000, {14, 13}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {44000, 64001, {15, 13}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {44000, 96001, {15, 13}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 16000hz 2ch ***/ + /*** 16000hz 2ch SBR_AAC ***/ {16000, 24000, {4, 1}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {24000, 28000, {8, 10}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {28000, 36000, {10, 12}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, @@ -829,11 +830,12 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {44000, 52000, {15, 13}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {52000, 60000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {60000, 76000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {76000, 128001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {76000, 128000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {128000, 192001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}}, {{ - /*** 22050hz 1ch ***/ + /*** 22050hz 1ch SBR_AAC ***/ {8000, 11369, {1, 1}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {11369, 16000, {3, 4}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {16000, 18000, {3, 5}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, @@ -843,10 +845,11 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {36000, 44000, {11, 10}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {44000, 52000, {13, 11}, 1, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, {52000, 68000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {68000, 96001, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {68000, 96000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {96000, 132151, {14, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 22050hz 2ch ***/ + /*** 22050hz 2ch SBR_AAC ***/ {16000, 24000, {2, 1}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {24000, 28000, {5, 6}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {28000, 32000, {5, 8}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, @@ -855,11 +858,12 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {44000, 52000, {12, 9}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {52000, 60000, {13, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {60000, 101000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {101000, 128001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {101000, 128000, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {128000, 264601, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}}, {{ - /*** 24000hz 1ch ***/ + /*** 24000hz 1ch SBR_AAC ***/ {8000, 12000, {1, 1}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {12000, 16000, {3, 4}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, {16000, 18000, {3, 5}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, @@ -869,10 +873,11 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {36000, 44000, {11, 10}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {44000, 52000, {13, 11}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, {52000, 68000, {15, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {68000, 96001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {68000, 96000, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {96000, 144001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 24000hz 2ch ***/ + /*** 24000hz 2ch SBR_AAC ***/ {16000, 24000, {2, 1}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {24000, 28000, {5, 6}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {28000, 36000, {7, 8}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, @@ -880,47 +885,68 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {44000, 52000, {12, 9}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {52000, 60000, {13, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {60000, 76000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {76000, 128001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {76000, 128000, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {128000, 288001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}}, {{ - /*** 32000hz 1ch ***/ - {24000, 36000, {4, 4}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {36000, 60000, {7, 6}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {60000, 72000, {9, 8}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {72000, 100000, {11, 10}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {100000, 160001, {13, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + /*** 32000hz 1ch SBR_AAC ***/ + {10000, 15000, {0, 0}, 0, {1, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {15000, 19000, {1, 5}, 0, {1, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {19000, 22000, {2, 5}, 0, {1, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {22000, 27000, {3, 6}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {27000, 30000, {4, 7}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {30000, 33000, {5, 8}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {33000, 36000, {6, 8}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {36000, 39000, {7, 8}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {39000, 42000, {8, 9}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {42000, 46000, {9, 9}, 1, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {46000, 51500, {10, 9}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {51500, 58000, {11, 10}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {58000, 68000, {12, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {68000, 78000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {78000, 90000, {14, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {90000, 192001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 32000hz 2ch ***/ - {32000, 60000, {4, 4}, 3, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + /*** 32000hz 2ch SBR_AAC ***/ + {16000, 28000, {0, 5}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {28000, 32000, {1, 5}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {32000, 60000, {4, 6}, 3, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {60000, 80000, {11, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, {80000, 112000, {12, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {112000, 144000, {13, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {144000, 256001, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {144000, 156000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {156000, 180000, {14, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {180000, 384001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}}, {{ - /*** 44100hz 1ch ***/ - {12000, 16000, {0, 0}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {16000, 22000, {1, 1}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {22000, 30000, {2, 3}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {30000, 36000, {4, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {36000, 40000, {5, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {40000, 48000, {6, 5}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {48000, 60000, {7, 6}, 1, {3, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {60000, 72000, {9, 6}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {72000, 88000, {10, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {88000, 160001, {12, 9}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {160001, 288001, {13, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + /*** 44100hz 1ch SBR_AAC ***/ + {10000, 15000, {0, 0}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, + {15000, 19000, {1, 1}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, + {19000, 22000, {2, 2}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, + {22000, 27000, {3, 3}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {27000, 30000, {4, 4}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {30000, 33000, {5, 5}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {33000, 38000, {6, 6}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {38000, 46000, {7, 7}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {46000, 50000, {8, 7}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {50000, 62000, {9, 8}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {62000, 79000, {10, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {79000, 94000, {11, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {94000, 110000, {12, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {110000, 150000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {150000, 220000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {220000, 264601, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 44100hz 2ch ***/ + /*** 44100hz 2ch SBR_AAC ***/ {12000, 16000, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {16000, 22000, {1, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {22000, 26000, {2, 1}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {26000, 30000, {3, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {30000, 34000, {3, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {16000, 22000, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {22000, 26000, {0, 1}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {26000, 30000, {2, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {30000, 34000, {1, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {34000, 38000, {4, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {38000, 44000, {5, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {44000, 52000, {6, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, @@ -930,42 +956,48 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = { {76000, 90000, {11, 7}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {90000, 112000, {11, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {112000, 132000, {12, 9}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {132000, 180000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {180000, 288001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {132000, 224000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {224000, 312000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {312000, 529201, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}}, {{ - /*** 48000hz 1ch ***/ - {12000, 16000, {0, 0}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {16000, 22000, {1, 1}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {22000, 30000, {2, 3}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {30000, 36000, {4, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {36000, 40000, {5, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {40000, 48000, {6, 5}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {48000, 60000, {7, 6}, 1, {3, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {60000, 72000, {9, 6}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {72000, 88000, {10, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {88000, 160001, {12, 9}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {160001, 288001, {13, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + /*** 48000hz 1ch SBR_AAC ***/ + {10000, 15000, {0, 0}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, + {15000, 19000, {1, 4}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, + {19000, 22000, {2, 4}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, + {22000, 27000, {3, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {27000, 30000, {4, 4}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {30000, 33000, {5, 5}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {33000, 38000, {6, 6}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, + {38000, 46000, {7, 7}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {46000, 50000, {8, 7}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {50000, 62000, {9, 8}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, + {62000, 79000, {10, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {79000, 94000, {11, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {94000, 110000, {12, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {110000, 150000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {150000, 220000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {220000, 288001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { - /*** 48000hz 2ch ***/ - {12000, 16000, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {16000, 22000, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {22000, 26000, {1, 1}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {26000, 30000, {2, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {30000, 34000, {3, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {34000, 38000, {4, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {38000, 44000, {2, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {44000, 52000, {6, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {52000, 60000, {8, 5}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {60000, 68000, {9, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {68000, 76000, {10, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {76000, 90000, {11, 7}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {90000, 112000, {11, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {112000, 132000, {12, 9}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {132000, 180000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {180000, 288001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + /*** 48000hz 2ch SBR_AAC ***/ + {12000, 25500, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {25500, 30000, {1, 1}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {30000, 34500, {2, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {34500, 39000, {3, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {39000, 43500, {4, 4}, 3, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {43500, 48000, {5, 5}, 3, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {48000, 56000, {6, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {56000, 66000, {7, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, + {66000, 80000, {8, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {80000, 94000, {9, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {94000, 112000, {10, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {112000, 144000, {11, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {144000, 172000, {12, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {172000, 256000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {256000, 412000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {412000, 576001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}} }, From 77756da7aaf1d50555e09b606e61322eb52e7c5e Mon Sep 17 00:00:00 2001 From: wrapper Date: Mon, 11 Aug 2025 13:01:12 +0700 Subject: [PATCH 2/3] fix broken freq scaling --- encoder/ixheaace_sbr_freq_scaling.c | 66 ++++++++++++++++++----------- encoder/ixheaace_sbr_rom.c | 3 ++ encoder/ixheaace_sbr_rom.h | 3 ++ 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/encoder/ixheaace_sbr_freq_scaling.c b/encoder/ixheaace_sbr_freq_scaling.c index 7eec5a9..192907e 100644 --- a/encoder/ixheaace_sbr_freq_scaling.c +++ b/encoder/ixheaace_sbr_freq_scaling.c @@ -158,31 +158,31 @@ static WORD32 ixheaace_get_start_freq(WORD32 fs, WORD32 start_freq) { WORD32 minimum_k0; switch (fs) { - case 16000: + case 8000: minimum_k0 = 24; break; - case 22050: + case 11025: minimum_k0 = 17; break; - case 24000: + case 12000: minimum_k0 = 16; break; - case 32000: + case 16000: minimum_k0 = 16; break; - case 44100: + case 22050: minimum_k0 = 12; break; - case 48000: + case 24000: minimum_k0 = 11; break; - case 64000: + case 32000: minimum_k0 = 10; break; - case 88200: + case 44100: minimum_k0 = 7; break; - case 96000: + case 48000: minimum_k0 = 7; break; default: @@ -190,30 +190,30 @@ static WORD32 ixheaace_get_start_freq(WORD32 fs, WORD32 start_freq) { } switch (fs) { - case 16000: { + case 8000: { return (minimum_k0 + vector_offset_16k[start_freq]); } break; - case 22050: { + case 11025: { return (minimum_k0 + vector_offset_22k[start_freq]); } break; - case 24000: { + case 12000: { return (minimum_k0 + vector_offset_24k[start_freq]); } break; - case 32000: { + case 16000: { return (minimum_k0 + vector_offset_32k[start_freq]); } break; - case 44100: - case 48000: - case 64000: { + case 22050: + case 24000: + case 32000: { return (minimum_k0 + vector_offset_44_48_64[start_freq]); } break; - case 88200: - case 96000: { + case 44100: + case 48000: { return (minimum_k0 + vector_offset_88_96[start_freq]); } break; @@ -230,36 +230,54 @@ static WORD32 ixheaace_get_stop_freq(WORD32 fs, WORD32 stop_freq) { WORD32 v_dstop[13]; switch (fs) { - case 16000: + case 8000: k1_min = ixheaace_stop_freq_16k[0]; v_stop_freq = (WORD32 *)&ixheaace_stop_freq_16k[0]; break; - case 22050: + case 11025: k1_min = ixheaace_stop_freq_22k[0]; v_stop_freq = (WORD32 *)&ixheaace_stop_freq_22k[0]; break; - case 24000: + case 12000: k1_min = ixheaace_stop_freq_24k[0]; v_stop_freq = (WORD32 *)&ixheaace_stop_freq_24k[0]; break; - case 32000: + case 16000: k1_min = 32; v_stop_freq = (WORD32 *)vector_stop_freq_32; break; - case 44100: + case 22050: k1_min = 23; v_stop_freq = (WORD32 *)vector_stop_freq_44; break; - case 48000: + case 24000: k1_min = 21; v_stop_freq = (WORD32 *)vector_stop_freq_48; break; + case 32000: + k1_min = 20; + + v_stop_freq = (WORD32 *)vector_stop_freq_64; + break; + + case 44100: + k1_min = 15; + + v_stop_freq = (WORD32 *)vector_stop_freq_88; + break; + + case 48000: + k1_min = 13; + + v_stop_freq = (WORD32 *)vector_stop_freq_96; + break; + default: v_stop_freq = (WORD32 *)vector_stop_freq_32; k1_min = 21; /* illegal fs */ diff --git a/encoder/ixheaace_sbr_rom.c b/encoder/ixheaace_sbr_rom.c index c3997a5..cad1a81 100644 --- a/encoder/ixheaace_sbr_rom.c +++ b/encoder/ixheaace_sbr_rom.c @@ -48,6 +48,9 @@ const WORD32 vector_offset_def[] = {0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 2 const WORD32 vector_stop_freq_32[14] = {32, 34, 36, 38, 40, 42, 44, 46, 49, 52, 55, 58, 61, 64}; const WORD32 vector_stop_freq_44[14] = {23, 25, 27, 29, 32, 34, 37, 40, 43, 47, 51, 55, 59, 64}; const WORD32 vector_stop_freq_48[14] = {21, 23, 25, 27, 30, 32, 35, 38, 42, 45, 49, 54, 59, 64}; +const WORD32 vector_stop_freq_64[14] = {20, 22, 24, 26, 28, 31, 34, 37, 41, 45, 49, 54, 59, 64}; +const WORD32 vector_stop_freq_88[14] = {15, 17, 19, 21, 23, 26, 29, 33, 37, 41, 46, 51, 57, 64}; +const WORD32 vector_stop_freq_96[14] = {13, 15, 17, 19, 21, 24, 27, 31, 35, 39, 44, 50, 57, 64}; const ixheaace_str_ps_tab ia_enhaacplus_enc_ps_tab = { /*a_hyb_res[3]*/ diff --git a/encoder/ixheaace_sbr_rom.h b/encoder/ixheaace_sbr_rom.h index 59b2eef..02ca808 100644 --- a/encoder/ixheaace_sbr_rom.h +++ b/encoder/ixheaace_sbr_rom.h @@ -181,6 +181,9 @@ extern const WORD32 vector_offset_def[]; extern const WORD32 vector_stop_freq_32[14]; extern const WORD32 vector_stop_freq_44[14]; extern const WORD32 vector_stop_freq_48[14]; +extern const WORD32 vector_stop_freq_64[14]; +extern const WORD32 vector_stop_freq_88[14]; +extern const WORD32 vector_stop_freq_96[14]; /* Resampler tables */ extern const ixheaace_resampler_table ixheaace_resamp_2_to_1_iir_filt_params; From 698232d13fcb8fcc55ae306b45398f605f9a1ef3 Mon Sep 17 00:00:00 2001 From: wrapper Date: Mon, 11 Aug 2025 17:27:52 +0700 Subject: [PATCH 3/3] going pic --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 82539b7..4996c67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,3 +27,5 @@ include("${XAAC_ROOT}/encoder/libxaacenc.cmake") include("${XAAC_ROOT}/test/encoder/xaacenc.cmake") include("${XAAC_ROOT}/fuzzer/xaac_enc_fuzzer.cmake") +set_property(TARGET libxaacenc PROPERTY POSITION_INDEPENDENT_CODE 1) +set_property(TARGET libxaacdec PROPERTY POSITION_INDEPENDENT_CODE 1)