In this part we will cover the more advanced features of GStreamer. With the basics you learned in the previous part you should be able to create a simple application. However, GStreamer provides much more candy than just the basics of playing back audio files. In this chapter, you will learn more of the low-level features and internals of GStreamer, such as threads, scheduling, synchronization, metadata, interfaces and dynamic parameters.