Top |
RygelMediaEngineRygelMediaEngine — This is the base class for media engines that contain knowledge about the streaming and transformational capabilites of the media library in use. |
Functions
Types and Values
#define | RYGEL_TYPE_MEDIA_ENGINE |
struct | RygelMediaEngine |
struct | RygelMediaEngineClass |
enum | RygelMediaEngineError |
Description
Media engines express what representations of a MediaObject they can produce by returning MediaResource objects which will, in turn, be used to express to endpoints representations can be streamed from the MediaServer. These representations may include transformations, time-scaled representations, and/or encrypted representations.
See, for instance, Rygel's built-in "gstreamer" and "simple" media engines, or the external rygel-gst-0-10-media-engine module.
The actual media engine used by Rygel at runtime is specified by the media-engine configuration key. For instance, in rygel.conf: media-engine=librygel-media-engine-gst.so
Media engines should also derive their own RygelDataSource, returning an instance of it from create_data_source()
.
See the <link linkend="implementing-media-engines">Implementing Media Engines</link> section.
Functions
rygel_media_engine_get_dlna_profiles ()
GList *
rygel_media_engine_get_dlna_profiles (RygelMediaEngine *self
);
Get a list of the DLNA profiles that the media engine can stream.
This information is needed to implement DLNA's ConnectionManager.GetProtocolInfo call and to determine whether Rygel can accept an uploaded file.
rygel_media_engine_get_resources_for_item ()
void rygel_media_engine_get_resources_for_item (RygelMediaEngine *self
,RygelMediaObject *item
,GAsyncReadyCallback _callback_
,gpointer _user_data_
);
Retrieve engine-provided resources for the given MediaObject
The MediaResources returned may include formats/profiles that do not match the source content byte-for-byte (e.g. transcodes, encrypted formats, etc). The MediaEngine must return a MediaResource for the raw MediaObject content if it can support streaming the content directly.
The order of MediaResources in the returned List should be from most-preferred to least-preferred and each must have a unique alphanumeric "name" field.
The engine should set all delivery-related flags assuming all delivery forms are supported (e.g. the protocol fields and delivery flags of the ProtocolInfo). And the resource uri should be set to the empty string for http-delivered resources. The effective delivery options and uri will be established by the HTTP server.
See also: rygel_media_engine_get_resources_for_item_finish()
Parameters
self |
the RygelMediaEngine instance |
|
item |
|
|
_callback_ |
callback to call when the request is satisfied. |
[scope async] |
_user_data_ |
the data to pass to |
[closure] |
rygel_media_engine_get_resources_for_item_finish ()
GeeList * rygel_media_engine_get_resources_for_item_finish (RygelMediaEngine *self
,GAsyncResult *_res_
);
Retrieve engine-provided resources for the given MediaObject
The MediaResources returned may include formats/profiles that do not match the source content byte-for-byte (e.g. transcodes, encrypted formats, etc). The MediaEngine must return a MediaResource for the raw MediaObject content if it can support streaming the content directly.
The order of MediaResources in the returned List should be from most-preferred to least-preferred and each must have a unique alphanumeric "name" field.
The engine should set all delivery-related flags assuming all delivery forms are supported (e.g. the protocol fields and delivery flags of the ProtocolInfo). And the resource uri should be set to the empty string for http-delivered resources. The effective delivery options and uri will be established by the HTTP server.
rygel_media_engine_create_data_source_for_resource ()
RygelDataSource * rygel_media_engine_create_data_source_for_resource (RygelMediaEngine *self
,RygelMediaObject *item
,RygelMediaResource *resource
,GError **error
);
Get a DataSource for given MediaResource representation of the MediaObject.
Parameters
self |
the RygelMediaEngine instance |
|
item |
. The MediaObject to create the DataSource for . |
[in] |
resource |
. The specific resource to create the DataSource for . |
[in] |
error |
location to store the error occuring, or |
rygel_media_engine_create_data_source_for_uri ()
RygelDataSource * rygel_media_engine_create_data_source_for_uri (RygelMediaEngine *self
,const gchar *uri
,GError **error
);
Get a DataSource for the URI.
Parameters
self |
the RygelMediaEngine instance |
|
uri |
. to create the DataSource for. . |
[in] |
error |
location to store the error occuring, or |
rygel_media_engine_get_internal_protocol_schemes ()
GList *
rygel_media_engine_get_internal_protocol_schemes
(RygelMediaEngine *self
);
Get a list of URI schemes that are internal to the engine.
rygel_media_engine_get_default ()
RygelMediaEngine *
rygel_media_engine_get_default (void
);
Get the singleton instance of the currently used media engine.
Types and Values
RYGEL_TYPE_MEDIA_ENGINE
#define RYGEL_TYPE_MEDIA_ENGINE (rygel_media_engine_get_type ())
The type for RygelMediaEngine.
struct RygelMediaEngine
struct RygelMediaEngine;
This is the base class for media engines that contain knowledge about the streaming and transformational capabilites of the media library in use.
Media engines express what representations of a MediaObject they can produce by returning MediaResource objects which will, in turn, be used to express to endpoints representations can be streamed from the MediaServer. These representations may include transformations, time-scaled representations, and/or encrypted representations.
See, for instance, Rygel's built-in "gstreamer" and "simple" media engines, or the external rygel-gst-0-10-media-engine module.
The actual media engine used by Rygel at runtime is specified by the media-engine configuration key. For instance, in rygel.conf: media-engine=librygel-media-engine-gst.so
Media engines should also derive their own RygelDataSource, returning an instance of it from create_data_source()
.
See the <link linkend="implementing-media-engines">Implementing Media Engines</link> section.
struct RygelMediaEngineClass
struct RygelMediaEngineClass { GObjectClass parent_class; GList* (*get_dlna_profiles) (RygelMediaEngine* self); void (*get_resources_for_item) (RygelMediaEngine* self, RygelMediaObject* item, GAsyncReadyCallback _callback_, gpointer _user_data_); GeeList* (*get_resources_for_item_finish) (RygelMediaEngine* self, GAsyncResult* _res_); RygelDataSource* (*create_data_source_for_resource) (RygelMediaEngine* self, RygelMediaObject* item, RygelMediaResource* resource, GError** error); RygelDataSource* (*create_data_source_for_uri) (RygelMediaEngine* self, const gchar* uri, GError** error); GList* (*get_internal_protocol_schemes) (RygelMediaEngine* self); };
The class structure for RYGEL_TYPE_MEDIA_ENGINE
. All the fields in this structure are private and should never be accessed directly.
Members
virtual method called by |
||
virtual method called by |
||
asynchronous finish function for |
||
virtual method called by |
||
virtual method called by |
||
virtual method called by |
Signal Details
The “resource-changed”
signal
void user_function (RygelMediaEngine *media_engine, gchar *media_object_uri, gpointer user_data)
Signaled when one or more MediaResources<!-- -->s associated with a MediaObject changes. get_resources_for_item should be called in response to this signal to retrieve the updated list of MediaResources for the associated MediaObject.
Parameters
media_engine |
the RygelMediaEngine instance that received the signal |
|
media_object_uri |
. is the uri associated with a MediaObject.= |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last