audio: Ensure position and duration results are 64 bits
A long int is shorter on ARM than x86, which could cause position and duration values to get truncated. Additionally, quering gstreamer with a long int causes a compile error on ARM. Let's just do the right thing and make this value an int64_t. Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
This commit is contained in:
parent
ce4923f8b9
commit
657ce8f0f4
|
@ -112,14 +112,14 @@ void audio :: stop()
|
|||
seek_to(0);
|
||||
}
|
||||
|
||||
long audio :: position()
|
||||
int64_t audio :: position()
|
||||
{
|
||||
if (cur_track)
|
||||
return cur_driver->position();
|
||||
return 0;
|
||||
}
|
||||
|
||||
long audio :: duration()
|
||||
int64_t audio :: duration()
|
||||
{
|
||||
if (cur_track)
|
||||
return cur_driver->duration();
|
||||
|
|
|
@ -105,9 +105,9 @@ public:
|
|||
offset);
|
||||
}
|
||||
|
||||
long position()
|
||||
int64_t position()
|
||||
{
|
||||
long position;
|
||||
int64_t position;
|
||||
if (gst_element_query_position(gst_player,
|
||||
GST_FORMAT_TIME,
|
||||
&position))
|
||||
|
@ -115,9 +115,9 @@ public:
|
|||
return 0;
|
||||
}
|
||||
|
||||
long duration()
|
||||
int64_t duration()
|
||||
{
|
||||
long duration;
|
||||
int64_t duration;
|
||||
if (gst_element_query_duration(gst_player,
|
||||
GST_FORMAT_TIME,
|
||||
&duration))
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include <core/tags/track.h>
|
||||
#include <string>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
/**
|
||||
|
@ -59,14 +60,14 @@ public:
|
|||
*
|
||||
* @return The current playback position, in nanoseconds.
|
||||
*/
|
||||
virtual long position() = 0;
|
||||
virtual int64_t position() = 0;
|
||||
|
||||
/**
|
||||
* Return the duration of the currently loaded track.
|
||||
*
|
||||
* @return The duration of the current track, in nanoseconds.
|
||||
*/
|
||||
virtual long duration() = 0;
|
||||
virtual int64_t duration() = 0;
|
||||
|
||||
/**
|
||||
* Called to handle reaching the end-of-stream.
|
||||
|
@ -100,12 +101,12 @@ namespace audio
|
|||
/**
|
||||
* @return The current position of the audio playback (in nanoseconds).
|
||||
*/
|
||||
long position();
|
||||
int64_t position();
|
||||
|
||||
/**
|
||||
* @return The duration of the currently loaded track (in nanoseconds).
|
||||
*/
|
||||
long duration();
|
||||
int64_t duration();
|
||||
|
||||
void next(); /**< Find and load the next track that should be played. */
|
||||
void prev(); /**< Call the deck :: previous() function and load the result. */
|
||||
|
|
|
@ -13,8 +13,8 @@ class TestDriver : public AudioDriver
|
|||
{
|
||||
public:
|
||||
bool playing;
|
||||
long cur_pos;
|
||||
long cur_duration;
|
||||
int64_t cur_pos;
|
||||
int64_t cur_duration;
|
||||
std::string cur_file;
|
||||
|
||||
TestDriver() : playing(false), cur_pos(0), cur_duration(0) {}
|
||||
|
@ -33,8 +33,8 @@ public:
|
|||
bool is_playing() { return playing; }
|
||||
|
||||
void seek_to(long offset) { cur_pos = offset; }
|
||||
long position() { return cur_pos; }
|
||||
long duration() { return cur_duration; }
|
||||
int64_t position() { return cur_pos; }
|
||||
int64_t duration() { return cur_duration; }
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue