62 static bool g_is_our_path(
const char * p_path,
const char * p_extension);
118 static bool g_is_our_path(
const char * p_path,
const char * p_extension);
127 template<
typename I,
typename t_base>
132 m_instance.open(p_filehint,p_path,p_reason,p_abort);
138 return m_instance.get_subsong_count();
142 return m_instance.get_subsong(p_index);
147 m_instance.get_info(p_subsong,p_info,p_abort);
151 return m_instance.get_file_stats(p_abort);
157 m_instance.decode_initialize(p_subsong,p_flags,p_abort);
161 return m_instance.decode_run(p_chunk,p_abort);
165 return m_instance.decode_run_raw(p_chunk, p_raw, p_abort);
169 m_instance.decode_seek(p_seconds,p_abort);
173 return m_instance.decode_can_seek();
177 return m_instance.decode_get_dynamic_info(p_out,p_timestamp_delta);
181 return m_instance.decode_get_dynamic_info_track(p_out,p_timestamp_delta);
185 m_instance.decode_on_idle(p_abort);
189 m_instance.set_logger(ptr);
193 m_instance.set_pause(paused);
196 return m_instance.flush_on_pause();
203 m_instance.retag_set_info(p_subsong,p_info,p_abort);
207 m_instance.retag_commit(p_abort);
210 m_instance.remove_tags(p_abort);
225 m_instance.open(p_filehint,p_path,p_reason,p_abort);
229 if (p_subsong != 0)
throw exception_io_data();
230 m_instance.get_info(p_info,p_abort);
238 assert(p_index == 0);
243 return m_instance.get_file_stats(p_abort);
247 if (p_subsong != 0)
throw exception_io_data();
248 m_instance.decode_initialize(p_flags,p_abort);
259 if (p_subsong != 0)
throw exception_io_data();
260 m_instance.retag(p_info,p_abort);
264 return m_instance.decode_run_raw(p_chunk, p_raw, p_abort);
267 void set_logger(event_logger::ptr ptr) {m_instance.set_logger(ptr);}
270 m_instance.set_pause(paused);
273 return m_instance.flush_on_pause();
279 m_instance.remove_tags(p_abort);
283 static bool g_is_our_path(
const char * p_path,
const char * p_extension) {
return I::g_is_our_path(p_path,p_extension);}
291 template<
typename I,
unsigned t_flags,
typename t_decoder = input_decoder,
typename t_inforeader = input_info_reader,
typename t_infowriter = input_info_writer>
296 template<
typename T,
typename out>
301 temp->open(p_filehint,p_path,p_reason,p_abort);
306 bool is_our_path(
const char * p_full_path,
const char * p_extension) {
return I::g_is_our_path(p_full_path,p_extension);}
309 instantiate_t<t_decoder>(p_instance,p_filehint,p_path,
input_open_decode,p_abort);
337 template<
typename T,
unsigned t_flags = 0,
typename t_decoder = input_decoder,
typename t_inforeader = input_info_reader,
typename t_infowriter = input_info_writer>
341 template<
typename T,
unsigned t_flags = 0,
typename t_decoder = input_decoder,
typename t_inforeader = input_info_reader,
typename t_infowriter = input_info_writer>
void instantiate_t(service_ptr_t< out > &p_instance, service_ptr_t< file > p_filehint, const char *p_path, t_input_open_reason p_reason, abort_callback &p_abort)
Template implementing reference-counting features of service_base. Intended for dynamic instantiation...
bool is_our_content_type(const char *p_type)
Determines whether specified content type can be handled by this input.
void open_for_info_read(service_ptr_t< input_info_reader > &p_instance, service_ptr_t< file > p_filehint, const char *p_path, abort_callback &p_abort)
Opens specified file for reading info.
Interface to container of a chunk of audio data. See audio_chunk_impl for an implementation.
void open_for_info_write(service_ptr_t< input_info_writer > &p_instance, service_ptr_t< file > p_filehint, const char *p_path, abort_callback &p_abort)
Opens specified file for writing info.
Main interface class for information about some playable object.
bool is_our_path(const char *p_full_path, const char *p_extension)
Determines whether specified file type can be handled by this input. This must not use any kind of fi...
void open_for_decoding(service_ptr_t< input_decoder > &p_instance, service_ptr_t< file > p_filehint, const char *p_path, abort_callback &p_abort)
Opens specified resource for decoding.
Generic interface for a memory block; used by various other interfaces to return memory blocks while ...
void get_extended_data(service_ptr_t< file > p_filehint, const playable_location &p_location, const GUID &p_guid, mem_block_container &p_out, abort_callback &p_abort)
Reserved for future use. Do nothing and return until specifications are finalized.
Helper; standard input_entry implementation. Do not instantiate this directly, use input_factory_t or...
unsigned get_flags()
See flag_* enums.