`
yidongkaifa
  • 浏览: 4062710 次
文章分类
社区版块
存档分类
最新评论

mplayer 移植到ok6410开发板上如何改变播放视频的界面位置与大小

 
阅读更多

一、改变界面显示的坐标

在播放视频的时候,视频都是从,(0,0)坐标开始播放,要改变坐标的话,按下面操作:

通过对vo_fbdev.c里面的:(vo_fbdev.c这个文件在mplayer安装目录的libvo目录下

static int draw_slice(uint8_t *src[], int stride[], int w, int h, int x,

int y)

{

uint8_t *d;

uint8_t *s;

d = center + fb_line_len * y + fb_pixel_size * x;

s = src[0];

while (h) {

fast_memcpy(d, s, w * fb_pixel_size);

d += fb_line_len;

s += stride[0];

h--;

}

return 0;

}

的分析,可以看出,x,y为缓存图像坐标的起始点

只要改d = center + fb_line_len * y + fb_pixel_size * x;d = center + fb_line_len * (y+15) + fb_pixel_size * x;后保存重新编译就可以了。xy表示像素。

然而编译后全屏播放也一样会偏移15pix,即标题栏没有覆盖!

引发出能否自己添加外部命令参数,通过对geometry.c

vo_s3fb.cvo_fbdev.c进行分析,可以利用geometryx y参数赋值。因为-geometry本来只对x11 xmga xv xvmc xvidix gl gl2 directxtdfxfb有效,现在我们添加上对fbdev也有效!

其他均不变!

vo_fbdev.c开头添加库文件

#include "geometry.h"

定义四个变量

static uint32_t fbwidth, fbheight, fbx, fby;

static int config(uint32_t width, uint32_t height, uint32_t d_width,

uint32_t d_height, uint32_t flags, char *title,

uint32_t format)的末尾添加参数获取命令:

geometry(&fbx, &fby, &fbwidth, &fbheight, 240, 320);//注意,后面的为screenwidthscreenheight.不能为0,0

mp_msg(MSGT_VO, MSGL_INFO, "fbdev: output is at %dx%d +%dx%d\n", fbx, fby, fbwidth, fbheight);

在将d = center + fb_line_len * y + fb_pixel_size * x改为d = center + fb_line_len * (y + fby) + fb_pixel_size * (x + fbx);

重新编译后得到Mplyaer文件即可

二、改变视频界面大小

进入开发板根目录,然后vi ~/.mplayer/config ,添加一下几行:

# Write your default config options here!
vo=fbdev2
ao=oss
framedrop = yes
joystick = no
vf=rotate=4,scale=480:240

主要的就是最后一个vf=rotate=4,scale=480:272,rotate表示你要让视频旋转几度,1表示90,2是180,类推。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics