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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? file_decoder.c

?? Aqualung is an advanced music player primarily targeted for the GNU/Linux operating system, but als
?? C
字號:
/*                                                     -*- linux-c -*-    Copyright (C) 2004 Tom Szilagyi    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU 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 General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.    $Id: file_decoder.c,v 1.17 2006/09/21 20:36:52 pasp Exp $*/#include <config.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <fcntl.h>#include <math.h>#include <time.h>#include <sys/stat.h>#include <gtk/gtk.h>#ifdef _WIN32#include <glib.h>#else#include <pthread.h>#endif /* _WIN32 */#include "file_decoder.h"#include "dec_null.h"#include "dec_sndfile.h"#include "dec_flac.h"#include "dec_vorbis.h"#include "dec_speex.h"#include "dec_mpc.h"#include "dec_mpeg.h"#include "dec_mod.h"#include "dec_mac.h"extern size_t sample_size;typedef decoder_t * decoder_init_t(file_decoder_t * fdec);/* this controls the order in which decoders are probed for a file */decoder_init_t * decoder_init_v[N_DECODERS] = {	null_decoder_init,	sndfile_decoder_init,	flac_decoder_init,	vorbis_decoder_init,	speex_dec_init,	mpc_decoder_init,	mac_decoder_init,	mpeg_decoder_init,	mod_decoder_init};/* utility function used by some decoders to check file extension */intis_valid_extension(char ** valid_extensions, char * filename, int module) {	int i;	char * c = NULL, * d = NULL;        char *ext;        /* post ext */        i = 0;	if ((c = strrchr(filename, '.')) != NULL) {                ++c;                while (valid_extensions[i] != NULL) {                        if (strcasecmp(c, valid_extensions[i]) == 0) {                                return 1;                        }                        ++i;                }	}        if (module) {      /* checking mod pre file extension */                           /* lots of amiga modules has EXT.NAME filename format */                /* pre ext */                i = 0;                ext = strdup(filename);                if (ext && (c = strrchr(ext, '/')) != NULL) {                        ++c;                        if ((d = strchr(ext, '.')) != NULL) {                                *d = '\0';                                while (valid_extensions[i] != NULL) {                                        if (strcasecmp(c, valid_extensions[i]) == 0) {                                                free(ext);                                                return 1;                                        }                                        ++i;                                }                        }                }                free(ext);        }	return 0;}file_decoder_t *file_decoder_new(void) {	file_decoder_t * fdec = NULL;		if ((fdec = calloc(1, sizeof(file_decoder_t))) == NULL) {		fprintf(stderr, "file_decoder.c: file_decoder_new() failed: calloc error\n");		return NULL;	}		fdec->file_open = 0;	fdec->voladj_db = 0.0f;	fdec->voladj_lin = 1.0f;	fdec->pdec = NULL;	return fdec;}voidfile_decoder_delete(file_decoder_t * fdec) {		if (fdec->file_open) {		file_decoder_close(fdec);	}	free(fdec);}/* return: 0 is OK, >0 is error */intfile_decoder_open(file_decoder_t * fdec, char * filename) {	int i, ret;	decoder_t * dec;	if (filename == NULL) {		fprintf(stderr, "Warning: filename == NULL passed to file_decoder_open()\n");		fprintf(stderr, "This is likely to be a programmer error, please report.\n");		return 1;	}	for (i = 0; i < N_DECODERS; i++) {		dec = decoder_init_v[i](fdec);		if (!dec) {			continue;		}		ret = dec->open(dec, filename);		if (ret == DECODER_OPEN_FERROR) {			goto no_open;		} else if (ret == DECODER_OPEN_BADLIB) {			continue;		} else if (ret != DECODER_OPEN_SUCCESS) {			printf("programmer error, please report: "			       "illegal retvalue %d from dec->open() at %d\n", ret, i);			return 1;		}		fdec->pdec = (void *)dec;		break;	}	if (i == N_DECODERS) {	        goto no_open;	}	if (fdec->channels == 1) {		fdec->fileinfo.is_mono = 1;		goto ok_open;	} else if (fdec->channels == 2) {		fdec->fileinfo.is_mono = 0;		goto ok_open;	} else {		fprintf(stderr, "file_decoder_open: programmer error: "			"soundfile with %d\n channels is unsupported.\n", fdec->channels);		goto no_open;	} ok_open:	fdec->fileinfo.sample_rate = fdec->SR;	fdec->file_open = 1;	fdec->samples_left = fdec->fileinfo.total_samples;	return 0; no_open:	fprintf(stderr, "file_decoder_open: unable to open %s\n", filename);	return 1;}voidfile_decoder_set_rva(file_decoder_t * fdec, float voladj) {	fdec->voladj_db = voladj;	fdec->voladj_lin = db2lin(voladj);}voidfile_decoder_close(file_decoder_t * fdec) {	decoder_t * dec;	if (!fdec->file_open) {		return;	}	dec = (decoder_t *)(fdec->pdec);	dec->close(dec);	dec->destroy(dec);	fdec->pdec = NULL;	fdec->file_open = 0;	fdec->file_lib = 0;}unsigned intfile_decoder_read(file_decoder_t * fdec, float * dest, int num) {	decoder_t * dec = (decoder_t *)(fdec->pdec);	return dec->read(dec, dest, num);}voidfile_decoder_seek(file_decoder_t * fdec, unsigned long long seek_to_pos) {	decoder_t * dec = (decoder_t *)(fdec->pdec);	dec->seek(dec, seek_to_pos);} floatget_file_duration(char * file) {	file_decoder_t * fdec;	float duration;	if ((fdec = file_decoder_new()) == NULL) {                fprintf(stderr, "get_file_duration: error: file_decoder_new() returned NULL\n");                return 0.0f;        }        if (file_decoder_open(fdec, file)) {                fprintf(stderr, "file_decoder_open() failed on %s\n", file);                return 0.0f;        }	duration = (float)fdec->fileinfo.total_samples / fdec->fileinfo.sample_rate;        file_decoder_close(fdec);        file_decoder_delete(fdec);	return duration;}// vim: shiftwidth=8:tabstop=8:softtabstop=8 :  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人一区二区| 5566中文字幕一区二区电影| 99久久综合狠狠综合久久| 99久久久免费精品国产一区二区| 不卡av电影在线播放| 日本高清不卡视频| 久久影院午夜论| 亚洲美女偷拍久久| 蜜臀av性久久久久蜜臀aⅴ流畅 | 日本一区二区视频在线| 久久精品一区二区三区不卡| 亚洲精品日韩一| 午夜精品久久久久久久久久久 | 久久免费精品国产久精品久久久久| 国产拍揄自揄精品视频麻豆| 亚洲精品日产精品乱码不卡| 麻豆精品久久久| 一道本成人在线| 国产亚洲精品免费| 亚洲成人三级小说| www.66久久| 337p日本欧洲亚洲大胆精品| 一区二区三区在线观看欧美| 狠狠狠色丁香婷婷综合久久五月| 色诱视频网站一区| 欧美日韩综合在线免费观看| 国产亚洲制服色| 婷婷综合在线观看| 日本一区二区免费在线观看视频| 亚洲欧美日韩系列| 国产成人午夜视频| 日韩欧美激情四射| 三级一区在线视频先锋| va亚洲va日韩不卡在线观看| 久久婷婷国产综合国色天香| 丝袜诱惑制服诱惑色一区在线观看| 成人18精品视频| 精品国产伦一区二区三区免费| 亚洲成人激情自拍| 91九色最新地址| 国产精品国产自产拍高清av| 国产曰批免费观看久久久| 欧美视频中文一区二区三区在线观看 | 色妹子一区二区| 久久综合狠狠综合| 免费成人在线观看视频| 欧美美女直播网站| 亚洲成人av免费| 欧美日韩亚洲综合| 亚洲综合自拍偷拍| 欧美亚洲国产怡红院影院| 国产精品青草综合久久久久99| 黄色小说综合网站| 亚洲精品一区在线观看| 奇米影视一区二区三区| 日韩一区二区三区av| 日韩av中文字幕一区二区| 制服丝袜激情欧洲亚洲| 天堂午夜影视日韩欧美一区二区| 欧美日韩一区二区三区在线看| 亚洲乱码国产乱码精品精98午夜 | 精品美女在线观看| 精品一区二区三区免费观看 | 欧美性xxxxxxxx| 午夜不卡av在线| 欧美一区二区三区四区久久| 人人狠狠综合久久亚洲| 欧美大片免费久久精品三p| 另类小说一区二区三区| 精品久久久久一区二区国产| www.日韩大片| 亚洲一区二区在线视频| 欧美日韩国产另类不卡| 久久国产精品露脸对白| 欧美国产日韩a欧美在线观看| 99国产精品久久久久久久久久久| 一区二区三区日韩在线观看| 欧美日本一区二区三区四区| 麻豆国产精品777777在线| 国产欧美日韩精品a在线观看| 成人福利视频在线看| 樱花影视一区二区| 欧美一区二区三区免费在线看| 麻豆91精品视频| 国产精品大尺度| 在线播放日韩导航| 国产成人丝袜美腿| 亚洲不卡一区二区三区| 久久天堂av综合合色蜜桃网| 91免费视频网址| 亚洲电影中文字幕在线观看| 欧美二区三区的天堂| 国产成人av一区二区| 亚洲线精品一区二区三区| 精品捆绑美女sm三区| 91在线观看美女| 久久疯狂做爰流白浆xx| 亚洲三级免费观看| 日韩亚洲欧美综合| 91香蕉视频mp4| 久久疯狂做爰流白浆xx| 亚洲综合丁香婷婷六月香| 欧美精品一区二| 欧美无乱码久久久免费午夜一区 | 国产精品久久久久久久久动漫| 555夜色666亚洲国产免| av高清不卡在线| 久久www免费人成看片高清| 夜夜精品浪潮av一区二区三区| 久久亚洲私人国产精品va媚药| 91在线一区二区| 国产精品99久久久久久久vr| 偷窥少妇高潮呻吟av久久免费| 国产精品美女一区二区在线观看| 欧美久久免费观看| 一本久久a久久精品亚洲| 国产自产视频一区二区三区| 亚洲chinese男男1069| 亚洲裸体在线观看| 国产精品毛片久久久久久久| ww久久中文字幕| 色88888久久久久久影院野外| 粉嫩欧美一区二区三区高清影视| 蜜臀av性久久久久av蜜臀妖精| 亚洲午夜视频在线观看| 亚洲人成小说网站色在线| 亚洲国产成人一区二区三区| 精品成人在线观看| 日韩一级二级三级| 欧美一区二区三区在线| 欧美三级在线播放| 欧美日韩一区在线观看| 欧美亚洲国产bt| 在线影院国内精品| 在线中文字幕一区二区| 91色.com| 色屁屁一区二区| 91久久久免费一区二区| 色国产精品一区在线观看| 91麻豆福利精品推荐| 一道本成人在线| 色猫猫国产区一区二在线视频| 99re热视频这里只精品| 欧美午夜一区二区三区免费大片| 欧美午夜精品一区| 欧美老女人第四色| 欧美精品粉嫩高潮一区二区| 欧美一区中文字幕| 欧美精品一区二区三区视频| wwwwxxxxx欧美| 国产精品女上位| 亚洲啪啪综合av一区二区三区| 亚洲视频小说图片| 亚洲一区二区三区在线播放| 午夜精品福利一区二区蜜股av| 天堂在线亚洲视频| 国内精品国产成人国产三级粉色| 精品一区二区三区在线视频| 成人精品在线视频观看| 91久久国产综合久久| 91精品国产欧美日韩| 欧美zozo另类异族| 久久综合99re88久久爱| 国产精品久久久久久久久动漫| 亚洲免费av高清| 青青草精品视频| 国产精品系列在线观看| 91福利国产精品| 欧美成人性战久久| 国产精品福利av| 天天色天天爱天天射综合| 国内国产精品久久| 日本精品一级二级| 欧美成人r级一区二区三区| 国产农村妇女精品| 亚洲国产精品久久艾草纯爱| 另类欧美日韩国产在线| 97国产一区二区| 欧美电影精品一区二区| 亚洲三级视频在线观看| 蜜桃在线一区二区三区| 91丨porny丨首页| 欧美成人伊人久久综合网| 亚洲人成亚洲人成在线观看图片| 秋霞影院一区二区| 久久精品国产免费看久久精品| 91视频观看免费| 成人午夜看片网址| 91蜜桃免费观看视频| 在线观看国产91| 精品久久一区二区| 亚洲丝袜自拍清纯另类| 午夜av一区二区| 国产传媒久久文化传媒| 色婷婷综合激情| 欧美成人一区二区三区在线观看 | 91在线云播放| 日韩一区二区精品葵司在线 | 日本高清免费不卡视频| 日韩免费高清av|