This setup uses the raspberry pi composite video output fed into an arduino with the video experimenter shield. The shield has an LM1881 video sync separator which allows the arduino to mux a closed caption signal onto the Pi's composite video signal.
The arduino is using a fork of the TVout Enhanced Library.
The Pi is running a python script that plays a movie and parses the corresponding SRT subtitle file. It synchronizes the SRT timestamps with the movie timestamp and sends the subtitle data to the arduino at the correct time.
The arduino generates the closed caption signal and the television decodes it and displays the caption in sync with the movie.
In the video above the television set is NTSC, and the closed captions are transmitted using the EIA-608 closed captioning standard