亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dm642audio.c

?? 針對TI的DM642的音頻驅(qū)動
?? C
字號:
/*
 *  Copyright 2003 by Texas Instruments Incorporated.
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *  
 */
/*
 *  ======== main.c ========
 * 
 *  This example demonstrates the use of IOM drivers with SIOs and tasks by 
 *  using the DIO class driver with a user defined device mini-driver 
 *  called "codec" and a class driver DIO instance called "dio_codec". This is 
 *  the loopback application where audio is read from an input SIO, then sent 
 *  back via an output SIO.

 *  The following objects need to be created in the DSP/BIOS
 *  configuration for this application:
 *
 *  * A UDEV object, which links in a user device driver. In this
 *    case the UDEV is a codec based IOM device driver.
 *  * A DIO object, which links the UDEV object.
 *  * A TSK object, with the function to run set to the function demo
 *    defined in this file.
 *  * A LOG named trace for debug and status output.
 */
#include <std.h>

#include <log.h>
#include <sys.h>
#include <mem.h>
#include <sio.h>
#include <csl.h>
#include <csl_cache.h>

#include "seeddm642.h"
#include <evmdm642_edma_aic23.h>

#define NUM_CODEC_CHANNELS	 8	/* stereo: left + right		*/
#define SAMPLEING_RATE		48	/* 48 samples/ms			*/
#define FRAME_SIZE			10	/* 10 ms					*/
#define	NFRAMES				100	/* 100 frames = 1 second	*/
#define	BUFLEN		(NUM_CODEC_CHANNELS*SAMPLEING_RATE*FRAME_SIZE)

#ifdef _6x_
extern far LOG_Obj trace;

/* 
 * Buffers placed in external memory are aligned on a 128 bytes boundary.
 * In addition, the buffer should be of a size multiple of 128 bytes for 
 * the cache work optimally on the C6x.
 */
#define BUFALIGN 128    /* alignment of buffer to allow use of L2 cache */
#else
extern LOG_Obj trace;
#define BUFALIGN 1
#endif

#define BUFSIZE (BUFLEN * sizeof(short)) 

/*
 *  ======== EVMDM642_DEVPARAMS ========
 *  This static initialization defines the default parameters used for
 *  EVMDM642_EDMA_AIC23 IOM driver
 */
EVMDM642_EDMA_AIC23_DevParams EVMDM642_CODEC_DEVPARAMS =
        EVMDM642_EDMA_AIC23_DEFAULT_DEVPARAMS;

/* inStream and outStream are SIO handles created in main */
SIO_Handle inStream, outStream;

/* Function prototype */
static Void createStreams();
static Void prime();


/*
 * ======== main ========
 */
Void main()
{
    LOG_printf(&trace, "echo started");
}

short *pEchoBuf;
const int echoBufSize = NFRAMES * BUFLEN;
int echoBufOffset = 0;
int delayTime = 500;
int echoAtt = 64;

/*
 *  ======== initEchoBuffer ========
 * Allocate echo buffer and fill with silence
 */
int initEchoBuffer()
{
	pEchoBuf = MEM_calloc(0, echoBufSize * sizeof(short), BUFALIGN);
	return (pEchoBuf == MEM_ILLEGAL) ? -1 : 0;
}

/*
 *  ======== copyWithEcho ========
 * Copy an incoming buffer with stereo audio samples into an outgoing
 * buffer, mixing with samples from the echo buffer indexed by
 * the parameter timeDelay.  The parameter "a" indicates the mix
 * attenuation * 256 (i.e. 64 = 0.25).
 */
void copyWithEcho(short *inBuf, short *outBuf, int timeDelay, int a)
{
	int i;
	int srcSample;

	for(i = 0;i<BUFLEN;i++)
	{
		srcSample = (int) *inBuf++;
		*outBuf++ = srcSample;
	}
}

/*
 * ======== createStreams ========
 */
static Void createStreams()
{
    SIO_Attrs attrs;
    
    /* align the buffer to allow it to be used with L2 cache */
    attrs = SIO_ATTRS;
    attrs.align = BUFALIGN;
    attrs.model = SIO_ISSUERECLAIM;

    /* open the I/O streams */
    inStream = SIO_create("/dio_codec", SIO_INPUT, BUFSIZE, &attrs);
    if (inStream == NULL) {
        SYS_abort("Create input stream FAILED.");
    }

    outStream = SIO_create("/dio_codec", SIO_OUTPUT, BUFSIZE, &attrs);
    if (outStream == NULL) {
        SYS_abort("Create output stream FAILED.");
    }
}

/*
 * ======== prime ========
 */
static Void prime()
{
    Ptr buf0, buf1, buf2, buf3;

    LOG_printf(&trace, "Allocate buffers started");

    /* Allocate buffers for the SIO buffer exchanges */
    buf0 = (Ptr)MEM_calloc(0, BUFSIZE, BUFALIGN);
    buf1 = (Ptr)MEM_calloc(0, BUFSIZE, BUFALIGN);
    buf2 = (Ptr)MEM_calloc(0, BUFSIZE, BUFALIGN);
    buf3 = (Ptr)MEM_calloc(0, BUFSIZE, BUFALIGN);
    if (buf0 == NULL || buf1 == NULL || buf2 == NULL || buf3 == NULL) {
        SYS_abort("MEM_calloc failed.");
    } 
    
    /* Issue the first & second empty buffers to the input stream */
    if (SIO_issue(inStream, buf0, SIO_bufsize(inStream), NULL) != SYS_OK) {
        SYS_abort("Error issuing buffer to the input stream");
    }
    if (SIO_issue(inStream, buf1, SIO_bufsize(inStream), NULL) != SYS_OK) {
        SYS_abort("Error issuing buffer to the input stream");
    }

    /* Issue the first & second empty buffers to the output stream */
    if (SIO_issue(outStream, buf2, SIO_bufsize(outStream), NULL) != SYS_OK) {
        SYS_abort("Error issuing buffer to the output stream");
    }
    if (SIO_issue(outStream, buf3, SIO_bufsize(outStream), NULL) != SYS_OK) {
        SYS_abort("Error issuing buffer to the output stream");
    }
}

/*
 * ======== tskAudioDemo ========
 * This function copies from the input SIO to the output SIO. You could
 * easily replace the copy function with a signal processing algorithm. 
 */
Void tskAudioDemo()
{
    Int nmadus;         /* number of minimal addressable units */
    short *inbuf, *outbuf;

	/* Call createStream function to create I/O streams */
    createStreams();
    
    /* Call prime function to do priming */
    prime();
    
    initEchoBuffer();

    /* Loop forever looping back buffers */
    for (;;) {
        /* Reclaim full buffer from the input stream */
        if ((nmadus = SIO_reclaim(inStream, (Ptr *)&inbuf, NULL)) < 0) {
            SYS_abort("Error reclaiming full buffer from the input stream");
        }

        /* Reclaim empty buffer from the output stream to be reused */
        if (SIO_reclaim(outStream, (Ptr *)&outbuf, NULL) < 0) {
            SYS_abort("Error reclaiming empty buffer from the output stream");
        }

		/* process echo algorithm */
		copyWithEcho(inbuf, outbuf, delayTime, echoAtt);
//		EVMDM642_LED_toggle(0);

        /* Issue full buffer to the output stream */
        if (SIO_issue(outStream, outbuf, nmadus, NULL) != SYS_OK) {
            SYS_abort("Error issuing full buffer to the output stream");
        }

        /* Issue an empty buffer to the input stream */
        if (SIO_issue(inStream, inbuf, SIO_bufsize(inStream), NULL) != SYS_OK) {
            SYS_abort("Error issuing empty buffer to the input stream");
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av在线资源网| 亚洲影视资源网| 国产91在线观看| 久久精品亚洲国产奇米99| 久久精品久久精品| 久久久亚洲精华液精华液精华液| 精品一区二区三区久久久| 国产亚洲午夜高清国产拍精品| 国产成人午夜99999| 国产精品久久久久影院色老大| 成人av在线一区二区三区| 亚洲综合一区在线| 欧美一区二区三区四区高清| 久久99精品国产.久久久久久| 国产欧美一区二区在线观看| 97成人超碰视| 视频一区二区不卡| 亚洲国产精品av| 日本丰满少妇一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 国产日韩欧美精品在线| 欧美在线制服丝袜| 国产一区二区三区精品视频| 成人免费一区二区三区在线观看| 欧美日韩精品一区二区| 国产麻豆精品一区二区| 亚洲综合一区二区| 国产日韩欧美精品电影三级在线| 欧美自拍偷拍一区| 国产精品一区二区三区99| 一区二区三区在线免费观看| 精品第一国产综合精品aⅴ| 91麻豆蜜桃一区二区三区| 日韩电影在线一区二区| 亚洲视频中文字幕| 精品91自产拍在线观看一区| 色婷婷亚洲综合| 国产精品888| 美国欧美日韩国产在线播放| 中文字幕一区在线| 精品国产免费久久| 精品视频1区2区| av一区二区久久| 国产精品中文欧美| 青青草国产精品亚洲专区无| 亚洲日本在线天堂| 欧美激情艳妇裸体舞| 日韩一级成人av| 欧美亚洲一区二区在线观看| 成人激情免费网站| 精品系列免费在线观看| 日日夜夜一区二区| 亚洲综合色网站| 亚洲女子a中天字幕| 国产精品久久久久影院老司 | 国产一区二区免费在线| 亚洲午夜在线视频| 日韩美女视频19| 国产精品视频yy9299一区| 日韩午夜激情视频| 制服丝袜亚洲精品中文字幕| 在线视频中文字幕一区二区| 91性感美女视频| www.日本不卡| 99久久精品国产一区| 福利一区二区在线观看| 国产精品88av| 国产不卡视频在线播放| 国产老肥熟一区二区三区| 久久99九九99精品| 捆绑调教一区二区三区| 蜜臀久久99精品久久久画质超高清 | www.av亚洲| 91一区二区在线观看| 色综合久久中文综合久久97| 9色porny自拍视频一区二区| 99re这里只有精品首页| av亚洲产国偷v产偷v自拍| 成人av综合在线| 色婷婷综合久色| 欧洲精品一区二区三区在线观看| 在线观看亚洲精品视频| 欧美色大人视频| 欧美精品久久天天躁| 欧美电影免费提供在线观看| 欧美成人video| 久久久蜜桃精品| 中文字幕一区二区三区视频| 成人免费一区二区三区视频| 一区二区三区中文字幕精品精品| 亚洲无人区一区| 男男视频亚洲欧美| 韩国三级中文字幕hd久久精品| 国产高清不卡二三区| 成人黄色免费短视频| 色综合久久66| 777a∨成人精品桃花网| 337p粉嫩大胆噜噜噜噜噜91av | 欧美成人性福生活免费看| 久久久久99精品一区| 日韩码欧中文字| 亚洲国产成人91porn| 天堂一区二区在线免费观看| 蜜桃精品视频在线| 成人免费视频视频在线观看免费 | 国产精品一区在线| 92精品国产成人观看免费| 欧美日韩黄色一区二区| 久久综合久久鬼色中文字| 国产精品国产三级国产aⅴ无密码| 亚洲国产一区在线观看| 国产一区在线视频| 色久综合一二码| 欧美精品一区二区三| 亚洲日本va午夜在线电影| 日本免费在线视频不卡一不卡二| 国产成人免费在线视频| 欧洲av一区二区嗯嗯嗯啊| 久久伊99综合婷婷久久伊| 亚洲一区二区三区四区五区中文| 激情六月婷婷久久| 欧美亚洲综合在线| 国产欧美va欧美不卡在线| 亚洲成人综合视频| 成人综合婷婷国产精品久久免费| 欧美日本一区二区| 国产精品午夜春色av| 日本不卡视频在线观看| 色乱码一区二区三区88| 国产亚洲福利社区一区| 日韩专区一卡二卡| 色综合久久99| 久久久久成人黄色影片| 天天影视色香欲综合网老头| 99久久综合99久久综合网站| 日韩午夜中文字幕| 亚洲一区在线观看视频| 成人app下载| 久久精品一区八戒影视| 精品一区二区三区在线播放视频 | 成人av电影在线| 亚洲精品在线三区| 麻豆精品久久精品色综合| 欧美在线不卡一区| 亚洲丝袜自拍清纯另类| 成人国产精品免费观看动漫| 精品播放一区二区| 免费视频最近日韩| 欧美福利视频导航| 亚洲一区二区三区四区在线| 99久久精品久久久久久清纯| 国产精品美女久久久久aⅴ| 国产一区二区免费在线| 久久综合资源网| 久久国产精品一区二区| 日韩视频不卡中文| 免费看日韩a级影片| 日韩一区二区电影网| 天天综合网 天天综合色| 欧美日韩国产片| 无吗不卡中文字幕| 91精品国产综合久久精品图片| 亚洲在线观看免费| 欧美亚洲尤物久久| 亚洲h动漫在线| 91精品久久久久久久99蜜桃| 日本在线不卡一区| 日韩午夜精品电影| 国内成+人亚洲+欧美+综合在线| 欧美一级高清片| 毛片av一区二区三区| 26uuu精品一区二区| 国产东北露脸精品视频| 中文字幕一区三区| 欧美体内she精高潮| 天天亚洲美女在线视频| 精品免费一区二区三区| 国产麻豆欧美日韩一区| 国产精品久久久99| 日本道精品一区二区三区| 午夜精品久久一牛影视| 91精品国产一区二区三区蜜臀| 精品一区二区三区免费| 欧美激情在线一区二区| 99re成人在线| 午夜精品久久久久久久久久久| 日韩女优视频免费观看| 国产成人精品一区二| 亚洲欧美日韩中文字幕一区二区三区| 一本色道久久加勒比精品| 午夜成人免费电影| 久久午夜电影网| 99久久精品一区| 日韩精品亚洲专区| 国产清纯白嫩初高生在线观看91| 9色porny自拍视频一区二区| 天天操天天综合网| 欧美国产日本韩| 欧美日韩成人综合| 国产不卡在线一区|