docs/design: Fixups/additions based on feedback

This commit is contained in:
Edward Hervey 2009-10-19 18:32:23 +02:00
parent 07b1bbef43
commit d0efe18de5
3 changed files with 68 additions and 23 deletions

View file

@ -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

View file

@ -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,8 +193,8 @@ 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).
@ -200,7 +202,7 @@ Summary
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
------------------------------ ------------------------------
@ -415,9 +434,30 @@ 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.
3.4 Ensuring availability of plugins for Profiles
[0] http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html When an application wishes to use a Profile, it should be able to
[1] http://www.gnome.org/~bmsmith/gconf-docs/C/gnome-media.html query whether it has all the needed plugins to use it.
[2] http://gstreamer.freedesktop.org/wiki/DeviceProfile
[3] http://gstreamer.freedesktop.org/wiki/PresetDesign 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

View file

@ -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__ */