diff options
Diffstat (limited to 'apps/codecs/librm/rm.h')
-rw-r--r-- | apps/codecs/librm/rm.h | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/apps/codecs/librm/rm.h b/apps/codecs/librm/rm.h index bdd03f3db2..a0c386e824 100644 --- a/apps/codecs/librm/rm.h +++ b/apps/codecs/librm/rm.h | |||
@@ -22,17 +22,21 @@ | |||
22 | #define _RM_H | 22 | #define _RM_H |
23 | 23 | ||
24 | #include <stdio.h> | 24 | #include <stdio.h> |
25 | #include <stdint.h> | 25 | #include <inttypes.h> |
26 | 26 | ||
27 | enum codecs{cook}; | ||
27 | typedef struct rm_packet | 28 | typedef struct rm_packet |
28 | { | 29 | { |
29 | uint8_t data[30000]; /* Reordered data. No malloc, hence the size */ | ||
30 | uint8_t *frames[100]; /* Pointers to ordered audio frames in buffer */ | 30 | uint8_t *frames[100]; /* Pointers to ordered audio frames in buffer */ |
31 | uint16_t version; | 31 | uint16_t version; |
32 | uint16_t length; | 32 | uint16_t length; |
33 | uint32_t timestamp; | 33 | uint32_t timestamp; |
34 | uint16_t stream_number; | 34 | uint16_t stream_number; |
35 | uint8_t flags; | 35 | uint8_t flags; |
36 | |||
37 | #ifdef TEST | ||
38 | uint8_t data[30000]; /* Reordered data. No malloc, hence the size */ | ||
39 | #endif | ||
36 | }RMPacket; | 40 | }RMPacket; |
37 | 41 | ||
38 | typedef struct rm_context | 42 | typedef struct rm_context |
@@ -46,6 +50,7 @@ typedef struct rm_context | |||
46 | 50 | ||
47 | /* Stream Variables */ | 51 | /* Stream Variables */ |
48 | uint32_t data_offset; | 52 | uint32_t data_offset; |
53 | uint32_t duration; | ||
49 | uint32_t audiotimestamp; /* Audio packet timestamp*/ | 54 | uint32_t audiotimestamp; /* Audio packet timestamp*/ |
50 | uint16_t sub_packet_cnt; /* Subpacket counter, used while reading */ | 55 | uint16_t sub_packet_cnt; /* Subpacket counter, used while reading */ |
51 | uint16_t sub_packet_size, sub_packet_h, coded_framesize; /* Descrambling parameters from container */ | 56 | uint16_t sub_packet_size, sub_packet_h, coded_framesize; /* Descrambling parameters from container */ |
@@ -53,6 +58,7 @@ typedef struct rm_context | |||
53 | uint16_t sub_packet_lengths[16]; /* Length of each subpacket */ | 58 | uint16_t sub_packet_lengths[16]; /* Length of each subpacket */ |
54 | 59 | ||
55 | /* Codec Context */ | 60 | /* Codec Context */ |
61 | enum codecs codec_type; | ||
56 | uint16_t block_align; | 62 | uint16_t block_align; |
57 | uint32_t nb_packets; | 63 | uint32_t nb_packets; |
58 | int frame_number; | 64 | int frame_number; |
@@ -66,18 +72,26 @@ typedef struct rm_context | |||
66 | uint32_t cook_version; | 72 | uint32_t cook_version; |
67 | uint16_t samples_pf_pc; /* samples per frame per channel */ | 73 | uint16_t samples_pf_pc; /* samples per frame per channel */ |
68 | uint16_t nb_subbands; /* number of subbands in the frequency domain */ | 74 | uint16_t nb_subbands; /* number of subbands in the frequency domain */ |
69 | /* extra 8 bytes for stereo data */ | 75 | /* extra 8 bytes for joint-stereo data */ |
70 | uint32_t unused; | 76 | uint32_t unused; |
71 | uint16_t js_subband_start; /* joint stereo subband start */ | 77 | uint16_t js_subband_start; /* joint stereo subband start */ |
72 | uint16_t js_vlc_bits; | 78 | uint16_t js_vlc_bits; |
73 | 79 | ||
74 | } RMContext; | 80 | } RMContext; |
75 | 81 | ||
76 | int open_wav(char* filename); | ||
77 | void close_wav(int fd, RMContext *rmctx); | ||
78 | int real_parse_header(int fd, RMContext *rmctx); | 82 | int real_parse_header(int fd, RMContext *rmctx); |
79 | void rm_get_packet(int fd,RMContext *rmctx, RMPacket *pkt); | 83 | |
80 | void rm_get_packet_membuf(uint8_t **filebuf,RMContext *rmctx, RMPacket *pkt); | 84 | /* Get a (sub_packet_h*frames_per_packet) number of audio frames from a memory buffer */ |
81 | off_t filesize(int fd); | 85 | int rm_get_packet(uint8_t **src,RMContext *rmctx, RMPacket *pkt); |
86 | |||
87 | #ifdef TEST | ||
88 | |||
89 | int filesize(int fd); | ||
82 | void advance_buffer(uint8_t **buf, int val); | 90 | void advance_buffer(uint8_t **buf, int val); |
83 | #endif | 91 | |
92 | /* Get a (sub_packet_h*frames_per_packet) number of audio frames from a file descriptor */ | ||
93 | void rm_get_packet_fd(int fd,RMContext *rmctx, RMPacket *pkt); | ||
94 | |||
95 | #endif /* TEST */ | ||
96 | |||
97 | #endif /* _RM_H */ | ||