⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileplayer.cc

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CC
字号:
/* MPEG/WAVE Sound library   (C) 1997 by Jung woo-jae */// Fileplayer.cc// It's an example for how to use MPEG/WAVE Sound library#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <string.h>#include "mpegsound.h"// File player superclassFileplayer::Fileplayer(){    __errorcode = SOUND_ERROR_OK;    player = NULL;};Fileplayer::~Fileplayer(){    delete player;};// Wave file playerWavefileplayer::Wavefileplayer(){    loader = NULL;    server = NULL;}Wavefileplayer::~Wavefileplayer(){    if (loader)	delete loader;    if (server)	delete server;}boolWavefileplayer::openfile(char *filename, char *device){// Player    if (device == NULL)	device = Rawplayer::defaultdevice;    if (device[0] == '/')	player = new Rawplayer;    else {	if (device[0] == '-')	    device = NULL;	player = new Rawtofile;    }    if (player == NULL)	return seterrorcode(SOUND_ERROR_MEMORYNOTENOUGH);    if (!player->initialize(device))	return seterrorcode(player->geterrorcode());// Loader    {	int err;	if ((loader = Soundinputstream::hopen(filename, &err)) == NULL)	    return seterrorcode(err);    }// Server    if ((server = new Wavetoraw(loader, player)) == NULL)	return seterrorcode(SOUND_ERROR_MEMORYNOTENOUGH);    return server->initialize();}voidWavefileplayer::setforcetomono(bool flag){    server->setforcetomono(flag);};boolWavefileplayer::playing(int verbose){    if (!server->run())	return false;		// Read first time    if (verbose > 0) {	fprintf(stderr,		"Verbose : %dbits, "		"%dHz, "		"%s\n",		server->getsamplesize(),		server->getfrequency(),		server->isstereo()? "Stereo" : "Mono");    }    while (server->run());	// Playing    seterrorcode(server->geterrorcode());    if (geterrorcode() == SOUND_ERROR_FINISH)	return true;    return false;}// MpegfileplayerMpegfileplayer::Mpegfileplayer(){    loader = NULL;    server = NULL;};Mpegfileplayer::~Mpegfileplayer(){    if (loader)	delete loader;    if (server)	delete server;}boolMpegfileplayer::openfile(char *filename, char *device){// Player    if (device == NULL)	device = Rawplayer::defaultdevice;    if (device[0] == '/')	player = new Rawplayer;    else {	if (device[0] == '-')	    device = NULL;	player = new Rawtofile;    }    if (player == NULL)	return seterrorcode(SOUND_ERROR_MEMORYNOTENOUGH);    if (!player->initialize(device))	return seterrorcode(player->geterrorcode());// Loader    {	int err;	if ((loader = Soundinputstream::hopen(filename, &err)) == NULL)	    return seterrorcode(err);    }// Server    if ((server = new Mpegtoraw(loader, player)) == NULL)	return seterrorcode(SOUND_ERROR_MEMORYNOTENOUGH);// Initialize server    server->initialize(filename);    return true;}voidMpegfileplayer::setforcetomono(bool flag){    server->setforcetomono(flag);};voidMpegfileplayer::setdownfrequency(int value){    server->setdownfrequency(value);};boolMpegfileplayer::playing(int verbose){    if (!server->run(-1))	return false;		// Initialize MPEG Layer 3    if (verbose > 0)	showverbose(verbose);    while (server->run(100));	// Playing    seterrorcode(server->geterrorcode());    if (seterrorcode(SOUND_ERROR_FINISH))	return true;    return false;}#ifdef PTHREADEDMPEGboolMpegfileplayer::playingwiththread(int verbose, int framenumbers){    if (framenumbers < 20)	return playing(verbose);    server->makethreadedplayer(framenumbers);    if (!server->run(-1))	return false;		// Initialize MPEG Layer 3    if (verbose > 0)	showverbose(verbose);    while (server->run(100));	// Playing    server->freethreadedplayer();    seterrorcode(server->geterrorcode());    if (seterrorcode(SOUND_ERROR_FINISH))	return true;    return false;}#endifvoidMpegfileplayer::showverbose(int verbose){    static char *modestring[4] =	{ "stereo", "joint stereo", "dual channel", "mono" };    fprintf(stderr, "Verbose: MPEG-%d Layer %d, %s,\n\t%dHz%s, %dkbit/s, ",	    server->getversion() + 1,	    server->getlayer(), modestring[server->getmode()],	    server->getfrequency(), server->getdownfrequency()? "//2" : "",	    server->getbitrate());    fprintf(stderr, server->getcrccheck()	    ? "with crc check\n" : "without crc check\n");    if (verbose > 1) {	fprintf(stderr,		"Songname : %s\n"		"Artist   : %s\n"		"Album    : %s\n"		"Year     : %s\n"		"Comment  : %s\n",		server->getname(),		server->getartist(),		server->getalbum(), server->getyear(), server->getcomment());    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -