Mercurial > libavcodec.hg
comparison mpegaudiodec.c @ 3599:9a069376b7e3 libavcodec
replace a few MULL by MULH
author | michael |
---|---|
date | Mon, 21 Aug 2006 12:12:43 +0000 |
parents | 181b0e8f6d81 |
children | 949219039897 |
comparison
equal
deleted
inserted
replaced
3598:181b0e8f6d81 | 3599:9a069376b7e3 |
---|---|
941 FIXR(1.18310079157624925896), | 941 FIXR(1.18310079157624925896), |
942 FIXR(1.93185165257813657349), //2 | 942 FIXR(1.93185165257813657349), //2 |
943 FIXR(5.73685662283492756461), | 943 FIXR(5.73685662283492756461), |
944 }; | 944 }; |
945 | 945 |
946 /* 0.5 / cos(pi*(2*i+1)/36) */ | |
947 static const int icos36h[9] = { | |
948 FIXHR(0.50190991877167369479/2), | |
949 FIXHR(0.51763809020504152469/2), //0 | |
950 FIXHR(0.55168895948124587824/2), | |
951 FIXHR(0.61038729438072803416/2), | |
952 FIXHR(0.70710678118654752439/2), //1 | |
953 FIXHR(0.87172339781054900991/2), | |
954 FIXHR(1.18310079157624925896/4), | |
955 FIXHR(1.93185165257813657349/4), //2 | |
956 // FIXHR(5.73685662283492756461), | |
957 }; | |
958 | |
946 /* 12 points IMDCT. We compute it "by hand" by factorizing obvious | 959 /* 12 points IMDCT. We compute it "by hand" by factorizing obvious |
947 cases. */ | 960 cases. */ |
948 static void imdct12(int *out, int *in) | 961 static void imdct12(int *out, int *in) |
949 { | 962 { |
950 int in0, in1, in2, in3, in4, in5, t1, t2; | 963 int in0, in1, in2, in3, in4, in5, t1, t2; |
957 in5= in[5*3] + in[4*3]; | 970 in5= in[5*3] + in[4*3]; |
958 in5 += in3; | 971 in5 += in3; |
959 in3 += in1; | 972 in3 += in1; |
960 | 973 |
961 in2= MULH(2*in2, C3); | 974 in2= MULH(2*in2, C3); |
962 in3= MULH(2*in3, C3); | 975 in3= MULH(4*in3, C3); |
963 | 976 |
964 t1 = in0 - in4; | 977 t1 = in0 - in4; |
965 t2 = MULL(in1 - in5, icos36[4]); | 978 t2 = MULH(2*(in1 - in5), icos36h[4]); |
966 | 979 |
967 out[ 7]= | 980 out[ 7]= |
968 out[10]= t1 + t2; | 981 out[10]= t1 + t2; |
969 out[ 1]= | 982 out[ 1]= |
970 out[ 4]= t1 - t2; | 983 out[ 4]= t1 - t2; |
971 | 984 |
972 in0 += in4>>1; | 985 in0 += in4>>1; |
973 in4 = in0 + in2; | 986 in4 = in0 + in2; |
974 in1 += in5>>1; | 987 in5 += 2*in1; |
975 in5 = MULL(in1 + in3, icos36[1]); | 988 in1 = MULH(in5 + in3, icos36h[1]); |
976 out[ 8]= | 989 out[ 8]= |
977 out[ 9]= in4 + in5; | 990 out[ 9]= in4 + in1; |
978 out[ 2]= | 991 out[ 2]= |
979 out[ 3]= in4 - in5; | 992 out[ 3]= in4 - in1; |
980 | 993 |
981 in0 -= in2; | 994 in0 -= in2; |
982 in1 = MULL(in1 - in3, icos36[7]); | 995 in5 = MULH(2*(in5 - in3), icos36h[7]); |
983 out[ 0]= | 996 out[ 0]= |
984 out[ 5]= in0 - in1; | 997 out[ 5]= in0 - in5; |
985 out[ 6]= | 998 out[ 6]= |
986 out[11]= in0 + in1; | 999 out[11]= in0 + in5; |
987 } | 1000 } |
988 | 1001 |
989 /* cos(pi*i/18) */ | 1002 /* cos(pi*i/18) */ |
990 #define C1 FIXHR(0.98480775301220805936/2) | 1003 #define C1 FIXHR(0.98480775301220805936/2) |
991 #define C2 FIXHR(0.93969262078590838405/2) | 1004 #define C2 FIXHR(0.93969262078590838405/2) |
1075 s0 = t1 + t0; | 1088 s0 = t1 + t0; |
1076 s2 = t1 - t0; | 1089 s2 = t1 - t0; |
1077 | 1090 |
1078 t2 = tmp[i + 1]; | 1091 t2 = tmp[i + 1]; |
1079 t3 = tmp[i + 3]; | 1092 t3 = tmp[i + 3]; |
1080 s1 = MULL(t3 + t2, icos36[j]); | 1093 s1 = MULH(2*(t3 + t2), icos36h[j]); |
1081 s3 = MULL(t3 - t2, icos36[8 - j]); | 1094 s3 = MULL(t3 - t2, icos36[8 - j]); |
1082 | 1095 |
1083 t0 = s0 + s1; | 1096 t0 = s0 + s1; |
1084 t1 = s0 - s1; | 1097 t1 = s0 - s1; |
1085 out[(9 + j)*SBLIMIT] = MULH(t1, win[9 + j]) + buf[9 + j]; | 1098 out[(9 + j)*SBLIMIT] = MULH(t1, win[9 + j]) + buf[9 + j]; |
1095 buf[ + j] = MULH(t0, win[18 + j]); | 1108 buf[ + j] = MULH(t0, win[18 + j]); |
1096 i += 4; | 1109 i += 4; |
1097 } | 1110 } |
1098 | 1111 |
1099 s0 = tmp[16]; | 1112 s0 = tmp[16]; |
1100 s1 = MULL(tmp[17], icos36[4]); | 1113 s1 = MULH(2*tmp[17], icos36h[4]); |
1101 t0 = s0 + s1; | 1114 t0 = s0 + s1; |
1102 t1 = s0 - s1; | 1115 t1 = s0 - s1; |
1103 out[(9 + 4)*SBLIMIT] = MULH(t1, win[9 + 4]) + buf[9 + 4]; | 1116 out[(9 + 4)*SBLIMIT] = MULH(t1, win[9 + 4]) + buf[9 + 4]; |
1104 out[(8 - 4)*SBLIMIT] = MULH(t1, win[8 - 4]) + buf[8 - 4]; | 1117 out[(8 - 4)*SBLIMIT] = MULH(t1, win[8 - 4]) + buf[8 - 4]; |
1105 buf[9 + 4] = MULH(t0, win[18 + 9 + 4]); | 1118 buf[9 + 4] = MULH(t0, win[18 + 9 + 4]); |