OSD = On Screen Display。我们在很多地方都可以见到的,比如说VCD机、电视机等。
现在我正在做视频方面的东东,想实现这一功能,在视频图像上叠加当前的时间(年月日时分秒),但是不知道其实现原理是什么?总不能是生成一个容纳以上内容的小图像,然后再将这个图像叠加到原大图上吧?我觉得不是这样子的,应该有一种合理的方法,可以我找了很多资源,也没有找到一些资料。如果可能提供YUV图像上叠加这个时间的实现方法,我将不胜感激!分数大大的有,敬请放心。注意这个时间可是动态的哟,也就是说,是应该随时间的流逝而改变的喔。
现在我正在做视频方面的东东,想实现这一功能,在视频图像上叠加当前的时间(年月日时分秒),但是不知道其实现原理是什么?总不能是生成一个容纳以上内容的小图像,然后再将这个图像叠加到原大图上吧?我觉得不是这样子的,应该有一种合理的方法,可以我找了很多资源,也没有找到一些资料。如果可能提供YUV图像上叠加这个时间的实现方法,我将不胜感激!分数大大的有,敬请放心。注意这个时间可是动态的哟,也就是说,是应该随时间的流逝而改变的喔。
for (j = 0; j < FONT_ZOOM * FONT_HEIGHT && y+j < height; j++)
for (i = 0; i < FONT_ZOOM * FONT_WIDTH && x+i < stride; i++)
if (font[(j/FONT_ZOOM)*FONT_WIDTH + (i/FONT_ZOOM)])
{
int offset = (y+j)*stride + (x+i);
int offset2 =((y+j)/2)*(stride/2) + ((x+i)/2);
img->y[offset] = 255;
img->u[offset2] = 127;
img->v[offset2] = 127;
}
for(j=0;j<2;j++)
for(k=0;k<8;k++)
{
if ((buffer[(i<<1)+j]>>(7-k))&0x1)
{
yoff = (ypos+i)*stride + (xpos+(j<<3)+k);
uvoff =((ypos+i)*stride>>1) + ((xpos+j*8+k)>>1);
pY[yoff] = 0;
pU[uvoff] = 128;
pV[uvoff] = 128;
}
}
(1)其中OSD IC是内建Font,Icon的;
(2)要与Video IC配合使用;
对您的工作很感兴趣.希望探讨.