|
Packit |
c32a2d |
/*
|
|
Packit |
c32a2d |
mpg123clr: MPEG Audio Decoder library Common Language Runtime version.
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
copyright 2009 by Malcolm Boczek - free software under the terms of the LGPL 2.1
|
|
Packit |
c32a2d |
mpg123clr.dll is a derivative work of libmpg123 - all original mpg123 licensing terms apply.
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
All rights to this work freely assigned to the mpg123 project.
|
|
Packit |
c32a2d |
*/
|
|
Packit |
c32a2d |
/*
|
|
Packit |
c32a2d |
libmpg123: MPEG Audio Decoder library
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
copyright 1995-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
|
|
Packit |
c32a2d |
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
*/
|
|
Packit |
c32a2d |
/*
|
|
Packit |
c32a2d |
1.8.1.0 04-Aug-09 Initial release.
|
|
Packit |
c32a2d |
1.9.0.0 01-Oct-09 Technical cleanup - subst nullptr for NULL (mb)
|
|
Packit |
c32a2d |
1.10.0.0 30-Nov-09 Add test for null base (sb) - in addition to null string test (mb)
|
|
Packit |
c32a2d |
(required if v2 referenced prior to file scan)
|
|
Packit |
c32a2d |
*/
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#include "StdAfx.h"
|
|
Packit |
c32a2d |
#include "id3v2.h"
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
mpg123clr::id3::mpg123id3v2::mpg123id3v2(void)
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
mpg123clr::id3::mpg123id3v2::mpg123id3v2(mpg123_id3v2* sb)
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
this->sb = sb;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
// Destructor
|
|
Packit |
c32a2d |
mpg123clr::id3::mpg123id3v2::~mpg123id3v2(void)
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
// clean up code to release managed resources
|
|
Packit |
c32a2d |
// ...
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
// call Finalizer to clean up unmanaged resources
|
|
Packit |
c32a2d |
this->!mpg123id3v2();
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
// Finalizer
|
|
Packit |
c32a2d |
mpg123clr::id3::mpg123id3v2::!mpg123id3v2(void)
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
// we do not create the underlying structure, so shouldn't dispose it either...
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
String^ mpg123clr::id3::mpg123id3v2::title::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
// updated: more efficient "union style" mpg123str
|
|
Packit |
c32a2d |
mpg123str^ str = (sb == nullptr || sb->title == nullptr) ? gcnew mpg123str("") : gcnew mpg123str(sb->title);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
// Deprecated remnant - uses "overlayed style" mpg123str - note inefficient PtrToStrucure...
|
|
Packit |
c32a2d |
// mpg123str^% str = gcnew mpg123str;
|
|
Packit |
c32a2d |
// Marshal::PtrToStructure((IntPtr)sb->title, str);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
return str->Text;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
String^ mpg123clr::id3::mpg123id3v2::artist::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
mpg123str^ str = (sb == nullptr || sb->artist == nullptr) ? gcnew mpg123str("") : gcnew mpg123str(sb->artist);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
return str->Text;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
String^ mpg123clr::id3::mpg123id3v2::album::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
mpg123str^ str = (sb == nullptr || sb->album == nullptr) ? gcnew mpg123str("") : gcnew mpg123str(sb->album);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
return str->Text;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
String^ mpg123clr::id3::mpg123id3v2::comment::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
mpg123str^ str = (sb == nullptr || sb->comment == nullptr) ? gcnew mpg123str("") : gcnew mpg123str(sb->comment);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
return str->Text;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
String^ mpg123clr::id3::mpg123id3v2::year::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
mpg123str^ str = (sb == nullptr || sb->year == nullptr) ? gcnew mpg123str("") : gcnew mpg123str(sb->year);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
return str->Text;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
String^ mpg123clr::id3::mpg123id3v2::genre::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
mpg123str^ str = (sb == nullptr || sb->genre == nullptr) ? gcnew mpg123str("") : gcnew mpg123str(sb->genre);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
return str->Text;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
int mpg123clr::id3::mpg123id3v2::version::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
return sb->version;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
array<mpg123clr::mpg123text^>^ mpg123clr::id3::mpg123id3v2::MakeTextList(mpg123_text* ptr, size_t count)
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
// WARN 4267 - clr limited to 32bit-length-size arrays!!
|
|
Packit |
c32a2d |
array<mpg123clr::mpg123text^>^ ary = gcnew array<mpg123clr::mpg123text^>((int)count);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
for (int ii = 0; ii < ary->Length; ii++)
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
// Remnant - for explicit layout
|
|
Packit |
c32a2d |
// mpg123text^% txt = gcnew mpg123text;
|
|
Packit |
c32a2d |
// Marshal::PtrToStructure((IntPtr)ptr++, txt);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
// New code - for "handle style" structure
|
|
Packit |
c32a2d |
mpg123text^% txt = gcnew mpg123text(ptr++);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
ary[ii] = txt;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
return ary;
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
array<mpg123clr::mpg123text^>^ mpg123clr::id3::mpg123id3v2::Comments::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
return MakeTextList(sb->comment_list, sb->comments);
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
array<mpg123clr::mpg123text^>^ mpg123clr::id3::mpg123id3v2::Texts::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
return MakeTextList(sb->text, sb->texts);
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
array<mpg123clr::mpg123text^>^ mpg123clr::id3::mpg123id3v2::Extras::get()
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
return MakeTextList(sb->extra, sb->extras);
|
|
Packit |
c32a2d |
}
|
|
Packit |
c32a2d |
|