/*
- Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
using std::min;
using boost::shared_ptr;
-class TestAudioDecoder : public AudioDecoder
-{
-public:
- TestAudioDecoder (shared_ptr<AudioContent> content)
- : AudioDecoder (content)
- , _position (0)
- {}
-
- bool pass (PassReason)
- {
- AudioFrame const N = min (
- AudioFrame (2000),
- _audio_content->audio_length().frames (_audio_content->resampled_audio_frame_rate ()) - _position
- );
-
- shared_ptr<AudioBuffers> buffers (new AudioBuffers (_audio_content->audio_channels(), N));
- for (int i = 0; i < _audio_content->audio_channels(); ++i) {
- for (int j = 0; j < N; ++j) {
- buffers->data(i)[j] = j + _position;
- }
- }
-
- audio (buffers, ContentTime::from_frames (_position, _audio_content->resampled_audio_frame_rate ()));
- _position += N;
-
- return N < 2000;
- }
-
- void seek (ContentTime t, bool accurate)
- {
- AudioDecoder::seek (t, accurate);
- _position = t.frames (_audio_content->resampled_audio_frame_rate ());
- }
-
-private:
- AudioFrame _position;
-};
-
class TestAudioContent : public AudioContent
{
public:
}
DCPTime full_length () const {
- return DCPTime (audio_length().get ());
+ return DCPTime::from_seconds (float (audio_length()) / audio_frame_rate ());
}
int audio_channels () const {
return 2;
}
- ContentTime audio_length () const {
- return ContentTime::from_seconds (61.2942);
+ Frame audio_length () const {
+ return rint (61.2942 * audio_frame_rate ());
}
int audio_frame_rate () const {
void set_audio_mapping (AudioMapping) {}
};
+class TestAudioDecoder : public AudioDecoder
+{
+public:
+ TestAudioDecoder (shared_ptr<TestAudioContent> content)
+ : AudioDecoder (content)
+ , _test_audio_content (content)
+ , _position (0)
+ {}
+
+ bool pass (PassReason)
+ {
+ Frame const N = min (
+ Frame (2000),
+ _test_audio_content->audio_length() - _position
+ );
+
+ shared_ptr<AudioBuffers> buffers (new AudioBuffers (_audio_content->audio_channels(), N));
+ for (int i = 0; i < _audio_content->audio_channels(); ++i) {
+ for (int j = 0; j < N; ++j) {
+ buffers->data(i)[j] = j + _position;
+ }
+ }
+
+ audio (buffers, ContentTime::from_frames (_position, _audio_content->resampled_audio_frame_rate ()));
+ _position += N;
+
+ return N < 2000;
+ }
+
+ void seek (ContentTime t, bool accurate)
+ {
+ AudioDecoder::seek (t, accurate);
+ _position = t.frames (_audio_content->resampled_audio_frame_rate ());
+ }
+
+private:
+ boost::shared_ptr<TestAudioContent> _test_audio_content;
+ Frame _position;
+};
+
shared_ptr<TestAudioContent> content;
shared_ptr<TestAudioDecoder> decoder;
static shared_ptr<ContentAudio>
-get (AudioFrame from, AudioFrame length)
+get (Frame from, Frame length)
{
decoder->seek (ContentTime::from_frames (from, content->resampled_audio_frame_rate ()), true);
shared_ptr<ContentAudio> ca = decoder->get_audio (from, length, true);
}
static void
-check (AudioFrame from, AudioFrame length)
+check (Frame from, Frame length)
{
shared_ptr<ContentAudio> ca = get (from, length);
for (int i = 0; i < content->audio_channels(); ++i) {
/* Read off the end */
- AudioFrame const from = content->resampled_audio_frame_rate() * 61;
- AudioFrame const length = content->resampled_audio_frame_rate() * 4;
+ Frame const from = content->resampled_audio_frame_rate() * 61;
+ Frame const length = content->resampled_audio_frame_rate() * 4;
shared_ptr<ContentAudio> ca = get (from, length);
for (int i = 0; i < content->audio_channels(); ++i) {
for (int j = 0; j < ca->audio->frames(); ++j) {
- BOOST_CHECK_EQUAL (ca->audio->data(i)[j], j + from);
- assert (ca->audio->data(i)[j] == j + from);
+ BOOST_REQUIRE_EQUAL (ca->audio->data(i)[j], j + from);
}
}
}