mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-30 04:00:37 +00:00
encoding-profile: Add a way to specify a factory-name when specifying caps
In some cases you want to ensure that a specific element factory is used while requiring some specific caps but this was not possible. You can now do `qtmux:video/x-prores,variant=standard|factory-name=avenc_prores_ks` to ensure that the `avenc_prores_ks` factory is used to produce the 'standard' variant of prores video stream. This also enhances a bit the documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6875>
This commit is contained in:
parent
f4fdae1ce0
commit
5be3f255b0
2 changed files with 57 additions and 9 deletions
|
@ -2116,9 +2116,26 @@ container profile. If 0, it is not a mandatory stream</doc>
|
||||||
</parameters>
|
</parameters>
|
||||||
</method>
|
</method>
|
||||||
<method name="set_preset" c:identifier="gst_encoding_profile_set_preset">
|
<method name="set_preset" c:identifier="gst_encoding_profile_set_preset">
|
||||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.c">Sets the name of the #GstElement that implements the #GstPreset interface
|
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.c">Sets the name of the preset to be used in the profile.
|
||||||
to use for the profile.
|
This is the name that has been set when saving the preset.
|
||||||
This is the name that has been set when saving the preset.</doc>
|
You can list the available presets for a specific element factory
|
||||||
|
using `$ gst-inspect-1.0 element-factory-name`, for example for
|
||||||
|
`x264enc`:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
$ gst-inspect-1.0 x264enc
|
||||||
|
...
|
||||||
|
Presets:
|
||||||
|
"Profile Baseline": Baseline Profile
|
||||||
|
"Profile High": High Profile
|
||||||
|
"Profile Main": Main Profile
|
||||||
|
"Profile YouTube": YouTube recommended settings (https://support.google.com/youtube/answer/1722171)
|
||||||
|
"Quality High": High quality
|
||||||
|
"Quality Low": Low quality
|
||||||
|
"Quality Normal": Normal quality
|
||||||
|
"Zero Latency"
|
||||||
|
```
|
||||||
|
}</doc>
|
||||||
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.h"/>
|
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.h"/>
|
||||||
<return-value transfer-ownership="none">
|
<return-value transfer-ownership="none">
|
||||||
<type name="none" c:type="void"/>
|
<type name="none" c:type="void"/>
|
||||||
|
@ -2135,7 +2152,9 @@ This is the name that has been set when saving the preset.</doc>
|
||||||
</parameters>
|
</parameters>
|
||||||
</method>
|
</method>
|
||||||
<method name="set_preset_name" c:identifier="gst_encoding_profile_set_preset_name">
|
<method name="set_preset_name" c:identifier="gst_encoding_profile_set_preset_name">
|
||||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.c">Sets the name of the #GstPreset's factory to be used in the profile.</doc>
|
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.c">Sets the name of the #GstPreset's factory to be used in the profile. This
|
||||||
|
is the name of the **element factory** that implements the #GstPreset interface not
|
||||||
|
the name of the preset itself (see #gst_encoding_profile_set_preset).</doc>
|
||||||
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.h"/>
|
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.h"/>
|
||||||
<return-value transfer-ownership="none">
|
<return-value transfer-ownership="none">
|
||||||
<type name="none" c:type="void"/>
|
<type name="none" c:type="void"/>
|
||||||
|
@ -2146,7 +2165,7 @@ This is the name that has been set when saving the preset.</doc>
|
||||||
<type name="EncodingProfile" c:type="GstEncodingProfile*"/>
|
<type name="EncodingProfile" c:type="GstEncodingProfile*"/>
|
||||||
</instance-parameter>
|
</instance-parameter>
|
||||||
<parameter name="preset_name" transfer-ownership="none" nullable="1" allow-none="1">
|
<parameter name="preset_name" transfer-ownership="none" nullable="1" allow-none="1">
|
||||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.c">The name of the preset to use in this @profile.</doc>
|
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.c">The name of the element factory to use in this @profile.</doc>
|
||||||
<type name="utf8" c:type="const gchar*"/>
|
<type name="utf8" c:type="const gchar*"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
|
@ -3850,6 +3869,7 @@ Moreover, you can set the extra properties:
|
||||||
* `|single-segment=true` (See #gst_encoding_profile_set_single_segment)
|
* `|single-segment=true` (See #gst_encoding_profile_set_single_segment)
|
||||||
* `|single-segment=true` (See
|
* `|single-segment=true` (See
|
||||||
#gst_encoding_video_profile_set_variableframerate)
|
#gst_encoding_video_profile_set_variableframerate)
|
||||||
|
* `|factory-name=element-factory-name` (See #gst_encoding_profile_set_preset_name)
|
||||||
|
|
||||||
for example:
|
for example:
|
||||||
|
|
||||||
|
|
|
@ -109,6 +109,7 @@
|
||||||
* * `|single-segment=true` (See #gst_encoding_profile_set_single_segment)
|
* * `|single-segment=true` (See #gst_encoding_profile_set_single_segment)
|
||||||
* * `|single-segment=true` (See
|
* * `|single-segment=true` (See
|
||||||
* #gst_encoding_video_profile_set_variableframerate)
|
* #gst_encoding_video_profile_set_variableframerate)
|
||||||
|
* * `|factory-name=element-factory-name` (See #gst_encoding_profile_set_preset_name)
|
||||||
*
|
*
|
||||||
* for example:
|
* for example:
|
||||||
*
|
*
|
||||||
|
@ -765,9 +766,26 @@ gst_encoding_profile_set_single_segment (GstEncodingProfile * profile,
|
||||||
* @profile: a #GstEncodingProfile
|
* @profile: a #GstEncodingProfile
|
||||||
* @preset: (nullable): the element preset to use
|
* @preset: (nullable): the element preset to use
|
||||||
*
|
*
|
||||||
* Sets the name of the #GstElement that implements the #GstPreset interface
|
* Sets the name of the preset to be used in the profile.
|
||||||
* to use for the profile.
|
|
||||||
* This is the name that has been set when saving the preset.
|
* This is the name that has been set when saving the preset.
|
||||||
|
* You can list the available presets for a specific element factory
|
||||||
|
* using `$ gst-inspect-1.0 element-factory-name`, for example for
|
||||||
|
* `x264enc`:
|
||||||
|
*
|
||||||
|
* ``` bash
|
||||||
|
* $ gst-inspect-1.0 x264enc
|
||||||
|
* ...
|
||||||
|
* Presets:
|
||||||
|
* "Profile Baseline": Baseline Profile
|
||||||
|
* "Profile High": High Profile
|
||||||
|
* "Profile Main": Main Profile
|
||||||
|
* "Profile YouTube": YouTube recommended settings (https://support.google.com/youtube/answer/1722171)
|
||||||
|
* "Quality High": High quality
|
||||||
|
* "Quality Low": Low quality
|
||||||
|
* "Quality Normal": Normal quality
|
||||||
|
* "Zero Latency"
|
||||||
|
* ```
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gst_encoding_profile_set_preset (GstEncodingProfile * profile,
|
gst_encoding_profile_set_preset (GstEncodingProfile * profile,
|
||||||
|
@ -782,9 +800,11 @@ gst_encoding_profile_set_preset (GstEncodingProfile * profile,
|
||||||
/**
|
/**
|
||||||
* gst_encoding_profile_set_preset_name:
|
* gst_encoding_profile_set_preset_name:
|
||||||
* @profile: a #GstEncodingProfile
|
* @profile: a #GstEncodingProfile
|
||||||
* @preset_name: (nullable): The name of the preset to use in this @profile.
|
* @preset_name: (nullable): The name of the element factory to use in this @profile.
|
||||||
*
|
*
|
||||||
* Sets the name of the #GstPreset's factory to be used in the profile.
|
* Sets the name of the #GstPreset's factory to be used in the profile. This
|
||||||
|
* is the name of the **element factory** that implements the #GstPreset interface not
|
||||||
|
* the name of the preset itself (see #gst_encoding_profile_set_preset).
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
gst_encoding_profile_set_preset_name (GstEncodingProfile * profile,
|
gst_encoding_profile_set_preset_name (GstEncodingProfile * profile,
|
||||||
|
@ -1908,6 +1928,14 @@ create_encoding_stream_profile (gchar * serialized_profile,
|
||||||
|
|
||||||
single_segment = g_value_get_boolean (&v);
|
single_segment = g_value_get_boolean (&v);
|
||||||
g_value_reset (&v);
|
g_value_reset (&v);
|
||||||
|
} else if (!g_strcmp0 (propv[0], "factory-name")) {
|
||||||
|
if (factory_name) {
|
||||||
|
g_warning ("Multiple factory names specified");
|
||||||
|
g_strfreev (propv);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
factory_name = g_strdup (propv[1]);
|
||||||
} else {
|
} else {
|
||||||
g_warning ("Unsupported property: %s", propv[0]);
|
g_warning ("Unsupported property: %s", propv[0]);
|
||||||
g_strfreev (propv);
|
g_strfreev (propv);
|
||||||
|
|
Loading…
Reference in a new issue