summaryrefslogtreecommitdiff
path: root/apps/mp3data.h
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2011-08-14 15:13:00 +0000
committerThomas Martitz <kugel@rockbox.org>2011-08-14 15:13:00 +0000
commitd1322b71595336740eb5e18e5deed056ddb71c7a (patch)
tree812db6a9c2e9d78405ec0ed38465fd88dc5be748 /apps/mp3data.h
parent9b9bd73dfb212d4192fccc5fc5e269fc6499139c (diff)
downloadrockbox-d1322b71595336740eb5e18e5deed056ddb71c7a.tar.gz
rockbox-d1322b71595336740eb5e18e5deed056ddb71c7a.zip
GSoC/Buflib: Replace all direct accesses to audiobuf with buffer API functions.
Namely, introduce buffer_get_buffer() and buffer_release_buffer(). buffer_get_buffer() aquires all available and grabs a lock, attempting to call buffer_alloc() or buffer_get_buffer() while this lock is locked will cause a panicf() (doesn't actually happen, but is for debugging purpose). buffer_release_buffer() unlocks that lock and can additionally increment the audiobuf buffer to make an allocation. Pass 0 to only unlock if buffer was used temporarily only. buffer_available() is a replacement function to query audiobuflen, i.e. what's left in the buffer. Buffer init is moved up in the init chain and handles ipodvideo64mb internally. Further changes happened to mp3data.c and talk.c as to not call the above API functions, but get the buffer from callers. The caller is the audio system which has the buffer lock while mp3data.c and talk mess with the buffer. mpeg.c now implements some buffer related functions of playback.h, especially audio_get_buffer(), allowing to reduce #ifdef hell a tiny bit. audiobuf and audiobufend are local to buffer.c now. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30308 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/mp3data.h')
-rw-r--r--apps/mp3data.h30
1 files changed, 15 insertions, 15 deletions
diff --git a/apps/mp3data.h b/apps/mp3data.h
index edda352aab..762c2f4583 100644
--- a/apps/mp3data.h
+++ b/apps/mp3data.h
@@ -26,6 +26,8 @@
26#define MPEG_VERSION2 1 26#define MPEG_VERSION2 1
27#define MPEG_VERSION2_5 2 27#define MPEG_VERSION2_5 2
28 28
29#include <string.h> /* size_t */
30
29struct mp3info { 31struct mp3info {
30 /* Standard MP3 frame header fields */ 32 /* Standard MP3 frame header fields */
31 int version; 33 int version;
@@ -63,23 +65,21 @@ unsigned long find_next_frame(int fd,
63 unsigned long reference_header); 65 unsigned long reference_header);
64unsigned long mem_find_next_frame(int startpos, 66unsigned long mem_find_next_frame(int startpos,
65 long *offset, 67 long *offset,
66 long max_offset, 68 long max_offset,
67 unsigned long reference_header); 69 unsigned long reference_header,
70 unsigned char* buf, size_t buflen);
68int get_mp3file_info(int fd, 71int get_mp3file_info(int fd,
69 struct mp3info *info); 72 struct mp3info *info);
70int count_mp3_frames(int fd, 73
71 int startpos, 74int count_mp3_frames(int fd, int startpos, int filesize,
72 int filesize, 75 void (*progressfunc)(int),
73 void (*progressfunc)(int)); 76 unsigned char* buf, size_t buflen);
74int create_xing_header(int fd, 77
75 long startpos, 78int create_xing_header(int fd, long startpos, long filesize,
76 long filesize, 79 unsigned char *buf, unsigned long num_frames,
77 unsigned char *buf, 80 unsigned long rec_time, unsigned long header_template,
78 unsigned long num_frames, 81 void (*progressfunc)(int), bool generate_toc,
79 unsigned long rec_time, 82 unsigned char *tempbuf, size_t tempbuflen );
80 unsigned long header_template,
81 void (*progressfunc)(int),
82 bool generate_toc);
83 83
84extern unsigned long bytes2int(unsigned long b0, 84extern unsigned long bytes2int(unsigned long b0,
85 unsigned long b1, 85 unsigned long b1,