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

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

?? audio_input_output.c

?? TI workshop 培訓(xùn)資料。 是關(guān)于如何創(chuàng)建DAVINCI平臺(tái)下codec engine
?? C
字號(hào):
/*  * audio_cap_disp.c *//* Standard Linux headers */#include <stdio.h>            // always include stdio.h#include <stdlib.h>           // always include stdlib.h#include <unistd.h>           // defines open, close, read, write#include <sys/ioctl.h>        // defines ioctl#include <fcntl.h>            // defines standard flags, O_RDONLY, O_WRONLY#include <linux/soundcard.h>  // defines OSS driver/* Application headers */#include "audio_input_output.h" // audio i/o methods and types #include "debug.h"            // defines debug routines/* The number of channels of the audio codec.*/#define NUM_CHANNELS 2/****************************************************************************** * init_mixer ******************************************************************************//*  input parameters:                                                         *//*      char *device  --  string value for mixer device node,                 *//*                        such as "/dev/mixer"                                *//*      int recmask   --  mask specifying input sources, definitions are      *//*                        provided in soundcard.h, such as SOUND_MASK_LINE    *//*                        for line input or SOUND_MASK_MIC for microphone     *//*      int vol       --  left and right packed volume for input,             *//*                        8 bits each with right volume most significant pos  *//*                                                                            *//*                                                                            *//*  return value:                                                             *//*      int  --  AUDIO_SUCCESS or AUDIO_FAILURE as defined in                 *//*   		          audio_input_output.h                                *//*                                                                            *//******************************************************************************/int init_mixer(char *device, int recmask, int vol){    int     mixerFd;	// file descriptor for mixer      DBG("Initializing mixer device: %s\n", device);    /* Open the mixer device */    if ((mixerFd = open(device, O_RDONLY)) == -1) {        ERR("Failed to open %s\n", device);        return AUDIO_FAILURE;    }    /*  Report mixer input settings and warn user if neither mic nor line */    if(recmask & SOUND_MASK_LINE)    	DBG("\tLine input enabled to mixer (record mask: %#0x)\n", recmask);    if(recmask & SOUND_MASK_MIC)    	DBG("\tMic input enabled to mixer (record mask: %#0x)\n", recmask);    if(!(recmask & (SOUND_MASK_LINE | SOUND_MASK_MIC))){	ERR("Neither supported input (mic, line) to the mixer has been set!\n");	ERR("\tThere may be no mixer input provided to OSS driver!\n");	ERR("\t(record mask: %#0x)\n", recmask);    }    /* Set the mixer input source */    if (ioctl(mixerFd, SOUND_MIXER_WRITE_RECSRC, &recmask) == -1) {        ERR("Failed to set mixer record mask (file descriptor %d)\n", mixerFd);	close(mixerFd);        return AUDIO_FAILURE;    }#if 0 // Currently this ioctl is not supported in the Davinci driver    if (ioctl(mixerFd, SOUND_MIXER_WRITE_IGAIN, &vol) == -1) {        ERR("Failed to set the volume of line in.\n");        return -1;    }#endif    close(mixerFd);    /* return AUDIO_SUCCESSS if all steps execute correctly */    return AUDIO_SUCCESS;}/****************************************************************************** * init_sound_device ******************************************************************************//*  input parameters:                                                         *//*      int *fdByRef  --  file descriptor passed by reference. Used to return *//*                        the file descriptor of the newly opened device      *//*      char *device  --  string value for OSS driver device node,            *//*                        such as "/dev/dsp"                                  *//*      int format    --  data format, only AFMT_S16_LE =                     *//*                        Stereo 16-bit Little Endian format is supported     *//*      int numchannels --  must be 2 since only stereo format supported      *//*      int samplerate  --  sample rate in Hertz, i.e. 44100                  *//*      int mode        --  O_RDONLY for input, O_WRONLY for output           *//*                                                                            *//*                                                                            *//*  return value:                                                             *//*      int  --  AUDIO_SUCCESS or AUDIO_FAILURE as per audio_input_output.h   *//*                                                                            *//******************************************************************************/int init_sound_device(int *fdByRef, char *device, int format, int numchannels, 			int samplerate, int mode){    int     fd;		// file descriptor for OSS audio stream    /* Define a macro to handle the cleanup procedure for failures */#define isd_failure_procedure()	close(fd);	\				*fdByRef = -1;	\				return AUDIO_FAILURE    DBG("Initializing %s sound device: %s\n",                            mode == O_RDONLY ? "input" : "output", device);    /* Open the sound device */    if ((fd = open(device, mode)) == -1) {        ERR("Failed to open the sound device (%s)\n", device);        return AUDIO_FAILURE;    }    DBG("\tSound device opened with file descriptor: %d\n", fd);    /* Set the sound format (only AFMT_S16_LE currently supported) */    if (ioctl(fd, SNDCTL_DSP_SETFMT, &format) == -1) {        ERR("Could not set format %d\n", format);	isd_failure_procedure();    }    /* Currently only AFMT_S16_LE is supported, so cheat and just report this */    DBG("\tFormat set to AFMT_S16_LE (%#0x)\n", format);    /* Set the number of channels */    if (ioctl(fd, SNDCTL_DSP_CHANNELS, &numchannels) == -1) {        ERR("Could not set mixer to %d channels\n", numchannels);	isd_failure_procedure();    }    DBG("\tNumber of channels set to %d\n", numchannels);    /* Set the sample rate */    if (ioctl(fd, SNDCTL_DSP_SPEED, &samplerate) == -1) {        ERR("Could not set sample rate (%d)\n\n", samplerate);	isd_failure_procedure();    }    DBG("\tSample rate set to %d Hz.\n", samplerate);    /* return AUDIO_SUCCESS and file descriptor of newly opened device */    *fdByRef = fd;    return AUDIO_SUCCESS;}/****************************************************************************** * audio_input_setup ******************************************************************************//*  input parameters:                                                         *//*      int *fdByRef       --  file descriptor passed by reference. Used to   *//*                             return file descriptor of newly opened device  *//*      char *soundDevice  --  string value for OSS driver device node,       *//*                              such as "/dev/dsp"                            *//*      char *mixerDevice  --  string value for mixer device node,            *//*                              such as "/dev/mixer"                          *//*      int audioSource    --  mask specifying input sources, definitions     *//*                              are provided in soundcard.h, such as          *//*                              SOUND_MASK_LINE for line input or             *//*                              SOUND_MASK_MIC for microphone input           *//*      int vol       --  left and right packed volume for input,             *//*                        8 bits each with right volume most significant pos  *//*      int samplerate  --  sample rate in Hertz, i.e. 44100                  *//*      int *blockSizeByRef --  pointer to a blocksize value, used to return  *//*                              the driver's native blocksize                 *//*                                                                            *//*                                                                            *//*  return value:                                                             *//*      int  --  AUDIO_SUCCESS or AUDIO_FAILURE as per audio_input_output.h   *//*                                                                            *//******************************************************************************/int audio_input_setup(int *fdByRef, char *soundDevice, char *mixerDevice, 			   int audioSource, int vol, int sampleRate, 			   int *blockSizeByRef){    int inputFd;	// file descriptor for OSS input stream    /* Define a macro to handle the cleanup procedure for failures */#define ais_failure_procedure()	*blockSizeByRef = 0;	\				*fdByRef = -1;		\				return AUDIO_FAILURE    /* Initialize the mixer for line input */    if( init_mixer(mixerDevice, audioSource, vol) < 0){	ERR("init_mixer failed in audio_input_setup\n");	ais_failure_procedure();    }    /* Initialize the input OSS device                                        */    /* AFMT_S16_LE = Stereo 16-bit Little Endian data format                  */    /* (LEFT_CHAN 0, 16bit)(RIGHT_CHAN 0, 16bit)(LEFT_CHAN 1, 16 bit)...      */    /* This is the only currently supported format for this driver on DaVinci */    if( init_sound_device(&inputFd, soundDevice, AFMT_S16_LE, NUM_CHANNELS,                                sampleRate, O_RDONLY) == AUDIO_FAILURE ){        ERR("init_sound_device failed in audio_input_setup\n");	ais_failure_procedure();    }    /* Query the input OSS driver for the optimal block size to use */    if (ioctl(inputFd, SNDCTL_DSP_GETBLKSIZE, blockSizeByRef) == -1) {        ERR("Failed to get optimal block size from device: %s\n",soundDevice);	ais_failure_procedure();    }    /* return AUDIO_SUCCESS and file descriptor of newly opened device */    /*      *blockSizeByRef return value has already been set          */    *fdByRef = inputFd;    return AUDIO_SUCCESS;}/****************************************************************************** * audio_input_cleanup ******************************************************************************//*  input parameters:                                                         *//*      int inputFd --  file descriptor for the sound device as returned by   *//*                      audio_input_setup                                     *//*                                                                            *//*  return value:                                                             *//*      int -- AUDIO_SUCCESS or AUDIO_FAILURE as per audio_input_output.h     *//*                                                                            *//******************************************************************************/int audio_input_cleanup(int inputFd){    if(close(inputFd) == -1){	ERR("Failed close on OSS audio input device (file descriptor %d) \n",								inputFd);        return AUDIO_FAILURE;    }    DBG("Closed audio input device (file descriptor %d)\n", inputFd);    return AUDIO_SUCCESS;}/****************************************************************************** * audio_output_setup ******************************************************************************//*  input parameters:                                                         *//*      int *fdByRef       --  file descriptor passed by reference. Used to   *//*                             return file descriptor of newly opened device  *//*      char *soundDevice  --  string value for OSS driver device node,       *//*                             such as "/dev/dsp"                             *//*      int samplerate     --  sample rate in Hertz, i.e. 44100               *//*                                                                            *//*                                                                            *//*  return value:                                                             *//*      int  --  AUDIO_SUCCESS or AUDIO_FAILURE as per audio_input_output.h   *//*                                                                            *//******************************************************************************/int audio_output_setup(int *fdByRef, char *soundDevice, int sampleRate){    int outputFd;		// file descriptor for OSS output stream    /* Initialize the output OSS device                                       */    /* AFMT_S16_LE = Stereo 16-bit Little Endian data format                  */    /* (LEFT_CHAN 0, 16bit)(RIGHT_CHAN 0, 16bit)(LEFT_CHAN 1, 16 bit)...      */    /* This is the only currently supported format for this driver on DaVinci */    if( init_sound_device(&outputFd, soundDevice, AFMT_S16_LE, NUM_CHANNELS,                                 sampleRate, O_WRONLY) == AUDIO_FAILURE ){        ERR("init_sound_device failed in audio_output_setup\n");	*fdByRef = -1;		// return invalid file descriptor on failure	return AUDIO_FAILURE;    }    /* Return status and file descriptor of newly opened device */    *fdByRef = outputFd;    return AUDIO_SUCCESS;}/****************************************************************************** * audio_output_cleanup ******************************************************************************//*  input parameters:                                                         *//*      int outputFd --  file descriptor for the sound device as returned by  *//*                      audio_output_setup                                    *//*                                                                            *//*  return value:                                                             *//*      int -- AUDIO_SUCCESS or AUDIO_FAILURE as per audio_input_output.h     *//*                                                                            *//******************************************************************************/int audio_output_cleanup(int outputFd){    if(close(outputFd) == -1){	ERR("Failed close on OSS audio output device (file descriptor %d) \n",								outputFd);        return AUDIO_FAILURE;    }    DBG("Closed audio output device (file descriptor %d)\n", outputFd);    return AUDIO_SUCCESS;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区在线看| 亚洲一区二区三区在线看| 91免费国产在线观看| 五月婷婷久久丁香| 亚洲国产精品黑人久久久| 欧美日韩成人一区二区| 国产精品一区二区91| 香蕉影视欧美成人| 国产精品私房写真福利视频| 91精品国产综合久久久久久久| 成人av网站在线观看免费| 久久精品国产久精国产| 亚洲成人免费视频| 亚洲欧美色图小说| 久久久www成人免费毛片麻豆| 欧美日韩国产一区二区三区地区| 99国产精品久久久久久久久久久| 激情伊人五月天久久综合| 亚洲福利视频一区| 亚洲精品视频免费看| 欧美激情一区二区| 久久久久久**毛片大全| 日韩女优视频免费观看| 欧美日韩国产bt| 欧美影片第一页| 99r精品视频| 处破女av一区二区| 成人一区二区三区中文字幕| 国产精品一线二线三线| 久草热8精品视频在线观看| 免费成人在线观看视频| 日本vs亚洲vs韩国一区三区 | 91久久一区二区| 成人看片黄a免费看在线| 国产精品一区在线观看乱码| 韩国三级在线一区| 国产一区亚洲一区| 国产美女视频91| 国产精品系列在线播放| 国产精品一二三四| 国产乱子伦视频一区二区三区 | 国产日产欧产精品推荐色| 精品三级在线看| www激情久久| 久久久久久久综合| 国产欧美精品国产国产专区| 国产无一区二区| 亚洲欧洲日韩一区二区三区| 最新国产成人在线观看| 亚洲欧美日韩在线| 一区二区三区不卡视频在线观看| 亚洲精品视频在线观看免费 | 亚洲成人久久影院| 日日噜噜夜夜狠狠视频欧美人| 天堂一区二区在线| 久久精品国产澳门| 国产福利视频一区二区三区| 成人开心网精品视频| 91福利社在线观看| 91精品国产91久久综合桃花| 欧美tk丨vk视频| 国产精品日日摸夜夜摸av| 亚洲综合在线免费观看| 婷婷开心激情综合| 国产一区二区福利视频| 成人av网站在线观看| 欧美三级电影网| 久久综合视频网| 亚洲欧美在线另类| 天天综合日日夜夜精品| 狠狠色狠狠色综合系列| 不卡一区在线观看| 91精品国产全国免费观看 | 久久精品一二三| 一区二区三区中文字幕电影 | 水野朝阳av一区二区三区| 老色鬼精品视频在线观看播放| 盗摄精品av一区二区三区| 欧美日韩在线精品一区二区三区激情 | 亚洲午夜久久久久久久久电影网| 日本不卡在线视频| 成人美女视频在线观看18| 欧美另类一区二区三区| 国产日韩欧美电影| 视频一区视频二区中文字幕| 成人午夜精品一区二区三区| 欧美三级视频在线播放| 国产亚洲成aⅴ人片在线观看| 亚洲免费三区一区二区| 免费看黄色91| 91麻豆国产福利精品| 精品久久久久久久人人人人传媒| 亚洲欧美日韩系列| 国产一区欧美一区| 欧美裸体一区二区三区| 中文字幕中文在线不卡住| 久久99国产精品久久| 欧美性生活一区| 亚洲欧洲韩国日本视频| 青青草精品视频| 在线精品视频小说1| 欧美国产综合一区二区| 琪琪久久久久日韩精品| 色哟哟在线观看一区二区三区| 精品国产乱码久久久久久浪潮| 亚洲一二三专区| 成人av第一页| 久久久久久亚洲综合| 青娱乐精品视频| 欧美在线高清视频| 中文字幕色av一区二区三区| 国产一区二区三区四| 日韩女优毛片在线| 日韩黄色小视频| 欧美日韩成人综合天天影院 | 日韩中文欧美在线| 色久优优欧美色久优优| 中文字幕亚洲精品在线观看| 国产成人综合在线| 久久久午夜电影| 激情图区综合网| 久久夜色精品一区| 老司机午夜精品| 日韩精品一区二| 久久狠狠亚洲综合| 欧美一二三四在线| 美女网站色91| 538在线一区二区精品国产| 亚洲电影中文字幕在线观看| 色嗨嗨av一区二区三区| 亚洲视频免费在线| 99国产精品久| 一区二区三区四区国产精品| 日本高清不卡视频| 一区二区视频在线| 欧美午夜片在线看| 亚洲国产你懂的| 欧美精品亚洲一区二区在线播放| 亚洲成人免费看| 91麻豆精品国产91久久久久久| 视频一区在线播放| 欧美成人精精品一区二区频| 久久精品99国产精品日本| 精品免费国产一区二区三区四区| 九色综合狠狠综合久久| 2014亚洲片线观看视频免费| 国产精品自拍毛片| 中文字幕第一区综合| 播五月开心婷婷综合| 亚洲女性喷水在线观看一区| 欧美视频日韩视频| 日韩黄色免费电影| 久久综合狠狠综合| 不卡av在线免费观看| 一区二区三区在线视频观看58 | 在线看日本不卡| 日本视频在线一区| 欧美激情中文字幕| 色94色欧美sute亚洲线路一久| 午夜精品久久久久久久久久| 精品少妇一区二区三区视频免付费| 国产成人精品亚洲日本在线桃色 | 色婷婷综合久久久中文一区二区 | 樱桃国产成人精品视频| 欧美三级日韩三级国产三级| 美女在线一区二区| 国产精品丝袜在线| 欧美在线观看你懂的| 九色|91porny| 国产精品成人一区二区艾草 | 精品国产乱码久久久久久图片| 成人永久免费视频| 婷婷夜色潮精品综合在线| 久久精品人人做人人综合| 99久久夜色精品国产网站| 午夜视频一区二区三区| 久久久久九九视频| 欧美伊人精品成人久久综合97| 精品亚洲成a人| 亚洲黄网站在线观看| 日韩一区二区在线播放| 99久久国产免费看| 久久国产乱子精品免费女| 亚洲三级视频在线观看| 日韩欧美高清在线| 91福利精品视频| 国产美女精品一区二区三区| 亚洲成av人片| 欧美国产乱子伦| 日韩一区二区三区视频| 91蝌蚪国产九色| 国产精品自拍三区| 日韩精品欧美精品| 亚洲色图视频免费播放| 久久蜜臀中文字幕| 91精品国产综合久久福利软件| 在线免费一区三区| www.亚洲激情.com| 国内精品在线播放| 蜜臀精品久久久久久蜜臀 |