• Have you even been sitting there using your GNU/Linux operating system, drifting away to your favorite music, and wondered, "What is the underlying mechanism that decodes my MP3/Ogg/FLAC music files?" Well, if you actually went and investigated, chances are you stumbled upon either GStreamer or xine, the two main media frameworks for modern GNU/Linux operating systems. This test is about GStreamer, although I have the utmost respect for the xine project. This test will evaluate (1) How much general/intuitive knowledge you have about audio/video playback frameworks; (2) How much specific, programmatic knowledge you have about GStreamer; and (3) How normal are you (where normalcy is defined by a complete lack of GStreamer knowledge). This is my first real test, so enjoy! We'll start out with a very easy, unrelated question, and then move into murkier, more arcane territory...
  • 1
    How do you feel?

  • 2
    How many sound cards AND speaker systems/pairs of headphones do you own?

  • And now, my friends, on to some actual GStreamer subject matter...
  • 3
    What is the name of the part of a sound framework that manages many functions operating on the sound (increase its volume, change its pitch, adjust its sample format, redirect it to a sound card/disk, etc.) which are presented in a programmatic or user-controllable way?

  • 4
    I have a sound card which accepts audio at a sample rate between 8000 Hz and 48000 Hz. I want to play a sound that is stored at a sample rate of 96000 Hz. Obviously, this is not possible without some sort of adjustment. What GStreamer base element would I use to allow this?

  • 5
    Why is mapping the sound card's dedicated "hardware buffer" into virtual memory (known as mmap or memory mapping) such a useful/important technique in sound frameworks?

  • 6
    True or False: If I use a Ghost Pad as the right-most sink pad in a Bin named "foo", I can connect foo's sink pad to *any* element's source pad, as long as I add the correct children inside foo.