OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4405|回复: 1

又是视频播放器问题

[复制链接]

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-4-16
在线时间
50 小时
发表于 2017-2-16 15:10:22 | 显示全部楼层 |阅读模式
10金钱
我整合了探索者视频播放,音乐播放,图片浏览的功能,并在视频播放函数里添加了自己的文件列表显示代码V_LIST:

        LCD_Clear(BLACK);
        POINT_COLOR=WHITE;
        Show_Str(207,303,32,16,"返回",16,1);
        i=totavinum/10;//一个页面10个文件,
        if(totavinum%10) i++;//共i个页面
        curindex=(j-1)*10;//当前页面第一个文件索引
        if(j==i) k=totavinum;//当前页面最后一个文件索引
        else k=j*10;//当前页面最后一个文件索引
        res=f_opendir(&vdir,"0:/VIDEO");  
        for(;curindex<k;curindex++)
        {
               
                if(res==FR_OK)
                {
                        dir_sdi(&vdir,vindextbl[curindex]);
                        res=f_readdir(&vdir,&vfileinfo);
                        if(res!=FR_OK||vfileinfo.fname[0]==0) break;
                        fn=(u8*)(*vfileinfo.lfname?vfileinfo.lfname:vfileinfo.fname);
                        buf=mymalloc(SRAMIN,100);
                        sprintf((char*)buf,"%s",fn);
                        Show_Str(0,(curindex%10)*32,lcddev.width-10,16,buf,16,1);//
                        myfree(SRAMIN,buf);       
                }
        }
        buf=mymalloc(SRAMIN,100);//
        sprintf((char*)buf,"%d/%d",j,i);//
        Show_Str(0,303,80,16,buf,16,1);
        myfree(SRAMIN,buf);
        ai_load_picfile("0:/SYSTEM/up.bmp",206,0,32,32,1); //翻页图标
        ai_load_picfile("0:/SYSTEM/down.bmp",206,271,32,32,1);//翻页图标

然后在一个死循环里面检测触摸屏状态,决定程序去向
        while(1)
        {
                curindex=0;
                tp_dev.scan(0);
                if(tp_dev.sta&TP_PRES_DOWN)                       
                {       
                        if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
                        {       
                                if(tp_dev.x[0]>207&&tp_dev.y[0]>303)  //退出
                                {
                                        myfree(SRAMIN,vfileinfo.lfname);                            
                                        myfree(SRAMIN,pname);                                                            
                                        myfree(SRAMIN,vindextbl);                       
                                        return 0;
                                }
                                if(tp_dev.x[0]>206&&tp_dev.y[0]>0&&tp_dev.y[0]<32)  //向上翻页
                                {
                                        if(i>1)
                                        {
                                                j--;
                                                if(j==0) j=i;
                                                goto V_LIST;
                                        }
                                }


现在问题是 加入goto V_LIST;语句后视频便不能播放,屏幕一直在闪,而音乐播放和图片浏览用这个方法则没问题,请问是RAM不够用了吗,还是别的什么原因

最佳答案

查看完整内容[请看2#楼]

找到原因了,原来是我定义的一个切换标志没有给初值,导致不停地切换下一曲
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2016-4-16
在线时间
50 小时
 楼主| 发表于 2017-2-16 15:10:23 来自手机 | 显示全部楼层
找到原因了,原来是我定义的一个切换标志没有给初值,导致不停地切换下一曲
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 19:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表