PDA

View Full Version : [C++] VLC e l'RTP


Tubo Catodico
27-02-2008, 12:23
Allora, ho bisogno di capire come funziona lo streaming rtp di vlc, mi sono scaricato i sorgenti ma solo per la parte server si parla di 3000 righe di codice, tantine....
Siccome ho trovato una bella libreria GNU che è ccRTP avevo una domanda, secondo voi è possibile che un programma fato con la ccRTP e vlc riescano a dialogare? Oppure l'unica mia possibilità è leggere la parte server di vlc, capire come funziona e ricostruire il client di conseguenza?

^TiGeRShArK^
27-02-2008, 13:24
http://www.faqs.org/rfcs/rfc1889.html

Tubo Catodico
27-02-2008, 14:42
Innanzi tutto grazie, link molto utile. L'RTP già lo conosco; il fatto che sia già uno standard non significa però che sia implementato esattamente come previsto. Mi chiedevo se in vlc lo fosse...

Tubo Catodico
27-02-2008, 17:02
Lasciate perdere, mi son risposto da solo. Piuttosto come devo interpretare questo codice:

typedef struct
{
} rtp_t;

Ovviamente ho saltato tutta la definizione della struct. Mi chiedevo se in questo modo si definisce una struct che ha nome rtp_t oppure che altro?
E se trovo una cosa del genere come la interpreto:

typedef struct _RTCP_header_RR
{
} rtcp_RR;

Grazie in anticipo ;)

kernel::panic
27-02-2008, 19:47
typedef struct
{
} rtp_t;

Ovviamente ho saltato tutta la definizione della struct. Mi chiedevo se in questo modo si definisce una struct che ha nome rtp_t oppure che altro?


Esatto, per dichiarare una variabile di questo tipo devi fare:
rtp_t pippo;


E se trovo una cosa del genere come la interpreto:

typedef struct _RTCP_header_RR
{
} rtcp_RR;


In questo caso la struttura si chiama _RTCP_header_RR e ha un "alias" rtcp_RR.

La istanzi così:

struct _RTCP_header_RR pippo;

oppure

rtcp_RR pippo;

Bye

Tubo Catodico
27-02-2008, 21:24
Grazie mille :cincin:

^TiGeRShArK^
28-02-2008, 00:05
In questo caso la struttura si chiama _RTCP_header_RR e ha un "alias" rtcp_RR.
:mbe:
qual'è l'utilità di avere un alias in questo caso?
non sarebbe stato meglio definire direttamente la struct con un nome univoco? :fagiano:
..certo che + cose scopro del C++ e meno mi piace.. :stordita:

kernel::panic
28-02-2008, 08:10
:mbe:
qual'è l'utilità di avere un alias in questo caso?
non sarebbe stato meglio definire direttamente la struct con un nome univoco? :fagiano:


E' comodo principalemte per risparmiare codice ed avere una sintassi più compatta. Quando dichiari la struct puoi dichiarare anche più alias ad esempio:

typedef struct _cippa_struct { ... } CIPPA, *PCIPPA;


..certo che + cose scopro del C++ e meno mi piace.. :stordita:

Se lavori col C++ Microsoft ti do ragione :D (hanno aggiunto una montagna di keyword e costrutti proprietari :muro: )
Quello standard ISO è tutta un'altra cosa :)

tomminno
28-02-2008, 09:17
:mbe:
qual'è l'utilità di avere un alias in questo caso?
non sarebbe stato meglio definire direttamente la struct con un nome univoco? :fagiano:
..certo che + cose scopro del C++ e meno mi piace.. :stordita:

In sostanza ti risparmi di scrivere struct davanti al nome tutte le volte che dichiari una variabile di quel tipo.
Comunque questo è C.

^TiGeRShArK^
28-02-2008, 09:35
In sostanza ti risparmi di scrivere struct davanti al nome tutte le volte che dichiari una variabile di quel tipo.
Comunque questo è C.
si lo sapevo che le struct fanno parte del C, quello che ignoravo totalmente era la possibilità degli alias....
Ma in nome di una struct, se non si usano alias, deve per forza iniziare con la parola "struct" quindi? :mbe:

^TiGeRShArK^
28-02-2008, 09:37
E' comodo principalemte per risparmiare codice ed avere una sintassi più compatta. Quando dichiari la struct puoi dichiarare anche più alias ad esempio:

typedef struct _cippa_struct { ... } CIPPA, *PCIPPA;


Se lavori col C++ Microsoft ti do ragione :D (hanno aggiunto una montagna di keyword e costrutti proprietari :muro: )
Quello standard ISO è tutta un'altra cosa :)
no...
ormai dopo anni in cui mi sono abituato a java (e ora ultimamente a C#) mi viene il mal di testa solo a leggere un pò di C++...
E' da anni ormai che non lo tocco..
E cmq ai tempi lo usavo solo all'univ... Cose un pò + complesse le avevo fatte in C :p

banryu79
28-02-2008, 09:40
si lo sapevo che le struct fanno parte del C, quello che ignoravo totalmente era la possibilità degli alias....
Ma in nome di una struct, se non si usano alias, deve per forza iniziare con la parola "struct" quindi? :mbe:

Mi pare che se durante la definizione di una struct non specifichi un alias poi quando istanzi variabili devi dichiarale di tipo "struct NOMESTRUCT".

tomminno
28-02-2008, 09:52
si lo sapevo che le struct fanno parte del C, quello che ignoravo totalmente era la possibilità degli alias....
Ma in nome di una struct, se non si usano alias, deve per forza iniziare con la parola "struct" quindi? :mbe:

Esatto.

tomminno
28-02-2008, 10:16
no...
ormai dopo anni in cui mi sono abituato a java (e ora ultimamente a C#) mi viene il mal di testa solo a leggere un pò di C++...
E' da anni ormai che non lo tocco..
E cmq ai tempi lo usavo solo all'univ... Cose un pò + complesse le avevo fatte in C :p

Secondo me ti viene il mal di testa a leggere il C++ (ma anche il C) in ambienti Microsoft.
Tende ad essere decisamente illeggibile.
[EDIT] Non capisco proprio perchè uno debba arrivare a scrivere un codice criptico fino a tal punto quando se ne può fare benissimo a meno, ma forse sono io che sbaglio.

Stavo guardando i sorgenti di .NET e quelli di Mono, nonostante Mono sia in C è perfettamente comprensibile e lineare, .NET oltre che essere pieno di goto ha anche una tale quantità di typedef e macro da risultare difficilmente comprensibile.

cionci
28-02-2008, 10:44
Ma in nome di una struct, se non si usano alias, deve per forza iniziare con la parola "struct" quindi? :mbe:
Non iniziare, diciamo che è una keyword che deve essere presente ogni volta che usi il nome di una struct. Se poi faccio un typedef struct pinco pallino;, posso usare pallino senza l keyword.
In C++ questa cosa non serve, cioè la parola struct si può omettere, tranne che in fase di dichiarazione ovviamente.

^TiGeRShArK^
28-02-2008, 10:49
Secondo me ti viene il mal di testa a leggere il C++ (ma anche il C) in ambienti Microsoft.
Tende ad essere decisamente illeggibile.
[EDIT] Non capisco proprio perchè uno debba arrivare a scrivere un codice criptico fino a tal punto quando se ne può fare benissimo a meno, ma forse sono io che sbaglio.

Stavo guardando i sorgenti di .NET e quelli di Mono, nonostante Mono sia in C è perfettamente comprensibile e lineare, .NET oltre che essere pieno di goto ha anche una tale quantità di typedef e macro da risultare difficilmente comprensibile.
boh..
sotto linux ho visto solo un pò di codice C..
Progetti in C++ non ne ho mai aperti...
Ma a quanto si dice in giro, ad esempio, il codice di firefox non è che sia proprio quel gioiello di pulizia... eh? :stordita:
quando troverò un pò di tempo (quindi probabilmente verso il 2050.. :fagiano: ) magari gli do un occhiata :p

cdimauro
29-02-2008, 09:32
Questo http://www.firebirdsql.org/index.php?op=files&id=engine_203#sources è in C++.

InterBase, da cui è nato, era un progetto in C, ma quando sono stati rilasciati i sorgenti della versioen 6.0 è nata la comunità di FireBird che, dopo la versione 1.0 che era di bug fix & aggiunta di qualche nuova funzionalità, ha rilasciato la versione 1.5 che è stata una completa riscrittura in C++ del codice C. ;)