Differenze tra le versioni di "Inizializzazione di GStreamer"
(19 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 2: | Riga 2: | ||
Innanzitutto, l'uso delle funzioni esterne del [http://it.wikipedia.org/wiki/Application_programming_interface API] di ''GStreamer'' necessita della dichiarazione della [http://www.gambas-it.org/wiki/index.php?title=Extern:_richiamare_funzioni_esterne_a_Gambas Libreria condivisa .so] esterna, dalla quale richiamare le funzioni necessarie. | Innanzitutto, l'uso delle funzioni esterne del [http://it.wikipedia.org/wiki/Application_programming_interface API] di ''GStreamer'' necessita della dichiarazione della [http://www.gambas-it.org/wiki/index.php?title=Extern:_richiamare_funzioni_esterne_a_Gambas 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 è | + | 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.2405.0'' ", dichiareremo la libreria così: |
− | Library "libgstreamer-1.0" | + | Library "libgstreamer-1.0:0.2407.0" <SUP>[[[#Note|nota 1]]]</sup> |
Riga 9: | Riga 9: | ||
Il primo passo è quello di inizializzare ''GStreamer''. Tale procedura avverrà mediante l'utilizzo della funzione: | Il primo passo è quello di inizializzare ''GStreamer''. Tale procedura avverrà mediante l'utilizzo della funzione: | ||
''void gst_init(int *argc, char **argv[])'' | ''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: | In Gambas, dopo aver dichiarato con ''Extern'' la predetta funzione in tal modo: | ||
Private Extern gst_init(argc As Pointer, argv As Pointer) | 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'': | 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) | + | gst_init(0, 0) |
Riga 20: | Riga 21: | ||
====Verifica della inizializzazione==== | ====Verifica della inizializzazione==== | ||
Utilizzeremo la funzione esterna: | 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ì: | 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 | Private Extern gst_is_initialized() As Boolean | ||
Riga 27: | Riga 28: | ||
inizializzato = gst_is_initialized() | inizializzato = gst_is_initialized() | ||
− | + | If inizializzato = False Then Error.Raise("Impossibile inizializzare GStreamer !") | |
====Ottenere in dettaglio il numero della versione di GStreamer==== | ====Ottenere in dettaglio il numero della versione di GStreamer==== | ||
Riga 33: | Riga 34: | ||
''void gst_version(guint *major, guint *minor, guint *micro, guint *nano) | ''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ì: | 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( | + | Private Extern gst_version(major As Pointer, minor As Pointer, micro As Pointer, nano As Pointer) |
e la richiameremo in routine passandole quattro ''Pointer'' che puntano ad un'area allocata di memoria sufficiente per riempire un valore intero: | 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 | Dim major, minor, micro, nano As Pointer | ||
− | + | major = Alloc(SizeOf(gb.Integer), 1) | |
− | + | minor = Alloc(SizeOf(gb.Integer), 1) | |
− | + | micro = Alloc(SizeOf(gb.Integer), 1) | |
− | + | nano = Alloc(SizeOf(gb.Integer), 1) | |
− | + | ||
gst_version(major, minor, micro, nano) | gst_version(major, minor, micro, nano) | ||
− | <FONT color= | + | <FONT color=gray>' ''Passiamo alla dereferenziazione delle variabili di tipo Pointer'' |
' ''ormai riempiri dalla funzione "gst_version":''</font> | ' ''ormai riempiri dalla funzione "gst_version":''</font> | ||
Print major = "; Int@(major) | Print major = "; Int@(major) | ||
Riga 54: | Riga 55: | ||
Utilizzeremo la funzione esterna: | Utilizzeremo la funzione esterna: | ||
''gchar * gst_version_string(void)'' | ''gchar * gst_version_string(void)'' | ||
− | la quale restituisce un valore stringa che rappresenta una descrizione generica di ''GStreamer'' comprensiva dell'attuale versione. In Gambas la dichiareremo così: | + | 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() | + | Private Extern gst_version_string() As String |
e la richiameremo in routine ad esempio così: | e la richiameremo in routine ad esempio così: | ||
Dim versione As String | Dim versione As String | ||
Riga 61: | Riga 62: | ||
versione = gst_version_string() | versione = gst_version_string() | ||
Print versione | Print versione | ||
+ | |||
+ | |||
+ | ====Il codice completo==== | ||
+ | Mostriamo di seguito l'intero codice riunito: | ||
+ | Library "libgstreamer-1.0:0.2407.0 | ||
+ | |||
+ | <FONT Color=gray>' ''gst_init (int *argc, char **argv[])'' | ||
+ | ' ''Initializes the GStreamer library, setting up internal path lists, registering built-in elements, and loading standard plugins.''</font> | ||
+ | Private Extern gst_init(argc As Pointer, argv As Pointer) | ||
+ | |||
+ | <FONT Color=gray>' ''gboolean gst_is_initialized (void)'' | ||
+ | ' ''Check if GStreamer has been initialized.''</font> | ||
+ | Private Extern gst_is_initialized() As Boolean | ||
+ | |||
+ | <FONT Color=gray>' ''void gst_version (guint *major, guint *minor, guint *micro, guint *nano)'' | ||
+ | ' ''Gets the version number of the GStreamer library.''</font> | ||
+ | Private Extern gst_version(major As Pointer, minor As Pointer, micro As Pointer, nano As Pointer) | ||
+ | |||
+ | <FONT Color=gray>' ''gchar * gst_version_string (void)'' | ||
+ | ' ''Returns a string that is useful for describing this version of GStreamer.''</font> | ||
+ | Private Extern gst_version_string() as String | ||
+ | |||
+ | |||
+ | Public Sub Main() | ||
+ | |||
+ | Dim inizializzato As Boolean | ||
+ | Dim major, minor, micro, nano As Pointer | ||
+ | Dim versione As String | ||
+ | |||
+ | gst_init(0, 0) | ||
+ | |||
+ | inizializzato = gst_is_initialized() | ||
+ | If inizializzato == False Then Error.Raise("Impossibile inizializzare GStreamer !") | ||
+ | |||
+ | major = Alloc(SizeOf(gb.Integer), 1) | ||
+ | minor = Alloc(SizeOf(gb.Integer), 1) | ||
+ | micro = Alloc(SizeOf(gb.Integer), 1) | ||
+ | nano = Alloc(SizeOf(gb.Integer), 1) | ||
+ | |||
+ | gst_version(major, minor, micro, nano) | ||
+ | |||
+ | <FONT Color=gray>' ''Passiamo alla dereferenziazione delle variabili di tipo Pointer ormai riempiti dalla funzione "gst_version()":''</font> | ||
+ | Print "major = "; Int@(major) | ||
+ | Print "minor = "; Int@(minor) | ||
+ | Print "micro = "; Int@(micro) | ||
+ | Print "nano = "; Int@(nano) | ||
+ | |||
+ | <FONT Color=gray>' ''Ora mostriamo il risultato della funzione "gst_version_string()":''</font> | ||
+ | versione = gst_version_string() | ||
+ | Print versione | ||
+ | |||
+ | <FONT Color=gray>' ''Liberiamo la memoria precedentemente allocata:''</font> | ||
+ | Free(nano) | ||
+ | Free(micro) | ||
+ | Free(minor) | ||
+ | Free(major) | ||
+ | |||
+ | End | ||
=Note= | =Note= | ||
− | [1] Come sappiamo, tenendo | + | [1] Come sappiamo, tenendo conto della sua versione, possiamo anche dichiararla così: |
− | Library "libgstreamer-1. | + | Library "libgstreamer-1.0 |
− | oppure | + | oppure in modo più dettagliato: |
− | Library "libgstreamer-1.0:0. | + | Library "libgstreamer-1.0:0.2407.0" |
− | |||
− |
Versione attuale delle 14:22, 2 set 2024
Indice
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.2405.0 ", dichiareremo la libreria così:
Library "libgstreamer-1.0:0.2407.0" [nota 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() If inizializzato = False Then Error.Raise("Impossibile inizializzare GStreamer !")
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(major As Pointer, minor As Pointer, micro As Pointer, nano 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(SizeOf(gb.Integer), 1) minor = Alloc(SizeOf(gb.Integer), 1) micro = Alloc(SizeOf(gb.Integer), 1) nano = Alloc(SizeOf(gb.Integer), 1) 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() As String
e la richiameremo in routine ad esempio così:
Dim versione As String versione = gst_version_string() Print versione
Il codice completo
Mostriamo di seguito l'intero codice riunito:
Library "libgstreamer-1.0:0.2407.0 ' gst_init (int *argc, char **argv[]) ' Initializes the GStreamer library, setting up internal path lists, registering built-in elements, and loading standard plugins. Private Extern gst_init(argc As Pointer, argv As Pointer) ' gboolean gst_is_initialized (void) ' Check if GStreamer has been initialized. Private Extern gst_is_initialized() As Boolean ' void gst_version (guint *major, guint *minor, guint *micro, guint *nano) ' Gets the version number of the GStreamer library. Private Extern gst_version(major As Pointer, minor As Pointer, micro As Pointer, nano As Pointer) ' gchar * gst_version_string (void) ' Returns a string that is useful for describing this version of GStreamer. Private Extern gst_version_string() as String Public Sub Main() Dim inizializzato As Boolean Dim major, minor, micro, nano As Pointer Dim versione As String gst_init(0, 0) inizializzato = gst_is_initialized() If inizializzato == False Then Error.Raise("Impossibile inizializzare GStreamer !") major = Alloc(SizeOf(gb.Integer), 1) minor = Alloc(SizeOf(gb.Integer), 1) micro = Alloc(SizeOf(gb.Integer), 1) nano = Alloc(SizeOf(gb.Integer), 1) gst_version(major, minor, micro, nano) ' Passiamo alla dereferenziazione delle variabili di tipo Pointer ormai riempiti dalla funzione "gst_version()": Print "major = "; Int@(major) Print "minor = "; Int@(minor) Print "micro = "; Int@(micro) Print "nano = "; Int@(nano) ' Ora mostriamo il risultato della funzione "gst_version_string()": versione = gst_version_string() Print versione ' Liberiamo la memoria precedentemente allocata: Free(nano) Free(micro) Free(minor) Free(major) End
Note
[1] Come sappiamo, tenendo conto della sua versione, possiamo anche dichiararla così:
Library "libgstreamer-1.0
oppure in modo più dettagliato:
Library "libgstreamer-1.0:0.2407.0"