Commit 8561c9c5 authored by Max Kellermann's avatar Max Kellermann

DecoderAPI: add decoder_seek_where_frame()

parent 23199719
...@@ -237,6 +237,24 @@ decoder_seek_where_ms(Decoder &decoder) ...@@ -237,6 +237,24 @@ decoder_seek_where_ms(Decoder &decoder)
return unsigned(dc.seek_where * 1000); return unsigned(dc.seek_where * 1000);
} }
uint64_t
decoder_seek_where_frame(Decoder &decoder)
{
const DecoderControl &dc = decoder.dc;
assert(dc.pipe != nullptr);
if (decoder.initial_seek_running)
return uint64_t(dc.start_ms) * dc.in_audio_format.sample_rate
/ 1000;
assert(dc.command == DecoderCommand::SEEK);
decoder.seeking = true;
return uint64_t(dc.seek_where * dc.in_audio_format.sample_rate);
}
void decoder_seek_error(Decoder & decoder) void decoder_seek_error(Decoder & decoder)
{ {
DecoderControl &dc = decoder.dc; DecoderControl &dc = decoder.dc;
......
...@@ -40,6 +40,8 @@ ...@@ -40,6 +40,8 @@
// IWYU pragma: end_exports // IWYU pragma: end_exports
#include <stdint.h>
class Error; class Error;
/** /**
...@@ -99,6 +101,16 @@ unsigned ...@@ -99,6 +101,16 @@ unsigned
decoder_seek_where_ms(Decoder &decoder); decoder_seek_where_ms(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 frames
*/
gcc_pure
uint64_t
decoder_seek_where_frame(Decoder &decoder);
/**
* Call this instead of decoder_command_finished() when seeking has * Call this instead of decoder_command_finished() when seeking has
* failed. * failed.
* *
......
...@@ -67,6 +67,12 @@ decoder_seek_where_ms(gcc_unused Decoder &decoder) ...@@ -67,6 +67,12 @@ decoder_seek_where_ms(gcc_unused Decoder &decoder)
return 1; return 1;
} }
uint64_t
decoder_seek_where_frame(gcc_unused Decoder &decoder)
{
return 1;
}
void void
decoder_seek_error(gcc_unused Decoder &decoder) decoder_seek_error(gcc_unused Decoder &decoder)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment