Bonjour à tous...
Je suis en train d'écrire un décodeur de table sdt (api dvb), mais j'ai un souci lors de l'affectation de ma structure...
En gros, ma structure ressemble à ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| typedef struct {
u_char table_id : 8;
u_char section_syntax_indicator : 1;
u_char : 3;
u_char section_length_hi : 4;
u_char section_length_lo : 8;
u_char transport_stream_id_hi : 8;
u_char transport_stream_id_lo : 8;
u_char : 2;
u_char version_number : 5;
u_char current_next_indicator : 1;
u_char section_number : 8;
u_char last_section_number : 8;
u_char original_network_id_hi : 8;
u_char original_network_id_lo : 8;
u_char : 8;
} sdt_t; |
Et, lorsque je la créé, je l'affecte au passage avec ce que j'ai dans un buffer (char * buf)... (lecture directe dans le demuxer, ce que j'ai dans mon buffer correspond à ce que j'attend).
création/affectation :
sdt_t enteteSDT = {buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9], buf[10]};
Seulement voila... Tout se passe bien (compil, linkage et tout), mais mon buf[1] ne passe pas...
En gros, buf[0] est bien mis dans table_id, buf[1] disparait, et mon 1er octet de buf[2] se retrouve dans section_syntax_indicator...
Je suis obligé d'affecter ma structure en envoyant 2 fois buf[1], mais je ne vois pas pourquoi...
Pour info, buf[1] contient "f2" (en hexa), et il ne me semble pas que ça soit une valeur spéciale (genre \r, \n ou autre).
Je ne vois vraiment pas pourquoi mon buf[1] n'est pas pris en compte lors de mon affectation...
Si vous avez des idées !!!!
Merci
Partager