RygelMediaEngine

RygelMediaEngine — This is the base class for media engines that contain knowledge about the streaming and transformational capabilites of the media library in use.

Signals

Object Hierarchy

    GObject
    ╰── RygelMediaEngine

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.

Parameters

self

the RygelMediaEngine instance

 

Returns

A list of RygelDLNAProfile<!-- -->s

.

[transfer none]


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 _callback_ function.

[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.

See also: rygel_media_engine_get_resources_for_item()

Parameters

self

the RygelMediaEngine instance

 

_res_

a GAsyncResult

 

Returns

A list of MediaResources<!-- -->s or null if no representations are provided by the engine for the item.


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 NULL to ignore

 

Returns

A DataSource representing the given item resource


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 NULL to ignore

 

Returns

A DataSource representing the uri


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.

Parameters

self

the RygelMediaEngine instance

 

Returns

A list of strings considered protocol schemees


rygel_media_engine_init ()

void
rygel_media_engine_init (GError **error);

Parameters

error

location to store the error occuring, or NULL to ignore

 

rygel_media_engine_get_default ()

RygelMediaEngine *
rygel_media_engine_get_default (void);

Get the singleton instance of the currently used media engine.

Returns

An instance of a concrete RygelMediaEngine implementation.

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

get_dlna_profiles ()

virtual method called by rygel_media_engine_get_dlna_profiles()

 

get_resources_for_item ()

virtual method called by rygel_media_engine_get_resources_for_item()

 

get_resources_for_item_finish ()

asynchronous finish function for get_resources_for_item, called by rygel_media_engine_get_resources_for_item()

 

create_data_source_for_resource ()

virtual method called by rygel_media_engine_create_data_source_for_resource()

 

create_data_source_for_uri ()

virtual method called by rygel_media_engine_create_data_source_for_uri()

 

get_internal_protocol_schemes ()

virtual method called by rygel_media_engine_get_internal_protocol_schemes()

 

enum RygelMediaEngineError

Members

RYGEL_MEDIA_ENGINE_ERROR_NOT_FOUND

   

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