core/audio: Move audio_position() out of the audio namespace

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2015-12-15 16:42:49 -05:00
parent 566ef3bb50
commit 20bb01ef4e
4 changed files with 23 additions and 44 deletions

View File

@ -178,10 +178,13 @@ void audio :: stop()
audio_seek(0);
}
int64_t audio :: position()
gint64 audio_position()
{
if (audio_track)
return cur_driver->position();
gint64 position;
if (gst_element_query_position(audio_player,
GST_FORMAT_TIME,
&position))
return position;
return 0;
}

View File

@ -83,16 +83,6 @@ public:
return state == GST_STATE_PLAYING;
}
int64_t position()
{
int64_t position;
if (gst_element_query_position(audio_get_player(),
GST_FORMAT_TIME,
&position))
return position;
return 0;
}
int64_t duration()
{
int64_t duration;
@ -172,10 +162,10 @@ static void on_pause_enabled()
static bool on_timeout()
{
gchar *pos = string_sec2str(audio :: position() / GST_SECOND);
gchar *pos = string_sec2str(audio_position() / GST_SECOND);
o_progress->set_upper(audio :: duration());
o_progress->set_value(audio :: position());
o_progress->set_value(audio_position());
o_position->set_text(pos);
g_free(pos);
return true;

View File

@ -39,13 +39,6 @@ public:
virtual bool is_playing() = 0;
/**
* Return the current position of the playback.
*
* @return The current playback position, in nanoseconds.
*/
virtual int64_t position() = 0;
/**
* Return the duration of the currently loaded track.
*
@ -71,11 +64,6 @@ namespace audio
*/
void stop();
/**
* @return The current position of the audio playback (in nanoseconds).
*/
int64_t position();
/**
* @return The duration of the currently loaded track (in nanoseconds).
*/
@ -139,5 +127,8 @@ bool audio_pause();
/* Called to seek playback to a specific offset, in nanoseconds. */
bool audio_seek(gint64);
/* Called to find the current playback position, in nanoseconds. */
gint64 audio_position();
GstElement *audio_get_player();
#endif /* OCARINA_CORE_AUDIO_H */

View File

@ -31,16 +31,14 @@ class TestDriver : public AudioDriver
{
public:
bool playing;
int64_t cur_pos;
int64_t cur_duration;
std::string cur_file;
TestDriver() : playing(false), cur_pos(0), cur_duration(0) {}
TestDriver() : playing(false), cur_duration(0) {}
~TestDriver() {};
bool is_playing() { return playing; }
int64_t position() { return cur_pos; }
int64_t duration() { return cur_duration; }
} driver;
@ -74,6 +72,7 @@ static void test_init()
test_equal(audio_play(), false);
test_equal(audio_pause(), false);
test_equal(audio_seek(7), false);
test_equal(audio_position(), 0);
test_equal(audio :: current_track(), NULL);
test_equal(load_count, 0);
@ -107,7 +106,10 @@ static void test_playback()
test_equal(audio_pause(), false);
test_equal(test_audio_seek(5 * GST_SECOND), true);
test_equal(test_audio_seek(0), true);
test_equal(audio_position(), 5 * GST_SECOND);
test_equal(test_audio_seek(0), true);
test_equal(audio_position(), 0);
}
static void test_deinit()
@ -136,11 +138,7 @@ void test_pre_init()
driver->playing = false;
audio_seek(4242);
test_equal(driver->position(), (long)0);
driver->cur_pos = 4242;
test_equal(audio :: position(), (long)0);
driver->cur_pos = 0;
test_equal(audio_position(), (long)0);
driver->cur_duration = 4242;
test_equal(audio :: duration(), (long)0);
@ -178,19 +176,16 @@ void test_playback_controls()
driver->playing = audio_pause();
test_equal(driver->playing, false);
if (audio_seek(4242))
driver->cur_pos = 4242;
test_equal(driver->cur_pos, (long)4242);
test_equal(audio :: position(), (long)4242);
audio_seek(4242);
test_equal(audio_position(), (long)4242);
audio_play();
audio :: stop();
test_equal(driver->playing, false);
test_equal(driver->cur_pos, (long)0);
audio_seek(4242);
driver->cur_duration = 424242;
test_equal(audio :: position(), (long)4242);
test_equal(audio_position(), (long)4242);
test_equal(audio :: duration(), (long)424242);
}
@ -217,12 +212,12 @@ void test_track_controls()
audio_seek(4242);
audio_load(track);
test_equal(driver->is_playing(), true);
test_equal(audio :: position(), (long)0);
test_equal(audio_position(), (long)0);
audio_seek(4242);
audio_load(track);
test_equal(driver->is_playing(), true);
test_equal(audio :: position(), (long)4242);
test_equal(audio_position(), (long)4242);
track = audio :: current_track();
driver->eos();