[i.MX] 在i.MX6平台上用DirectFB库开发程序,在视频上添加字幕

[复制链接]
1586|2
 楼主| zyzshark 发表于 2015-3-4 18:42 | 显示全部楼层 |阅读模式
使用DirectFB库,开发一个应用程序,显示中文“DirectFB 你好!”,然后和视频层一起运行,最后的结果在屏幕上播放视频,然后屏幕视频右上角显示“DirectFB 你好!”,请问我写的程序有什么问题,为什么播放视频时感觉视频和我写的层两者在抢用显卡呢?请问大家是什么问题,真的很感谢大家的回答,谢谢您了!求助!!!!!!!!!!!!!!!!!!
代码如下:
/*************************************************************************
> File Name: df_drawtext.c
> Author:
> Mail:
> Created Time: 2015年03月03日 星期二 14时37分05秒
************************************************************************/

#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <directfb.h>

static IDirectFB *dfb = NULL;
static IDirectFBSurface *primary = NULL;
static int screen_width  = 0;
static int screen_height = 0;

#define DFBCHECK(x...)                                         \
        {                                                            \
         DFBResult err = x;                                         \
         \
         if (err != DFB_OK)                                         \
         {                                                        \
          fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__    ); \
          DirectFBErrorFatal( #x, err    );                         \
         }                                                        \
        }
static IDirectFBFont *font = NULL;
static char *text = "DirectFB 你好!";
int main (int argc, char **argv)
{
    int i, width;
    DFBFontDescription font_dsc;
    DFBSurfaceDescription dsc;
    DFBCHECK (DirectFBInit (&argc, &argv));
    DFBCHECK (DirectFBCreate (&dfb));
    DFBCHECK (dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN));
    dsc.flags = DSDESC_CAPS;
    dsc.caps  = DSCAPS_PRIMARY | DSCAPS_FLIPPING;
    DFBCHECK (dfb->CreateSurface( dfb, &dsc, &primary ));
    DFBCHECK (primary->GetSize (primary, &screen_width, &screen_height));
    font_dsc.flags = DFDESC_HEIGHT;
    font_dsc.height = 48;
    DFBCHECK (dfb->CreateFont (dfb, "factory/fonts/truetype/simhei.ttf", &font_dsc, &font));
    DFBCHECK (primary->SetFont (primary, font));
    DFBCHECK (font->GetStringWidth (font, text, -1, &width));
    printf("screen_width=%d,screen_height=%d",screen_width,screen_height);

    for(i = screen_width; i>-width; i--)
  //  while(1)
    {
        DFBCHECK (primary->SetColor (primary, 0x0, 0x0, 0x0, 0));
        DFBCHECK (primary->FillRectangle (primary, 0, 0, screen_width, screen_height));
        DFBCHECK (primary->SetColor (primary, 0xff, 0x0, 0xff, 0xff));
    //    DFBCHECK (dfb->CreateFont (dfb, "factory/fonts/truetype/simhei.ttf", &font_dsc, &font));
    //    DFBCHECK (primary->SetFont (primary, font));
        DFBCHECK (primary->DrawString (primary, text, -1, i, screen_height / 2, DSTF_LEFT));
       // DFBCHECK (primary->DrawString (primary, text, -1, screen_width-100, screen_height/8, DSTF_TOPRIGHT));
        //DFBCHECK (primary->Flip (primary, NULL, DSFLIP_WAITFORSYNC));
        DFBCHECK (primary->Flip (primary, NULL, 0));

    }

    sleep(5);
   // while(1);
    font->Release (font);
    primary->Release (primary);
    dfb->Release (dfb);

    return 0;

}
 楼主| zyzshark 发表于 2015-3-5 11:49 | 显示全部楼层
欢迎大家的指导,哪怕一点点都可以,像可以介绍我应该看相关的什么书籍,还有好的资料都可以介绍给我的,最近新接触的DirectFB,知道的很少,谢谢大家的帮忙了!!!
FSL_TICS_Rita 发表于 2015-4-10 10:51 | 显示全部楼层
楼主你好,请问你这里使用的是哪个版本的BSP?哪块板子呢?很抱歉才给你回复哈,我前段时间出差了,刚回来,后面会继续帮大家解决问题,我们一起讨论学习哈~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部