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
|
||||
is then muxed and outputted.
|
||||
|
||||
* Archiving and intermediary format
|
||||
|
||||
The requirement is to have lossless
|
||||
|
||||
* CD ripping
|
||||
|
||||
Example applications: Sound-juicer
|
||||
|
||||
* DVD ripping
|
||||
|
||||
|
||||
Example application: Thoggen
|
||||
|
|
|
@ -3,15 +3,15 @@ Encoding and Muxing
|
|||
|
||||
Summary
|
||||
-------
|
||||
0 Problems
|
||||
0 Goals
|
||||
A. Problems
|
||||
B. Goals
|
||||
1. EncodeBin
|
||||
2. Encoding Profile System
|
||||
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
|
||||
|
@ -23,11 +23,13 @@ Summary
|
|||
|
||||
* No unified system for creating encoding targets for 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
|
||||
|
@ -44,7 +46,7 @@ Summary
|
|||
|
||||
Create a helper library to:
|
||||
* 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:
|
||||
* Applications with a very-specific use-case to limit the number of
|
||||
profiles they can offer the user. A screencasting application has no
|
||||
use with the online services targets for example.
|
||||
profiles they can offer the user. A screencasting application has
|
||||
no use with the online services targets for example.
|
||||
* Offering the user some initial classification in the case of a
|
||||
more generic encoding application (like a video editor or a
|
||||
transcoder).
|
||||
more generic encoding application (like a video editor or a
|
||||
transcoder).
|
||||
|
||||
Ex:
|
||||
Consumer devices
|
||||
Online service
|
||||
Intermediate editing format
|
||||
Intermediate Editing Format
|
||||
Screencast
|
||||
Capture
|
||||
Computer
|
||||
|
@ -242,7 +244,7 @@ An encoding profile requires the following information:
|
|||
* Description
|
||||
This is a translatable string describing the profile
|
||||
* 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.
|
||||
* Muxing preset
|
||||
This is an optional string describing the preset(s) to use on the
|
||||
|
@ -259,9 +261,9 @@ A Stream Profile consists of:
|
|||
* Type
|
||||
The type of stream profile (audio, video, text, private-data)
|
||||
* 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
|
||||
mime type will be used.
|
||||
media type will be used.
|
||||
* Encoding preset
|
||||
This is an optional string describing the preset(s) to use on the
|
||||
encoder.
|
||||
|
@ -377,6 +379,23 @@ made as to which formatting to use for storing targets and profiles.
|
|||
gst_preset_load_preset (h264enc,
|
||||
"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
|
||||
------------------------------
|
||||
|
@ -414,10 +433,31 @@ made as to which formatting to use for storing targets and profiles.
|
|||
|
||||
The remaining parts concern the restrictions to encoder
|
||||
input.
|
||||
|
||||
|
||||
[0] http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html
|
||||
[1] http://www.gnome.org/~bmsmith/gconf-docs/C/gnome-media.html
|
||||
[2] http://gstreamer.freedesktop.org/wiki/DeviceProfile
|
||||
[3] http://gstreamer.freedesktop.org/wiki/PresetDesign
|
||||
3.4 Ensuring availability of plugins for Profiles
|
||||
|
||||
When an application wishes to use a Profile, it should be able to
|
||||
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>
|
||||
|
||||
typedef enum {
|
||||
GST_ENCODING_PROFILE_UNKNOWN,
|
||||
GST_ENCODING_PROFILE_VIDEO,
|
||||
GST_ENCODING_PROFILE_AUDIO,
|
||||
GST_ENCODING_PROFILE_TEXT,
|
||||
GST_ENCODING_PROFILE_UNKNOWN
|
||||
GST_ENCODING_PROFILE_TEXT
|
||||
/* Room for extenstion */
|
||||
} GstEncodingProfileType;
|
||||
|
||||
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.
|
||||
*/
|
||||
/* 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);
|
||||
|
||||
#endif /* __GST_PROFILE_H__ */
|
||||
|
|
Loading…
Reference in a new issue