1*fdfc9b7dSMilanka Ringwald#!/usr/bin/env python 2*fdfc9b7dSMilanka Ringwaldimport numpy as np 3*fdfc9b7dSMilanka Ringwaldimport wave 4*fdfc9b7dSMilanka Ringwaldimport struct 5*fdfc9b7dSMilanka Ringwaldimport sys 6*fdfc9b7dSMilanka Ringwaldimport time 7*fdfc9b7dSMilanka Ringwaldfrom sbc import * 8*fdfc9b7dSMilanka Ringwald 9*fdfc9b7dSMilanka Ringwaldmatrix_R = np.zeros(shape = (16,8)) 10*fdfc9b7dSMilanka Ringwaldmatrix_C2 = np.zeros(shape = (8,8)) 11*fdfc9b7dSMilanka Ringwaldmatrix_N = np.zeros(shape = (16,16)) 12*fdfc9b7dSMilanka Ringwald 13*fdfc9b7dSMilanka Ringwalddef sbc_init_synthesis_v1(M): 14*fdfc9b7dSMilanka Ringwald global matrix_R, matrix_C2, matrix_N 15*fdfc9b7dSMilanka Ringwald if M == 4: 16*fdfc9b7dSMilanka Ringwald print("SBC V1 init failed, 4-subband version not implemented yet") 17*fdfc9b7dSMilanka Ringwald M2 = M << 1 18*fdfc9b7dSMilanka Ringwald Mh = M >> 1 19*fdfc9b7dSMilanka Ringwald 20*fdfc9b7dSMilanka Ringwald matrix_R = np.zeros(shape = (M2,M)) 21*fdfc9b7dSMilanka Ringwald matrix_C2 = np.zeros(shape = (M,M)) 22*fdfc9b7dSMilanka Ringwald matrix_N = np.zeros(shape = (M2,M2)) 23*fdfc9b7dSMilanka Ringwald 24*fdfc9b7dSMilanka Ringwald R_c1 = 12 25*fdfc9b7dSMilanka Ringwald 26*fdfc9b7dSMilanka Ringwald for k in range(Mh): 27*fdfc9b7dSMilanka Ringwald matrix_R[k][k+Mh] = 1 28*fdfc9b7dSMilanka Ringwald 29*fdfc9b7dSMilanka Ringwald for k in range(Mh+1,M2): 30*fdfc9b7dSMilanka Ringwald matrix_R[k][abs(R_c1-k)] = -1 31*fdfc9b7dSMilanka Ringwald 32*fdfc9b7dSMilanka Ringwald for k in range(M): 33*fdfc9b7dSMilanka Ringwald for i in range(M): 34*fdfc9b7dSMilanka Ringwald matrix_C2[k][i] = np.cos((i+0.5)*k*np.pi/M) 35*fdfc9b7dSMilanka Ringwald 36*fdfc9b7dSMilanka Ringwald matrix_N = np.dot(matrix_R, matrix_C2) 37*fdfc9b7dSMilanka Ringwald 38*fdfc9b7dSMilanka Ringwalddef sbc_frame_synthesis_v1_4subbands(frame, ch, blk): 39*fdfc9b7dSMilanka Ringwald print "sbc_frame_synthesis_v1_4subbands(frame, ch, blk) not implemented yet" 40*fdfc9b7dSMilanka Ringwald exit(1) 41*fdfc9b7dSMilanka Ringwald 42*fdfc9b7dSMilanka Ringwalddef sbc_frame_synthesis_v1_8subbands(frame, ch, blk): 43*fdfc9b7dSMilanka Ringwald print "sbc_frame_synthesis_v1_8subbands(frame, ch, blk) not implemented yet" 44*fdfc9b7dSMilanka Ringwald exit(1) 45*fdfc9b7dSMilanka Ringwald 46*fdfc9b7dSMilanka Ringwalddef matrix_R(): 47*fdfc9b7dSMilanka Ringwald global matrix_R 48*fdfc9b7dSMilanka Ringwald return matrix_R 49*fdfc9b7dSMilanka Ringwald 50*fdfc9b7dSMilanka Ringwalddef matrix_C2(): 51*fdfc9b7dSMilanka Ringwald global matrix_C2 52*fdfc9b7dSMilanka Ringwald return matrix_C2 53*fdfc9b7dSMilanka Ringwald 54*fdfc9b7dSMilanka Ringwalddef matrix_N(): 55*fdfc9b7dSMilanka Ringwald global matrix_N 56*fdfc9b7dSMilanka Ringwald return matrix_N 57*fdfc9b7dSMilanka Ringwald 58*fdfc9b7dSMilanka Ringwalddef R(k,i): 59*fdfc9b7dSMilanka Ringwald global matrix_R 60*fdfc9b7dSMilanka Ringwald return matrix_R[k][i] 61*fdfc9b7dSMilanka Ringwald 62*fdfc9b7dSMilanka Ringwalddef C2(k,i): 63*fdfc9b7dSMilanka Ringwald global matrix_C2 64*fdfc9b7dSMilanka Ringwald return matrix_C2[k][i]