devsound/a3facf/inc/audiocontextfactory.h
author hgs
Thu, 07 Oct 2010 23:44:30 +0100
changeset 1 fcaf4606ba4e
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk40_04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
* All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
* Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
* Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
* Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
 @publishedPartner
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
 @file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
 @released
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#ifndef AUDIOCONTEXTFACTORY_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#define AUDIOCONTEXTFACTORY_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#include <e32base.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
#include <a3f/a3fbase.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
class MAudioContext;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
 * An interface to an AudioContextFactory.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
 * Audio Context Factory is the entry point to the low level audio functionality of the device.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
 * Audio Context Factory is used for creating new audio contexts.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
 *  @lib AudioContextFactory.lib
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
class CAudioContextFactory : public CBase
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
	 * Constructs and returns a pointer to a new CAudioContextFactory object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
	 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
	 * @return CAudioContextFactory* - on success, pointer to new class instance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
	 * This call returns ownership, as in the standard NewL() pattern.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
	 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
	IMPORT_C static CAudioContextFactory* NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
	 * Destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
	 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
	 * Deletes all objects and releases all resource owned by this instance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
	 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
	IMPORT_C virtual ~CAudioContextFactory();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
	 * Creates a new audio context.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
	 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
	 * The context must be removed using DeleteAudioContext() when it is no longer needed.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
	 * @param aContext on return contains a reference to the created context.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
	 * @return an error code. KErrNone if successful, otherwise one of the system wide error codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
 	 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
	IMPORT_C TInt CreateAudioContext(MAudioContext*& aContext);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	 * Deletes the audio context.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
	 * All processing units have to be removed from the context by the client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
	 * before the context is removed. This is a null-operation if aContext is NULL on DeleteAudioContext being called.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
	 * aContext is set to NULL on completion of the call.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
	 * @param aContext a pointer to the context to remove.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
	 * @return an error code. KErrNone if successful, otherwise one of the system wide error codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
	 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	IMPORT_C void DeleteAudioContext(MAudioContext*& aContext);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
protected:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	 * Constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
	 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
	CAudioContextFactory();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
	 * Second phase contructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
	void ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
#endif // AUDIOCONTEXTFACTORY_H