devsoundextensions/audiorouting/Output/AudioOutputBase/src/AudioOutput.cpp
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_02
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 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:   This is the implementation of the CAudioOutput class.
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
// INCLUDE FILES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include <mmf/server/sounddevice.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include "AudioOutputProxy.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#include "AudioOutputMessageTypes.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#include <CustomInterfaceUtility.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#include <CustomCommandUtility.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
#include <mdaaudiotoneplayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#include <mdaaudiooutputstream.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#include <AudioOutput.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
#include <DrmAudioSamplePlayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#include <videoplayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
#ifdef _DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
#define DEBPRN0         RDebug::Printf( "%s", __PRETTY_FUNCTION__);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
#define DEBPRN1(str)    RDebug::Printf( "%s %s", __PRETTY_FUNCTION__, str );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
#define DEBPRN0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
#define DEBPRN1(str)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
EXPORT_C CAudioOutput* CAudioOutput::NewL(CMdaAudioPlayerUtility& aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
    CCustomInterfaceUtility* customInterface;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
    customInterface = CCustomInterfaceUtility::NewL(aUtility);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
    CleanupStack::PushL( customInterface );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
    audioOutput = (CAudioOutputProxy*)customInterface->CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
	CleanupStack::Pop(customInterface);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
EXPORT_C CAudioOutput* CAudioOutput::NewL(CMdaAudioRecorderUtility& aUtility, TBool aRecordStream)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
    CCustomInterfaceUtility* customInterface;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
    customInterface = CCustomInterfaceUtility::NewL(aUtility,aRecordStream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
    CleanupStack::PushL( customInterface );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
    audioOutput = (CAudioOutputProxy*)customInterface->CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	CleanupStack::Pop(customInterface);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
EXPORT_C CAudioOutput* CAudioOutput::NewL(CMdaAudioOutputStream& aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
    audioOutput = (CAudioOutputProxy*)aUtility.CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
EXPORT_C CAudioOutput* CAudioOutput::NewL(CMdaAudioToneUtility& aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
    audioOutput = (CAudioOutputProxy*)aUtility.CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
EXPORT_C CAudioOutput* CAudioOutput::NewL(CMMFDevSound& aDevSound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
    audioOutput = (CAudioOutputProxy*)aDevSound.CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
EXPORT_C CAudioOutput* CAudioOutput::NewL(MCustomInterface& aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	CAudioOutputProxy* audioOutput = (CAudioOutputProxy*)aUtility.CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
	if ( !audioOutput )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
		DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
EXPORT_C CAudioOutput* CAudioOutput::NewL(MCustomCommand& aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
    CCustomInterfaceUtility* customInterface;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
    customInterface = CCustomInterfaceUtility::NewL(aUtility);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
    CleanupStack::PushL( customInterface );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
    audioOutput = (CAudioOutputProxy*)customInterface->CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
	CleanupStack::Pop(customInterface);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
EXPORT_C CAudioOutput* CAudioOutput::NewL(CMidiClientUtility& aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
    CCustomInterfaceUtility* customInterface;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
    customInterface = CCustomInterfaceUtility::NewL(aUtility);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
    CleanupStack::PushL( customInterface );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
    audioOutput = (CAudioOutputProxy*)customInterface->CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
	CleanupStack::Pop(customInterface);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
EXPORT_C CAudioOutput* CAudioOutput::NewL(CDrmPlayerUtility& aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
    CCustomInterfaceUtility* customInterface;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
    customInterface = CCustomInterfaceUtility::NewL(aUtility);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
    CleanupStack::PushL( customInterface );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
    audioOutput = (CAudioOutputProxy*)customInterface->CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
	CleanupStack::Pop(customInterface);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
EXPORT_C CAudioOutput* CAudioOutput::NewL(CVideoPlayerUtility& aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
    DEBPRN0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
    CAudioOutputProxy* audioOutput = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
    CCustomInterfaceUtility* customInterface;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
    customInterface = CCustomInterfaceUtility::NewL(aUtility);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
    CleanupStack::PushL( customInterface );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
    audioOutput = (CAudioOutputProxy*)customInterface->CustomInterface(KUidAudioOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
	if (audioOutput == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
        DEBPRN1("No Adaptation Support - leaving");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
	CleanupStack::Pop(customInterface);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
    return audioOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
// End of file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238