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