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.c,vo_fbdev.c进行分析,可以利用geometry的x y参数赋值。因为-geometry本来只对x11 xmga xv xvmc xvidix gl gl2 directx和tdfxfb有效,现在我们添加上对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);//注意,后面的为screenwidth和screenheight.不能为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,类推。