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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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