Differenze tra le versioni di "Inizializzazione di GStreamer"

Da Gambas-it.org - Wikipedia.
Riga 62: Riga 62:
 
  versione = gst_version_string()
 
  versione = gst_version_string()
 
  Print descrizione
 
  Print descrizione
 +
 +
 +
==Impostare un ''Elemento'' per la gestione del flusso dei dati==
 +
Un ''Elemento'' è la Classe di oggetti più importante in ''GStreamer''. Esso svolge una determinata funzione, ed è utilizzato per gestire il flusso di dati, come ad esempio lettura, decodifica ed invio dei medesimi alla scheda audio. Concatenando più ''Elementi'' (''pipeline'') è possibile sfruttare le loro funzionalità ed ottenere gli obiettivi desiderati (come ad esmepio la riproduzione audio) multimediali.
 +
 +
Il modo più semplice per creare un ''Elemento'' è utilizzare la funzione:
 +
''GstElement * gst_element_factory_make(const gchar *factoryname, const gchar *name)
 +
alla quale si passa il nome di un ''Elemento'' fra quelli predisposti da ''GStreamer'' ed una denominazione per l'<I>Elemento</i> appena creato. È possibile passare ''NULL'' come argomento ''name'' per ottenere un unico nome predefinito.
 +
<BR>Detta funzione restituisce una variabile di tipo ''Puntatore'' al nuovo ''Elemento'' creato, che sarà utilizzata per richiamare appunto quell'<I>Elemento</i>.
 +
<BR>Il nuovo ''Elemento'' creato con un nome previsto da GStreamer è in grado di gestire solitamente file audio e video, nonché, a seconda dell'<I>Elemento</i> richiamato, altre determinate caratteristiche.
 +
<BR>In Gambas dichiareremo la funzione nel seguente modo:
 +
Private Extern gst_element_factory_make(factoryname As String, name As String) As Pointer
 +
e la richiameremo in routine ad esempio così:
 +
Private elem As Pointer
 +
 +
Public Sub ......()
 +
 +
  elem = gst_element_factory_make("playbin", "esegui")
 +
......
 +
 +
 +
===Elimnare un ''Elemento''===
 +
Per elimnare un ''Elemento'', precedentemente creato, si utilizza la funzione:
 +
''void gst_object_unref(gpointer object)''
 +
alla quale va passata la variabile di tipo ''Pointer'' che punta all'<I>Elemento</i> creato.
 +
<BR>In Gambas la funzione sarà così dichiarata:
 +
Private Extern gst_object_unref(object As Pointer)
 +
e la richiameremo in routine ad esempio così:
 +
gst_object_unref(elem)
  
  

Versione delle 17:32, 22 giu 2013

Individuazione e dichiarazione della Libreria .so esterna di GStreamer

Innanzitutto, l'uso delle funzioni esterne del API di GStreamer necessita della dichiarazione della Libreria condivisa .so esterna, dalla quale richiamare le funzioni necessarie.

Facendo uso dell'attuale versione 1.0 di GStreamer, ed avendo verificato nel nostro sistema che la libreria da richiamare è: libgstreamer-1.0.so.0.6.0, dichiareremo la libreria così:

Library "libgstreamer-1.0"   |1|


Inizializzazione di GStreamer

Il primo passo è quello di inizializzare GStreamer. Tale procedura avverrà mediante l'utilizzo della funzione:

void gst_init(int *argc, char **argv[])

Essa inizializza la libreria GStreamer, la impostazione di liste di percorsi interni, la registrazione di Elementi incorporati, ed il caricamento di plugin standard. In Gambas, dopo aver dichiarato con Extern la predetta funzione in tal modo:

Private Extern gst_init(argc As Pointer, argv As Pointer)

potrà essere utilizzata all'interno di una ruotine. Nel nostro caso più semplice, ossia nel caso non si intenda passare a GStreamer nessun valore d'argomento, i due parametri di tipo Pointer saranno posti ai rispettivi valori di default:

 gst_init(0,0)


Ottenere informazioni iniziali

E' possibile ottenere subito alcune prime informazioni relativamente all'inizializzazione di GStreamer mediante alcune funzioni.

Verifica della inizializzazione

Utilizzeremo la funzione esterna:

' gboolean gst_is_initialized(void)

la quale restituisce un valore booleano che se è uguale a True significa che GStreamer è stato regolarmente inizializzato. In Gambas la dichiareremo così:

Private Extern gst_is_initialized() As Boolean

e la richiameremo in routine ad esempio così:

Dim inizializzato As Boolean

inizializzato = gst_is_initialized()
Print inizializzato

Ottenere in dettaglio il numero della versione di GStreamer

Utilizzeremo la funzione esterna:

void gst_version(guint *major, guint *minor, guint *micro, guint *nano)

dalla quale, deferenziando successivanete i valori di tipo Pointer precedentemente ad essa passati, è possibile ottenere in dettaglio il numero della versione di GStreamer. In Gambas la dichiareremo così:

Private Extern gst_version(majorP As Pointer, minorP As Pointer, microP As Pointer, nanoP As Pointer)

e la richiameremo in routine passandole quattro Pointer che puntano ad un'area allocata di memoria sufficiente per riempire un valore intero:

Dim major, minor, micro, nano As Pointer

major = Alloc(4)
minor = Alloc(4)
micro = Alloc(4)
nano = Alloc(4)

 gst_version(major, minor, micro, nano)

' Passiamo alla dereferenziazione delle variabili di tipo Pointer
' ormai riempiri dalla funzione "gst_version":
 Print major = "; Int@(major)
 Print minor = "; Int@(minor)
 Print micro = "; Int@(micro)
 Print nano = "; Int@(nano)

Ottenere una descrizione generica di GStreamer

Utilizzeremo la funzione esterna:

gchar * gst_version_string(void)

la quale restituisce un valore stringa che rappresenta una descrizione/denominazione generica di GStreamer comprensiva dell'attuale versione. In Gambas la dichiareremo così:

Private Extern gst_version_string()

e la richiameremo in routine ad esempio così:

Dim descrizione As String

versione = gst_version_string()
Print descrizione


Impostare un Elemento per la gestione del flusso dei dati

Un Elemento è la Classe di oggetti più importante in GStreamer. Esso svolge una determinata funzione, ed è utilizzato per gestire il flusso di dati, come ad esempio lettura, decodifica ed invio dei medesimi alla scheda audio. Concatenando più Elementi (pipeline) è possibile sfruttare le loro funzionalità ed ottenere gli obiettivi desiderati (come ad esmepio la riproduzione audio) multimediali.

Il modo più semplice per creare un Elemento è utilizzare la funzione:

GstElement * gst_element_factory_make(const gchar *factoryname, const gchar *name)

alla quale si passa il nome di un Elemento fra quelli predisposti da GStreamer ed una denominazione per l'Elemento appena creato. È possibile passare NULL come argomento name per ottenere un unico nome predefinito.
Detta funzione restituisce una variabile di tipo Puntatore al nuovo Elemento creato, che sarà utilizzata per richiamare appunto quell'Elemento.
Il nuovo Elemento creato con un nome previsto da GStreamer è in grado di gestire solitamente file audio e video, nonché, a seconda dell'Elemento richiamato, altre determinate caratteristiche.
In Gambas dichiareremo la funzione nel seguente modo:

Private Extern gst_element_factory_make(factoryname As String, name As String) As Pointer

e la richiameremo in routine ad esempio così:

Private elem As Pointer

Public Sub ......()

 elem = gst_element_factory_make("playbin", "esegui")
......


Elimnare un Elemento

Per elimnare un Elemento, precedentemente creato, si utilizza la funzione:

void gst_object_unref(gpointer object)

alla quale va passata la variabile di tipo Pointer che punta all'Elemento creato.
In Gambas la funzione sarà così dichiarata:

Private Extern gst_object_unref(object As Pointer)

e la richiameremo in routine ad esempio così:

gst_object_unref(elem)


Note

[1] Come sappiamo, tenendo conto della sua versione, possiamo anche dichiararla così:

Library "libgstreamer-1.0:0

oppure così:

Library "libgstreamer-1.0:0.6.0"

PAGINA IN COSTRUZIONE