summaryrefslogtreecommitdiff
path: root/apps/codecs/librm/rm.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/librm/rm.h')
-rw-r--r--apps/codecs/librm/rm.h32
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
27enum codecs{cook};
27typedef struct rm_packet 28typedef 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
38typedef struct rm_context 42typedef 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
76int open_wav(char* filename);
77void close_wav(int fd, RMContext *rmctx);
78int real_parse_header(int fd, RMContext *rmctx); 82int real_parse_header(int fd, RMContext *rmctx);
79void rm_get_packet(int fd,RMContext *rmctx, RMPacket *pkt); 83
80void 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 */
81off_t filesize(int fd); 85int rm_get_packet(uint8_t **src,RMContext *rmctx, RMPacket *pkt);
86
87#ifdef TEST
88
89int filesize(int fd);
82void advance_buffer(uint8_t **buf, int val); 90void 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 */
93void rm_get_packet_fd(int fd,RMContext *rmctx, RMPacket *pkt);
94
95#endif /* TEST */
96
97#endif /* _RM_H */