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

📄 aplayer.c

📁 linux下的声音播放编程应用程序
💻 C
字号:
head	1.2;access;symbols	START:1.1.1.1	F[Cujitsu:1.1.1;locks; strict;comment	@ * @;1.2date	2004.09.30.04.01.43;	author floyd;	state Exp;branches;next	1.1;deltatype	text;permissions	644;commitid	dc8415b84a31938;kopt	kv;filename	@guitest.c@;1.1date	2004.09.30.01.37.06;	author floyd;	state Exp;branches	1.1.1.1;next	;deltatype	text;permissions	644;1.1.1.1date	2004.09.30.01.37.06;	author floyd;	state Exp;branches;next	;deltatype	text;permissions	644;desc@@1.2log@replace to new file@text@/*************************************************//**                                             **//**  Reference program for SPD                  **//**  GUI (Widget Manager) test                  **//**  Application Reference program              **//**  Copyright (C) 2004 FMC / Fujitsu           **//**                                             **//*************************************************//* * $Log: guitest.c,v $ * Revision 1.3  2004/06/10 16:30:48  root * local bug fix * * Revision 1.2  2004/06/10 16:30:00  root * to make simple * * Revision 1.1  2004/05/29 12:36:17  root * Initial revision * * */#include <stdio.h>#include <stdio.h>#include <string.h>#include <SubApplication/WidgetMgr/inc/sa_widget_manager.h>#include <AbsDeviceDrv/FRV_Companion/VideoDevice/inc/ADD_VideoOut.h>#include <AbsDeviceDrv/ADK_Hard/FPGAdevice/inc/ADD_FPGAswitch.h>WMWidget *mplayer;WMWidget *vbutton;WMWidget *mediaframe;WMWidget *skin, *title, *ruller, *play, *stop, *pause, *ff, *rw, *qqvga;WMWidget *mtitle, *id_title, *martist, *id_artist;WMWidget *vplay, *vstop, *vpause, *vff, *vrw, *vnull;int	status_flag = 1; // 0: play 1: stop 2: pause 3: ff 4: rwvoid	make_widget_list(void);void	cb_play(WMWindow *);void	cb_stop(WMWindow *);void	cb_pause(WMWindow *);void	cb_ff(WMWindow *);void	cb_rw(WMWindow *);void	cb_display_time(WMWindow *);WMContext	wc;char	fname[32];int main(int argc, char** argv){	if(argc < 2){		printf("guiplay filename\n");		exit(-1);	}	strcpy(fname, argv[1]);	// setting graphic information	wc.Graphic	= GON;	wc.GSIZE	= C2_QVGA;	wc.width	= QVGA_W;	wc.height	= QVGA_H;	wc.MonitorSW	= MON;	wc.InputDevice	= KEY_DEVICE;	wc.handle_interval = 30; // [ms]	if(argc > 3 && !strcmp(argv[2], "-fb")){		printf("Frame buffer specified mode\n");		wc.fb	= atoi(argv[3]);	}	// initialize widget context	if(SA_WM_init(&wc) != 0){		exit(-1);	}	// make widget GUI design and enable	make_widget_list();	SA_WM_widget_show(mplayer); // activate player skin graphic 	SA_WM_widget_show(mediaframe); // activate player skin graphic 	SA_WM_widget_show(vbutton); // activate button action	// list up prepared widget for debug//	SA_WM_CheckWidget();		// start event watching	SA_WM_main();}void make_widget_list(){	WMEvent	*ev_play, *ev_stop, *ev_pause, *ev_ff, *ev_rw, *ev_null;	char	titile[20], artist[20];	int	ret;	ev_play  = (WMEvent *)malloc(sizeof(WMEvent));	ev_stop  = (WMEvent *)malloc(sizeof(WMEvent));	ev_pause = (WMEvent *)malloc(sizeof(WMEvent));	ev_ff    = (WMEvent *)malloc(sizeof(WMEvent));	ev_rw    = (WMEvent *)malloc(sizeof(WMEvent));	ev_null  = (WMEvent *)malloc(sizeof(WMEvent));	// create new window graphic designed window	mplayer = SA_WM_window_new(WM_WINDOW_TOPLEVEL);	// entry graphic data	skin  = SA_WM_pixmap_create_from_xpm(NULL,   0,   0, "icon/skin.bmp");	ruller= SA_WM_pixmap_create_from_xpm(NULL,  10, 187, "icon/ruller.bmp");	play  = SA_WM_pixmap_create_from_xpm(NULL, 100, 200, "icon/play.bmp");	stop  = SA_WM_pixmap_create_from_xpm(NULL,  40, 200, "icon/stop.bmp");	pause = SA_WM_pixmap_create_from_xpm(NULL,  70, 200, "icon/pause.bmp");	ff    = SA_WM_pixmap_create_from_xpm(NULL, 130, 200, "icon/ff.bmp");	rw    = SA_WM_pixmap_create_from_xpm(NULL,  10, 200, "icon/rw.bmp");			id_title =		SA_WM_label_new("歌曲名称:", 34, 50, 80, 16);	mtitle =		SA_WM_label_new("No inform.", 114, 50, 160, 16);	id_artist =		SA_WM_label_new("歌手姓名:", 34, 70, 80, 16);	martist =		SA_WM_label_new("No inform.", 114, 70, 160, 16);	SA_WM_reverse_image(stop);	status_flag = 1;		// pack all of graphic objects	SA_WM_container_add(mplayer, skin);	//SA_WM_container_add(mplayer, ruller);	SA_WM_container_add(mplayer, play);	SA_WM_container_add(mplayer, stop);	SA_WM_container_add(mplayer, pause);	SA_WM_container_add(mplayer, ff);	SA_WM_container_add(mplayer, rw);	//SA_WM_container_add(mplayer, id_album);	SA_WM_container_add(mplayer, id_title);	SA_WM_container_add(mplayer, mtitle);	SA_WM_container_add(mplayer, id_artist);	SA_WM_container_add(mplayer, martist);	// button group (this is vertual widget. no graphic)	vbutton = SA_WM_window_new(WM_WINDOW_TOPLEVEL);	// set button	vplay  = SA_WM_button_new();	vstop  = SA_WM_button_new();	vpause = SA_WM_button_new();	vff    = SA_WM_button_new();	vrw    = SA_WM_button_new();	vnull  = SA_WM_button_new();	SA_WM_container_add(vbutton, vplay);	SA_WM_container_add(vbutton, vstop);	SA_WM_container_add(vbutton, vpause);	SA_WM_container_add(vbutton, vff);	SA_WM_container_add(vbutton, vrw);	SA_WM_container_add(vbutton, vnull);	// connect button - event - action	ev_play->keyval  = SW2;	SA_WM_signal_connect(vplay, ev_play, &cb_play, NULL);	ev_stop->keyval  = SW5;	SA_WM_signal_connect(vstop, ev_stop, &cb_stop, NULL);	ev_pause->keyval = SW3;	SA_WM_signal_connect(vpause, ev_pause, &cb_pause, NULL);	ev_ff->keyval    = SW4;	SA_WM_signal_connect(vff, ev_ff, &cb_ff, NULL);	ev_rw->keyval    = SW1;	SA_WM_signal_connect(vrw, ev_rw, &cb_rw, NULL);	ev_null->keyval  = SW_OFF;  // without key	SA_WM_signal_connect(vnull, ev_null, &cb_display_time, NULL);	start_audio_play(fname);	ret = audio_get_title(title);	if(ret == 0){		printf("[%s]\n", title);		SA_WM_label(mtitle, title);	}	ret = audio_get_artist(artist);	if(ret == 0){		printf("[%s]\n", artist);		SA_WM_label(martist, artist);	}}void cb_play(WMWindow *win){	switch(status_flag){		case 0:  // no Play -> Play			return;		case 1:			printf("* Play Start *\n");			SA_WM_reverse_image(stop);			SA_WM_reverse_image(play);//			start_audio_play(fname);			audio_play();			break;		case 2:			printf("pause->[Play]\n");			SA_WM_reverse_image(pause);			SA_WM_reverse_image(play);			audio_play();			break;		case 3:			printf("ff->[Play]\n");			SA_WM_reverse_image(ff);			SA_WM_reverse_image(play);			audio_play();			break;		case 4:			printf("rw->[Play]\n");			SA_WM_reverse_image(rw);			SA_WM_reverse_image(play);			audio_play();			break;		default:			break;	}	status_flag = 0;}void cb_stop(WMWindow *win){	printf("Bye-bye\n");	exit(1);}void cb_pause(WMWindow *win){	switch(status_flag){		case 0:			printf("[PAUSE]\n");			SA_WM_reverse_image(pause);			SA_WM_reverse_image(play);			audio_pause();			break;		case 1:			return;		case 2:			return;		case 3:			return;		case 4:			return;		default:			return;	}	status_flag = 2;}void cb_ff(WMWindow *win){	switch(status_flag){		case 0:			printf("[FF]\n");			SA_WM_reverse_image(ff);			SA_WM_reverse_image(play);			break;		case 1:			return;		case 2:			return;		case 3:			return;		case 4:			return;		default:			return;	}	status_flag = 3;}void cb_rw(WMWindow *win){	switch(status_flag){		case 0:			printf("[RW]\n");			SA_WM_reverse_image(rw);			SA_WM_reverse_image(play);			break;		case 1:			return;		case 2:			return;		case 3:			return;		case 4:			return;		default:			return;	}	status_flag = 4;}void cb_display_time(WMWindow *win){//	printf("NULL event\n");	audio_get_play_time();}@1.1log@Initial revision@text@@1.1.1.1log@native SPD@text@@

⌨️ 快捷键说明

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