From 316c72a4aea4319443e7ea43e06b027f2b7b1ced Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 26 Aug 2014 11:02:02 +0200 Subject: DecoderAPI: add decoder_seek_where_ms() Move to fixed-point integers instead of floating point. --- src/decoder/DecoderAPI.cxx | 17 +++++++++++++++++ src/decoder/DecoderAPI.hxx | 10 ++++++++++ test/FakeDecoderAPI.cxx | 6 ++++++ 3 files changed, 33 insertions(+) diff --git a/src/decoder/DecoderAPI.cxx b/src/decoder/DecoderAPI.cxx index ae600260f..926a3955e 100644 --- a/src/decoder/DecoderAPI.cxx +++ b/src/decoder/DecoderAPI.cxx @@ -220,6 +220,23 @@ double decoder_seek_where(gcc_unused Decoder & decoder) return dc.seek_where; } +unsigned +decoder_seek_where_ms(Decoder &decoder) +{ + const DecoderControl &dc = decoder.dc; + + assert(dc.pipe != nullptr); + + if (decoder.initial_seek_running) + return dc.start_ms; + + assert(dc.command == DecoderCommand::SEEK); + + decoder.seeking = true; + + return unsigned(dc.seek_where * 1000); +} + void decoder_seek_error(Decoder & decoder) { DecoderControl &dc = decoder.dc; diff --git a/src/decoder/DecoderAPI.hxx b/src/decoder/DecoderAPI.hxx index c57a02e01..ddcead4b1 100644 --- a/src/decoder/DecoderAPI.hxx +++ b/src/decoder/DecoderAPI.hxx @@ -88,6 +88,16 @@ gcc_pure double decoder_seek_where(Decoder &decoder); +/** + * Call this when you have received the DecoderCommand::SEEK command. + * + * @param decoder the decoder object + * @return the destination position for the seek in milliseconds + */ +gcc_pure +unsigned +decoder_seek_where_ms(Decoder &decoder); + /** * Call this instead of decoder_command_finished() when seeking has * failed. diff --git a/test/FakeDecoderAPI.cxx b/test/FakeDecoderAPI.cxx index 552854ed6..afa90b4ca 100644 --- a/test/FakeDecoderAPI.cxx +++ b/test/FakeDecoderAPI.cxx @@ -61,6 +61,12 @@ decoder_seek_where(gcc_unused Decoder &decoder) return 1.0; } +unsigned +decoder_seek_where_ms(gcc_unused Decoder &decoder) +{ + return 1; +} + void decoder_seek_error(gcc_unused Decoder &decoder) { -- cgit v1.2.3