summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2005-08-19 22:39:01 +0000
committerJens Arnold <amiconn@rockbox.org>2005-08-19 22:39:01 +0000
commit329caa8ade0b78a3235e9d28983cb1c506e573a0 (patch)
tree3860dc5db31f0092e7f18b328999ab2ce41c21b5
parent6e4f07b508447281dd5122e4e8685b26b20be77d (diff)
downloadrockbox-329caa8ade0b78a3235e9d28983cb1c506e573a0.zip
rockbox-329caa8ade0b78a3235e9d28983cb1c506e573a0.tar.gz
rockbox-329caa8ade0b78a3235e9d28983cb1c506e573a0.tar.bz2
rockbox-329caa8ade0b78a3235e9d28983cb1c506e573a0.tar.xz
More mpeg.c cleanup: collected variables and declarations at the top, more #if/#ifdef fixup. Cut a bit of binary size by making debug_tags() an empty define for ordinary builds.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7359 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/mpeg.c282
1 files changed, 136 insertions, 146 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index b1d1fac..0406376 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -47,21 +47,23 @@
#include "hwcompat.h"
#endif /* !SIMULATOR */
+#ifndef SIMULATOR
+extern unsigned long mas_version_code;
+#endif
+
#if CONFIG_HWCODEC == MAS3587F
-static void init_recording(void);
-static void start_prerecording(void);
-static void start_recording(void);
-static void stop_recording(void);
-static int get_unsaved_space(void);
-static void pause_recording(void);
-static void resume_recording(void);
+extern enum /* from mp3_playback.c */
+{
+ MPEG_DECODER,
+ MPEG_ENCODER
+} mpeg_mode;
#endif /* CONFIG_HWCODEC == MAS3587F */
-#ifndef SIMULATOR
-static int get_unplayed_space(void);
-static int get_playable_space(void);
-static int get_unswapped_space(void);
-#endif /* !SIMULATOR */
+extern char* playlist_peek(int steps);
+extern bool playlist_check(int steps);
+extern int playlist_next(int steps);
+extern int playlist_amount(void);
+extern int playlist_update_resume_info(const struct mp3entry* id3);
#define MPEG_PLAY 1
#define MPEG_STOP 2
@@ -82,20 +84,6 @@ static int get_unswapped_space(void);
#define MPEG_SAVE_DATA 102
#define MPEG_STOP_DONE 103
-#if CONFIG_HWCODEC == MAS3587F
-extern enum /* from mp3_playback.c */
-{
- MPEG_DECODER,
- MPEG_ENCODER
-} mpeg_mode;
-#endif /* CONFIG_HWCODEC == MAS3587F */
-
-extern char* playlist_peek(int steps);
-extern bool playlist_check(int steps);
-extern int playlist_next(int steps);
-extern int playlist_amount(void);
-extern int playlist_update_resume_info(const struct mp3entry* id3);
-
/* list of tracks in memory */
#define MAX_TRACK_ENTRIES (1<<4) /* Must be power of 2 */
#define MAX_TRACK_ENTRIES_MASK (MAX_TRACK_ENTRIES - 1)
@@ -109,26 +97,131 @@ struct trackdata
static struct trackdata trackdata[MAX_TRACK_ENTRIES];
-static bool v1first = false;
-
static unsigned int current_track_counter = 0;
static unsigned int last_track_counter = 0;
#ifndef SIMULATOR
-
static int track_read_idx = 0;
static int track_write_idx = 0;
+#endif /* !SIMULATOR */
+
+static const char mpeg_thread_name[] = "mpeg";
+static unsigned int mpeg_errno;
+
+static bool v1first = false;
+
+static bool playing = false; /* We are playing an MP3 stream */
+static bool is_playing = false; /* We are (attempting to) playing MP3 files */
+static bool paused; /* playback is paused */
+#ifdef SIMULATOR
+static char mpeg_stack[DEFAULT_STACK_SIZE];
+static struct mp3entry taginfo;
+
+#else /* !SIMULATOR */
+static struct event_queue mpeg_queue;
+static long mpeg_stack[(DEFAULT_STACK_SIZE + 0x1000)/sizeof(long)];
+
+static int audiobuflen;
+static int audiobuf_write;
+static int audiobuf_swapwrite;
+static int audiobuf_read;
+
+static int mpeg_file;
+
+static bool play_pending; /* We are about to start playing */
+static bool filling; /* We are filling the buffer with data from disk */
+static bool dma_underrun; /* True when the DMA has stopped because of
+ slow disk reading (read error, shaking) */
+static bool mpeg_stop_done;
+
+static int last_dma_tick = 0;
+static int last_dma_chunk_size;
+
+static long low_watermark; /* Dynamic low watermark level */
+static long low_watermark_margin; /* Extra time in seconds for watermark */
+static long lowest_watermark_level; /* Debug value to observe the buffer
+ usage */
+#if CONFIG_HWCODEC == MAS3587F
+static char recording_filename[MAX_PATH]; /* argument to thread */
+static char delayed_filename[MAX_PATH]; /* internal copy of above */
+
+static bool init_recording_done;
+static bool init_playback_done;
+static bool prerecording; /* True if prerecording is enabled */
+static bool is_prerecording; /* True if we are prerecording */
+static bool is_recording; /* We are recording */
+static bool disable_xing_header; /* When splitting files */
+
+static enum {
+ NOT_SAVING = 0, /* reasons to save data, sorted by importance */
+ BUFFER_FULL,
+ NEW_FILE,
+ STOP_RECORDING
+} saving_status;
+
+static int rec_frequency_index; /* For create_xing_header() calls */
+static int rec_version_index; /* For create_xing_header() calls */
+
+static int prerecord_buffer[MPEG_MAX_PRERECORD_SECONDS];
+ /* Array of buffer indexes for each prerecorded second */
+static int prerecord_index; /* Current index in the prerecord buffer */
+static int prerecording_max_seconds; /* Max number of seconds to store */
+static int prerecord_count; /* Number of seconds in the prerecord buffer */
+static int prerecord_timeout; /* The tick count of the next prerecord data
+ store */
+
+unsigned long record_start_time; /* Value of current_tick when recording
+ was started */
+unsigned long pause_start_time; /* Value of current_tick when pause was
+ started */
+static unsigned long num_rec_bytes;
+static unsigned long num_recorded_frames;
+
+/* Shadow MAS registers */
+unsigned long shadow_encoder_control = 0;
+#endif /* CONFIG_HWCODEC == MAS3587F */
+
+#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F)
+unsigned long shadow_io_control_main = 0;
+unsigned long shadow_soft_mute = 0;
+unsigned shadow_codec_reg0;
+#endif /* (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) */
+
+#ifdef HAVE_RECORDING
+const unsigned char empty_id3_header[] =
+{
+ 'I', 'D', '3', 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x1f, 0x76 /* Size is 4096 minus 10 bytes for the header */
+};
+#endif /* HAVE_RECORDING */
+
+
+static int get_unplayed_space(void);
+static int get_playable_space(void);
+static int get_unswapped_space(void);
+#endif /* !SIMULATOR */
+
+#if CONFIG_HWCODEC == MAS3587F
+static void init_recording(void);
+static void start_prerecording(void);
+static void start_recording(void);
+static void stop_recording(void);
+static int get_unsaved_space(void);
+static void pause_recording(void);
+static void resume_recording(void);
+#endif /* CONFIG_HWCODEC == MAS3587F */
+
+
+#ifndef SIMULATOR
static int num_tracks_in_memory(void)
{
return (track_write_idx - track_read_idx) & MAX_TRACK_ENTRIES_MASK;
}
-#endif /* !SIMULATOR */
-#ifndef SIMULATOR
+#ifdef DEBUG_TAGS
static void debug_tags(void)
{
-#ifdef DEBUG_TAGS
int i;
for(i = 0;i < MAX_TRACK_ENTRIES;i++)
@@ -137,8 +230,10 @@ static void debug_tags(void)
}
DEBUGF("read: %d, write :%d\n", track_read_idx, track_write_idx);
DEBUGF("num_tracks_in_memory: %d\n", num_tracks_in_memory());
-#endif /* DEBUG_TAGS */
}
+#else /* !DEBUG_TAGS */
+#define debug_tags()
+#endif /* !DEBUG_TAGS */
static void remove_current_tag(void)
{
@@ -305,88 +400,8 @@ unsigned long mpeg_get_last_header(void)
#endif /* !SIMULATOR */
}
-static bool paused; /* playback is paused */
-
-static unsigned int mpeg_errno;
-
-#ifdef SIMULATOR
-static bool is_playing = false;
-static bool playing = false;
-#else /* !SIMULATOR */
-static int last_dma_tick = 0;
-
-extern unsigned long mas_version_code;
-
-static struct event_queue mpeg_queue;
-static long mpeg_stack[(DEFAULT_STACK_SIZE + 0x1000)/sizeof(long)];
-static const char mpeg_thread_name[] = "mpeg";
-
-static int audiobuflen;
-static int audiobuf_write;
-static int audiobuf_swapwrite;
-static int audiobuf_read;
-
-static int last_dma_chunk_size;
-
-static bool playing; /* We are playing an MP3 stream */
-static bool play_pending; /* We are about to start playing */
-static bool is_playing; /* We are (attempting to) playing MP3 files */
-static bool filling; /* We are filling the buffer with data from disk */
-static bool dma_underrun; /* True when the DMA has stopped because of
- slow disk reading (read error, shaking) */
-static long low_watermark; /* Dynamic low watermark level */
-static long low_watermark_margin; /* Extra time in seconds for watermark */
-static long lowest_watermark_level; /* Debug value to observe the buffer
- usage */
-#if CONFIG_HWCODEC == MAS3587F
-static bool is_recording; /* We are recording */
-unsigned long record_start_time; /* Value of current_tick when recording
- was started */
-unsigned long pause_start_time; /* Value of current_tick when pause was
- started */
-static enum {
- NOT_SAVING = 0, /* reasons to save data, sorted by importance */
- BUFFER_FULL,
- NEW_FILE,
- STOP_RECORDING
-} saving_status;
-
-static char recording_filename[MAX_PATH]; /* argument to thread */
-static char delayed_filename[MAX_PATH]; /* internal copy of above */
-static int rec_frequency_index; /* For create_xing_header() calls */
-static int rec_version_index; /* For create_xing_header() calls */
-static bool disable_xing_header; /* When splitting files */
-
-static bool prerecording; /* True if prerecording is enabled */
-static bool is_prerecording; /* True if we are prerecording */
-static int prerecord_buffer[MPEG_MAX_PRERECORD_SECONDS]; /* Array of buffer
- indexes for each
- prerecorded
- second */
-static int prerecord_index; /* Current index in the prerecord buffer */
-static int prerecording_max_seconds; /* Max number of seconds to store */
-static int prerecord_count; /* Number of seconds in the prerecord buffer */
-static int prerecord_timeout; /* The tick count of the next prerecord data store */
-
-/* Shadow MAS registers */
-unsigned long shadow_encoder_control = 0;
-#endif /* CONFIG_HWCODEC == MAS3587F */
-
-#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F)
-unsigned long shadow_io_control_main = 0;
-unsigned long shadow_soft_mute = 0;
-unsigned shadow_codec_reg0;
-#endif /* (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) */
-
-static int mpeg_file;
-
-/* Synchronization variables */
-#if CONFIG_HWCODEC == MAS3587F
-static bool init_recording_done;
-static bool init_playback_done;
-#endif /* CONFIG_HWCODEC == MAS3587F */
-static bool mpeg_stop_done;
+#ifndef SIMULATOR
static void recalculate_watermark(int bitrate)
{
int bytes_per_sec;
@@ -518,15 +533,6 @@ static int get_unsaved_space(void)
space += audiobuflen;
return space;
}
-#endif /* CONFIG_HWCODEC == MAS3587F */
-
-#if CONFIG_HWCODEC == MAS3587F
-#ifdef DEBUG
-static long timing_info_index = 0;
-static long timing_info[1024];
-#endif /* DEBUG */
-static unsigned long num_rec_bytes;
-static unsigned long num_recorded_frames;
static void drain_dma_buffer(void)
{
@@ -542,6 +548,11 @@ static void drain_dma_buffer(void)
}
}
+#ifdef DEBUG
+static long timing_info_index = 0;
+static long timing_info[1024];
+#endif /* DEBUG */
+
void rec_tick (void) __attribute__ ((section (".icode")));
void rec_tick(void)
{
@@ -984,14 +995,6 @@ static bool swap_one_chunk(void)
return true;
}
-#ifdef HAVE_RECORDING
-const unsigned char empty_id3_header[] =
-{
- 'I', 'D', '3', 0x03, 0x00, 0x00,
- 0x00, 0x00, 0x1f, 0x76 /* Size is 4096 minus 10 bytes for the header */
-};
-#endif /* HAVE_RECORDING */
-
static void mpeg_thread(void)
{
static int pause_tick = 0;
@@ -1551,15 +1554,13 @@ static void mpeg_thread(void)
is_playing = false;
paused = false;
stop_playing();
-#ifndef SIMULATOR //CHECKME
-
+
/* Tell the USB thread that we are safe */
DEBUGF("mpeg_thread got SYS_USB_CONNECTED\n");
usb_acknowledge(SYS_USB_CONNECTED_ACK);
/* Wait until the USB cable is extracted again */
usb_wait_for_disconnect(&mpeg_queue);
-#endif /* !SIMULATOR */
break;
#endif /* !USB_NONE */
@@ -1913,10 +1914,6 @@ static void mpeg_thread(void)
}
#endif /* !SIMULATOR */
-#ifdef SIMULATOR
-static struct mp3entry taginfo;
-#endif /* SIMULATOR */
-
void mpeg_id3_options(bool _v1first)
{
v1first = _v1first;
@@ -1969,11 +1966,7 @@ void audio_init_playback(void)
/****************************************************************************
- **
- **
- ** Recording functions
- **
- **
+ * Recording functions
***************************************************************************/
void mpeg_init_recording(void)
{
@@ -2528,7 +2521,6 @@ void audio_stop(void)
is_playing = false;
playing = false;
#endif /* SIMULATOR */
-
}
void audio_pause(void)
@@ -2659,8 +2651,6 @@ void audio_error_clear(void)
}
#ifdef SIMULATOR
-static char mpeg_stack[DEFAULT_STACK_SIZE];
-static const char mpeg_thread_name[] = "mpeg";
static void mpeg_thread(void)
{
struct mp3entry* id3;