static int set_id3v2tag(lame_global_flags* gfp, int type, unsigned short const* str) { switch (type) { case 'a': return id3tag_set_textinfo_ucs2(gfp, "TPE1", str); case 't': return id3tag_set_textinfo_ucs2(gfp, "TIT2", str); case 'l': return id3tag_set_textinfo_ucs2(gfp, "TALB", str); case 'g': return id3tag_set_textinfo_ucs2(gfp, "TCON", str); case 'c': return id3tag_set_comment_ucs2(gfp, 0, 0, str); case 'n': return id3tag_set_textinfo_ucs2(gfp, "TRCK", str); } return 0; }
int id3tag_set_fieldvalue_ucs2(lame_global_flags * gfp, const unsigned short *fieldvalue) { if (fieldvalue && *fieldvalue) { size_t dx = hasUcs2ByteOrderMarker(fieldvalue[0]); char fid[5] = {0,0,0,0,0}; uint32_t const frame_id = toID3v2TagId_ucs2(fieldvalue+dx); if (local_ucs2_strlen(fieldvalue) < (5+dx) || fieldvalue[dx+4] != '=') { return -1; } fid[0] = (fieldvalue[dx+0] & 0x0ff); fid[1] = (fieldvalue[dx+1] & 0x0ff); fid[2] = (fieldvalue[dx+2] & 0x0ff); fid[3] = (fieldvalue[dx+3] & 0x0ff); if (frame_id != 0) { unsigned short* txt = 0; int rc; local_ucs2_substr(&txt, fieldvalue, dx+5, local_ucs2_strlen(fieldvalue)); rc = id3tag_set_textinfo_ucs2(gfp, fid, txt); free(txt); return rc; } } return -1; }
void lame_encoder_impl_internal::set_title(const std::wstring & Title) { int lameRet = id3tag_set_textinfo_ucs2(m_Lame.get(), "TIT2", &add_bom(Title)[0]); lameRet; }
void lame_encoder_impl_internal::set_artist(const std::wstring & Artist) { int lameRet = id3tag_set_textinfo_ucs2(m_Lame.get(), "TPE1", &add_bom(Artist)[0]); lameRet; }