Sebastian Dröge | e6513c1 | 2013-07-14 12:12:42 +0200 | [diff] [blame] | 1 | GStreamer @SERIES_VERSION@ |
| 2 | |
| 3 | WHAT IT IS |
| 4 | ---------- |
| 5 | |
| 6 | This is GStreamer, a framework for streaming media. |
| 7 | |
| 8 | WHERE TO START |
| 9 | -------------- |
| 10 | |
| 11 | We have a website at |
| 12 | http://gstreamer.freedesktop.org/ |
| 13 | |
| 14 | You should start by going through our FAQ at |
| 15 | http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/ |
| 16 | |
| 17 | There is more documentation; go to |
| 18 | http://gstreamer.freedesktop.org/documentation |
| 19 | |
| 20 | You can subscribe to our mailing lists; see the website for details. |
| 21 | |
| 22 | We track bugs in GNOME's bugzilla; see the website for details. |
| 23 | |
| 24 | You can join us on IRC - #gstreamer on irc.freenode.org |
| 25 | |
| 26 | GStreamer 1.0 series |
| 27 | -------------------- |
| 28 | |
| 29 | Starring |
| 30 | |
| 31 | GSTREAMER |
| 32 | |
| 33 | The core around which all other modules revolve. Base functionality and |
| 34 | libraries, some essential elements, documentation, and testing. |
| 35 | |
| 36 | BASE |
| 37 | |
| 38 | A well-groomed and well-maintained collection of GStreamer plug-ins and |
| 39 | elements, spanning the range of possible types of elements one would want |
| 40 | to write for GStreamer. |
| 41 | |
| 42 | And introducing, for the first time ever, on the development screen ... |
| 43 | |
| 44 | THE GOOD |
| 45 | |
| 46 | --- "Such ingratitude. After all the times I've saved your life." |
| 47 | |
| 48 | A collection of plug-ins you'd want to have right next to you on the |
| 49 | battlefield. Shooting sharp and making no mistakes, these plug-ins have it |
| 50 | all: good looks, good code, and good licensing. Documented and dressed up |
| 51 | in tests. If you're looking for a role model to base your own plug-in on, |
| 52 | here it is. |
| 53 | |
| 54 | If you find a plot hole or a badly lip-synced line of code in them, |
| 55 | let us know - it is a matter of honour for us to ensure Blondie doesn't look |
| 56 | like he's been walking 100 miles through the desert without water. |
| 57 | |
| 58 | THE UGLY |
| 59 | |
| 60 | --- "When you have to shoot, shoot. Don't talk." |
| 61 | |
| 62 | There are times when the world needs a color between black and white. |
| 63 | Quality code to match the good's, but two-timing, backstabbing and ready to |
| 64 | sell your freedom down the river. These plug-ins might have a patent noose |
| 65 | around their neck, or a lock-up license, or any other problem that makes you |
| 66 | think twice about shipping them. |
| 67 | |
| 68 | We don't call them ugly because we like them less. Does a mother love her |
| 69 | son less because he's not as pretty as the other ones ? No - she commends |
| 70 | him on his great personality. These plug-ins are the life of the party. |
| 71 | And we'll still step in and set them straight if you report any unacceptable |
| 72 | behaviour - because there are two kinds of people in the world, my friend: |
| 73 | those with a rope around their neck and the people who do the cutting. |
| 74 | |
| 75 | THE BAD |
| 76 | |
| 77 | --- "That an accusation?" |
| 78 | |
| 79 | No perfectly groomed moustache or any amount of fine clothing is going to |
| 80 | cover up the truth - these plug-ins are Bad with a capital B. |
| 81 | They look fine on the outside, and might even appear to get the job done, but |
| 82 | at the end of the day they're a black sheep. Without a golden-haired angel |
| 83 | to watch over them, they'll probably land in an unmarked grave at the final |
| 84 | showdown. |
| 85 | |
| 86 | Don't bug us about their quality - exercise your Free Software rights, |
| 87 | patch up the offender and send us the patch on the fastest steed you can |
| 88 | steal from the Confederates. Because you see, in this world, there's two |
| 89 | kinds of people, my friend: those with loaded guns and those who dig. |
| 90 | You dig. |
| 91 | |
| 92 | The Lowdown |
| 93 | ----------- |
| 94 | |
| 95 | --- "I've never seen so many plug-ins wasted so badly." |
| 96 | |
| 97 | GStreamer Plug-ins has grown so big that it's hard to separate the wheat from |
| 98 | the chaff. Also, distributors have brought up issues about the legal status |
| 99 | of some of the plug-ins we ship. To remedy this, we've divided the previous |
| 100 | set of available plug-ins into four modules: |
| 101 | |
| 102 | - gst-plugins-base: a small and fixed set of plug-ins, covering a wide range |
| 103 | of possible types of elements; these are continuously kept up-to-date |
| 104 | with any core changes during the development series. |
| 105 | |
| 106 | - We believe distributors can safely ship these plug-ins. |
| 107 | - People writing elements should base their code on these elements. |
| 108 | - These elements come with examples, documentation, and regression tests. |
| 109 | |
| 110 | - gst-plugins-good: a set of plug-ins that we consider to have good quality |
| 111 | code, correct functionality, our preferred license (LGPL for the plug-in |
| 112 | code, LGPL or LGPL-compatible for the supporting library). |
| 113 | |
| 114 | - We believe distributors can safely ship these plug-ins. |
| 115 | - People writing elements should base their code on these elements. |
| 116 | |
| 117 | - gst-plugins-ugly: a set of plug-ins that have good quality and correct |
| 118 | functionality, but distributing them might pose problems. The license |
| 119 | on either the plug-ins or the supporting libraries might not be how we'd |
| 120 | like. The code might be widely known to present patent problems. |
| 121 | |
| 122 | - Distributors should check if they want/can ship these plug-ins. |
| 123 | - People writing elements should base their code on these elements. |
| 124 | |
| 125 | - gst-plugins-bad: a set of plug-ins that aren't up to par compared to the |
| 126 | rest. They might be close to being good quality, but they're missing |
| 127 | something - be it a good code review, some documentation, a set of tests, |
| 128 | a real live maintainer, or some actual wide use. |
| 129 | If the blanks are filled in they might be upgraded to become part of |
| 130 | either gst-plugins-good or gst-plugins-ugly, depending on the other factors. |
| 131 | |
| 132 | - If the plug-ins break, you can't complain - instead, you can fix the |
| 133 | problem and send us a patch, or bribe someone into fixing them for you. |
| 134 | - New contributors can start here for things to work on. |
| 135 | |
| 136 | PLATFORMS |
| 137 | --------- |
| 138 | |
| 139 | - Linux is of course fully supported |
| 140 | - FreeBSD is reported to work; other BSDs should work too |
| 141 | - Solaris is reported to work; a specific sunaudiosink plugin has been written |
| 142 | - MacOSX works, binary 1.x packages can be built using the cerbero build tool |
| 143 | - Windows works; binary 1.x packages can be built using the cerbero build tool |
| 144 | - MSys/MinGW builds |
| 145 | - Microsoft Visual Studio builds are not yet available or supported |
| 146 | - Android works, binary 1.x packages can be built using the cerbero build tool |
| 147 | - iOS works |
| 148 | |
| 149 | INSTALLING FROM PACKAGES |
| 150 | ------------------------ |
| 151 | |
| 152 | You should always prefer installing from packages first. GStreamer is |
| 153 | well-maintained for a number of distributions, including Fedora, Debian, |
| 154 | Ubuntu, Mandrake, Gentoo, ... |
| 155 | |
| 156 | Only in cases where you: |
| 157 | - want to hack on GStreamer |
| 158 | - want to verify that a bug has been fixed |
| 159 | - do not have a sane distribution |
| 160 | should you choose to build from source tarballs or git. |
| 161 | |
| 162 | Find more information about the various packages at |
| 163 | http://gstreamer.freedesktop.org/download/ |
| 164 | |
| 165 | COMPILING FROM SOURCE TARBALLS |
| 166 | ------------------------------ |
| 167 | |
| 168 | - again, make sure that you really need to install from source ! |
| 169 | If GStreamer is one of your first projects ever that you build from source, |
| 170 | consider taking on an easier project. |
| 171 | |
| 172 | - check output of ./configure --help to see if any options apply to you |
| 173 | - run |
| 174 | ./configure |
| 175 | make |
| 176 | |
| 177 | to build GStreamer. |
| 178 | - if you want to install it (not required, but what you usually want to do), run |
| 179 | make install |
| 180 | |
| 181 | - try out a simple test: |
| 182 | gst-launch -v fakesrc num_buffers=5 ! fakesink |
| 183 | (If you didn't install GStreamer, prefix gst-launch with tools/) |
| 184 | |
| 185 | If it outputs a bunch of messages from fakesrc and fakesink, everything is |
| 186 | ok. |
| 187 | |
| 188 | If it did not work, keep in mind that you might need to adjust the |
| 189 | PATH and/or LD_LIBRARY_PATH environment variables to make the system |
| 190 | find GStreamer in the prefix where you installed (by default that is /usr/local). |
| 191 | |
| 192 | - After this, you're ready to install gst-plugins, which will provide the |
| 193 | functionality you're probably looking for by now, so go on and read |
| 194 | that README. |
| 195 | |
| 196 | COMPILING FROM GIT |
| 197 | ------------------ |
| 198 | |
| 199 | When building from git sources, you will need to run autogen.sh to generate |
| 200 | the build system files. |
| 201 | |
| 202 | You will need a set of additional tools typical for building from git, |
| 203 | including: |
| 204 | - autoconf |
| 205 | - automake |
| 206 | - libtool |
| 207 | |
| 208 | autogen.sh will check for recent enough versions and complain if you don't have |
| 209 | them. You can also specify specific versions of automake and autoconf with |
| 210 | --with-automake and --with-autoconf |
| 211 | |
| 212 | Check autogen.sh options by running autogen.sh --help |
| 213 | |
| 214 | autogen.sh can pass on arguments to configure |
| 215 | |
| 216 | When you have done this once, you can use autoregen.sh to re-autogen with |
| 217 | the last passed options as a handy shortcut. Use it. |
| 218 | |
| 219 | After the autogen.sh stage, you can follow the directions listed in |
| 220 | "COMPILING FROM SOURCE" |
| 221 | |
| 222 | You can also run your whole git stack uninstalled in your home directory, |
| 223 | so that you can quickly test changes without affecting your system setup or |
| 224 | interfering with GStreamer installed from packages. Many GStreamer developers |
| 225 | use an uninstalled setup for their work. |
| 226 | |
| 227 | There is a 'create-uninstalled-setup.sh' script in |
| 228 | |
| 229 | http://cgit.freedesktop.org/gstreamer/gstreamer/tree/scripts/ |
| 230 | |
| 231 | to easily create an uninstalled setup from scratch. |
| 232 | |
| 233 | |
| 234 | PLUG-IN DEPENDENCIES AND LICENSES |
| 235 | --------------------------------- |
| 236 | |
| 237 | GStreamer is developed under the terms of the LGPL (see LICENSE file for |
| 238 | details). Some of our plug-ins however rely on libraries which are available |
| 239 | under other licenses. This means that if you are distributing an application |
| 240 | which has a non-GPL compatible license (for instance a closed-source |
| 241 | application) with GStreamer, you have to make sure not to distribute GPL-linked |
| 242 | plug-ins. |
| 243 | |
| 244 | When using GPL-linked plug-ins, GStreamer is for all practical reasons |
| 245 | under the GPL itself. |
| 246 | |
| 247 | HISTORY |
| 248 | ------- |
| 249 | |
| 250 | The fundamental design comes from the video pipeline at Oregon Graduate |
| 251 | Institute, as well as some ideas from DirectMedia. It's based on plug-ins that |
| 252 | will provide the various codec and other functionality. The interface |
| 253 | hopefully is generic enough for various companies (ahem, Apple) to release |
| 254 | binary codecs for Linux, until such time as they get a clue and release the |
| 255 | source. |