Blame ports/MSVC++/2008clr/mpg123clr/advanced.cpp

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 24-Sep-09	Function names harmonized with libmpg123 (mb)
Packit c32a2d
	1.9.0.0 13-Oct-09	pin_ptr = nullptr on return (mb)
Packit c32a2d
	1.9.0.1	24-Nov-09	performance update - removed try/finally (mb)
Packit c32a2d
*/
Packit c32a2d

Packit c32a2d
#include "StdAfx.h"
Packit c32a2d
#include "advanced.h"
Packit c32a2d

Packit c32a2d
mpg123clr::advpars::advpars(int% error)
Packit c32a2d
{
Packit c32a2d
	pin_ptr<int> err = &error;
Packit c32a2d
	mp = ::mpg123_new_pars(err);
Packit c32a2d

Packit c32a2d
	err = nullptr;
Packit c32a2d
}
Packit c32a2d

Packit c32a2d
mpg123clr::advpars::~advpars(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->!advpars();
Packit c32a2d
}
Packit c32a2d

Packit c32a2d
mpg123clr::advpars::!advpars(void)
Packit c32a2d
{
Packit c32a2d
	if (mp != NULL) 
Packit c32a2d
	{
Packit c32a2d
		::mpg123_delete_pars(mp);
Packit c32a2d
		mp = NULL;
Packit c32a2d
	}
Packit c32a2d
}
Packit c32a2d

Packit c32a2d
mpg123clr::mpg::ErrorCode mpg123clr::advpars::mpg123_fmt_none(void)
Packit c32a2d
{
Packit c32a2d
	return (mpg123clr::mpg::ErrorCode) ::mpg123_fmt_none(mp);
Packit c32a2d
}
Packit c32a2d

Packit c32a2d
mpg123clr::mpg::ErrorCode mpg123clr::advpars::mpg123_fmt_all(void)
Packit c32a2d
{
Packit c32a2d
	return (mpg123clr::mpg::ErrorCode) ::mpg123_fmt_all(mp);
Packit c32a2d
}
Packit c32a2d

Packit c32a2d
mpg123clr::mpg::ErrorCode mpg123clr::advpars::mpg123_fmt(int rate, mpg123clr::mpg::channelcount channels, int encodings)
Packit c32a2d
{
Packit c32a2d
	return (mpg123clr::mpg::ErrorCode) ::mpg123_fmt(mp, rate, (int)channels, encodings);
Packit c32a2d
}
Packit c32a2d

Packit c32a2d
mpg123clr::mpg::channelcount mpg123clr::advpars::mpg123_fmt_support(int rate, int encodings)
Packit c32a2d
{
Packit c32a2d
	return (mpg123clr::mpg::channelcount) ::mpg123_fmt_support(mp, rate, encodings);
Packit c32a2d
}
Packit c32a2d

Packit c32a2d
mpg123clr::mpg::ErrorCode mpg123clr::advpars::mpg123_par(mpg123clr::mpg::parms type, int val, double fval)
Packit c32a2d
{
Packit c32a2d
	return (mpg123clr::mpg::ErrorCode) ::mpg123_par(mp, (mpg123_parms) type, val, fval);
Packit c32a2d
}
Packit c32a2d

Packit c32a2d
mpg123clr::mpg::ErrorCode mpg123clr::advpars::mpg123_getpar(mpg123clr::mpg::parms type, [Out] int% val, [Out] double% fval)
Packit c32a2d
{
Packit c32a2d
	// Avoid need for local intermediary variables
Packit c32a2d
	pin_ptr<int> _val = &val;
Packit c32a2d
	pin_ptr<double> _fval = &fval;
Packit c32a2d

Packit c32a2d
	int ret = ::mpg123_getpar(mp, (mpg123_parms) type, (long*)_val, _fval);
Packit c32a2d

Packit c32a2d
	_fval = nullptr;
Packit c32a2d
	_val = nullptr;
Packit c32a2d
	
Packit c32a2d
	return (mpg123clr::mpg::ErrorCode) ret;
Packit c32a2d
}
Packit c32a2d

Packit c32a2d