To reduce CPU load while recording video i slowed down the overlay update rate in main(). The problem then was that if the overlay is redrawn
 while it was copied in to the videostream the text was flickering.

1. Added a 'double buffer' for the overlay drawing , no knowing much about cairo i added a second cairo context.
2. camera_video_buffer_callback : the last updated overlay_buffer is copied to the videostream
3. main() : the know inactive buffer is redrawn

Since i get GPS data every 1 sec i will update the overlay_buffer only when new gps data is available.

CPU usage is  4.2% @  video size is 640x480
 3020 pi        20   0 67816 5076 2140 S   4.2  1.3   0:01.16 mmal_video_reco
 3028 pi        20   0  4680 1456 1028 R   1.3  0.4   0:00.21 top