mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
docs/design: Fixups/additions based on feedback
This commit is contained in:
parent
07b1bbef43
commit
d0efe18de5
3 changed files with 68 additions and 23 deletions
|
@ -97,10 +97,14 @@ Use Cases
|
||||||
The final pass uses previously collected information, and the output
|
The final pass uses previously collected information, and the output
|
||||||
is then muxed and outputted.
|
is then muxed and outputted.
|
||||||
|
|
||||||
|
* Archiving and intermediary format
|
||||||
|
|
||||||
|
The requirement is to have lossless
|
||||||
|
|
||||||
* CD ripping
|
* CD ripping
|
||||||
|
|
||||||
Example applications: Sound-juicer
|
Example applications: Sound-juicer
|
||||||
|
|
||||||
* DVD ripping
|
* DVD ripping
|
||||||
|
|
||||||
|
Example application: Thoggen
|
||||||
|
|
|
@ -3,15 +3,15 @@ Encoding and Muxing
|
||||||
|
|
||||||
Summary
|
Summary
|
||||||
-------
|
-------
|
||||||
0 Problems
|
A. Problems
|
||||||
0 Goals
|
B. Goals
|
||||||
1. EncodeBin
|
1. EncodeBin
|
||||||
2. Encoding Profile System
|
2. Encoding Profile System
|
||||||
3. Helper Library for Profiles
|
3. Helper Library for Profiles
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
0. Problems this proposal attempts to solve
|
A. Problems this proposal attempts to solve
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
* Duplication of pipeline code for gstreamer-based applications
|
* Duplication of pipeline code for gstreamer-based applications
|
||||||
|
@ -23,11 +23,13 @@ Summary
|
||||||
|
|
||||||
* No unified system for creating encoding targets for applications,
|
* No unified system for creating encoding targets for applications,
|
||||||
resulting in duplication of code accross all applications,
|
resulting in duplication of code accross all applications,
|
||||||
differences and inconsistencies that come with that duplication.
|
differences and inconsistencies that come with that duplication,
|
||||||
|
and applications hardcoding element names and settings resulting in
|
||||||
|
poor portability.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
0. Goals
|
B. Goals
|
||||||
--------
|
--------
|
||||||
|
|
||||||
1. Convenience encoding element
|
1. Convenience encoding element
|
||||||
|
@ -44,7 +46,7 @@ Summary
|
||||||
|
|
||||||
Create a helper library to:
|
Create a helper library to:
|
||||||
* create EncodeBin instances based on profiles, and
|
* create EncodeBin instances based on profiles, and
|
||||||
* help applications to create/load/save those profiles.
|
* help applications to create/load/save/browse those profiles.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -191,16 +193,16 @@ Summary
|
||||||
|
|
||||||
Such a classification is required in order for:
|
Such a classification is required in order for:
|
||||||
* Applications with a very-specific use-case to limit the number of
|
* Applications with a very-specific use-case to limit the number of
|
||||||
profiles they can offer the user. A screencasting application has no
|
profiles they can offer the user. A screencasting application has
|
||||||
use with the online services targets for example.
|
no use with the online services targets for example.
|
||||||
* Offering the user some initial classification in the case of a
|
* Offering the user some initial classification in the case of a
|
||||||
more generic encoding application (like a video editor or a
|
more generic encoding application (like a video editor or a
|
||||||
transcoder).
|
transcoder).
|
||||||
|
|
||||||
Ex:
|
Ex:
|
||||||
Consumer devices
|
Consumer devices
|
||||||
Online service
|
Online service
|
||||||
Intermediate editing format
|
Intermediate Editing Format
|
||||||
Screencast
|
Screencast
|
||||||
Capture
|
Capture
|
||||||
Computer
|
Computer
|
||||||
|
@ -242,7 +244,7 @@ An encoding profile requires the following information:
|
||||||
* Description
|
* Description
|
||||||
This is a translatable string describing the profile
|
This is a translatable string describing the profile
|
||||||
* Muxing format
|
* Muxing format
|
||||||
This is a string containing the GStreamer mime-type of the
|
This is a string containing the GStreamer media-type of the
|
||||||
container format.
|
container format.
|
||||||
* Muxing preset
|
* Muxing preset
|
||||||
This is an optional string describing the preset(s) to use on the
|
This is an optional string describing the preset(s) to use on the
|
||||||
|
@ -259,9 +261,9 @@ A Stream Profile consists of:
|
||||||
* Type
|
* Type
|
||||||
The type of stream profile (audio, video, text, private-data)
|
The type of stream profile (audio, video, text, private-data)
|
||||||
* Encoding Format
|
* Encoding Format
|
||||||
This is a string containing the GStreamer mime-type of the encoding
|
This is a string containing the GStreamer media-type of the encoding
|
||||||
format to be used. If encoding is not to be applied, the raw audio
|
format to be used. If encoding is not to be applied, the raw audio
|
||||||
mime type will be used.
|
media type will be used.
|
||||||
* Encoding preset
|
* Encoding preset
|
||||||
This is an optional string describing the preset(s) to use on the
|
This is an optional string describing the preset(s) to use on the
|
||||||
encoder.
|
encoder.
|
||||||
|
@ -377,6 +379,23 @@ made as to which formatting to use for storing targets and profiles.
|
||||||
gst_preset_load_preset (h264enc,
|
gst_preset_load_preset (h264enc,
|
||||||
"pass:1/profile:baseline/quality:high");
|
"pass:1/profile:baseline/quality:high");
|
||||||
|
|
||||||
|
2.7 Points to be determined
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
This document hasn't determined yet how to solve the following
|
||||||
|
problems:
|
||||||
|
|
||||||
|
2.7.1 Storage of profiles
|
||||||
|
|
||||||
|
One proposal for storage would be to use a system wide directory
|
||||||
|
(like $prefix/share/gstreamer-0.10/profiles) and store XML files for
|
||||||
|
every individual profiles.
|
||||||
|
|
||||||
|
Users could then add their own profiles in ~/.gstreamer-0.10/profiles
|
||||||
|
|
||||||
|
This poses some limitations as to what to do if some applications
|
||||||
|
want to have some profiles limited to their own usage.
|
||||||
|
|
||||||
|
|
||||||
3. Helper library for profiles
|
3. Helper library for profiles
|
||||||
------------------------------
|
------------------------------
|
||||||
|
@ -414,10 +433,31 @@ made as to which formatting to use for storing targets and profiles.
|
||||||
|
|
||||||
The remaining parts concern the restrictions to encoder
|
The remaining parts concern the restrictions to encoder
|
||||||
input.
|
input.
|
||||||
|
|
||||||
|
|
||||||
[0] http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html
|
3.4 Ensuring availability of plugins for Profiles
|
||||||
[1] http://www.gnome.org/~bmsmith/gconf-docs/C/gnome-media.html
|
|
||||||
[2] http://gstreamer.freedesktop.org/wiki/DeviceProfile
|
When an application wishes to use a Profile, it should be able to
|
||||||
[3] http://gstreamer.freedesktop.org/wiki/PresetDesign
|
query whether it has all the needed plugins to use it.
|
||||||
|
|
||||||
|
This part will use GstPbUtils to query, and if needed install the
|
||||||
|
missing plugins through the installed distribution plugin installer.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* Research links
|
||||||
|
|
||||||
|
Some of these are still active documents, some other not
|
||||||
|
|
||||||
|
[0] GstPreset API documentation
|
||||||
|
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html
|
||||||
|
|
||||||
|
[1] gnome-media GConf profiles
|
||||||
|
http://www.gnome.org/~bmsmith/gconf-docs/C/gnome-media.html
|
||||||
|
|
||||||
|
[2] Research on a Device Profile API
|
||||||
|
http://gstreamer.freedesktop.org/wiki/DeviceProfile
|
||||||
|
|
||||||
|
[3] Research on defining presets usage
|
||||||
|
http://gstreamer.freedesktop.org/wiki/PresetDesign
|
||||||
|
|
||||||
|
|
|
@ -24,10 +24,11 @@
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
GST_ENCODING_PROFILE_UNKNOWN,
|
||||||
GST_ENCODING_PROFILE_VIDEO,
|
GST_ENCODING_PROFILE_VIDEO,
|
||||||
GST_ENCODING_PROFILE_AUDIO,
|
GST_ENCODING_PROFILE_AUDIO,
|
||||||
GST_ENCODING_PROFILE_TEXT,
|
GST_ENCODING_PROFILE_TEXT
|
||||||
GST_ENCODING_PROFILE_UNKNOWN
|
/* Room for extenstion */
|
||||||
} GstEncodingProfileType;
|
} GstEncodingProfileType;
|
||||||
|
|
||||||
typedef struct _GstEncodingTarget GstEncodingTarget;
|
typedef struct _GstEncodingTarget GstEncodingTarget;
|
||||||
|
@ -213,7 +214,7 @@ gboolean gst_preset_create (GstPreset *preset, gchar *name,
|
||||||
* Sets all the properties of the element back to their default values.
|
* Sets all the properties of the element back to their default values.
|
||||||
*/
|
*/
|
||||||
/* FIXME : This could actually be put at the GstObject level, or maybe even
|
/* FIXME : This could actually be put at the GstObject level, or maybe even
|
||||||
* at the GObject leve. */
|
* at the GObject level. */
|
||||||
void gst_preset_reset (GstPreset *preset);
|
void gst_preset_reset (GstPreset *preset);
|
||||||
|
|
||||||
#endif /* __GST_PROFILE_H__ */
|
#endif /* __GST_PROFILE_H__ */
|
||||||
|
|
Loading…
Reference in a new issue