Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

'libmad remove warnings

calculating inside a function makes it work
adding FORCE_INLINE makes warning reappear
anything else in bounds of the array asounds ok but has digital
distortion so pretty confident the code is right

Change-Id: Ibb2babe20b1d8a980f3e3fd19b4cddaaff9213a6

authored by

William Wilgus and committed by
William Wilgus
f233b6e2 4cf65ec9

+27 -20
+27 -20
lib/rbcodec/codecs/libmad/synth.c
··· 931 931 MLA(hi, lo, (*f)[5], ptr[ 6+offset]); \ 932 932 MLA(hi, lo, (*f)[6], ptr[ 4+offset]); \ 933 933 MLA(hi, lo, (*f)[7], ptr[ 2+offset]); 934 - 935 - #define PROD_SB(hi, lo, ptr, offset, first_idx, last_idx) \ 936 - ML0(hi, lo, (*fe)[0], ptr[first_idx]); \ 937 - MLA(hi, lo, (*fe)[1], ptr[16+offset]); \ 938 - MLA(hi, lo, (*fe)[2], ptr[18+offset]); \ 939 - MLA(hi, lo, (*fe)[3], ptr[20+offset]); \ 940 - MLA(hi, lo, (*fe)[4], ptr[22+offset]); \ 941 - MLA(hi, lo, (*fe)[5], ptr[24+offset]); \ 942 - MLA(hi, lo, (*fe)[6], ptr[26+offset]); \ 943 - MLA(hi, lo, (*fe)[7], ptr[28+offset]); \ 944 - MLA(hi, lo, (*fo)[7], ptr[29-offset]); \ 945 - MLA(hi, lo, (*fo)[6], ptr[27-offset]); \ 946 - MLA(hi, lo, (*fo)[5], ptr[25-offset]); \ 947 - MLA(hi, lo, (*fo)[4], ptr[23-offset]); \ 948 - MLA(hi, lo, (*fo)[3], ptr[21-offset]); \ 949 - MLA(hi, lo, (*fo)[2], ptr[19-offset]); \ 950 - MLA(hi, lo, (*fo)[1], ptr[17-offset]); \ 951 - MLA(hi, lo, (*fo)[0], ptr[last_idx ]); 934 + 935 + static 936 + mad_fixed64lo_t prod_sb(mad_fixed_t (*fe)[8], mad_fixed_t (*fo)[8], 937 + mad_fixed_t const *ptr, int offset, int first_idx, int last_idx) 938 + { 939 + mad_fixed64lo_t lo; 940 + ML0(0, lo, (*fe)[0], ptr[first_idx]); 941 + MLA(0, lo, (*fe)[1], ptr[16+offset]); 942 + MLA(0, lo, (*fe)[2], ptr[18+offset]); 943 + MLA(0, lo, (*fe)[3], ptr[20+offset]); 944 + MLA(0, lo, (*fe)[4], ptr[22+offset]); 945 + MLA(0, lo, (*fe)[5], ptr[24+offset]); 946 + MLA(0, lo, (*fe)[6], ptr[26+offset]); 947 + MLA(0, lo, (*fe)[7], ptr[28+offset]); 948 + MLA(0, lo, (*fo)[7], ptr[29-offset]); 949 + MLA(0, lo, (*fo)[6], ptr[27-offset]); 950 + MLA(0, lo, (*fo)[5], ptr[25-offset]); 951 + MLA(0, lo, (*fo)[4], ptr[23-offset]); 952 + MLA(0, lo, (*fo)[3], ptr[21-offset]); 953 + MLA(0, lo, (*fo)[2], ptr[19-offset]); 954 + MLA(0, lo, (*fo)[1], ptr[17-offset]); 955 + MLA(0, lo, (*fo)[0], ptr[last_idx ]); 956 + return lo; 957 + } 952 958 953 959 static 954 960 void synth_full(struct mad_synth *synth, struct mad_frame const *frame, ··· 983 989 984 990 D0ptr = (mad_fixed_t const (*)[32])(D[0]+p); 985 991 D1ptr = (mad_fixed_t const (*)[32])(D[0]-p); 992 + /* D1ptr is -p -(0-0xF) PROD_SB adds offsets that point to valid memory */ 986 993 987 994 if(s & 1) 988 995 { ··· 1007 1014 pcm[-sb] = SHIFT(MLZ(hi, lo)); 1008 1015 1009 1016 ptr = *D1ptr; 1010 - PROD_SB(hi, lo, ptr, 1, 15, 30) 1017 + lo = prod_sb(fe, fo, ptr, 1, 15, 30); 1011 1018 pcm[sb] = SHIFT(MLZ(hi, lo)); 1012 1019 } 1013 1020 ··· 1038 1045 pcm[-sb] = SHIFT(MLZ(hi, lo)); 1039 1046 1040 1047 ptr = *D1ptr; 1041 - PROD_SB(hi, lo, ptr, 0, 30, 15) 1048 + lo = prod_sb(fe, fo, ptr, 0, 30, 15); 1042 1049 pcm[sb] = SHIFT(MLZ(hi, lo)); 1043 1050 } 1044 1051