DecoderAPI: add decoder_seek_where_frame()
This commit is contained in:
parent
23199719d9
commit
8561c9c5a6
@ -237,6 +237,24 @@ decoder_seek_where_ms(Decoder &decoder)
|
||||
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)
|
||||
{
|
||||
DecoderControl &dc = decoder.dc;
|
||||
|
@ -40,6 +40,8 @@
|
||||
|
||||
// IWYU pragma: end_exports
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
class Error;
|
||||
|
||||
/**
|
||||
@ -98,6 +100,16 @@ gcc_pure
|
||||
unsigned
|
||||
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
|
||||
* failed.
|
||||
|
@ -67,6 +67,12 @@ decoder_seek_where_ms(gcc_unused Decoder &decoder)
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
decoder_seek_where_frame(gcc_unused Decoder &decoder)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
void
|
||||
decoder_seek_error(gcc_unused Decoder &decoder)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user