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 <
stefano.sabatini-l...@poste.it> 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
> libav-user@mplayerhq.hu
> 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
libav-user@mplayerhq.hu
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to