diff --git a/markdown/application-development/advanced/autoplugging.md b/markdown/application-development/advanced/autoplugging.md index 5f2b508061..e623f508a8 100644 --- a/markdown/application-development/advanced/autoplugging.md +++ b/markdown/application-development/advanced/autoplugging.md @@ -63,7 +63,7 @@ we can look at methods GStreamer uses to setup pipelines for media handling and for media type detection. [pad-caps]: application-development/basics/pads.md#capabilities-of-a-pad -[pwg-type-defs]: pwg/advanced/building-types.md +[pwg-type-defs]: plugin-development/advanced/building-types.md ## Media stream type detection diff --git a/markdown/application-development/appendix/compiling.md b/markdown/application-development/appendix/compiling.md index c01f2452b2..abb786feca 100644 --- a/markdown/application-development/appendix/compiling.md +++ b/markdown/application-development/appendix/compiling.md @@ -9,8 +9,7 @@ and shipping your applications and plugins. ## Embedding static elements in your application -The [Plugin Writer's -Guide](http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html) +The [Plugin Writer's Guide](plugin-development/index.md) describes in great detail how to write elements for the GStreamer framework. In this section, we will solely discuss how to embed such elements statically in your application. This can be useful for diff --git a/markdown/application-development/basics/bins.md b/markdown/application-development/basics/bins.md index 5fd14a41cf..360f3f39ca 100644 --- a/markdown/application-development/basics/bins.md +++ b/markdown/application-development/basics/bins.md @@ -117,8 +117,7 @@ powerful and versatile custom bin like this: the playbin element.) Custom bins can be created with a plugin or from the application. You will find more information about creating custom bin in the [Plugin -Writers -Guide](http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html). +Writer's Guide](plugin-development/index.md) Examples of such custom bins are the playbin and uridecodebin elements from[gst-plugins-base](http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/index.html). diff --git a/markdown/application-development/basics/pads.md b/markdown/application-development/basics/pads.md index 6925486367..05c1d213de 100644 --- a/markdown/application-development/basics/pads.md +++ b/markdown/application-development/basics/pads.md @@ -146,8 +146,7 @@ that can flow or currently flows through the pad by using capabilities. Here, we will briefly describe what capabilities are and how to use them, enough to get an understanding of the concept. For an in-depth look into capabilities and a list of all capabilities defined in -GStreamer, see the [Plugin Writers -Guide](http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html). +GStreamer, see the [Plugin Writers Guide](plugin-development/index.md) Capabilities are attached to pad templates and to pads. For pad templates, it will describe the types of media that may stream over a diff --git a/markdown/application-development/index.md b/markdown/application-development/index.md index 320793bf51..1c76d0a167 100644 --- a/markdown/application-development/index.md +++ b/markdown/application-development/index.md @@ -27,7 +27,7 @@ but also at other forms of media processing (capture, editing, etc.). This book is about GStreamer from an application developer's point of view; it describes how to write a GStreamer application using the GStreamer libraries and tools. For an explanation about writing plugins, -we suggest the [Plugin Writers Guide](pwg/index.md). +we suggest the [Plugin Writer's Guide](plugin-development/index.md). Also check out the other documentation available on the [GStreamer web site](http://gstreamer.freedesktop.org/documentation/). diff --git a/markdown/plugin-development/advanced/events.md b/markdown/plugin-development/advanced/events.md index 3db3f5c84e..12f7f330ea 100644 --- a/markdown/plugin-development/advanced/events.md +++ b/markdown/plugin-development/advanced/events.md @@ -172,9 +172,11 @@ WRITEME ### Caps The CAPS event contains the format description of the following buffers. -See [Caps negotiation](pwg/advanced/negotiation.md) for more information +See [Caps negotiation][caps-negotiation] for more information about negotiation. +[caps-negotiation]: plugin-development/advanced/negotiation.md + ### Segment A segment event is sent downstream to announce the range of valid @@ -214,9 +216,8 @@ clipping, for example). Tagging events are being sent downstream to indicate the tags as parsed from the stream data. This is currently used to preserve tags during stream transcoding from one format to the other. Tags are discussed -extensively in [Tagging (Metadata and -Streaminfo)](pwg/advanced/tagging.md). Most elements will simply -forward the event by calling `gst_pad_event_default ()`. +extensively in [Tagging (Metadata and Streaminfo)][metadata]. Most elements +will simply forward the event by calling `gst_pad_event_default ()`. The tag event is created using the function `gst_event_new_tag ()`, but more often elements will send a tag event downstream that will be @@ -224,8 +225,10 @@ converted into a message on the bus by sink elements. All of these functions require a filled-in taglist as argument, which they will take ownership of. -Elements parsing this event can use the function `gst_event_parse_tag -()` to acquire the taglist that the event contains. +Elements parsing this event can use the function `gst_event_parse_tag ()` to +acquire the taglist that the event contains. + +[metadata]: plugin-development/advanced/tagging.md ### End of Stream (EOS) @@ -306,8 +309,9 @@ running\_time is set back to 0. ### Quality Of Service (QOS) The QOS event contains a report about the current real-time performance -of the stream. See more info in [Quality Of Service -(QoS)](pwg/advanced/qos.md). +of the stream. See more info in [Quality Of Service (QoS)][qos]. + +[qos]: plugin-development/advanced/qos.md ### Seek Request diff --git a/markdown/plugin-development/advanced/interfaces.md b/markdown/plugin-development/advanced/interfaces.md index b6ddfe6446..1d4f3e3a95 100644 --- a/markdown/plugin-development/advanced/interfaces.md +++ b/markdown/plugin-development/advanced/interfaces.md @@ -4,11 +4,10 @@ title: Interfaces # Interfaces -Previously, in the chapter [Adding -Properties](pwg/building/args.md), we have introduced the concept of -GObject properties of controlling an element's behaviour. This is very -powerful, but it has two big disadvantages: first of all, it is too -generic, and second, it isn't dynamic. +Previously, in the chapter [Adding Properties][plugin-properties], we have +introduced the concept of GObject properties of controlling an element's +behaviour. This is very powerful, but it has two big disadvantages: first of +all, it is too generic, and second, it isn't dynamic. The first disadvantage is related to the customizability of the end-user interface that will be built to control the element. Some properties are @@ -40,7 +39,9 @@ One important note: interfaces do *not* replace properties. Rather, interfaces should be built *next to* properties. There are two important reasons for this. First of all, properties can be more easily introspected. Second, properties can be specified on the commandline -(`gst-launch`). +(`gst-launch-1.0`). + +[plugin-properties]: plugin-development/building/args.md ## How to Implement Interfaces @@ -124,7 +125,7 @@ WRITEME ## Video Overlay Interface -The \#GstVideoOverlay interface is used for 2 main purposes : +The `GstVideoOverlay` interface is used for 2 main purposes : - To get a grab on the Window where the video sink element is going to render. This is achieved by either being informed about the Window @@ -133,8 +134,8 @@ The \#GstVideoOverlay interface is used for 2 main purposes : rendering. - To force a redrawing of the latest video frame the video sink - element displayed on the Window. Indeed if the \#GstPipeline is in - \#GST\_STATE\_PAUSED state, moving the Window around will damage its + element displayed on the Window. Indeed if the `GstPipeline` is in + `GST\_STATE\_PAUSED` state, moving the Window around will damage its content. Application developers will want to handle the Expose events themselves and force the video sink element to refresh the Window's content. diff --git a/markdown/plugin-development/appendix/porting.md b/markdown/plugin-development/appendix/porting.md index a7c9686f10..d51c472ff2 100644 --- a/markdown/plugin-development/appendix/porting.md +++ b/markdown/plugin-development/appendix/porting.md @@ -26,7 +26,7 @@ also need a rewrite, which will take about the same amount of time. - In 0.10, buffers have caps attached to them. Elements should allocate new buffers with `gst_pad_alloc_buffer ()`. See [Caps - negotiation](pwg/advanced/negotiation.md) for more details. + negotiation](plugin-development/advanced/negotiation.md) for more details. - Most functions returning an object or an object property have been changed to return its own reference rather than a constant reference @@ -46,21 +46,21 @@ also need a rewrite, which will take about the same amount of time. some more work. Pads get assigned a scheduling mode, based on which they can either operate in random access-mode, in pipeline driving mode or in push-mode. all this is documented in detail in [Different - scheduling modes](pwg/advanced/scheduling.md). As a result of this, the + scheduling modes](plugin-development/advanced/scheduling.md). As a result of this, the bytestream object no longer exists. Elements requiring byte-level access should now use random access on their sinkpads. - Negotiation is asynchronous. This means that downstream negotiation is done as data comes in and upstream negotiation is done whenever renegotiation is required. All details are described in [Caps - negotiation](pwg/advanced/negotiation.md). + negotiation](plugin-development/advanced/negotiation.md). - For as far as possible, elements should try to use existing base classes in 0.10. Sink and source elements, for example, could derive from `GstBaseSrc` and `GstBaseSink`. Audio sinks or sources could even derive from audio-specific base classes. All existing base classes have been discussed in [Pre-made base - classes](pwg/other/base.md) and the next few chapters. + classes](plugin-development/other/base.md) and the next few chapters. - In 0.10, event handling and buffers are separated once again. This means that in order to receive events, one no longer has to set the @@ -88,7 +88,7 @@ also need a rewrite, which will take about the same amount of time. need to be able to accept and process data already in the `GST_STATE_PAUSED` state now (i.e. when prerolling the pipeline). More details can be found in [What are - states?](pwg/building/statemanage-states.md). + states?](plugin-development/building/statemanage-states.md). - If your plugin's state change function hasn't been superseded by virtual start() and stop() methods of one of the new base classes, diff --git a/markdown/plugin-development/building/boiler.md b/markdown/plugin-development/building/boiler.md index 5dab3bb249..288d560d91 100644 --- a/markdown/plugin-development/building/boiler.md +++ b/markdown/plugin-development/building/boiler.md @@ -259,8 +259,8 @@ details on this. Pads are created from these static templates in the element's `_init ()` function using `gst_pad_new_from_static_template ()`. In order to create a new pad from this template using `gst_pad_new_from_static_template -()`, you will need to declare the pad template as a global variable. -More on this subject in [Specifying the pads](pwg/building/pads.md). +()`, you will need to declare the pad template as a global variable. More on +this subject in [Specifying the pads][pads]. static GstStaticPadTemplate sink_factory = [..], src_factory = [..]; @@ -309,8 +309,9 @@ Values surrounded by curly brackets (“{” and “}”) are lists, values surrounded by square brackets (“\[” and “\]”) are ranges. Multiple sets of types are supported too, and should be separated by a semicolon (“;”). Later, in the chapter on pads, we will see how to use types -to know the exact format of a stream: [Specifying the -pads](pwg/building/pads.md). +to know the exact format of a stream: [Specifying the pads][pads]. + +[pads]: plugin-development/building/pads.md ## Constructor Functions diff --git a/markdown/plugin-development/building/index.md b/markdown/plugin-development/building/index.md index 26f2fce50a..15c24e4e10 100644 --- a/markdown/plugin-development/building/index.md +++ b/markdown/plugin-development/building/index.md @@ -17,6 +17,7 @@ single output pad. The filter will, at first, simply pass media and event data from its sink pad to its source pad without modification. But by the end of this part of the guide, you will learn to add some more interesting functionality, including properties and signal handlers. And -after reading the next part of the guide, [Advanced Filter -Concepts](pwg/advanced/index.md), you will be able to add even more -functionality to your plugins. +after reading the next part of the guide, [Advanced Filter Concepts][advanced], +you will be able to add even more functionality to your plugins. + +[advanced]: plugin-development/advanced/index.md diff --git a/markdown/plugin-development/building/statemanage-states.md b/markdown/plugin-development/building/statemanage-states.md index 3862491be8..dfd8fbb145 100644 --- a/markdown/plugin-development/building/statemanage-states.md +++ b/markdown/plugin-development/building/statemanage-states.md @@ -52,7 +52,7 @@ card or render video pictures to an image sink. ## Managing filter state If at all possible, your element should derive from one of the new base -classes ([Pre-made base classes](pwg/other/base.md)). There are +classes ([Pre-made base classes](plugin-development/other/base.md)). There are ready-made general purpose base classes for different types of sources, sinks and filter/transformation elements. In addition to those, specialised base classes exist for audio and video elements and others. diff --git a/markdown/plugin-development/introduction/basics.md b/markdown/plugin-development/introduction/basics.md index f510e1931f..de2238bd44 100644 --- a/markdown/plugin-development/introduction/basics.md +++ b/markdown/plugin-development/introduction/basics.md @@ -126,8 +126,8 @@ Events may contain several of the following items: - The other contents of the event depend on the specific event type. Events will be discussed extensively in [Events: Seeking, Navigation and -More](pwg/advanced/events.md). Until then, the only event that will -be used is the *EOS* event, which is used to indicate the end-of-stream +More](plugin-development/advanced/events.md). Until then, the only event that +will be used is the *EOS* event, which is used to indicate the end-of-stream (usually end-of-file). See the *GStreamer Library Reference* for the current implementation @@ -157,7 +157,7 @@ from a downstream peer through a GstBufferPool or GstAllocator. Elements can ask a GstBufferPool or GstAllocator from the downstream peer element. If downstream is able to provide these objects, upstream can use them to allocate buffers. See more in [Memory -allocation](pwg/advanced/allocation.md). +allocation](plugin-development/advanced/allocation.md). Many sink elements have accelerated methods for copying data to hardware, or have direct access to hardware. It is common for these @@ -183,7 +183,7 @@ for ensuring that the parameters required to fully specify a format match up correctly when linking pads between elements. Each link that is made between elements has a specified type and optionally a set of properties. See more about caps negotiation in [Caps -negotiation](pwg/advanced/negotiation.md). +negotiation](plugin-development/advanced/negotiation.md). ### The Basic Types @@ -192,7 +192,7 @@ of a few of the basic types used for buffers in GStreamer. The table contains the name ("media type") and a description of the type, the properties associated with the type, and the meaning of each property. A full list of supported types is included in [List of Defined -Types](pwg/advanced/building-types.md#list-of-defined-types). +Types](plugin-development/advanced/building-types.md#list-of-defined-types).