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

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
*/
Packit c32a2d

Packit c32a2d
#pragma once
Packit c32a2d

Packit c32a2d
#pragma warning(disable : 4635)
Packit c32a2d
#include "mpg123.h"
Packit c32a2d
#pragma warning(default : 4635)
Packit c32a2d

Packit c32a2d
#include "enum.h"
Packit c32a2d
#include "error.h"
Packit c32a2d

Packit c32a2d
using namespace System;
Packit c32a2d
using namespace System::Runtime::InteropServices;
Packit c32a2d

Packit c32a2d
namespace mpg123clr
Packit c32a2d
{
Packit c32a2d
	// Recommended usage when creating reference type on the managed heap (not using stack semantics 
Packit c32a2d
	//  for reference types...) [see (Microsoft) Destructors and Finalizers in Visual C++]
Packit c32a2d
	//
Packit c32a2d
	// C++/CLI
Packit c32a2d
	// A myA;
Packit c32a2d
	//		// use myA here
Packit c32a2d
	//
Packit c32a2d
	// Equivalent user code:
Packit c32a2d
	//
Packit c32a2d
	// A ^ myA = gcnew A;
Packit c32a2d
	// try { /* use myA here */ } finally { delete myA; }
Packit c32a2d
	//
Packit c32a2d
	//
Packit c32a2d
	// C# (from wikipedia)
Packit c32a2d
	// using(A myA = new A()) { /* Use myA here */ }
Packit c32a2d
    // Compiler calls myA.Dispose(), in a "finally" of a "try/finally" block
Packit c32a2d
	//
Packit c32a2d
    // Equivalent user code:
Packit c32a2d
	//
Packit c32a2d
    //  A myA = new myA();
Packit c32a2d
    //  try { /* Use myA here */ } finally { myA.Dispose(); }
Packit c32a2d
	//
Packit c32a2d
	// Otherwise Finalizer will be nondeterministically called by GC
Packit c32a2d

Packit c32a2d

Packit c32a2d
	///<summary> CLR wrapper for mpg123_pars object.</summary>
Packit c32a2d
	public ref class advpars
Packit c32a2d
	{
Packit c32a2d
	protected public:
Packit c32a2d
		mpg123_pars*	mp;
Packit c32a2d

Packit c32a2d
	protected:
Packit c32a2d
		!advpars(void);
Packit c32a2d

Packit c32a2d
	public:
Packit c32a2d
		///<summary>Constructor.</summary>
Packit c32a2d
		///<param name="error">Returns MPG123_OK or mpg123 error code.</param>
Packit c32a2d
		advpars([Out] int% error);
Packit c32a2d

Packit c32a2d
		///<summary>Destructor.</summary>
Packit c32a2d
		~advpars(void);
Packit c32a2d

Packit c32a2d
		///<summary>Configure mpg123 parameters to accept no output formats.
Packit c32a2d
		///<para>Use to clear default parameters prior to applying specific settings.</para>
Packit c32a2d
		///<para>Returns MPG123 error codes.</para>
Packit c32a2d
		///</summary>
Packit c32a2d
		///<returns>MPG123 error codes.</returns>
Packit c32a2d
		mpg123clr::mpg::ErrorCode __clrcall mpg123_fmt_none(void);
Packit c32a2d

Packit c32a2d
		///<summary>Configure mpg123 parameters to accept all formats including custom rate you may set - this is the default.
Packit c32a2d
		///<para>Returns MPG123 error codes.</para>
Packit c32a2d
		///</summary>
Packit c32a2d
		///<returns>MPG123 error codes.</returns>
Packit c32a2d
		mpg123clr::mpg::ErrorCode __clrcall mpg123_fmt_all(void);
Packit c32a2d

Packit c32a2d
		///<summary>Configure detailed output formats.
Packit c32a2d
		///<para>Returns MPG123 error codes.</para>
Packit c32a2d
		///</summary>
Packit c32a2d
		///<param name="rate">Sample rate (Hertz)</param>
Packit c32a2d
		///<param name="channels">Combination of channelcount.stereo and channelcount.mono</param>
Packit c32a2d
		///<param name="encodings">Combination of accepted encodings for rate and channels e.g. enc.enc_signed16 | enc.enc_ulaw_8 (or 0 for none)</param>
Packit c32a2d
		///<returns>MPG123 error codes.</returns>
Packit c32a2d
		/// VERSION CHECK: long as int for Intellisense
Packit c32a2d
		mpg123clr::mpg::ErrorCode __clrcall mpg123_fmt(int rate, mpg123clr::mpg::channelcount channels, int encodings);
Packit c32a2d

Packit c32a2d
		///<summary>Get available support for supplied rate and encoding.
Packit c32a2d
		///<para>Returns 0 for no support (includes invalid parameters), or combination of channelcount.stereo and channelcount.mono.</para>
Packit c32a2d
		///</summary>
Packit c32a2d
		///<param name="rate">Sample rate (Hertz)</param>
Packit c32a2d
		///<param name="encoding">Combination of accepted encodings for rate and channels e.g. enc.enc_signed16 | enc.enc_ulaw_8 (or 0 for none)</param>
Packit c32a2d
		///<returns>Returns 0 for no support (includes invalid parameters), or combination of channelcount.stereo and channelcount.mono.</returns>
Packit c32a2d
		/// VERSION CHECK: long as int for Intellisense
Packit c32a2d
		mpg123clr::mpg::channelcount __clrcall mpg123_fmt_support(int rate, int encoding);
Packit c32a2d

Packit c32a2d
		///<summary>Set a specific advpars value.
Packit c32a2d
		///<para>Returns MPG123 error codes.</para>
Packit c32a2d
		///</summary>
Packit c32a2d
		///<param name="type">Specifies the advpars parameter to be set.</param>
Packit c32a2d
		///<param name="val">The integer value to be applied.</param>
Packit c32a2d
		///<param name="fval">The real value to be applied.</param>
Packit c32a2d
		///<returns>MPG123 error codes.</returns>
Packit c32a2d
		/// VERSION CHECK: long as int for Intellisense
Packit c32a2d
		mpg123clr::mpg::ErrorCode __clrcall mpg123_par(mpg123clr::mpg::parms type, int val, double fval);
Packit c32a2d

Packit c32a2d
		///<summary>Get a specific advpars value.
Packit c32a2d
		///<para>Returns MPG123 error codes.</para>
Packit c32a2d
		///</summary>
Packit c32a2d
		///<param name="type">Specifies the advpars parameter to be returned.</param>
Packit c32a2d
		///<param name="val">Returns the applicable integer value.</param>
Packit c32a2d
		///<param name="fval">Returns the applicable real value.</param>
Packit c32a2d
		///<returns>MPG123 error codes.</returns>
Packit c32a2d
		/// VERSION CHECK: long as int for Intellisense
Packit c32a2d
		mpg123clr::mpg::ErrorCode __clrcall mpg123_getpar(mpg123clr::mpg::parms type, [Out] int% val, [Out] double% fval);
Packit c32a2d
	};
Packit c32a2d

Packit c32a2d
}