design: gstghostpad: various formatting fixes
- Add missing markup - Drop manual padding on some figures Also fix some minor grammar issues.
This commit is contained in:
parent
1a5ab06a74
commit
3f89c720e1
@ -6,65 +6,67 @@ element.
|
|||||||
|
|
||||||
## Some design requirements
|
## Some design requirements
|
||||||
|
|
||||||
- Must look like a real GstPad on both sides.
|
- Must look like a real `GstPad` on both sides.
|
||||||
- target of Ghostpad must be changeable
|
- target of Ghostpad must be changeable
|
||||||
- target can be initially NULL
|
- target can be initially NULL
|
||||||
|
|
||||||
- a GhostPad is implemented using a private GstProxyPad class:
|
- a GhostPad is implemented using a private `GstProxyPad` class:
|
||||||
|
|
||||||
```
|
```
|
||||||
GstProxyPad
|
GstProxyPad
|
||||||
(------------------)
|
(------------------)
|
||||||
| GstPad |
|
| GstPad |
|
||||||
|------------------|
|
|------------------|
|
||||||
| GstPad *target |
|
| GstPad *target |
|
||||||
(------------------)
|
(------------------)
|
||||||
| GstPad *internal |
|
| GstPad *internal |
|
||||||
(------------------)
|
(------------------)
|
||||||
|
|
||||||
GstGhostPad
|
GstGhostPad
|
||||||
(------------------) -\
|
(------------------) -\
|
||||||
| GstPad | |
|
| GstPad | |
|
||||||
|------------------| |
|
|------------------| |
|
||||||
| GstPad *target | > GstProxyPad
|
| GstPad *target | > GstProxyPad
|
||||||
|------------------| |
|
|------------------| |
|
||||||
| GstPad *internal | |
|
| GstPad *internal | |
|
||||||
|------------------| -/
|
|------------------| -/
|
||||||
| <private data> |
|
| <private data> |
|
||||||
(------------------)
|
(------------------)
|
||||||
```
|
```
|
||||||
|
|
||||||
A GstGhostPad (X) is _always_ created together with a GstProxyPad (Y).
|
A `GstGhostPad` (X) is _always_ created together with a `GstProxyPad` (Y).
|
||||||
The internal pad pointers are set to point to the eachother. The
|
The internal pad pointers are set to point to eachother. The
|
||||||
GstProxyPad pairs have opposite directions, the GstGhostPad has the same
|
`GstProxyPad` pairs have opposite directions, the `GstGhostPad` has the same
|
||||||
direction as the (future) ghosted pad (target).
|
direction as the (future) ghosted pad (target).
|
||||||
|
|
||||||
(- X --------)
|
```
|
||||||
| |
|
(- X --------)
|
||||||
| target * |
|
| |
|
||||||
|------------|
|
| target * |
|
||||||
| internal *----+
|
|------------|
|
||||||
(------------) |
|
| internal *----+
|
||||||
^ V
|
(------------) |
|
||||||
| (- Y --------)
|
^ V
|
||||||
| | |
|
| (- Y --------)
|
||||||
| | target * |
|
| | |
|
||||||
| |------------|
|
| | target * |
|
||||||
+----* internal |
|
| |------------|
|
||||||
(------------)
|
+----* internal |
|
||||||
|
(------------)
|
||||||
|
|
||||||
Which we will abbreviate to:
|
Which we will abbreviate to:
|
||||||
|
|
||||||
(- X --------)
|
(- X --------)
|
||||||
| |
|
| |
|
||||||
| target *--------->//
|
| target *--------->//
|
||||||
|
(------------)
|
||||||
|
|
|
||||||
|
(- Y --------)
|
||||||
|
| target *----->//
|
||||||
(------------)
|
(------------)
|
||||||
|
|
```
|
||||||
(- Y --------)
|
|
||||||
| target *----->//
|
|
||||||
(------------)
|
|
||||||
|
|
||||||
The GstGhostPad (X) is also set as the parent of the GstProxyPad (Y).
|
The `GstGhostPad` (X) is also set as the parent of the `GstProxyPad` (Y).
|
||||||
|
|
||||||
The target is a pointer to the internal pads peer. It is an optimisation to
|
The target is a pointer to the internal pads peer. It is an optimisation to
|
||||||
quickly get to the peer of a ghostpad without having to dereference the
|
quickly get to the peer of a ghostpad without having to dereference the
|
||||||
@ -75,7 +77,9 @@ is modified.
|
|||||||
|
|
||||||
## Creating a ghostpad with a target:
|
## Creating a ghostpad with a target:
|
||||||
|
|
||||||
gst_ghost_pad_new (char *name, GstPad *target)
|
```
|
||||||
|
gst_ghost_pad_new (char *name, GstPad *target)
|
||||||
|
```
|
||||||
|
|
||||||
1) create new GstGhostPad X + GstProxyPad Y
|
1) create new GstGhostPad X + GstProxyPad Y
|
||||||
2) X name set to @name
|
2) X name set to @name
|
||||||
@ -129,14 +133,14 @@ gst_ghost_pad_new_no_target (char *name, GstPadDirection dir)
|
|||||||
```
|
```
|
||||||
gst_ghost_pad_set_target (char *name, GstPad *newtarget)
|
gst_ghost_pad_set_target (char *name, GstPad *newtarget)
|
||||||
|
|
||||||
(- X --------)
|
(- X --------)
|
||||||
| |
|
| |
|
||||||
| target *--------->//
|
| target *--------->//
|
||||||
|
(------------)
|
||||||
|
|
|
||||||
|
(- Y --------)
|
||||||
|
| target *----->//
|
||||||
(------------)
|
(------------)
|
||||||
|
|
|
||||||
(- Y --------)
|
|
||||||
| target *----->//
|
|
||||||
(------------)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
1) assert direction of newtarget == X direction
|
1) assert direction of newtarget == X direction
|
||||||
@ -209,7 +213,7 @@ gst_ghost_pad_set_target (char *name, GstPad *newtarget)
|
|||||||
-------)
|
-------)
|
||||||
```
|
```
|
||||||
|
|
||||||
X is a sink GstGhostPad without a target. The internal GstProxyPad Y has
|
X is a sink `GstGhostPad` without a target. The internal `GstProxyPad` Y has
|
||||||
the same direction as the src pad (peer).
|
the same direction as the src pad (peer).
|
||||||
|
|
||||||
1) link function is called
|
1) link function is called
|
||||||
|
Loading…
x
Reference in New Issue
Block a user