input_helpers.h

Go to the documentation of this file.
00001 #ifndef _INPUT_HELPERS_H_
00002 #define _INPUT_HELPERS_H_
00003 
00004 class input_helper {
00005 public:
00006         input_helper();
00007         void open(service_ptr_t<file> p_filehint,metadb_handle_ptr p_location,unsigned p_flags,abort_callback & p_abort,bool p_from_redirect = false,bool p_skip_hints = false);
00008         void open(service_ptr_t<file> p_filehint,const playable_location & p_location,unsigned p_flags,abort_callback & p_abort,bool p_from_redirect = false,bool p_skip_hints = false);
00009 
00010         bool need_file_reopen(const char * newPath) const;
00011 
00012         void close();
00013         bool is_open();
00014         bool run(audio_chunk & p_chunk,abort_callback & p_abort);
00015         void seek(double seconds,abort_callback & p_abort);
00016         bool can_seek();
00017         void set_full_buffer(t_filesize val);
00018         void on_idle(abort_callback & p_abort);
00019         bool get_dynamic_info(file_info & p_out,double & p_timestamp_delta);
00020         bool get_dynamic_info_track(file_info & p_out,double & p_timestamp_delta);
00021 
00023         const char * get_path() const;
00024 
00026         void get_info(t_uint32 p_subsong,file_info & p_info,abort_callback & p_abort);
00027 
00028         static void g_get_info(const playable_location & p_location,file_info & p_info,abort_callback & p_abort,bool p_from_redirect = false);
00029         static void g_set_info(const playable_location & p_location,file_info & p_info,abort_callback & p_abort,bool p_from_redirect = false);
00030 
00031 
00032         static bool g_mark_dead(const pfc::list_base_const_t<metadb_handle_ptr> & p_list,bit_array_var & p_mask,abort_callback & p_abort);
00033 
00034 private:
00035         service_ptr_t<input_decoder> m_input;
00036         pfc::string8 m_path;
00037         t_filesize m_fullbuffer;
00038 };
00039 
00040 class NOVTABLE dead_item_filter : public abort_callback {
00041 public:
00042         virtual void on_progress(t_size p_position,t_size p_total) = 0;
00043 
00044         bool run(const pfc::list_base_const_t<metadb_handle_ptr> & p_list,bit_array_var & p_mask);
00045 };
00046 
00047 class input_info_read_helper {
00048 public:
00049         input_info_read_helper() {}
00050         void get_info(const playable_location & p_location,file_info & p_info,t_filestats & p_stats,abort_callback & p_abort);
00051         void get_info_check(const playable_location & p_location,file_info & p_info,t_filestats & p_stats,bool & p_reloaded,abort_callback & p_abort);
00052 private:
00053         void open(const char * p_path,abort_callback & p_abort);
00054 
00055         pfc::string8 m_path;
00056         service_ptr_t<input_info_reader> m_input;
00057 };
00058 
00059 
00060 
00061 class input_helper_cue {
00062 public:
00063         void open(service_ptr_t<file> p_filehint,const playable_location & p_location,unsigned p_flags,abort_callback & p_abort,double p_start,double p_length);
00064 
00065         void close();
00066         bool is_open();
00067         bool run(audio_chunk & p_chunk,abort_callback & p_abort);
00068         void seek(double seconds,abort_callback & p_abort);
00069         bool can_seek();
00070         void set_full_buffer(t_filesize val);
00071         void on_idle(abort_callback & p_abort);
00072         bool get_dynamic_info(file_info & p_out,double & p_timestamp_delta);
00073         bool get_dynamic_info_track(file_info & p_out,double & p_timestamp_delta);
00074 
00075         const char * get_path() const;
00076         
00077         void get_info(t_uint32 p_subsong,file_info & p_info,abort_callback & p_abort);
00078 
00079 private:
00080         input_helper m_input;
00081         double m_start,m_length,m_position;
00082         bool m_dynamic_info_trigger,m_dynamic_info_track_trigger;
00083 };
00084 
00085 #endif

Generated on Fri Apr 25 18:49:33 2008 for foobar2000 SDK by  doxygen 1.5.5