in soldoni, ho l'encoder su una macchina remota (codifica dati aac) e li incapsula in pacchetti TCP formattati ZMQ (
http://zeromq.org/)
su un'altra macchina, questi vengono ricevuti (sono 10 - 15 flussi, sulle porte 9000 - 9015) ed accorpati (multiplexer).
Ora vorrei poter analizzare i pacchetti (se non ne arrivano genero un allarme) ed i dati nei pacchetti (per poter vedere un eventuale segnale in arrivo, ma senza modulazione, nel caso altro allarme).
.... quindi vorrei avere un loop che prende il pacchetto per la data porta, ne estrae il contenuto ed analizza il volume, lo butta e cosi' via ....
inoltre da quello che mi dice lo sviluppatore del multiplexer, i dati nei pacchetti sono organizzati cosi':
struct zmq_frame_header_t
{
uint16_t version; // we support version=1 now
uint16_t encoder; // see ZMQ_ENCODER_XYZ
/* length of the 'data' field */
uint32_t datasize;
/* Audio level, peak, linear PCM */
int16_t audiolevel_left;
int16_t audiolevel_right;
/* Data follows this header */
} __attribute__ ((packed));
quindi l'header di ogni pacchetto zmq e' composto da_
intero unsigned a 16 bit = versione
intero unsigned a 16 bit = nome encoder
intero unsigned a 32 bit = dati veri e propri (audio codificato suppongo)
intero a 16 bit = volume sinistro
intero a 16 bit = volume destro