diff options
author | Thomas Martitz <kugel@rockbox.org> | 2011-08-14 15:13:00 +0000 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2011-08-14 15:13:00 +0000 |
commit | d1322b71595336740eb5e18e5deed056ddb71c7a (patch) | |
tree | 812db6a9c2e9d78405ec0ed38465fd88dc5be748 /apps/mp3data.h | |
parent | 9b9bd73dfb212d4192fccc5fc5e269fc6499139c (diff) | |
download | rockbox-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.h | 30 |
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 | |||
29 | struct mp3info { | 31 | struct 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); |
64 | unsigned long mem_find_next_frame(int startpos, | 66 | unsigned 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); | ||
68 | int get_mp3file_info(int fd, | 71 | int get_mp3file_info(int fd, |
69 | struct mp3info *info); | 72 | struct mp3info *info); |
70 | int count_mp3_frames(int fd, | 73 | |
71 | int startpos, | 74 | int 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); |
74 | int create_xing_header(int fd, | 77 | |
75 | long startpos, | 78 | int 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 | ||
84 | extern unsigned long bytes2int(unsigned long b0, | 84 | extern unsigned long bytes2int(unsigned long b0, |
85 | unsigned long b1, | 85 | unsigned long b1, |