Exemple #1
0
AUD_Error gmm_mix( void **phGmmHandle, void *hSrcGmmHandle1, void *hSrcGmmHandle2, AUD_Int8s *pName )
{
	AUD_ASSERT( phGmmHandle && hSrcGmmHandle1 && hSrcGmmHandle2 && pName );
	AUD_ASSERT( *phGmmHandle == NULL );

	AUD_Int32s ret = 0, i = 0;

	GmmModel *pState = NULL;
	pState = (GmmModel*)calloc( sizeof(GmmModel), 1 );
	if ( pState == NULL )
	{
		*phGmmHandle = NULL;
		return AUD_ERROR_OUTOFMEMORY;
	}

	GmmModel *pSrcModel1 = (GmmModel*)hSrcGmmHandle1;
	GmmModel *pSrcModel2 = (GmmModel*)hSrcGmmHandle2;

	AUD_ASSERT( pSrcModel1->width == pSrcModel2->width );

	snprintf( (char*)pState->arGmmName, MAX_GMMNAME_LENGTH, "%s", (char*)pName );

	pState->numMix  = pSrcModel1->numMix + pSrcModel2->numMix;
	pState->width   = pSrcModel1->width;
	pState->step    = pState->width;

	pState->means.rows     = pState->numMix;
	pState->means.cols     = pState->step;
	pState->means.dataType = AUD_DATATYPE_INT32S;
	ret = createMatrix( &(pState->means) );
	AUD_ASSERT( ret == 0 );

	ret = mergeMatrix( &(pState->means),  &(pSrcModel1->means), &(pSrcModel2->means) );
	AUD_ASSERT( ret == 0 );

	pState->cvars.rows     = pState->numMix;
	pState->cvars.cols     = pState->step;
	pState->cvars.dataType = AUD_DATATYPE_INT64S;
	ret = createMatrix( &(pState->cvars) );
	AUD_ASSERT( ret == 0 );

	ret = mergeMatrix( &(pState->cvars),  &(pSrcModel1->cvars), &(pSrcModel2->cvars) );
	AUD_ASSERT( ret == 0 );

	pState->weights.len      = pState->numMix;
	pState->weights.dataType = AUD_DATATYPE_DOUBLE;
	ret = createVector( &(pState->weights) );
	AUD_ASSERT( ret == 0 );

	AUD_Double *pDst1 = pState->weights.pDouble;
	AUD_Double *pDst2 = pState->weights.pDouble + pSrcModel1->weights.len;
	for ( i = 0; i < pSrcModel1->weights.len; i++ )
	{
		pDst1[i] = (pSrcModel1->weights.pDouble)[i] / 2.;
	}
	for ( i = 0; i < pSrcModel2->weights.len; i++ )
	{
		pDst2[i] = (pSrcModel2->weights.pDouble)[i] / 2.;
	}

	*phGmmHandle = pState;

	return AUD_ERROR_NONE;
}
Exemple #2
0
int main()
{
    PS2Controller psData;
    static uint8 c_flag = 0;
    static uint8 right_flag = 0;
    static uint8 left_flag = 0;
    static uint8 down_flag = 0;
    static uint8 up_flag = 0;
    uint8 counter = 0;
    uint8 cmax = 50;
    
    int blocks[7][4][4] = {  //ブロックの宣言
        {
            {0,0,0,0},
            {0,1,1,0},
            {0,0,1,0},
            {0,0,1,0}
        },
        {
            {0,0,0,0},
            {0,1,1,0},
            {0,1,0,0},
            {0,1,0,0}
        },
        {
            {0,0,0,0},
            {0,1,0,0},
            {0,1,1,0},
            {0,0,1,0}
        },
        {
            {0,0,0,0},
            {0,0,1,0},
            {0,1,1,0},
            {0,1,0,0}
        },
        {
            {0,0,0,0},
            {0,0,1,0},
            {0,1,1,0},
            {0,0,1,0}
        },
        {
            {0,0,0,0},
            {0,1,1,0},
            {0,1,1,0},
            {0,0,0,0}
        },
        {
            {0,0,1,0},
            {0,0,1,0},
            {0,0,1,0},
            {0,0,1,0}
        }
    };
    
    int i, j, bflg = 0, gflg = 1;
    int block[4][4] = {}, rotated[4][4];
    signed int slidex = 0, slidey = 0;
    char string[12] = {};

	CyGlobalIntEnable;
    PS2_Start();
    CyIntSetSysVector(SysTick_IRQn + 16, timer_isr);
    SysTick_Config(0x00ffff);

	//USBUART_Start(0, USBUART_5V_OPERATION);
	//while (USBUART_GetConfiguration() == 0);
    //USBUART_CDC_Init();

    DotMat_init();
    randomBlock(blocks, block);
    paintBlock(block[4][4], slidey, slidex);
    //DotMat_paint(&Map);
    
    CyDelay(100);
     
    for (;;){
        psData = PS2_Controller_get();
        dotMatrix_print(&Map);
        dotMatrix_print(&dotMat);
        if(isr_flg){
            if(gflg){
                if(counter == cmax){
                    if(check(block, slidey - 1, slidex) == 1){
                        slidey--;
                    } else{
                        mergeMatrix(block, slidey , slidex);
                        clearRow(&cmax);
                        dotMatrix_dataToArray(&Map);
                        if(slidey == 0){
                            myprint(string);
                            gflg = 0;
                        }
                        randomBlock(blocks, block);
                        slidey = 0;
                        slidex = 0;
                    }
                    if(gflg){
                        DotMat_paint(block, slidey, slidex);
                    }
                    counter = 0;
                }
                counter++;
            } else{
                myprint(string);
            }
            isr_flg = 0;
        }
        
        if(psData.CIRCLE || psData.CROSS){
            rand();
                if(c_flag){
                    if(psData.CIRCLE){
                        rotate(block, rotated, 1);
                    }
                    if(psData.CROSS){
                        rotate(block, rotated, 2);
                    }
                    if(check(rotated, slidey , slidex) == 1){
                        if(bflg == 1){
                            slidex--;
                            bflg = 0;
                        }
                        if(bflg == 2){
                            slidex++;
                            bflg = 0;
                        }
                        rotate2block(block, rotated);
                        DotMat_paint(block, slidey, slidex);
                    }
                    if(check(rotated, slidey , slidex) == 2){
                        bflg = 1;
                        if(check(rotated, slidey , slidex + 1) == 2){
                            if(check(rotated, slidey , slidex + 2) == 1){
                                slidex++;
                            }
                        }
                        if(check(rotated, slidey , slidex + 1) == 1){
                            slidex++;
                            rotate2block(block, rotated);
                            DotMat_paint(block, slidey, slidex);
                        }
                    }
                    if(check(rotated, slidey , slidex) == 3){
                        bflg = 2;
                        if(check(rotated, slidey , slidex - 1) == 3){
                            if(check(rotated, slidey , slidex - 2) == 1){
                                slidex--;
                            }
                        }
                        if(check(rotated, slidey , slidex - 1) == 1){
                            slidex--;
                            rotate2block(block, rotated);
                            DotMat_paint(block, slidey, slidex);
                        }
                    }
                }
                c_flag = 0;
        } else{
            c_flag = 1;
        }
        
        if(psData.LEFT){
            bflg = 0;
            rand();
            if(left_flag){
                if(check(block, slidey , slidex - 1) == 1){
                    slidex--;
                    DotMat_paint(block, slidey, slidex);
                }
            }
            left_flag = 0;
        } else{
            left_flag = 1;
        }
        
        if(psData.RIGHT){
            bflg = 0;
            rand();
            if(right_flag){
                if(check(block, slidey , slidex + 1) == 1){
                    slidex++;
                    DotMat_paint(block, slidey, slidex);
                }
            }
            right_flag = 0;
        } else{
            right_flag = 1;
        }
        
        if(psData.UP){
            rand();
            if(up_flag){
                while(check(block, slidey - 1, slidex) == 1){
                    slidey--;
                }
                DotMat_paint(block, slidey, slidex);
            }
            up_flag = 0;
        } else{
            up_flag = 1;
        }
        
        if(psData.DOWN){
            rand();
            if(psData.L1){
                if(psData.R1){
                    while(check(block, slidey - 1, slidex) == 1){
                        slidey++;
                        DotMat_paint(block, slidey, slidex);
                    }
                }
            }
            if(down_flag){
                while(check(block, slidey - 1, slidex) == 1){
                    slidey--;
                    DotMat_paint(block, slidey, slidex);
                }                
            }
            down_flag = 0;
        } else{
            down_flag = 1;
        }
        
        if(psData.SELECT){
            if(psData.START){
                slidey = 0;
                slidex = 0;
                DotMat_init();
                randomBlock(blocks, block);
                paintBlock(block[4][4], slidey, slidex);
                gflg = 1;
                cmax = 50;
            }
        }
    }
}