omxil/generic/omxilfilesource/src/omxilfilesourceprocessingfunction.cpp
author Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
Fri, 07 May 2010 16:25:23 +0100
branchOpenMAX-IL_SHAI
changeset 16 eedf2dcd43c6
permissions -rw-r--r--
Implementation of OpenMAX-IL with SHAI
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     2
// All rights reserved.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     7
//
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     8
// Initial Contributors:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    10
//
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    11
// Contributors:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    12
//
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    13
// Description:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    14
//
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    15
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    16
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    17
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    18
/**
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    19
 * @file
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    20
 * @internalTechnology
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    21
 */
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    22
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    23
#include <uri8.h>
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    24
#include "omxilcallbackmanager.h"
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    25
#include "omxilfilesourceprocessingfunction.h"
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    26
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    27
const TInt KMaxMsgQueueEntries = 25;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    28
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    29
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    30
COmxILFileSourceProcessingFunction* COmxILFileSourceProcessingFunction::NewL(MOmxILCallbackNotificationIf& aCallbacks)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    31
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    32
	COmxILFileSourceProcessingFunction* self = new (ELeave) COmxILFileSourceProcessingFunction(aCallbacks);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    33
	CleanupStack::PushL(self);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    34
	self->ConstructL();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    35
	CleanupStack::Pop(self);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    36
	return self;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    37
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    38
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    39
COmxILFileSourceProcessingFunction::COmxILFileSourceProcessingFunction(MOmxILCallbackNotificationIf& aCallbacks)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    40
: COmxILProcessingFunction(aCallbacks)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    41
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    42
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    43
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    44
void COmxILFileSourceProcessingFunction::ConstructL()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    45
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    46
	iState = OMX_StateLoaded;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    47
	iFileSourceAccess = CFileSourceAccess::NewL(*this);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    48
	iPFHelper = CPFHelper::NewL(*this, *iFileSourceAccess);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    49
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    50
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    51
COmxILFileSourceProcessingFunction::~COmxILFileSourceProcessingFunction()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    52
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    53
	if(iPFHelper &&
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    54
	   (iState == OMX_StateInvalid  ||
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    55
	    iState == OMX_StateExecuting ||
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    56
	    iState == OMX_StatePause))
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    57
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    58
		iPFHelper->StopSync();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    59
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    60
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    61
	delete iPFHelper;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    62
	delete iFileSourceAccess;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    63
	delete iUri;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    64
	delete iFileName;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    65
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    66
	// Buffer headers are not owned by the processing function
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    67
    iBuffersToFill.Close();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    68
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    69
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    70
OMX_ERRORTYPE COmxILFileSourceProcessingFunction::StateTransitionIndication(COmxILFsm::TStateIndex aNewState)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    71
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    72
	OMX_ERRORTYPE err = OMX_ErrorNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    73
	switch(aNewState)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    74
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    75
		case COmxILFsm::EStateExecuting:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    76
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    77
			if (iPFHelper->ExecuteAsync() != KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    78
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    79
				err = OMX_ErrorInsufficientResources;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    80
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    81
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    82
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    83
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    84
		case COmxILFsm::EStateInvalid:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    85
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    86
            if (iPFHelper && iPFHelper->StopAsync() != KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    87
                {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    88
                err = OMX_ErrorInsufficientResources;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    89
                }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    90
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    91
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    92
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    93
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    94
		case COmxILFsm::EStatePause:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    95
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    96
			iPFHelper->PauseAsync();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    97
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    98
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
    99
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   100
		case COmxILFsm::EStateIdle:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   101
			{			
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   102
			iPFHelper->IdleAsync();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   103
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   104
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   105
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   106
		case COmxILFsm::EStateLoaded:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   107
		case COmxILFsm::EStateWaitForResources:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   108
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   109
			if (iPFHelper && iPFHelper->StopAsync() != KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   110
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   111
				err = OMX_ErrorInsufficientResources;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   112
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   113
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   114
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   115
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   116
		case COmxILFsm::ESubStateExecutingToIdle:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   117
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   118
			iPFHelper->StopAsync();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   119
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   120
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   121
		case COmxILFsm::ESubStatePauseToIdle:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   122
	    case COmxILFsm::ESubStateLoadedToIdle:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   123
	    case COmxILFsm::ESubStateIdleToLoaded:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   124
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   125
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   126
		default:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   127
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   128
			err = OMX_ErrorIncorrectStateTransition;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   129
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   130
		};
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   131
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   132
	return err;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   133
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   134
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   135
OMX_ERRORTYPE COmxILFileSourceProcessingFunction::BufferFlushingIndication(TUint32 aPortIndex, OMX_DIRTYPE aDirection)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   136
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   137
    OMX_ERRORTYPE err = OMX_ErrorNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   138
    if ((aPortIndex == OMX_ALL && aDirection == OMX_DirMax) ||
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   139
        (aPortIndex == 0 && aDirection == OMX_DirOutput))
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   140
        {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   141
        // Send BufferDone notifications for each bufer...
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   142
        for (TUint i=0, bufferCount=iBuffersToFill.Count(); i<bufferCount; ++i)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   143
            {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   144
            OMX_BUFFERHEADERTYPE* pBufferHeader = iBuffersToFill[i];
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   145
            iCallbacks.BufferDoneNotification(pBufferHeader,
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   146
                                              pBufferHeader->nOutputPortIndex,
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   147
                                              OMX_DirOutput);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   148
            }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   149
        // Empty buffer lists...
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   150
        iBuffersToFill.Reset();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   151
        }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   152
    else
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   153
        {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   154
        err = OMX_ErrorBadParameter;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   155
        }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   156
    return err;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   157
    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   158
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   159
OMX_ERRORTYPE COmxILFileSourceProcessingFunction::ParamIndication(OMX_INDEXTYPE aParamIndex, const TAny* apComponentParameterStructure)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   160
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   161
	OMX_ERRORTYPE err = OMX_ErrorNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   162
	switch(aParamIndex)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   163
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   164
		case OMX_IndexParamPortDefinition:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   165
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   166
			//const OMX_PARAM_PORTDEFINITIONTYPE* portDefinition = static_cast<const OMX_PARAM_PORTDEFINITIONTYPE*>(apComponentParameterStructure);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   167
			//nothing to do
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   168
			//
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   169
			//the number of buffers may change depending on capture mode (single shot vs burst mode)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   170
			//in that case, we need to do something for PF...
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   171
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   172
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   173
		case OMX_IndexParamContentURI:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   174
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   175
			const OMX_PARAM_CONTENTURITYPE* contentUriType = reinterpret_cast<const OMX_PARAM_CONTENTURITYPE*>(apComponentParameterStructure);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   176
			err = SetFileName(contentUriType);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   177
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   178
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   179
		default:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   180
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   181
			err = OMX_ErrorUnsupportedIndex;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   182
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   183
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   184
	return err;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   185
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   186
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   187
OMX_ERRORTYPE COmxILFileSourceProcessingFunction::ConfigIndication(OMX_INDEXTYPE /*aConfigIndex*/, const TAny* /*apComponentConfigStructure*/)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   188
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   189
	return OMX_ErrorNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   190
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   191
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   192
OMX_ERRORTYPE COmxILFileSourceProcessingFunction::BufferIndication(OMX_BUFFERHEADERTYPE* apBufferHeader, OMX_DIRTYPE aDirection)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   193
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   194
	if (aDirection == OMX_DirOutput)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   195
    	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   196
    	if (iPFHelper->BufferIndication(apBufferHeader) != KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   197
    		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   198
    		return OMX_ErrorInsufficientResources;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   199
    		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   200
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   201
    else
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   202
    	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   203
    	return OMX_ErrorBadParameter;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   204
    	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   205
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   206
    return OMX_ErrorNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   207
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   208
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   209
OMX_BOOL COmxILFileSourceProcessingFunction::BufferRemovalIndication(OMX_BUFFERHEADERTYPE* apBufferHeader, OMX_DIRTYPE /*aDirection*/)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   210
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   211
	OMX_BOOL headerDeletionResult = OMX_TRUE;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   212
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   213
	TInt headerIndexInArray = KErrNotFound;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   214
	if (KErrNotFound !=(headerIndexInArray = iBuffersToFill.Find(apBufferHeader)))
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   215
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   216
		iBuffersToFill.Remove(headerIndexInArray);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   217
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   218
	else
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   219
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   220
		headerDeletionResult = OMX_FALSE;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   221
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   222
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   223
    return headerDeletionResult;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   224
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   225
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   226
MOmxILCallbackNotificationIf& COmxILFileSourceProcessingFunction::GetCallbacks()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   227
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   228
	return iCallbacks;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   229
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   230
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   231
OMX_ERRORTYPE COmxILFileSourceProcessingFunction::SetFileName(const OMX_PARAM_CONTENTURITYPE* aContentUriType)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   232
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   233
	ASSERT(aContentUriType);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   234
	delete iFileName;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   235
	iFileName = NULL;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   236
	delete iUri;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   237
	iUri = NULL;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   238
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   239
	TInt sizeOfUri = aContentUriType->nSize - _FOFF(OMX_PARAM_CONTENTURITYPE, contentURI); //Actual size of URI
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   240
	if (sizeOfUri <= 0)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   241
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   242
		return OMX_ErrorBadParameter;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   243
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   244
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   245
	// Don't include the zero character at the end.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   246
	TPtrC8 uriDes(aContentUriType->contentURI,sizeOfUri);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   247
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   248
	TInt err = KErrNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   249
	do
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   250
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   251
		TUriParser8 parser;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   252
		err = parser.Parse(uriDes);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   253
		if (err != KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   254
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   255
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   256
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   257
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   258
		TRAP(err, iFileName = parser.GetFileNameL());
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   259
		if (err != KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   260
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   261
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   262
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   263
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   264
		// Remove Null charcter '\0' if any.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   265
		TPtr filePtr(iFileName->Des());
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   266
		TInt index = filePtr.LocateReverse('\0');
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   267
		if (index != KErrNotFound && index == filePtr.Length()-1)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   268
		    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   269
		    filePtr.Delete(index,1);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   270
		    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   271
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   272
		uriDes.Set(reinterpret_cast<const TUint8 *>(aContentUriType), aContentUriType->nSize );
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   273
        iUri = uriDes.Alloc();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   274
        if (!iUri)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   275
            {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   276
            err = KErrNoMemory;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   277
            break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   278
            }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   279
        
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   280
		return OMX_ErrorNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   281
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   282
	while (EFalse);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   283
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   284
	// Something failed.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   285
	ASSERT(err != KErrNone);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   286
	delete iFileName;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   287
	iFileName = NULL;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   288
	delete iUri;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   289
	iUri = NULL;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   290
	return (err == KErrNoMemory ? OMX_ErrorInsufficientResources : OMX_ErrorBadParameter);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   291
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   292
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   293
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   294
const HBufC* COmxILFileSourceProcessingFunction::FileName() const
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   295
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   296
	return iFileName;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   297
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   298
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   299
const HBufC8* COmxILFileSourceProcessingFunction::Uri() const
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   300
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   301
	return iUri;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   302
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   303
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   304
COmxILFileSourceProcessingFunction::CFileSourceAccess* COmxILFileSourceProcessingFunction::CFileSourceAccess::NewL(COmxILFileSourceProcessingFunction& aParent)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   305
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   306
	CFileSourceAccess* self = new (ELeave) CFileSourceAccess(aParent);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   307
	CleanupStack::PushL(self);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   308
	self->ConstructL();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   309
	CleanupStack::Pop(self);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   310
	return self;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   311
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   312
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   313
COmxILFileSourceProcessingFunction::CFileSourceAccess::CFileSourceAccess(COmxILFileSourceProcessingFunction& aParent)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   314
	: CActive(EPriorityStandard),
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   315
	iParent(aParent),
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   316
	iBufferOffset(0),
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   317
	iReadBuffer(0,0)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   318
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   319
	CActiveScheduler::Add(this);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   320
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   321
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   322
void COmxILFileSourceProcessingFunction::CFileSourceAccess::ConstructL()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   323
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   324
	User::LeaveIfError(iFs.Connect());
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   325
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   326
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   327
COmxILFileSourceProcessingFunction::CFileSourceAccess::~CFileSourceAccess()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   328
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   329
	Cancel();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   330
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   331
	iFileHandle.Close();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   332
	iFs.Close();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   333
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   334
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   335
void COmxILFileSourceProcessingFunction::CFileSourceAccess::RunL()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   336
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   337
	// The buffer is not on the list implies that they have already been flushed/spotted
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   338
	// via BufferFlushingIndication/BufferRemovalIndication
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   339
	TInt index = iParent.iBuffersToFill.Find(iCurrentBuffer);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   340
	if (KErrNotFound != index)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   341
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   342
		switch(iStatus.Int())
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   343
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   344
			case KErrNone:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   345
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   346
				if (iReadBuffer.Length()==0) //the end of the file
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   347
				    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   348
				    iFileHandle.Close();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   349
				    iCurrentBuffer->nFlags |= OMX_BUFFERFLAG_EOS;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   350
				    iParent.GetCallbacks().EventNotification(OMX_EventBufferFlag, iCurrentBuffer->nOutputPortIndex, OMX_BUFFERFLAG_EOS, NULL);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   351
				    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   352
				iCurrentBuffer->nFilledLen=iReadBuffer.Length();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   353
				iCurrentBuffer->nOffset = 0;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   354
				break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   355
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   356
			default:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   357
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   358
				User::Leave(iStatus.Int());
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   359
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   360
			};
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   361
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   362
		iParent.GetCallbacks().BufferDoneNotification(iCurrentBuffer,iCurrentBuffer->nOutputPortIndex,OMX_DirOutput);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   363
		iParent.iBuffersToFill.Remove(index);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   364
		iCurrentBuffer = NULL;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   365
		if(iFileHandle.SubSessionHandle() != 0)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   366
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   367
			ProcessNextBuffer();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   368
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   369
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   370
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   371
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   372
TInt COmxILFileSourceProcessingFunction::CFileSourceAccess::ProcessNextBuffer()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   373
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   374
	TInt err = KErrNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   375
	if ((iParent.iBuffersToFill.Count() > 0) && !IsActive() && iParent.iState == OMX_StateExecuting)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   376
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   377
		iCurrentBuffer = iParent.iBuffersToFill[0];
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   378
		iReadBuffer.Set(iCurrentBuffer->pBuffer, iCurrentBuffer->nAllocLen, iCurrentBuffer->nAllocLen);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   379
        if (iFileHandle.SubSessionHandle() == 0)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   380
            { 
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   381
            SetActive();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   382
            TRequestStatus* status(&iStatus);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   383
            User::RequestComplete(status, KErrNone);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   384
            }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   385
        else
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   386
            {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   387
            iFileHandle.Read(iReadBuffer, iCurrentBuffer->nAllocLen, iStatus);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   388
            SetActive();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   389
            }					
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   390
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   391
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   392
	return err;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   393
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   394
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   395
void COmxILFileSourceProcessingFunction::CFileSourceAccess::DoCancel()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   396
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   397
	if (iFileHandle.SubSessionHandle() != 0)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   398
	    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   399
	    iFileHandle.Close();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   400
	    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   401
	iCurrentBuffer = NULL;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   402
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   403
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   404
TInt COmxILFileSourceProcessingFunction::CFileSourceAccess::Execute()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   405
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   406
	iParent.iState = OMX_StateExecuting;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   407
	return ProcessNextBuffer();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   408
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   409
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   410
void COmxILFileSourceProcessingFunction::CFileSourceAccess::Pause()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   411
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   412
	iParent.iState = OMX_StatePause;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   413
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   414
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   415
void COmxILFileSourceProcessingFunction::CFileSourceAccess::Idle()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   416
    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   417
    iParent.iState = OMX_StateIdle;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   418
    iParent.iBuffersToFill.Reset();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   419
    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   420
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   421
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   422
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   423
void COmxILFileSourceProcessingFunction::CFileSourceAccess::Stop()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   424
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   425
	if(iParent.iState == OMX_StateExecuting || iParent.iState == OMX_StatePause)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   426
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   427
		Cancel();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   428
		iParent.iState = OMX_StateIdle;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   429
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   430
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   431
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   432
COmxILFileSourceProcessingFunction::CPFHelper* COmxILFileSourceProcessingFunction::CPFHelper::NewL(COmxILFileSourceProcessingFunction& aParent, CFileSourceAccess& aFileSourceAccess)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   433
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   434
	CPFHelper* self = new (ELeave) CPFHelper(aParent, aFileSourceAccess);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   435
	CleanupStack::PushL(self);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   436
	self->ConstructL();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   437
	CleanupStack::Pop(self);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   438
	return self;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   439
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   440
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   441
COmxILFileSourceProcessingFunction::CPFHelper::CPFHelper(COmxILFileSourceProcessingFunction& aParent, CFileSourceAccess& aFileSourceAccess)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   442
: CActive(EPriorityStandard),
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   443
  iParent(aParent),
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   444
  iFileSourceAccess(aFileSourceAccess)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   445
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   446
	CActiveScheduler::Add(this);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   447
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   448
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   449
void COmxILFileSourceProcessingFunction::CPFHelper::ConstructL()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   450
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   451
	User::LeaveIfError(iMsgQueue.CreateLocal(KMaxMsgQueueEntries));
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   452
	SetActive();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   453
	iMsgQueue.NotifyDataAvailable(iStatus);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   454
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   455
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   456
COmxILFileSourceProcessingFunction::CPFHelper::~CPFHelper()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   457
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   458
	Cancel();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   459
	iMsgQueue.Close();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   460
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   461
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   462
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   463
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   464
void COmxILFileSourceProcessingFunction::CPFHelper::RunL()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   465
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   466
	TInt err = ProcessQueue();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   467
	if (err != KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   468
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   469
		iParent.GetCallbacks().ErrorEventNotification( ConvertSymbianErrorType(err) );
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   470
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   471
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   472
	// setup for next callbacks
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   473
	SetActive();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   474
	iMsgQueue.NotifyDataAvailable(iStatus);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   475
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   476
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   477
void COmxILFileSourceProcessingFunction::CPFHelper::DoCancel()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   478
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   479
	if (iMsgQueue.Handle())
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   480
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   481
		ProcessQueue();	
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   482
		iMsgQueue.CancelDataAvailable();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   483
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   484
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   485
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   486
TInt COmxILFileSourceProcessingFunction::CPFHelper::ProcessQueue()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   487
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   488
	TProcMessage msg;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   489
	TInt err = KErrNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   490
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   491
	while (iMsgQueue.Receive(msg) == KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   492
		{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   493
		switch (msg.iType)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   494
			{			
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   495
			case EExecuteCommand:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   496
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   497
                const HBufC* fileName = iParent.FileName();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   498
	            if (fileName && iFileSourceAccess.iFileHandle.SubSessionHandle() == 0)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   499
                    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   500
                    err = iFileSourceAccess.iFileHandle.Open(iFileSourceAccess.iFs, *fileName, EFileRead | EFileShareReadersOnly);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   501
                    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   502
	               else
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   503
	                    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   504
//#define KHRONOS_CONFORMANCE 
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   505
// The KHRONOS_CONFORMANCE is required to pass the following khronos conformance component tests (FlushTest,
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   506
// BaseMultiThreadedTest, StateTransitionTest, PortDisableEnableTest, IncompleteStopTest and PortCommunicationTest)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   507
// that expects no error to be returned when a filesource filename is not set. 
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   508
	               
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   509
#ifdef KHRONOS_CONFORMANCE  
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   510
// do nothing, don't report any error
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   511
#else
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   512
	                    err =  KErrPathNotFound;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   513
#endif
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   514
	                    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   515
                if ( err == KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   516
                    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   517
                    err = iFileSourceAccess.Execute();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   518
                    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   519
				break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   520
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   521
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   522
			case EStopCommand:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   523
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   524
				iFileSourceAccess.Stop();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   525
				break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   526
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   527
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   528
			case EPauseCommand:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   529
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   530
				iFileSourceAccess.Pause();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   531
				break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   532
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   533
				
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   534
			case EIdleCommand:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   535
			    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   536
			    iFileSourceAccess.Idle();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   537
			    break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   538
			    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   539
			case EBufferIndication:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   540
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   541
				OMX_BUFFERHEADERTYPE* bufferHeader = reinterpret_cast<OMX_BUFFERHEADERTYPE*>(msg.iPtr);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   542
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   543
				if ( bufferHeader && (iParent.iState == OMX_StateExecuting || 
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   544
				        iParent.iState == OMX_StatePause || iParent.iState == OMX_StateIdle) )
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   545
					{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   546
					err = iParent.iBuffersToFill.Append(bufferHeader);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   547
					if(err == KErrNone)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   548
						{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   549
						if(iParent.iState != OMX_StateIdle)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   550
						    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   551
						    err = iFileSourceAccess.ProcessNextBuffer();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   552
						    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   553
						}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   554
					else
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   555
					    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   556
					    // to prevent potential buffer leakage if the Append operation fails 
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   557
					    iParent.GetCallbacks().BufferDoneNotification(bufferHeader, bufferHeader->nOutputPortIndex,OMX_DirOutput);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   558
					    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   559
					}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   560
				break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   561
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   562
			default:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   563
				{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   564
				break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   565
				}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   566
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   567
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   568
		if (err)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   569
			{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   570
			break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   571
			}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   572
		}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   573
	return err;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   574
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   575
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   576
TInt COmxILFileSourceProcessingFunction::CPFHelper::ExecuteAsync()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   577
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   578
	TProcMessage message;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   579
	message.iType = EExecuteCommand;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   580
	return iMsgQueue.Send(message);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   581
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   582
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   583
TInt COmxILFileSourceProcessingFunction::CPFHelper::StopAsync()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   584
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   585
	TProcMessage message;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   586
	message.iType = EStopCommand;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   587
	return iMsgQueue.Send(message);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   588
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   589
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   590
TInt COmxILFileSourceProcessingFunction::CPFHelper::PauseAsync()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   591
    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   592
    TProcMessage message;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   593
    message.iType = EPauseCommand;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   594
    return iMsgQueue.Send(message);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   595
    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   596
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   597
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   598
TInt COmxILFileSourceProcessingFunction::CPFHelper::BufferIndication(OMX_BUFFERHEADERTYPE* apBufferHeader)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   599
	{
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   600
	TProcMessage message;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   601
	message.iType = EBufferIndication;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   602
	message.iPtr = apBufferHeader;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   603
	return iMsgQueue.Send(message);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   604
	}
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   605
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   606
void COmxILFileSourceProcessingFunction::CPFHelper::StopSync()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   607
    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   608
    // Cancel to process the existing queue before handling this command
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   609
    Cancel();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   610
    iFileSourceAccess.Stop();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   611
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   612
    // setup for next callbacks
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   613
    SetActive();
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   614
    iMsgQueue.NotifyDataAvailable(iStatus);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   615
    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   616
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   617
TInt COmxILFileSourceProcessingFunction::CPFHelper::IdleAsync()
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   618
    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   619
    TProcMessage message;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   620
    message.iType = EIdleCommand;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   621
    return iMsgQueue.Send(message);
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   622
    }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   623
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   624
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   625
/**
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   626
 Converts a Symbian error code to an OpenMAX error code.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   627
 @param     aError The Symbian error code.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   628
 @return    The OpenMAX error code.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   629
 */
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   630
OMX_ERRORTYPE COmxILFileSourceProcessingFunction::CPFHelper::ConvertSymbianErrorType(TInt aError)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   631
    {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   632
    // In the current implementation this function is only used for the return code in the 
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   633
    // callback methods. Currently the only expected errors KErrNone and KErrOverflow.
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   634
    
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   635
    OMX_ERRORTYPE err = OMX_ErrorNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   636
    switch (aError)
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   637
        {
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   638
    case KErrNone:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   639
        err = OMX_ErrorNone;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   640
        break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   641
    case KErrOverflow:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   642
    case KErrNoMemory:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   643
        err = OMX_ErrorInsufficientResources;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   644
        break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   645
    case KErrNotSupported:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   646
        err = OMX_ErrorNotImplemented;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   647
        break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   648
    case KErrNotReady:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   649
        err = OMX_ErrorNotReady;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   650
        break;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   651
    case KErrGeneral:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   652
    default:
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   653
        err = OMX_ErrorUndefined;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   654
        }
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   655
    return err;
eedf2dcd43c6 Implementation of OpenMAX-IL with SHAI
Jeremy Murray-Wakefield <jeremy.murray-wakefield@nokia.com>
parents:
diff changeset
   656
    }