NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
sbc_dct.h
1
/******************************************************************************
2
*
3
* Copyright (C) 1999-2012 Broadcom Corporation
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at:
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
******************************************************************************/
18
19
/******************************************************************************
20
*
21
* Definitions for the fast DCT.
22
*
23
******************************************************************************/
24
25
#ifndef SBC_DCT_H
26
#define SBC_DCT_H
27
28
#if (SBC_ARM_ASM_OPT==TRUE)
29
#define SBC_MULT_32_16_SIMPLIFIED(s16In2, s32In1, s32OutLow) \
30
{ \
31
__asm \
32
{ \
33
MUL s32OutLow,(SINT32)s16In2, (s32In1>>15) \
34
} \
35
}
36
#else
37
#if (SBC_DSP_OPT==TRUE)
38
#define SBC_MULT_32_16_SIMPLIFIED(s16In2, s32In1 , s32OutLow) s32OutLow = SBC_Multiply_32_16_Simplified((SINT32)s16In2,s32In1);
39
#else
40
#if (SBC_IPAQ_OPT==TRUE)
41
/*#define SBC_MULT_32_16_SIMPLIFIED(s16In2, s32In1 , s32OutLow) s32OutLow=(SINT32)((SINT32)(s16In2)*(SINT32)(s32In1>>15)); */
42
#define SBC_MULT_32_16_SIMPLIFIED(s16In2, s32In1 , s32OutLow) s32OutLow=(SINT32)(((SINT64)s16In2*(SINT64)s32In1)>>15);
43
#if (SBC_IS_64_MULT_IN_IDCT == TRUE)
44
#define SBC_MULT_32_32(s32In2, s32In1, s32OutLow) \
45
{ \
46
s64Temp = ((SINT64) s32In2) * ((SINT64) s32In1)>>31; \
47
s32OutLow = (SINT32) s64Temp; \
48
}
49
#endif
50
#else
51
#define SBC_MULT_32_16_SIMPLIFIED(s16In2, s32In1 , s32OutLow) \
52
{ \
53
s32In1Temp = s32In1; \
54
s32In2Temp = (SINT32)s16In2; \
55
\
56
/* Multiply one +ve and the other -ve number */
\
57
if (s32In1Temp < 0) \
58
{ \
59
s32In1Temp ^= 0xFFFFFFFF; \
60
s32In1Temp++; \
61
s32OutLow = (s32In2Temp * (s32In1Temp >> 16)); \
62
s32OutLow += (( s32In2Temp * (s32In1Temp & 0xFFFF)) >> 16); \
63
s32OutLow ^= 0xFFFFFFFF; \
64
s32OutLow++; \
65
} \
66
else \
67
{ \
68
s32OutLow = (s32In2Temp * (s32In1Temp >> 16)); \
69
s32OutLow += (( s32In2Temp * (s32In1Temp & 0xFFFF)) >> 16); \
70
} \
71
s32OutLow <<= 1; \
72
}
73
#if (SBC_IS_64_MULT_IN_IDCT == TRUE)
74
#define SBC_MULT_64(s32In1, s32In2, s32OutLow, s32OutHi) \
75
{\
76
s32OutLow=(SINT32)(((SINT64)s32In1*(SINT64)s32In2)& 0x00000000FFFFFFFF);\
77
s32OutHi=(SINT32)(((SINT64)s32In1*(SINT64)s32In2)>>32);\
78
}
79
#define SBC_MULT_32_32(s32In2, s32In1, s32OutLow) \
80
{ \
81
s32HiTemp = 0; \
82
SBC_MULT_64(s32In2,s32In1 , s32OutLow, s32HiTemp); \
83
s32OutLow = (((s32OutLow>>15)&0x1FFFF) | (s32HiTemp << 17)); \
84
}
85
#endif
86
87
#endif
88
#endif
89
#endif
90
91
#endif
include
lib
revolution
BTE
embdrv
sbc
encoder
include
sbc_dct.h
Made with ❤️ by
CLF78
and
RootCubed
. Logos by
Chasical
and
B1
. Website generated by
Doxygen
1.13.2