EBC Exercise 21 Running Audio and Video
Welcome to Audio and Video labs Parts a and b. In Part a, you will combine the audio loop-thru application with the video loop-thru application by running them from the Linux Bash terminal.
In Part b, you’ll programmatically combine these two applications, along with the video OSD application into a single (multi-threaded) application that handles all three data streams – audio, video, and OSD.
Part a – Run Audio and Video in Separate Processes
Build Audio Executable
- Change to the lab06c_audio_loopthru directory from before.
- Build the application using “make debug”.
This will build the debug version. Note, if you have problems building at this step, try cleaning, then building:
$ make clean $ make debug
- Use the Linux “mv” command to change the name of the app_DEBUG.Beagle application to app_AUDIO.
Build Video Executable
- Change to the lab07d_video_loopthru directory then build the application.
$ make install
Run Audio and Video in Separate Processes
- Execute the app_AUDIO application using the following command:
$ ./app_AUDIO &
Note, the trailing ampersand (&) in this command indicates that the application is to be run as a separate process. (In this case, our audio app will run in the terminal background, meaning that the terminal will remain open to new commands even while the application is executing.)
- Execute the videoThru_DEBUG.Beagle application (the video loop-thru application) using the following command:
You should now have both audio loop-thru and video loop-thru running concurrently on the board. They are running as concurrent, but separate, processes. In Part b we will use pthreads to run the audio and video loop-thru in parallel threads within the same process or application.
- Halt the video loop-thru (running in the terminal foreground) by pressing Ctrl-C.
- Use the following command to determine the process jobs number of the audio loop-thru, which is running in the terminal background:
- Halt the audio loop-thru using the kill command and job number from the last step.
$ kill %1
Part a Question
- Which scheduling policy is being used by each of the audio and video program processes(i.e. how is the thread within each process being scheduled)?