foobar2000 SDK  2015-01-14
Functions
tag_processor Namespace Reference

Functions

bool is_id3v1_sufficient (const file_info &p_info)
 
void read_id3v2 (const service_ptr_t< file > &p_file, file_info &p_info, abort_callback &p_abort)
 
void read_id3v2_trailing (const service_ptr_t< file > &p_file, file_info &p_info, abort_callback &p_abort)
 
void read_trailing (const service_ptr_t< file > &p_file, file_info &p_info, abort_callback &p_abort)
 
void read_trailing_ex (const service_ptr_t< file > &p_file, file_info &p_info, t_filesize &p_tagoffset, abort_callback &p_abort)
 
bool remove_id3v2 (const service_ptr_t< file > &p_file, abort_callback &p_abort)
 
void remove_id3v2_trailing (const service_ptr_t< file > &p_file, abort_callback &p_abort)
 
void remove_trailing (const service_ptr_t< file > &p_file, abort_callback &p_abort)
 
void skip_id3v2 (const service_ptr_t< file > &p_file, t_filesize &p_size_skipped, abort_callback &p_abort)
 
void truncate_to_id3v1 (file_info &p_info)
 
void write_apev2 (const service_ptr_t< file > &p_file, const file_info &p_info, abort_callback &p_abort)
 
void write_apev2_id3v1 (const service_ptr_t< file > &p_file, const file_info &p_info, abort_callback &p_abort)
 
void write_id3v1 (const service_ptr_t< file > &p_file, const file_info &p_info, abort_callback &p_abort)
 
void write_id3v2 (const service_ptr_t< file > &p_file, const file_info &p_info, abort_callback &p_abort)
 
void write_id3v2_id3v1 (const service_ptr_t< file > &p_file, const file_info &p_info, abort_callback &p_abort)
 
void write_multi (const service_ptr_t< file > &p_file, const file_info &p_info, abort_callback &p_abort, bool p_write_id3v1, bool p_write_id3v2, bool p_write_apev2)
 
void write_multi_ex (tag_write_callback &p_callback, const service_ptr_t< file > &p_file, const file_info &p_info, abort_callback &p_abort, bool p_write_id3v1, bool p_write_id3v2, bool p_write_apev2)
 

Function Documentation

bool tag_processor::is_id3v1_sufficient ( const file_info p_info)

Definition at line 164 of file tag_processor.cpp.

165 {
167 }
bool is_id3v1_sufficient(const file_info &p_info)
Helper template used to easily access core services. Usage: static_api_ptr_t api; api->doso...
Definition: service.h:533
void tag_processor::read_id3v2 ( const service_ptr_t< file > &  p_file,
file_info p_info,
abort_callback p_abort 
)

Reads ID3v2 tags from specified file.

Definition at line 131 of file tag_processor.cpp.

131  {
132  static_api_ptr_t<tag_processor_id3v2>()->read(p_file,p_info,p_abort);
133 }
void read(const service_ptr_t< file > &p_file, abort_callback &p_abort, pfc::string_base &p_out, bool &is_utf8)
Helper template used to easily access core services. Usage: static_api_ptr_t api; api->doso...
Definition: service.h:533
void tag_processor::read_id3v2_trailing ( const service_ptr_t< file > &  p_file,
file_info p_info,
abort_callback p_abort 
)

Reads ID3v2 and trailing tags from specified file (not to be confused with trailing ID3v2 which are not yet supported).

Definition at line 135 of file tag_processor.cpp.

136 {
137  file_info_impl id3v2, trailing;
138  bool have_id3v2 = true, have_trailing = true;
139  try {
140  read_id3v2(p_file,id3v2,p_abort);
141  } catch(exception_io_data) {
142  have_id3v2 = false;
143  }
144  if (!have_id3v2 || !p_file->is_remote()) try {
145  read_trailing(p_file,trailing,p_abort);
146  } catch(exception_io_data) {
147  have_trailing = false;
148  }
149 
150  if (!have_id3v2 && !have_trailing) throw exception_tag_not_found();
151 
152  if (have_id3v2) {
153  p_info._set_tag(id3v2);
154  if (have_trailing) p_info._add_tag(trailing);
155  } else {
156  p_info._set_tag(trailing);
157  }
158 }
void read_trailing(const service_ptr_t< file > &p_file, file_info &p_info, abort_callback &p_abort)
Reads trailing tags from the file.
void _set_tag(const file_info &tag)
void read_id3v2(const service_ptr_t< file > &p_file, file_info &p_info, abort_callback &p_abort)
Reads ID3v2 tags from specified file.
void _add_tag(const file_info &otherTag)
Implements file_info.
void tag_processor::read_trailing ( const service_ptr_t< file > &  p_file,
file_info p_info,
abort_callback p_abort 
)

Reads trailing tags from the file.

Definition at line 123 of file tag_processor.cpp.

123  {
124  static_api_ptr_t<tag_processor_trailing>()->read(p_file,p_info,p_abort);
125 }
void read(const service_ptr_t< file > &p_file, abort_callback &p_abort, pfc::string_base &p_out, bool &is_utf8)
Helper template used to easily access core services. Usage: static_api_ptr_t api; api->doso...
Definition: service.h:533
void tag_processor::read_trailing_ex ( const service_ptr_t< file > &  p_file,
file_info p_info,
t_filesize &  p_tagoffset,
abort_callback p_abort 
)

Reads trailing tags from the file. Extended version, returns offset at which parsed tags start.

bool tag_processor::remove_id3v2 ( const service_ptr_t< file > &  p_file,
abort_callback p_abort 
)

Removes ID3v2 tags from the file. Returns true when a tag was removed, false when the file was not altered.

Definition at line 112 of file tag_processor.cpp.

112  {
113  t_uint64 dummy = 0;
114  tag_processor_id3v2::g_remove(p_file,dummy,p_abort);
115  return dummy > 0;
116 }
static void g_remove(const service_ptr_t< file > &p_file, t_filesize &p_size_removed, abort_callback &p_abort)
uint64_t t_uint64
Definition: int_types.h:3
void tag_processor::remove_id3v2_trailing ( const service_ptr_t< file > &  p_file,
abort_callback p_abort 
)

Removes ID3v2 and trailing tags from specified file (not to be confused with trailing ID3v2 which are not yet supported).

Definition at line 118 of file tag_processor.cpp.

118  {
119  remove_id3v2(p_file,p_abort);
120  remove_trailing(p_file,p_abort);
121 }
void remove_trailing(const service_ptr_t< file > &p_file, abort_callback &p_abort)
Removes trailing tags from the file.
bool remove_id3v2(const service_ptr_t< file > &p_file, abort_callback &p_abort)
Removes ID3v2 tags from the file. Returns true when a tag was removed, false when the file was not al...
void tag_processor::remove_trailing ( const service_ptr_t< file > &  p_file,
abort_callback p_abort 
)

Removes trailing tags from the file.

Definition at line 108 of file tag_processor.cpp.

108  {
109  return static_api_ptr_t<tag_processor_trailing>()->remove(p_file,p_abort);
110 }
Helper template used to easily access core services. Usage: static_api_ptr_t api; api->doso...
Definition: service.h:533
void tag_processor::skip_id3v2 ( const service_ptr_t< file > &  p_file,
t_filesize &  p_size_skipped,
abort_callback p_abort 
)
void tag_processor::truncate_to_id3v1 ( file_info p_info)

Definition at line 169 of file tag_processor.cpp.

170 {
172 }
void truncate_to_id3v1(file_info &p_info)
Helper template used to easily access core services. Usage: static_api_ptr_t api; api->doso...
Definition: service.h:533
void tag_processor::write_apev2 ( const service_ptr_t< file > &  p_file,
const file_info p_info,
abort_callback p_abort 
)

Strips all recognized tags from the file and writes an APEv2 tag with specified info.

Definition at line 92 of file tag_processor.cpp.

92  {
93  g_write_tags(g_flag_apev2,p_file,&p_info,p_abort);
94 }
static void g_write_tags(unsigned p_flags, const service_ptr_t< file > &p_file, const file_info *p_info, abort_callback &p_abort)
void tag_processor::write_apev2_id3v1 ( const service_ptr_t< file > &  p_file,
const file_info p_info,
abort_callback p_abort 
)

Strips all recognized tags from the file and writes ID3v1+APEv2 tags with specified info.

Definition at line 96 of file tag_processor.cpp.

96  {
97  g_write_tags(g_flag_apev2|g_flag_id3v1,p_file,&p_info,p_abort);
98 }
static void g_write_tags(unsigned p_flags, const service_ptr_t< file > &p_file, const file_info *p_info, abort_callback &p_abort)
void tag_processor::write_id3v1 ( const service_ptr_t< file > &  p_file,
const file_info p_info,
abort_callback p_abort 
)

Strips all recognized tags from the file and writes an ID3v1 tag with specified info.

Definition at line 88 of file tag_processor.cpp.

88  {
89  g_write_tags(g_flag_id3v1,p_file,&p_info,p_abort);
90 }
static void g_write_tags(unsigned p_flags, const service_ptr_t< file > &p_file, const file_info *p_info, abort_callback &p_abort)
void tag_processor::write_id3v2 ( const service_ptr_t< file > &  p_file,
const file_info p_info,
abort_callback p_abort 
)

Strips all recognized tags from the file and writes an ID3v2 tag with specified info.

Definition at line 100 of file tag_processor.cpp.

100  {
101  g_write_tags(g_flag_id3v2,p_file,&p_info,p_abort);
102 }
static void g_write_tags(unsigned p_flags, const service_ptr_t< file > &p_file, const file_info *p_info, abort_callback &p_abort)
void tag_processor::write_id3v2_id3v1 ( const service_ptr_t< file > &  p_file,
const file_info p_info,
abort_callback p_abort 
)

Strips all recognized tags from the file and writes ID3v1+ID3v2 tags with specified info.

Definition at line 104 of file tag_processor.cpp.

104  {
105  g_write_tags(g_flag_id3v2|g_flag_id3v1,p_file,&p_info,p_abort);
106 }
static void g_write_tags(unsigned p_flags, const service_ptr_t< file > &p_file, const file_info *p_info, abort_callback &p_abort)
void tag_processor::write_multi ( const service_ptr_t< file > &  p_file,
const file_info p_info,
abort_callback p_abort,
bool  p_write_id3v1,
bool  p_write_id3v2,
bool  p_write_apev2 
)

Strips all recognized tags from the file and writes new tags with specified info according to parameters.

Definition at line 72 of file tag_processor.cpp.

72  {
73  unsigned flags = 0;
74  if (p_write_id3v1) flags |= g_flag_id3v1;
75  if (p_write_id3v2) flags |= g_flag_id3v2;
76  if (p_write_apev2) flags |= g_flag_apev2;
77  g_write_tags(flags,p_file,&p_info,p_abort);
78 }
static void g_write_tags(unsigned p_flags, const service_ptr_t< file > &p_file, const file_info *p_info, abort_callback &p_abort)
void tag_processor::write_multi_ex ( tag_write_callback p_callback,
const service_ptr_t< file > &  p_file,
const file_info p_info,
abort_callback p_abort,
bool  p_write_id3v1,
bool  p_write_id3v2,
bool  p_write_apev2 
)

Strips all recognized tags from the file and writes new tags with specified info according to parameters. Extended to allow write-tags-to-temp-file-and-swap scheme.

Definition at line 80 of file tag_processor.cpp.

80  {
81  unsigned flags = 0;
82  if (p_write_id3v1) flags |= g_flag_id3v1;
83  if (p_write_id3v2) flags |= g_flag_id3v2;
84  if (p_write_apev2) flags |= g_flag_apev2;
85  g_write_tags_ex(p_callback,flags,p_file,&p_info,p_abort);
86 }
static void g_write_tags_ex(tag_write_callback &p_callback, unsigned p_flags, const service_ptr_t< file > &p_file, const file_info *p_info, abort_callback &p_abort)