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

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

?? linear.c

?? 底層驅(qū)動(dòng)開發(fā)
?? C
字號(hào):
/* *  Linear conversion Plug-In *  Copyright (c) 1999 by Jaroslav Kysela <perex@suse.cz>, *			  Abramo Bagnara <abramo@alsa-project.org> * * *   This library is free software; you can redistribute it and/or modify *   it under the terms of the GNU Library General Public License as *   published by the Free Software Foundation; either version 2 of *   the License, or (at your option) any later version. * *   This program is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU Library General Public License for more details. * *   You should have received a copy of the GNU Library General Public *   License along with this library; if not, write to the Free Software *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA * */#include <sound/driver.h>#include <linux/time.h>#include <sound/core.h>#include <sound/pcm.h>#include "pcm_plugin.h"/* *  Basic linear conversion plugin */ typedef struct linear_private_data {	int conv;} linear_t;static void convert(snd_pcm_plugin_t *plugin,		    const snd_pcm_plugin_channel_t *src_channels,		    snd_pcm_plugin_channel_t *dst_channels,		    snd_pcm_uframes_t frames){#define CONV_LABELS#include "plugin_ops.h"#undef CONV_LABELS	linear_t *data = (linear_t *)plugin->extra_data;	void *conv = conv_labels[data->conv];	int channel;	int nchannels = plugin->src_format.channels;	for (channel = 0; channel < nchannels; ++channel) {		char *src;		char *dst;		int src_step, dst_step;		snd_pcm_uframes_t frames1;		if (!src_channels[channel].enabled) {			if (dst_channels[channel].wanted)				snd_pcm_area_silence(&dst_channels[channel].area, 0, frames, plugin->dst_format.format);			dst_channels[channel].enabled = 0;			continue;		}		dst_channels[channel].enabled = 1;		src = src_channels[channel].area.addr + src_channels[channel].area.first / 8;		dst = dst_channels[channel].area.addr + dst_channels[channel].area.first / 8;		src_step = src_channels[channel].area.step / 8;		dst_step = dst_channels[channel].area.step / 8;		frames1 = frames;		while (frames1-- > 0) {			goto *conv;#define CONV_END after#include "plugin_ops.h"#undef CONV_END		after:			src += src_step;			dst += dst_step;		}	}}static snd_pcm_sframes_t linear_transfer(snd_pcm_plugin_t *plugin,			       const snd_pcm_plugin_channel_t *src_channels,			       snd_pcm_plugin_channel_t *dst_channels,			       snd_pcm_uframes_t frames){	linear_t *data;	snd_assert(plugin != NULL && src_channels != NULL && dst_channels != NULL, return -ENXIO);	data = (linear_t *)plugin->extra_data;	if (frames == 0)		return 0;#ifdef CONFIG_SND_DEBUG	{		unsigned int channel;		for (channel = 0; channel < plugin->src_format.channels; channel++) {			snd_assert(src_channels[channel].area.first % 8 == 0 &&				   src_channels[channel].area.step % 8 == 0,				   return -ENXIO);			snd_assert(dst_channels[channel].area.first % 8 == 0 &&				   dst_channels[channel].area.step % 8 == 0,				   return -ENXIO);		}	}#endif	convert(plugin, src_channels, dst_channels, frames);	return frames;}int conv_index(int src_format, int dst_format){	int src_endian, dst_endian, sign, src_width, dst_width;	sign = (snd_pcm_format_signed(src_format) !=		snd_pcm_format_signed(dst_format));#ifdef SNDRV_LITTLE_ENDIAN	src_endian = snd_pcm_format_big_endian(src_format);	dst_endian = snd_pcm_format_big_endian(dst_format);#else	src_endian = snd_pcm_format_little_endian(src_format);	dst_endian = snd_pcm_format_little_endian(dst_format);#endif	if (src_endian < 0)		src_endian = 0;	if (dst_endian < 0)		dst_endian = 0;	src_width = snd_pcm_format_width(src_format) / 8 - 1;	dst_width = snd_pcm_format_width(dst_format) / 8 - 1;	return src_width * 32 + src_endian * 16 + sign * 8 + dst_width * 2 + dst_endian;}int snd_pcm_plugin_build_linear(snd_pcm_plug_t *plug,				snd_pcm_plugin_format_t *src_format,				snd_pcm_plugin_format_t *dst_format,				snd_pcm_plugin_t **r_plugin){	int err;	struct linear_private_data *data;	snd_pcm_plugin_t *plugin;	snd_assert(r_plugin != NULL, return -ENXIO);	*r_plugin = NULL;	snd_assert(src_format->rate == dst_format->rate, return -ENXIO);	snd_assert(src_format->channels == dst_format->channels, return -ENXIO);	snd_assert(snd_pcm_format_linear(src_format->format) &&		   snd_pcm_format_linear(dst_format->format), return -ENXIO);	err = snd_pcm_plugin_build(plug, "linear format conversion",				   src_format, dst_format,				   sizeof(linear_t), &plugin);	if (err < 0)		return err;	data = (linear_t *)plugin->extra_data;	data->conv = conv_index(src_format->format, dst_format->format);	plugin->transfer = linear_transfer;	*r_plugin = plugin;	return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色呦呦国产精品| 国产精品二区一区二区aⅴ污介绍| 国产精品女同互慰在线看| 美日韩一区二区| 欧美一级艳片视频免费观看| 亚洲综合色成人| 97国产一区二区| 亚洲三级在线观看| 日本韩国欧美国产| 亚洲国产日韩在线一区模特 | 欧美精品一区二区三区高清aⅴ| 亚洲福中文字幕伊人影院| 欧美精品一区二| 麻豆视频一区二区| 久久久久久免费毛片精品| 奇米亚洲午夜久久精品| 欧美亚洲国产怡红院影院| 亚洲最新在线观看| 欧美一区二区免费| 国产高清久久久| 亚洲欧美一区二区在线观看| 色综合久久88色综合天天6| 夜夜亚洲天天久久| 在线成人av网站| 国产酒店精品激情| 日韩美女啊v在线免费观看| 在线观看亚洲一区| 美女一区二区三区在线观看| 国产女主播视频一区二区| 97se亚洲国产综合自在线不卡| 有坂深雪av一区二区精品| 欧美裸体一区二区三区| 五月天视频一区| 国产亚洲欧美激情| 日本电影欧美片| 久久91精品久久久久久秒播| 国产日韩av一区二区| 色先锋久久av资源部| 日本不卡视频在线观看| 欧美国产乱子伦 | 亚洲国产美女搞黄色| 欧美不卡在线视频| 99精品视频在线播放观看| 日韩精品电影在线| 国产精品免费视频一区| 欧美日本韩国一区| 国产.欧美.日韩| 秋霞影院一区二区| 国产视频视频一区| 99国产精品久久久久久久久久久| 午夜精品福利一区二区三区av| 精品久久久久久亚洲综合网 | 91麻豆产精品久久久久久 | 欧美亚洲国产一卡| 国产曰批免费观看久久久| 国产精品天干天干在线综合| 777午夜精品视频在线播放| 日韩高清电影一区| 国产欧美日韩在线| 欧美高清视频在线高清观看mv色露露十八 | 亚洲国产综合人成综合网站| 久久美女艺术照精彩视频福利播放| 一本一道综合狠狠老| 国产精品一区二区不卡| 日韩精品电影在线| 亚洲国产毛片aaaaa无费看| 日本一区二区免费在线| 欧美私模裸体表演在线观看| 成人av动漫网站| 国产一区日韩二区欧美三区| 午夜精品福利一区二区蜜股av| 亚洲欧美激情插| 国产欧美精品国产国产专区| 欧美一区二区久久| 欧美日韩国产精品成人| 色菇凉天天综合网| 99精品视频一区二区| 国产丶欧美丶日本不卡视频| 免费精品视频在线| 日本最新不卡在线| 日韩精品一区第一页| 亚洲一区中文在线| 亚洲色图视频网| 综合激情成人伊人| 国产精品精品国产色婷婷| 久久嫩草精品久久久精品一| 日韩小视频在线观看专区| 欧美综合一区二区三区| 色偷偷88欧美精品久久久| 色综合天天综合网国产成人综合天 | 欧美午夜电影在线播放| 欧美自拍偷拍午夜视频| 欧美在线免费观看视频| 在线看国产日韩| 欧美视频一区在线观看| 欧美三级电影在线看| 91精品国产免费| 日韩午夜激情av| 精品国产91亚洲一区二区三区婷婷 | 麻豆精品在线播放| 久久99精品网久久| 国产精品香蕉一区二区三区| 国产在线国偷精品产拍免费yy| 国产一区二区三区高清播放| 91福利视频久久久久| 99riav久久精品riav| 色8久久精品久久久久久蜜| 91电影在线观看| 欧美日韩国产首页| 欧美性感一类影片在线播放| 色婷婷av一区二区三区大白胸| 色网综合在线观看| 欧美系列日韩一区| 日韩欧美中文字幕公布| 国产日韩亚洲欧美综合| 日韩伦理av电影| 亚洲成av人片一区二区| 看电视剧不卡顿的网站| 国产一区二区三区电影在线观看 | 欧美日韩精品一二三区| 欧美成人一区二区三区在线观看 | 色猫猫国产区一区二在线视频| 欧美亚洲一区三区| 精品久久久久久亚洲综合网| 国产精品无码永久免费888| 亚洲欧美二区三区| 免费成人在线观看| 波多野结衣在线一区| 欧美日韩1区2区| 欧美理论片在线| 精品少妇一区二区三区免费观看 | 日韩经典一区二区| 国产老女人精品毛片久久| 色婷婷一区二区三区四区| 91丨porny丨最新| 欧美日韩不卡一区| 中文字幕精品一区二区精品绿巨人| 亚洲综合在线电影| 国产成人免费视频网站| 欧美私模裸体表演在线观看| 久久夜色精品一区| 亚洲成人777| av在线播放不卡| 欧美一区二区三区免费在线看| 国产欧美日本一区视频| 偷拍亚洲欧洲综合| 波多野结衣亚洲一区| 欧美成人福利视频| 伊人婷婷欧美激情| 成人av网址在线观看| 国产欧美一二三区| 国产精品中文欧美| 欧美精品一区二区三区久久久| 日本不卡免费在线视频| 欧美精品tushy高清| 婷婷久久综合九色国产成人 | 色88888久久久久久影院野外| 国产精品人成在线观看免费 | 欧美精品三级日韩久久| 亚洲综合色成人| 在线观看亚洲a| 一区二区三区91| 97久久超碰精品国产| 国产精品全国免费观看高清| 国产91精品露脸国语对白| 日本一区二区三区久久久久久久久不| 精品一区二区av| 日韩欧美一区二区久久婷婷| 久久精品国产77777蜜臀| 日韩精品一区二区三区中文精品| 免费成人在线观看视频| 日韩欧美国产三级| 国产一区二区在线免费观看| 久久免费午夜影院| 岛国精品一区二区| 亚洲视频一区在线观看| 精品精品欲导航| 国内国产精品久久| 国产色一区二区| 99精品视频在线免费观看| 亚洲激情av在线| 欧美精品 日韩| 精品在线亚洲视频| 国产三级精品视频| 99久久精品国产一区| 亚洲第一久久影院| 日韩一区二区三区视频在线| 国产精品一级片在线观看| 国产精品日日摸夜夜摸av| 色狠狠综合天天综合综合| 亚洲成在人线免费| 日韩你懂的在线观看| 国产成人av一区二区三区在线观看| 国产精品三级视频| 欧美性猛交xxxx乱大交退制版| 奇米777欧美一区二区| 久久九九久精品国产免费直播| 成人精品国产一区二区4080| 亚洲一区二区三区不卡国产欧美| 日韩精品一区在线|