资源简介
实现了播放列表的mp3播放器,基于gtk实现,代码300行左右,核心代码几十行,对初学gtk的同学十分有益。linux开发资料少,望大家积极下载,谢谢。
代码片段和文件信息
#include “core.h“
#include “list.h“
#include
static PLAYSET *dumb;
static gboolean cb_play_bus(GstBus *bus GstMessage *msg gpointer data)
{
PLAYSET *player= (PLAYSET*)data;
GError *err;
gchar *debug;
/*
GstTagList *tags;
gchar *title;
gchar *artist;
gchar *album;
*/
switch(GST_MESSAGE_TYPE(msg) )
{
case GST_MESSAGE_ERROR:
gst_message_parse_error(msg &err &debug);
g_print(“Error: %s\n“ err->message);
g_error_free(err);
g_free(debug);
gst_element_set_state(player->play2 GST_STATE_NULL);
break;
case GST_MESSAGE_EOS:
coreNext(player);
break;
case GST_MESSAGE_TAG:
/* gst_message_parse_tag(msg &tags);
if(gst_tag_list_get_string(tags GST_TAG_title &title)&&
gst_tag_list_get_string(tags GST_TAG_ARTIST &artist)&&
gst_tag_list_get_string(tags GST_TAG_ALBUM &album) )
{
}
gst_tag_list_free(tags);
*/
break;
default:
break;
}
return TRUE;
}
static gboolean cb_dumb_bus(GstBus *bus GstMessage *msg gpointer data)
{
PLAYSET *player= (PLAYSET*)data;
GError *err;
gchar *debug;
GstTagList *tags;
gchar *title;
gchar *artist;
gchar *album;
GstFormat format= GST_FORMAT_TIME;
gint64 val= -1;
GList *p= NULL;
switch(GST_MESSAGE_TYPE(msg) )
{
case GST_MESSAGE_ERROR:
gst_message_parse_error(msg &err &debug);
g_print(“Error: %s\n“ err->message);
g_error_free(err);
g_free(debug);
gst_element_set_state(player->play2 GST_STATE_NULL);
break;
case GST_MESSAGE_EOS:
gst_element_set_state(player->play2 GST_STATE_NULL);
break;
case GST_MESSAGE_TAG:
gst_message_parse_tag(msg &tags);
if(gst_tag_list_get_string(tags GST_TAG_title &title)&&
gst_tag_list_get_string(tags GST_TAG_ARTIST &artist)&&
gst_tag_list_get_string(tags GST_TAG_ALBUM &album) )
{
p= g_list_nth(player->playlist player->num);
g_stpcpy(((PlayList*)p->data)->title title);
g_stpcpy(((PlayList*)p->data)->artist artist);
g_stpcpy(((PlayList*)p->data)->album album);
}
gst_tag_list_free(tags);
if(gst_element_query_duration(player->play2 &format &val) )
{
p= g_list_nth(player->playlist player->num);
/*((PlayList*)p->data)->duration= val/1000000000;*/
val= val/1000000000;
g_sprintf(((PlayList*)p->data)->duration “%02d:%02ds“ (gint)val/60 (gint)val%60);
gst_element_set_state(player->play2 GST_STATE_NULL);
if(!(2==player->mode||0==player->mode&&(g_list_length(player->playlist)-1==player->num) ) )
{
coreNext(player);
}
else
{
gst_element_set_state(player->play2 GST_STATE_NULL);
list_print(player->playlist);
return FALSE;
}
}
break;
default:
break;
}
return TRUE;
}
PLAYSET *coreCreate()
{
PLAYSET *player= NULL;
GstElement *play1;
GstElement *play2;
GstBus *bus;
player= (PLAYSET*)malloc(sizeof(PLAYSET) );
dumb= (PLAYSET*)malloc(sizeof(PLAYSET) );
if(NULL!= player&
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9184 2011-06-30 20:29 PLAY\core.c
文件 1013 2011-06-29 15:21 PLAY\core.h
文件 1146 2011-06-29 16:04 PLAY\list.c
文件 328 2011-07-22 19:44 PLAY\list.h
文件 419 2011-06-30 09:26 PLAY\main.c
文件 451 2011-06-28 16:06 PLAY\makefile
目录 0 2011-07-25 17:49 PLAY\mp3
目录 0 2011-07-22 19:43 PLAY
----------- --------- ---------- ----- ----
12541 8
- 上一篇:知名的斯坦福兔子的三维点云数据,pcd格式
- 下一篇:树莓派3B原理图
相关资源
- linux 系统cpu、内存、IO等监控脚本
- linux Qt局域网聊天
- 2018马哥教育Linux老王云计算视频
- 嵌入式Linux设备驱动开发笔记--赖永诚
- linux下的设计QT计算器
- 计算机网络课程设计-发送TCP数据包
- h323plus音视频聊天Demo
- linux多线程程序实验,用不同线程完成
- Linux下的DLNA播放器源码
- linux下bmp图像显示
- linux命令简体中文帮助文档支持检索
- DHT11在linux上的驱动程序
- LINUX SVN双机热备份shell脚本 附配置文
- linux系统安全检测
- linux语音传输系统
- Linux下Qt开发的中国象棋
- linux多线程+UDP网络通信总结+程序
- 操作系统实验报告(进程,文件系统
- 五子棋 linux下c语言编写
- vsftpd-2.3.4
- Linux内核链表实现多客户端连接服务器
- linux-FTP客户端(纯C代码)
- Linux设备NDIS调试步骤.rar
- linux-cmd.zh
- ftp-0.17-51.1.el6.x86_64.rpm
- 基于MSP430制作MP3源程序
- 嵌入式ARM ,Linux,GPS导航
- 基于内核的Linux键盘记录器
- 北邮2017研究生linux期末作业源代码
- Linux面试宝典大全+答案
评论
共有 条评论