annotate foosdk/sdk/foobar2000/helpers/seekabilizer.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 class seekabilizer_backbuffer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 void initialize(t_size p_size);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 void write(const void * p_buffer,t_size p_bytes);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 void read(t_size p_backlogdepth,void * p_buffer,t_size p_bytes) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 t_size get_depth() const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 void reset();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 t_size get_max_depth() const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 pfc::array_t<t_uint8> m_buffer;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 t_size m_depth,m_cursor;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 class seekabilizer : public file_readonly_t<file_v2> {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 void initialize(service_ptr_t<file> p_base,t_size p_buffer_size,abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 static void g_seekabilize(service_ptr_t<file> & p_reader,t_size p_buffer_size,abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 t_size read(void * p_buffer,t_size p_bytes,abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 t_filesize get_size(abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 t_filesize get_position(abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 void seek(t_filesize p_position,abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 bool can_seek();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 bool get_content_type(pfc::string_base & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 bool is_in_memory();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 void on_idle(abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 t_filetimestamp get_timestamp(abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 void reopen(abort_callback & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 bool is_remote();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 service_ptr get_metadata(abort_callback&);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 t_filestats2 get_stats2(uint32_t s2flags, abort_callback&);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 size_t lowLevelIO(const GUID& guid, size_t arg1, void* arg2, size_t arg2size, abort_callback& abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 service_ptr_t<file> m_file;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 seekabilizer_backbuffer m_buffer;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 t_filesize m_size,m_position,m_position_base;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 };