libnrsc5 a5c0972
NRSC-5 digital radio via the RTL-SDR
Loading...
Searching...
No Matches
nrsc5.h
Go to the documentation of this file.
1#ifndef NRSC5_H_
2#define NRSC5_H_
3
19#include <stdint.h>
20#include <stdlib.h>
21#include <stdio.h>
22#include <time.h>
23
24/*
25 * Definitions.
26 */
27#define NRSC5_SCAN_BEGIN 87.9e6
28#define NRSC5_SCAN_END 107.9e6
29#define NRSC5_SCAN_SKIP 0.2e6
30
31#define NRSC5_MIME_PRIMARY_IMAGE 0xBE4B7536
32#define NRSC5_MIME_STATION_LOGO 0xD9C72536
33#define NRSC5_MIME_NAVTEQ 0x2D42AC3E
34#define NRSC5_MIME_HERE_TPEG 0x82F03DFC
35#define NRSC5_MIME_HERE_IMAGE 0xB7F03DFC
36#define NRSC5_MIME_HD_TMC 0xEECB55B6
37#define NRSC5_MIME_HDC 0x4DC66C5A
38#define NRSC5_MIME_TEXT 0xBB492AAC
39#define NRSC5_MIME_JPEG 0x1E653E9C
40#define NRSC5_MIME_PNG 0x4F328CA0
41#define NRSC5_MIME_TTN_TPEG_1 0xB39EBEB2
42#define NRSC5_MIME_TTN_TPEG_2 0x4EB03469
43#define NRSC5_MIME_TTN_TPEG_3 0x52103469
44#define NRSC5_MIME_TTN_STM_TRAFFIC 0xFF8422D7
45#define NRSC5_MIME_TTN_STM_WEATHER 0xEF042E96
46#define NRSC5_MIME_UNKNOWN_00000000 0x00000000
47#define NRSC5_MIME_UNKNOWN_1C7D0E29 0x1C7D0E29
48#define NRSC5_MIME_UNKNOWN_B81FFAA8 0xB81FFAA8
49#define NRSC5_MIME_UNKNOWN_FFFFFFFF 0xFFFFFFFF
50
51#define NRSC5_AUDIO_FRAME_SAMPLES 2048
53#define NRSC5_SAMPLE_RATE_CU8 1488375
54#define NRSC5_SAMPLE_RATE_CS16_FM 744187.5
55#define NRSC5_SAMPLE_RATE_CS16_AM 46511.71875
56#define NRSC5_SAMPLE_RATE_AUDIO 44100
58#define NRSC5_DEVICE_VERSION_LENGTH 4
60#ifdef NRSC5_EXPORTS
61#ifdef __MINGW32__
62#define NRSC5_API __declspec(dllexport)
63#else
64#define NRSC5_API
65#endif
66#else
67#define NRSC5_API
68#endif
69
70enum
71{
72 NRSC5_MODE_FM,
73 NRSC5_MODE_AM
74};
75
76/*
77 * Data types.
78 */
79enum
80{
81 NRSC5_SIG_COMPONENT_AUDIO,
82 NRSC5_SIG_COMPONENT_DATA
83};
84
85enum
86{
87 NRSC5_AAS_TYPE_STREAM = 0,
88 NRSC5_AAS_TYPE_PACKET = 1,
89 NRSC5_AAS_TYPE_LOT = 3
90};
91
99{
101 uint8_t type;
102 uint8_t id;
103 union
104 {
107 struct {
108 uint16_t port;
111 uint8_t type;
112 uint32_t mime;
116 struct {
117 uint8_t port;
118 uint8_t type;
119 uint32_t mime;
121 };
122};
127
128enum
129{
130 NRSC5_SIG_SERVICE_AUDIO,
131 NRSC5_SIG_SERVICE_DATA
132};
133
161
162enum
163{
164 NRSC5_EVENT_LOST_DEVICE,
165 NRSC5_EVENT_IQ,
166 NRSC5_EVENT_SYNC,
167 NRSC5_EVENT_LOST_SYNC,
168 NRSC5_EVENT_MER,
169 NRSC5_EVENT_BER,
170 NRSC5_EVENT_HDC,
171 NRSC5_EVENT_AUDIO,
172 NRSC5_EVENT_ID3,
173 NRSC5_EVENT_SIG,
174 NRSC5_EVENT_LOT,
175 NRSC5_EVENT_SIS,
176 NRSC5_EVENT_STREAM,
177 NRSC5_EVENT_PACKET,
178 NRSC5_EVENT_AUDIO_SERVICE,
179 NRSC5_EVENT_STATION_ID,
180 NRSC5_EVENT_STATION_NAME,
181 NRSC5_EVENT_STATION_SLOGAN,
182 NRSC5_EVENT_STATION_MESSAGE,
183 NRSC5_EVENT_STATION_LOCATION,
184 NRSC5_EVENT_AUDIO_SERVICE_DESCRIPTOR,
185 NRSC5_EVENT_DATA_SERVICE_DESCRIPTOR,
186 NRSC5_EVENT_EMERGENCY_ALERT,
187 NRSC5_EVENT_HERE_IMAGE,
188 NRSC5_EVENT_LOT_HEADER,
189 NRSC5_EVENT_LOT_FRAGMENT,
190 NRSC5_EVENT_AGC,
191 NRSC5_EVENT_EXCITER_INFO,
192 NRSC5_EVENT_IMPORTER_INFO,
193 NRSC5_EVENT_LEAP_SECOND_OFFSET,
194 NRSC5_EVENT_LOCAL_TIME,
195};
196
197enum
198{
199 NRSC5_ACCESS_PUBLIC,
200 NRSC5_ACCESS_RESTRICTED
201};
202
203enum
204{
205 NRSC5_PROGRAM_TYPE_UNDEFINED = 0,
206 NRSC5_PROGRAM_TYPE_NEWS = 1,
207 NRSC5_PROGRAM_TYPE_INFORMATION = 2,
208 NRSC5_PROGRAM_TYPE_SPORTS = 3,
209 NRSC5_PROGRAM_TYPE_TALK = 4,
210 NRSC5_PROGRAM_TYPE_ROCK = 5,
211 NRSC5_PROGRAM_TYPE_CLASSIC_ROCK = 6,
212 NRSC5_PROGRAM_TYPE_ADULT_HITS = 7,
213 NRSC5_PROGRAM_TYPE_SOFT_ROCK = 8,
214 NRSC5_PROGRAM_TYPE_TOP_40 = 9,
215 NRSC5_PROGRAM_TYPE_COUNTRY = 10,
216 NRSC5_PROGRAM_TYPE_OLDIES = 11,
217 NRSC5_PROGRAM_TYPE_SOFT = 12,
218 NRSC5_PROGRAM_TYPE_NOSTALGIA = 13,
219 NRSC5_PROGRAM_TYPE_JAZZ = 14,
220 NRSC5_PROGRAM_TYPE_CLASSICAL = 15,
221 NRSC5_PROGRAM_TYPE_RHYTHM_AND_BLUES = 16,
222 NRSC5_PROGRAM_TYPE_SOFT_RHYTHM_AND_BLUES = 17,
223 NRSC5_PROGRAM_TYPE_FOREIGN_LANGUAGE = 18,
224 NRSC5_PROGRAM_TYPE_RELIGIOUS_MUSIC = 19,
225 NRSC5_PROGRAM_TYPE_RELIGIOUS_TALK = 20,
226 NRSC5_PROGRAM_TYPE_PERSONALITY = 21,
227 NRSC5_PROGRAM_TYPE_PUBLIC = 22,
228 NRSC5_PROGRAM_TYPE_COLLEGE = 23,
229 NRSC5_PROGRAM_TYPE_SPANISH_TALK = 24,
230 NRSC5_PROGRAM_TYPE_SPANISH_MUSIC = 25,
231 NRSC5_PROGRAM_TYPE_HIP_HOP = 26,
232 NRSC5_PROGRAM_TYPE_WEATHER = 29,
233 NRSC5_PROGRAM_TYPE_EMERGENCY_TEST = 30,
234 NRSC5_PROGRAM_TYPE_EMERGENCY = 31,
235 NRSC5_PROGRAM_TYPE_TRAFFIC = 65,
236 NRSC5_PROGRAM_TYPE_SPECIAL_READING_SERVICES = 76
237};
238
239enum
240{
241 NRSC5_BLEND_DISABLE,
242 NRSC5_BLEND_SELECT,
243 NRSC5_BLEND_ENABLE
244};
245
246enum
247{
248 NRSC5_LOCATION_FORMAT_SAME,
249 NRSC5_LOCATION_FORMAT_FIPS,
250 NRSC5_LOCATION_FORMAT_ZIP
251};
252
253enum
254{
255 NRSC5_ALERT_CATEGORY_NON_SPECIFIC = 1,
256 NRSC5_ALERT_CATEGORY_GEOPHYSICAL = 2,
257 NRSC5_ALERT_CATEGORY_WEATHER = 3,
258 NRSC5_ALERT_CATEGORY_SAFETY = 4,
259 NRSC5_ALERT_CATEGORY_SECURITY = 5,
260 NRSC5_ALERT_CATEGORY_RESCUE = 6,
261 NRSC5_ALERT_CATEGORY_FIRE = 7,
262 NRSC5_ALERT_CATEGORY_HEALTH = 8,
263 NRSC5_ALERT_CATEGORY_ENVIRONMENTAL = 9,
264 NRSC5_ALERT_CATEGORY_TRANSPORTATION = 10,
265 NRSC5_ALERT_CATEGORY_UTILITIES = 11,
266 NRSC5_ALERT_CATEGORY_HAZMAT = 12,
267 NRSC5_ALERT_CATEGORY_TEST = 30
268};
269
270enum
271{
272 NRSC5_HERE_IMAGE_TRAFFIC = 8,
273 NRSC5_HERE_IMAGE_WEATHER = 13
274};
275
287{
289 unsigned int program;
290 unsigned int access;
291 unsigned int type;
292 unsigned int sound_exp;
293};
298
299enum
300{
301 NRSC5_SERVICE_DATA_TYPE_NON_SPECIFIC = 0,
302 NRSC5_SERVICE_DATA_TYPE_NEWS = 1,
303 NRSC5_SERVICE_DATA_TYPE_SPORTS = 3,
304 NRSC5_SERVICE_DATA_TYPE_WEATHER = 29,
305 NRSC5_SERVICE_DATA_TYPE_EMERGENCY = 31,
306 NRSC5_SERVICE_DATA_TYPE_TRAFFIC = 65,
307 NRSC5_SERVICE_DATA_TYPE_IMAGE_MAPS = 66,
308 NRSC5_SERVICE_DATA_TYPE_TEXT = 80,
309 NRSC5_SERVICE_DATA_TYPE_ADVERTISING = 256,
310 NRSC5_SERVICE_DATA_TYPE_FINANCIAL = 257,
311 NRSC5_SERVICE_DATA_TYPE_STOCK_TICKER = 258,
312 NRSC5_SERVICE_DATA_TYPE_NAVIGATION = 259,
313 NRSC5_SERVICE_DATA_TYPE_ELECTRONIC_PROGRAM_GUIDE = 260,
314 NRSC5_SERVICE_DATA_TYPE_AUDIO = 261,
315 NRSC5_SERVICE_DATA_TYPE_PRIVATE_DATA_NETWORK = 262,
316 NRSC5_SERVICE_DATA_TYPE_SERVICE_MAINTENANCE = 263,
317 NRSC5_SERVICE_DATA_TYPE_HD_RADIO_SYSTEM_SERVICES = 264,
318 NRSC5_SERVICE_DATA_TYPE_AUDIO_RELATED_DATA = 265,
319 NRSC5_SERVICE_DATA_TYPE_RESERVED_FOR_SPECIAL_TESTS = 511
320};
321
330{
332 unsigned int access;
333 unsigned int type;
334 uint32_t mime_type;
335};
340
356
357enum
358{
359 NRSC5_PKT_FLAGS_NONE = 0,
360 NRSC5_PKT_FLAGS_CRC_ERROR = 1 << 0,
361};
362
370{
405 unsigned int event;
406 union
407 {
408 struct {
409 const void *data;
410 size_t count;
411 } iq;
412 struct {
414 int psmi;
415 int pli;
416 int hppi;
417 int aabi;
418 int rdbi;
419 } sync;
420 struct {
421 float cber;
422 } ber;
423 struct {
424 float lower;
425 float upper;
426 } mer;
427 struct {
428 unsigned int program;
429 const uint8_t *data;
430 size_t count;
431 unsigned int flags;
432 } hdc;
433 struct {
434 unsigned int program;
435 const int16_t *data;
436 size_t count;
437 } audio;
438 struct {
439 unsigned int program;
440 const char *title;
441 const char *artist;
442 const char *album;
443 const char *genre;
444 struct {
445 const char *owner;
446 const char *id;
447 } ufid;
448 struct {
449 uint32_t mime;
450 int param;
451 int lot;
452 } xhdr;
453 nrsc5_id3_comment_t *comments;
454 } id3;
455 struct {
456 uint16_t port;
457 uint16_t seq;
458 unsigned int size;
459 uint32_t mime;
460 const uint8_t *data;
463 } stream;
464 struct {
465 uint16_t port;
466 uint16_t seq;
467 unsigned int size;
468 uint32_t mime;
469 const uint8_t *data;
472 } packet;
473 struct {
474 uint16_t port;
475 unsigned int lot;
476 unsigned int size;
477 uint32_t mime;
478 const char *name;
479 const uint8_t *data;
480 struct tm *expiry_utc;
483 } lot;
484 struct {
485 unsigned int lot;
486 unsigned int seq;
487 unsigned int repeat;
488 unsigned int size;
489 unsigned int bytes_so_far;
491 const uint8_t *data;
492 nrsc5_sig_service_t *service;
493 nrsc5_sig_component_t *component;
494 } lot_fragment;
495 struct {
496 unsigned int program;
497 unsigned int access;
498 unsigned int type;
499 unsigned int codec_mode;
500 unsigned int blend_control;
502 unsigned int common_delay;
503 unsigned int latency;
504 } audio_service;
505 struct {
506 nrsc5_sig_service_t *services;
507 } sig;
508 struct {
509 const char *country_code;
510 int fcc_facility_id;
511 const char *name;
512 const char *slogan;
513 const char *message;
514 const char *alert;
515 float latitude;
516 float longitude;
517 int altitude;
518 nrsc5_sis_asd_t *audio_services;
519 nrsc5_sis_dsd_t *data_services;
520 const uint8_t *alert_cnt;
521 int alert_cnt_length;
522 int alert_category1;
523 int alert_category2;
524 int alert_location_format;
525 int alert_num_locations;
526 const int *alert_locations;
527 } sis;
528 struct {
529 const char *country_code;
530 int fcc_facility_id;
531 } station_id;
532 struct {
533 const char *name;
534 } station_name;
535 struct {
536 const char *slogan;
537 } station_slogan;
538 struct {
539 const char *message;
540 } station_message;
541 struct {
542 float latitude;
543 float longitude;
544 int altitude;
545 } station_location;
546 struct {
547 unsigned int program;
548 unsigned int access;
549 unsigned int type;
550 unsigned int sound_exp;
551 } asd;
552 struct {
553 unsigned int access;
554 unsigned int type;
555 uint32_t mime_type;
556 } dsd;
557 struct {
558 const char *message;
559 const uint8_t *control_data;
560 int control_data_length;
561 int category1;
562 int category2;
563 int location_format;
564 int num_locations;
565 const int *locations;
566 } emergency_alert;
567 struct {
569 int seq;
570 int n1;
571 int n2;
572 struct tm *time_utc;
573 float latitude1;
575 float latitude2;
577 const char *name;
578 unsigned int size;
579 const uint8_t *data;
580 } here_image;
581 struct {
582 float gain_db;
583 float peak_dbfs;
585 } agc;
586 struct {
587 const char* manufacturer_id;
593 } exciter_info;
594 struct {
595 const char* manufacturer_id;
597 int core_status;
600 } importer_info;
601 struct {
604 unsigned int pending_alfn;
605 } leap_second_offset;
606 struct {
611 } local_time;
612 };
613};
618
625typedef void (*nrsc5_callback_t)(const nrsc5_event_t *evt, void *opaque);
626
632typedef struct nrsc5_t nrsc5_t;
633
634
635/* ============================================================================
636 * Public functions. All functions return void or an error code (0 == success).
637 */
638
643NRSC5_API void nrsc5_get_version(const char **version);
644
653NRSC5_API void nrsc5_service_data_type_name(unsigned int type, const char **name);
654
663NRSC5_API void nrsc5_program_type_name(unsigned int type, const char **name);
664
673 NRSC5_API void nrsc5_alert_category_name(unsigned int category, const char **name);
674
695NRSC5_API int nrsc5_open(nrsc5_t **st, int device_index);
696
704NRSC5_API int nrsc5_open_file(nrsc5_t **st, FILE *fp);
705
712NRSC5_API int nrsc5_open_pipe(nrsc5_t **st);
713
721NRSC5_API int nrsc5_open_rtltcp(nrsc5_t **st, int socket);
722
730NRSC5_API void nrsc5_close(nrsc5_t *st);
731
737NRSC5_API void nrsc5_start(nrsc5_t *st);
738
745NRSC5_API void nrsc5_stop(nrsc5_t *st);
746
754NRSC5_API int nrsc5_set_mode(nrsc5_t *st, int mode);
755
767NRSC5_API int nrsc5_set_bias_tee(nrsc5_t *st, int on);
768
777NRSC5_API int nrsc5_set_direct_sampling(nrsc5_t *st, int on);
778
787NRSC5_API int nrsc5_set_freq_correction(nrsc5_t *st, int ppm_error);
788
796NRSC5_API void nrsc5_get_frequency(nrsc5_t *st, float *freq);
797
809NRSC5_API int nrsc5_set_frequency(nrsc5_t *st, float freq);
810
818NRSC5_API void nrsc5_get_gain(nrsc5_t *st, float *gain);
819
828NRSC5_API int nrsc5_set_gain(nrsc5_t *st, float gain);
829
837NRSC5_API void nrsc5_set_auto_gain(nrsc5_t *st, int enabled);
838
847NRSC5_API void nrsc5_set_callback(nrsc5_t *st, nrsc5_callback_t callback, void *opaque);
848
859NRSC5_API int nrsc5_pipe_samples_cu8(nrsc5_t *st, const uint8_t *samples, unsigned int length);
860
871NRSC5_API int nrsc5_pipe_samples_cs16(nrsc5_t *st, const int16_t *samples, unsigned int length);
872
873#endif /* NRSC5_H_ */
NRSC5_API int nrsc5_open_rtltcp(nrsc5_t **st, int socket)
NRSC5_API int nrsc5_set_frequency(nrsc5_t *st, float freq)
NRSC5_API int nrsc5_set_mode(nrsc5_t *st, int mode)
struct nrsc5_t nrsc5_t
Definition nrsc5.h:632
NRSC5_API int nrsc5_set_freq_correction(nrsc5_t *st, int ppm_error)
NRSC5_API int nrsc5_pipe_samples_cu8(nrsc5_t *st, const uint8_t *samples, unsigned int length)
NRSC5_API int nrsc5_open_pipe(nrsc5_t **st)
NRSC5_API int nrsc5_pipe_samples_cs16(nrsc5_t *st, const int16_t *samples, unsigned int length)
NRSC5_API void nrsc5_alert_category_name(unsigned int category, const char **name)
NRSC5_API void nrsc5_get_version(const char **version)
NRSC5_API void nrsc5_program_type_name(unsigned int type, const char **name)
NRSC5_API void nrsc5_service_data_type_name(unsigned int type, const char **name)
NRSC5_API void nrsc5_close(nrsc5_t *st)
NRSC5_API int nrsc5_set_gain(nrsc5_t *st, float gain)
NRSC5_API void nrsc5_set_auto_gain(nrsc5_t *st, int enabled)
NRSC5_API int nrsc5_set_bias_tee(nrsc5_t *st, int on)
NRSC5_API void nrsc5_stop(nrsc5_t *st)
NRSC5_API int nrsc5_open(nrsc5_t **st, int device_index)
NRSC5_API void nrsc5_get_frequency(nrsc5_t *st, float *freq)
#define NRSC5_DEVICE_VERSION_LENGTH
Definition nrsc5.h:58
NRSC5_API int nrsc5_open_file(nrsc5_t **st, FILE *fp)
NRSC5_API void nrsc5_start(nrsc5_t *st)
void(* nrsc5_callback_t)(const nrsc5_event_t *evt, void *opaque)
Definition nrsc5.h:625
NRSC5_API void nrsc5_get_gain(nrsc5_t *st, float *gain)
NRSC5_API int nrsc5_set_direct_sampling(nrsc5_t *st, int on)
NRSC5_API void nrsc5_set_callback(nrsc5_t *st, nrsc5_callback_t callback, void *opaque)
Definition nrsc5.h:370
int pli
Definition nrsc5.h:415
unsigned int blend_control
Definition nrsc5.h:500
int is_final
Definition nrsc5.h:584
unsigned int bytes_so_far
Definition nrsc5.h:489
int current_offset
Definition nrsc5.h:603
float latitude2
Definition nrsc5.h:575
int dst_regional
Definition nrsc5.h:608
float latitude1
Definition nrsc5.h:573
int utc_offset
Definition nrsc5.h:607
int core_status
Definition nrsc5.h:589
unsigned int type
Definition nrsc5.h:498
int digital_audio_gain
Definition nrsc5.h:501
const char * manufacturer_id
Definition nrsc5.h:587
const char * name
Definition nrsc5.h:478
unsigned int codec_mode
Definition nrsc5.h:499
unsigned int lot
Definition nrsc5.h:475
struct tm * expiry_utc
Definition nrsc5.h:480
float gain_db
Definition nrsc5.h:582
unsigned int sound_exp
Definition nrsc5.h:550
unsigned int latency
Definition nrsc5.h:503
int n1
Definition nrsc5.h:570
float longitude2
Definition nrsc5.h:576
int manufacturer_status
Definition nrsc5.h:591
unsigned int size
Definition nrsc5.h:458
float freq_offset
Definition nrsc5.h:413
unsigned int event
Definition nrsc5.h:405
unsigned int seq
Definition nrsc5.h:486
int image_type
Definition nrsc5.h:568
uint16_t port
Definition nrsc5.h:456
unsigned int repeat
Definition nrsc5.h:487
int dst_local
Definition nrsc5.h:609
uint32_t mime_type
Definition nrsc5.h:555
nrsc5_sig_service_t * service
Definition nrsc5.h:461
struct tm * time_utc
Definition nrsc5.h:572
int psmi
Definition nrsc5.h:414
int aabi
Definition nrsc5.h:417
int pending_offset
Definition nrsc5.h:602
int importer_connected
Definition nrsc5.h:592
int seq
Definition nrsc5.h:569
int manufacturer_version[NRSC5_DEVICE_VERSION_LENGTH]
Definition nrsc5.h:590
float peak_dbfs
Definition nrsc5.h:583
unsigned int access
Definition nrsc5.h:497
int rdbi
Definition nrsc5.h:418
int hppi
Definition nrsc5.h:416
int is_duplicate
Definition nrsc5.h:490
int n2
Definition nrsc5.h:571
const uint8_t * data
Definition nrsc5.h:429
uint32_t mime
Definition nrsc5.h:449
unsigned int common_delay
Definition nrsc5.h:502
unsigned int pending_alfn
Definition nrsc5.h:604
float longitude1
Definition nrsc5.h:574
int core_version[NRSC5_DEVICE_VERSION_LENGTH]
Definition nrsc5.h:588
unsigned int program
Definition nrsc5.h:428
int dst_schedule
Definition nrsc5.h:610
nrsc5_sig_component_t * component
Definition nrsc5.h:462
Definition nrsc5.h:346
struct nrsc5_id3_comment_t * next
Definition nrsc5.h:347
char * full_text
Definition nrsc5.h:350
char * lang
Definition nrsc5.h:348
char * short_content_desc
Definition nrsc5.h:349
Definition nrsc5.h:99
uint32_t mime
Definition nrsc5.h:112
struct nrsc5_sig_component_t::@13::@15 data
uint16_t service_data_type
Definition nrsc5.h:110
uint8_t type
Definition nrsc5.h:101
struct nrsc5_sig_component_t::@13::@16 audio
uint8_t id
Definition nrsc5.h:102
struct nrsc5_sig_component_t * next
Definition nrsc5.h:100
uint16_t port
Definition nrsc5.h:108
uint8_t port
Definition nrsc5.h:117
Definition nrsc5.h:149
nrsc5_sig_component_t * audio_component
Definition nrsc5.h:155
nrsc5_sig_component_t * components
Definition nrsc5.h:154
struct nrsc5_sig_service_t * next
Definition nrsc5.h:150
uint8_t type
Definition nrsc5.h:151
uint16_t number
Definition nrsc5.h:152
const char * name
Definition nrsc5.h:153
Definition nrsc5.h:287
unsigned int program
Definition nrsc5.h:289
unsigned int sound_exp
Definition nrsc5.h:292
struct nrsc5_sis_asd_t * next
Definition nrsc5.h:288
unsigned int access
Definition nrsc5.h:290
unsigned int type
Definition nrsc5.h:291
Definition nrsc5.h:330
struct nrsc5_sis_dsd_t * next
Definition nrsc5.h:331
unsigned int type
Definition nrsc5.h:333
uint32_t mime_type
Definition nrsc5.h:334
unsigned int access
Definition nrsc5.h:332