diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-07-25 22:04:20 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-07-25 22:04:20 +0100 |
| commit | 78e5a331074a456097a162d47501daf1df1ab1a3 (patch) | |
| tree | 17dbc6cd0e3e6a4878277959d7cd86129fb516b4 /src/lib/resampler.cc | |
| parent | 991244a0d4be149e8733a8dd70bfd745cab72583 (diff) | |
Hopefully much cleaner handling of PTS changes under resample.
Diffstat (limited to 'src/lib/resampler.cc')
| -rw-r--r-- | src/lib/resampler.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib/resampler.cc b/src/lib/resampler.cc index cc5072442..7bc933fd0 100644 --- a/src/lib/resampler.cc +++ b/src/lib/resampler.cc @@ -27,6 +27,8 @@ extern "C" { #include "i18n.h" using std::cout; +using std::pair; +using std::make_pair; using boost::shared_ptr; Resampler::Resampler (int in, int out, int channels) @@ -61,9 +63,11 @@ Resampler::~Resampler () swr_free (&_swr_context); } -shared_ptr<const AudioBuffers> -Resampler::run (shared_ptr<const AudioBuffers> in) +pair<shared_ptr<const AudioBuffers>, AudioContent::Frame> +Resampler::run (shared_ptr<const AudioBuffers> in, AudioContent::Frame frame) { + AudioContent::Frame const resamp_time = swr_next_pts (_swr_context, frame * _out_rate) / _in_rate; + /* Compute the resampled frames count and add 32 for luck */ int const max_resampled_frames = ceil ((double) in->frames() * _out_rate / _in_rate) + 32; shared_ptr<AudioBuffers> resampled (new AudioBuffers (_channels, max_resampled_frames)); @@ -77,7 +81,7 @@ Resampler::run (shared_ptr<const AudioBuffers> in) } resampled->set_frames (resampled_frames); - return resampled; + return make_pair (resampled, resamp_time); } shared_ptr<const AudioBuffers> |
