Attached is myfont.h which defines the bitmapped font and font.c that draws
a string on a YUV420P frame buffer.
I have since upgraded my code to use SDL_TTF for more flexability.
On Mon, Aug 2, 2010 at 12:10 PM, Stefano Sabatini <
[email protected]> wrote:
> On date Monday 2010-08-02 11:51:00 -0400, German Vallejos C. encoded:
> > Hi, is possible overlay text with libav* libraries on video frames..?
>
> Check libavfilter soc + drawtext.
>
> Regards.
> _______________________________________________
> libav-user mailing list
> [email protected]
> https://lists.mplayerhq.hu/mailman/listinfo/libav-user
>
unsigned char font[224][11] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 32, 32, 32, 32, 32, 32, 0, 32, 0, 0},
{ 0, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 80, 248, 80, 248, 80, 0, 0, 0},
{ 0, 32, 112, 168, 160, 112, 40, 168, 112, 32, 0},
{ 0, 0, 64, 168, 80, 32, 80, 168, 16, 0, 0},
{ 0, 96, 144, 144, 96, 168, 144, 144, 104, 0, 0},
{ 0, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 16, 32, 32, 32, 32, 32, 32, 16, 0, 0},
{ 0, 32, 16, 16, 16, 16, 16, 16, 32, 0, 0},
{ 0, 0, 80, 32, 80, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 32, 32, 248, 32, 32, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0},
{ 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0},
{ 0, 8, 8, 16, 16, 32, 32, 64, 64, 0, 0},
{ 0, 112, 136, 136, 152, 168, 200, 136, 112, 0, 0},
{ 0, 32, 96, 160, 32, 32, 32, 32, 32, 0, 0},
{ 0, 112, 136, 8, 112, 128, 128, 128, 248, 0, 0},
{ 0, 112, 136, 8, 48, 8, 8, 136, 112, 0, 0},
{ 0, 16, 48, 80, 144, 144, 248, 16, 16, 0, 0},
{ 0, 248, 128, 128, 240, 8, 8, 136, 112, 0, 0},
{ 0, 112, 136, 128, 240, 136, 136, 136, 112, 0, 0},
{ 0, 248, 8, 8, 16, 32, 64, 64, 64, 0, 0},
{ 0, 112, 136, 136, 112, 136, 136, 136, 112, 0, 0},
{ 0, 112, 136, 136, 136, 120, 8, 136, 112, 0, 0},
{ 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0},
{ 0, 0, 0, 0, 32, 0, 0, 0, 32, 64, 0},
{ 0, 0, 16, 32, 64, 128, 64, 32, 16, 0, 0},
{ 0, 0, 0, 0, 248, 0, 248, 0, 0, 0, 0},
{ 0, 0, 64, 32, 16, 8, 16, 32, 64, 0, 0},
{ 0, 112, 136, 8, 8, 16, 32, 0, 32, 0, 0},
{ 0, 112, 136, 136, 152, 168, 184, 128, 120, 0, 0},
{ 0, 112, 136, 136, 136, 248, 136, 136, 136, 0, 0},
{ 0, 240, 136, 136, 240, 136, 136, 136, 240, 0, 0},
{ 0, 112, 136, 128, 128, 128, 128, 136, 112, 0, 0},
{ 0, 240, 136, 136, 136, 136, 136, 136, 240, 0, 0},
{ 0, 248, 128, 128, 240, 128, 128, 128, 248, 0, 0},
{ 0, 248, 128, 128, 240, 128, 128, 128, 128, 0, 0},
{ 0, 112, 136, 128, 128, 152, 136, 136, 120, 0, 0},
{ 0, 136, 136, 136, 248, 136, 136, 136, 136, 0, 0},
{ 0, 32, 32, 32, 32, 32, 32, 32, 32, 0, 0},
{ 0, 8, 8, 8, 8, 8, 8, 136, 112, 0, 0},
{ 0, 136, 144, 160, 192, 160, 144, 136, 136, 0, 0},
{ 0, 128, 128, 128, 128, 128, 128, 128, 248, 0, 0},
{ 0, 136, 216, 168, 136, 136, 136, 136, 136, 0, 0},
{ 0, 136, 200, 168, 152, 136, 136, 136, 136, 0, 0},
{ 0, 112, 136, 136, 136, 136, 136, 136, 112, 0, 0},
{ 0, 240, 136, 136, 136, 240, 128, 128, 128, 0, 0},
{ 0, 112, 136, 136, 136, 136, 168, 144, 104, 0, 0},
{ 0, 240, 136, 136, 136, 240, 136, 136, 136, 0, 0},
{ 0, 120, 128, 128, 112, 8, 8, 8, 240, 0, 0},
{ 0, 248, 32, 32, 32, 32, 32, 32, 32, 0, 0},
{ 0, 136, 136, 136, 136, 136, 136, 136, 112, 0, 0},
{ 0, 136, 136, 136, 136, 80, 80, 32, 32, 0, 0},
{ 0, 136, 136, 136, 136, 168, 168, 168, 80, 0, 0},
{ 0, 136, 136, 80, 32, 80, 136, 136, 136, 0, 0},
{ 0, 136, 136, 136, 80, 32, 32, 32, 32, 0, 0},
{ 0, 248, 8, 16, 32, 64, 128, 128, 248, 0, 0},
{ 0, 48, 32, 32, 32, 32, 32, 32, 48, 0, 0},
{ 0, 64, 64, 32, 32, 16, 16, 8, 8, 0, 0},
{ 0, 48, 16, 16, 16, 16, 16, 16, 48, 0, 0},
{ 0, 32, 80, 136, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0},
{ 0, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 112, 8, 120, 136, 120, 0, 0},
{ 0, 128, 128, 128, 240, 136, 136, 136, 240, 0, 0},
{ 0, 0, 0, 0, 120, 128, 128, 128, 120, 0, 0},
{ 0, 8, 8, 8, 120, 136, 136, 136, 120, 0, 0},
{ 0, 0, 0, 0, 112, 136, 248, 128, 120, 0, 0},
{ 0, 48, 64, 64, 112, 64, 64, 64, 64, 0, 0},
{ 0, 0, 0, 0, 120, 136, 136, 136, 120, 8, 240},
{ 0, 128, 128, 128, 240, 136, 136, 136, 136, 0, 0},
{ 0, 0, 32, 0, 96, 32, 32, 32, 32, 0, 0},
{ 0, 0, 16, 0, 48, 16, 16, 16, 16, 16, 96},
{ 0, 64, 64, 64, 72, 80, 96, 80, 72, 0, 0},
{ 0, 96, 32, 32, 32, 32, 32, 32, 32, 0, 0},
{ 0, 0, 0, 0, 240, 168, 168, 168, 168, 0, 0},
{ 0, 0, 0, 0, 240, 136, 136, 136, 136, 0, 0},
{ 0, 0, 0, 0, 112, 136, 136, 136, 112, 0, 0},
{ 0, 0, 0, 0, 240, 136, 136, 136, 240, 128, 128},
{ 0, 0, 0, 0, 120, 136, 136, 136, 120, 8, 8},
{ 0, 0, 0, 0, 184, 192, 128, 128, 128, 0, 0},
{ 0, 0, 0, 0, 112, 128, 112, 8, 240, 0, 0},
{ 0, 64, 64, 64, 112, 64, 64, 64, 48, 0, 0},
{ 0, 0, 0, 0, 136, 136, 136, 136, 120, 0, 0},
{ 0, 0, 0, 0, 136, 136, 136, 80, 32, 0, 0},
{ 0, 0, 0, 0, 136, 136, 168, 168, 80, 0, 0},
{ 0, 0, 0, 0, 136, 80, 32, 80, 136, 0, 0},
{ 0, 0, 0, 0, 136, 136, 136, 136, 120, 8, 240},
{ 0, 0, 0, 0, 248, 16, 32, 64, 248, 0, 0},
{ 0, 16, 32, 32, 32, 64, 32, 32, 32, 16, 0},
{ 0, 32, 32, 32, 32, 0, 32, 32, 32, 32, 0},
{ 0, 64, 32, 32, 32, 16, 32, 32, 32, 64, 0},
{ 0, 40, 80, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 48, 72, 64, 240, 64, 240, 64, 72, 48, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 8, 16, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 32, 80, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 176, 200, 72, 72, 120, 72, 72, 72, 0, 0},
{ 0, 112, 136, 128, 64, 240, 64, 128, 248, 0, 0},
{ 0, 0, 136, 112, 136, 136, 136, 112, 136, 0, 0},
{ 0, 136, 136, 136, 80, 248, 32, 248, 32, 32, 0},
{ 0, 32, 32, 32, 32, 0, 32, 32, 32, 32, 0},
{ 0, 112, 136, 64, 160, 144, 72, 40, 16, 136, 112},
{ 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 120, 132, 180, 164, 180, 132, 120, 0, 0},
{ 0, 64, 32, 80, 112, 0, 112, 0, 0, 0, 0},
{ 0, 0, 0, 0, 40, 80, 160, 80, 40, 0, 0},
{ 0, 0, 0, 0, 0, 248, 8, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0},
{ 0, 0, 120, 132, 180, 180, 164, 132, 120, 0, 0},
{ 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 32, 80, 32, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 32, 32, 248, 32, 32, 248, 0, 0},
{ 0, 48, 8, 16, 32, 56, 0, 0, 0, 0, 0},
{ 0, 48, 8, 16, 8, 48, 0, 0, 0, 0, 0},
{ 0, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 144, 144, 144, 144, 232, 128, 0},
{ 0, 56, 104, 232, 232, 104, 40, 40, 40, 0, 0},
{ 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0},
{ 0, 248, 192, 64, 112, 64, 64, 64, 120, 0, 0},
{ 0, 200, 200, 72, 120, 72, 72, 72, 72, 0, 0},
{ 0, 160, 160, 32, 32, 32, 32, 32, 32, 0, 0},
{ 0, 0, 0, 0, 160, 80, 40, 80, 160, 0, 0},
{ 0, 176, 200, 72, 72, 72, 72, 72, 48, 0, 0},
{ 0, 64, 192, 72, 80, 32, 112, 136, 32, 56, 0},
{ 0, 200, 200, 72, 72, 48, 32, 32, 32, 0, 0},
{ 0, 176, 200, 72, 72, 72, 48, 0, 120, 0, 0},
{ 0, 32, 80, 0, 32, 32, 32, 32, 32, 0, 0},
{ 0, 112, 136, 136, 136, 248, 136, 136, 136, 0, 0},
{ 0, 240, 136, 136, 240, 136, 136, 136, 240, 0, 0},
{ 0, 248, 128, 128, 128, 128, 128, 128, 128, 0, 0},
{ 0, 32, 32, 80, 80, 136, 136, 136, 248, 0, 0},
{ 0, 248, 128, 128, 240, 128, 128, 128, 248, 0, 0},
{ 0, 248, 8, 16, 32, 64, 128, 128, 248, 0, 0},
{ 0, 136, 136, 136, 248, 136, 136, 136, 136, 0, 0},
{ 0, 112, 136, 136, 248, 136, 136, 136, 112, 0, 0},
{ 0, 32, 32, 32, 32, 32, 32, 32, 32, 0, 0},
{ 0, 136, 144, 160, 192, 160, 144, 136, 136, 0, 0},
{ 0, 32, 32, 80, 80, 136, 136, 136, 136, 0, 0},
{ 0, 136, 216, 168, 136, 136, 136, 136, 136, 0, 0},
{ 0, 136, 200, 168, 152, 136, 136, 136, 136, 0, 0},
{ 0, 248, 0, 0, 112, 0, 0, 0, 248, 0, 0},
{ 0, 112, 136, 136, 136, 136, 136, 136, 112, 0, 0},
{ 0, 248, 136, 136, 136, 136, 136, 136, 136, 0, 0},
{ 0, 240, 136, 136, 136, 240, 128, 128, 128, 0, 0},
{ 0, 0, 0, 0, 48, 120, 120, 48, 0, 0, 0},
{ 0, 248, 64, 32, 16, 32, 64, 128, 248, 0, 0},
{ 0, 248, 32, 32, 32, 32, 32, 32, 32, 0, 0},
{ 0, 136, 136, 136, 80, 32, 32, 32, 32, 0, 0},
{ 0, 112, 168, 168, 168, 168, 168, 168, 112, 0, 0},
{ 0, 136, 136, 80, 32, 80, 136, 136, 136, 0, 0},
{ 0, 136, 168, 168, 168, 168, 112, 32, 32, 0, 0},
{ 0, 112, 136, 136, 136, 136, 112, 0, 248, 0, 0},
{ 0, 168, 32, 32, 32, 32, 32, 32, 32, 0, 0},
{ 0, 136, 0, 136, 136, 80, 32, 32, 32, 0, 0},
{ 0, 16, 32, 0, 120, 136, 136, 136, 120, 0, 0},
{ 0, 16, 32, 0, 120, 128, 112, 128, 120, 0, 0},
{ 0, 16, 32, 0, 176, 200, 136, 136, 136, 0, 0},
{ 0, 16, 32, 0, 32, 32, 32, 32, 16, 0, 0},
{ 0, 16, 168, 0, 136, 136, 136, 136, 112, 0, 0},
{ 0, 0, 0, 0, 120, 136, 136, 136, 120, 0, 0},
{ 0, 112, 136, 136, 240, 136, 136, 136, 240, 128, 0},
{ 0, 0, 0, 0, 136, 80, 32, 80, 136, 136, 112},
{ 0, 112, 128, 128, 112, 136, 136, 136, 112, 0, 0},
{ 0, 0, 0, 0, 120, 128, 112, 128, 120, 0, 0},
{ 0, 0, 0, 0, 248, 16, 32, 64, 248, 0, 0},
{ 0, 0, 0, 0, 176, 200, 136, 136, 136, 8, 0},
{ 0, 112, 136, 136, 248, 136, 136, 136, 112, 0, 0},
{ 0, 0, 0, 0, 32, 32, 32, 32, 16, 0, 0},
{ 0, 0, 0, 0, 72, 80, 96, 80, 72, 0, 0},
{ 0, 112, 136, 8, 120, 136, 136, 136, 136, 0, 0},
{ 0, 0, 0, 0, 136, 136, 136, 136, 240, 128, 128},
{ 0, 0, 0, 0, 136, 136, 136, 80, 32, 0, 0},
{ 0, 248, 64, 128, 128, 112, 128, 128, 112, 8, 16},
{ 0, 0, 0, 0, 112, 136, 136, 136, 112, 0, 0},
{ 0, 0, 0, 0, 248, 136, 136, 136, 136, 0, 0},
{ 0, 0, 0, 0, 112, 136, 136, 136, 240, 128, 128},
{ 0, 0, 0, 0, 112, 136, 128, 128, 112, 8, 16},
{ 0, 0, 0, 0, 120, 144, 136, 136, 112, 0, 0},
{ 0, 0, 0, 0, 248, 32, 32, 32, 16, 0, 0},
{ 0, 0, 0, 0, 136, 136, 136, 136, 112, 0, 0},
{ 0, 0, 0, 0, 176, 168, 168, 168, 112, 32, 32},
{ 0, 0, 0, 0, 136, 80, 32, 80, 136, 0, 0},
{ 0, 0, 0, 0, 168, 168, 168, 168, 112, 32, 32},
{ 0, 0, 0, 0, 80, 136, 168, 168, 80, 0, 0},
{ 0, 0, 80, 0, 32, 32, 32, 32, 16, 0, 0},
{ 0, 0, 136, 0, 136, 136, 136, 136, 112, 0, 0},
{ 0, 16, 32, 0, 112, 136, 136, 136, 112, 0, 0},
{ 0, 16, 32, 0, 136, 136, 136, 136, 112, 0, 0},
{ 0, 16, 32, 0, 136, 136, 168, 168, 80, 0, 0},
{ 0, 0, 0, 0, 48, 120, 120, 48, 0, 0, 0}} ;
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <inttypes.h>
#include <ctype.h>
#include <errno.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include "rwCapture.h"
#include "shared_mem.h"
#include "myfont.h"
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libavutil/avutil.h>
#include <libswscale/swscale.h>
void write_string( int x, int y, char *text, char *frame, int row_size )
{
int a,b ;
int value ;
char val ;
char index ;
unsigned char *pixel ;
while( *text ) {
// gray out the background
for( a = 0; a< 11; a++ ) {
for( b=0; b<7; b++ ) {
pixel = frame + (y+a)*row_size + x+b ;
if( *pixel > 128 )
*pixel = *pixel - 128;
else
*pixel = 32 ;
}
}
index = *text - 32 ;
if( index >= 0 ) {
// loop through each byte of font char.
for( a=0;a<11;a++ ) {
val = font[index][a] ;
// loop through each pixel of font byte
for( b=0;b<6;b++ ) {
pixel = frame + (y+a)*row_size + x+b ;
if( val & 128 ) {
*pixel = 255 ;
}
val = val << 1 ;
}
}
}
// point to next character location
x += 7 ;
// point to next text character
text++ ;
}
}
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user