mmlibs/mmfw/Recogniser/src/aacparser.cpp
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
#include "constants.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
#include "parsers.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
// The length of the frame in written directly into the header.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
// It is 13 bits in length and spans 3 bytes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#define AAC_SYNC1_MASK				0xff	// 11111111
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#define AAC_SYNC2_MASK				0xf0	// 11110000
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#define AAC_FRAME_LENGTH_MASK1		0x03	// 00000011
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#define AAC_FRAME_LENGTH_MASK2		0xff	// 11111111
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#define AAC_FRAME_LENGTH_MASK3		0xe0	// 11100000
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
#define AAC_LAYER_MASK				0x06	// 00000110
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#define AAC_GET_SYNC1(d)	(d)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
#define AAC_GET_SYNC2(d)	((d & AAC_SYNC2_MASK) >> 4)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#define AAC_GET_LAYER(d)	(((d) & AAC_LAYER_MASK) >> 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
#define AAC_GET_FRAME_LENGTH(a, b, c) \
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
							(((a) & AAC_FRAME_LENGTH_MASK1) << 11) | \
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
							(((b) & AAC_FRAME_LENGTH_MASK2) << 03) | \
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
							(((c) & AAC_FRAME_LENGTH_MASK3) >> 05)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
							
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
#define AAC_IS_BAD_SYNC1(s)			((s) != 0xff)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
#define AAC_IS_BAD_SYNC2(s)			((s) != 0x0f)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
#define AAC_IS_BAD_LAYER(l)			((l) != 0x00)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
#define AAC_IS_BAD_FRAME_LENGTH(l)	((l) < KAACFrameHeaderSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
// The various states the recognition process goes through.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
typedef enum
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
	ESearchFrame1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
	ESearchFrame2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
TAACState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
// This truth table maps the following flags to a confidence level.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
// A: Extension identified.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
// B: Frame1 found.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
// C: Frame2 found.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
// C B A -> Confidence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
// ===================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
// 0 0 0 -> ENotRecognised
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
// 0 0 1 -> EPossible
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
// 0 1 0 -> EProbable
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
// 0 1 1 -> ECertain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
// 1 0 0 -> ENotRecognised (Can't have f2 without f1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
// 1 0 1 -> ENotRecognised (Can't have f2 without f1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
// 1 1 0 -> EProbable
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
// 1 1 1 -> ECertain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
static const TInt KAACFlagsToConfidence[8] =
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
	KConfNotRecognised,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	KConfPossible,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
	KConfProbable,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
	KConfCertain,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
	KConfNotRecognised,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
	KConfNotRecognised,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
	KConfProbable,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
	KConfCertain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
#define KAACConfidenceMask	0x07	// [0000 0111]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
#define KAACFrame1Bit		KBit1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
#define KAACFrame2Bit		KBit2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
// Constructs a TAACParser on the stack.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
TAACParser::TAACParser(CReader& aReader, TFlags& aFlags)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
 :	iReader(aReader),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
 	iFlags(aFlags)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
void TAACParser::DoRecognise(const TDesC& aFileExt, CReader& aReader, TMatch& aMatch)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	TFlags flags;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
	TBool extMatch;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
	// See if the extension is recognised.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
	extMatch = (aFileExt.MatchF(TPtrC(KExtAAC)) != KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	// Try to match a known header.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	if (aReader.Match(TPtrC8(_S8("ADIF*"))))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
		aMatch.iConfidence = (extMatch ? KConfCertain : KConfProbable);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
		aMatch.iMime = KMimeAAC;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	// No known header so try to parse it.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	// Parsing uses flags to track what has been identified.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
	if (extMatch)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
		flags.SetExtensionFlag();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
	TAACParser parser(aReader, flags);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	TRAP_IGNORE(parser.ParseL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
	TInt confIndex = flags.GetBitField(KAACConfidenceMask);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
	aMatch.iConfidence = KAACFlagsToConfidence[confIndex];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	if (aMatch.iConfidence != KConfNotRecognised)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
		aMatch.iMime = KMimeAAC;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
// Looks for valid AAC frame headers; at the current position
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
// and immediately after (if one found).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
void TAACParser::ParseL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
	TInt frameLength;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	TAACState state = ESearchFrame1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	// Check if it's an ADTS (raw) format AAC file.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	// There's no known metadata tag for AAC so the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	// first frame header should be at the start of the buffer.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
	FOREVER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
		TID3Parser::ReadAndSkipID3L(iReader);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
		TInt err = CheckForFrameHeaderL(frameLength);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
		if (err == KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
		switch (state)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
			case ESearchFrame1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
				iFlags.SetBit(KAACFrame1Bit);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
				state = ESearchFrame2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
			case ESearchFrame2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
				iFlags.SetBit(KAACFrame2Bit);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
				return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
		// Skip over the audio frame.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
		// This should be done after flags have been set.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
		iReader.SeekL(frameLength - KAACFrameHeaderSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
		};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
// Looks for valid AAC frame header bit patterns.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
// If one is not found KErrNotFound is returned and aFrameLength
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
// remains unchanged. If one is found KErrNone is retured and
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
// aFrameLength is set to the length of the frame.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
TInt TAACParser::CheckForFrameHeaderL(TInt& aFrameLength)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	TBuf8<KAACFrameHeaderSize> header;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
	header.SetLength(KAACFrameHeaderSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
	iReader.ReadBytesL(header);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
	do
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
		if (AAC_IS_BAD_SYNC1(AAC_GET_SYNC1(header[0])))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
		if (AAC_IS_BAD_SYNC2(AAC_GET_SYNC2(header[1])))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
		if (AAC_IS_BAD_LAYER(AAC_GET_LAYER(header[1])))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
		TInt frameLength = AAC_GET_FRAME_LENGTH(header[3], header[4], header[5]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
		if (AAC_IS_BAD_FRAME_LENGTH(frameLength))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
		// All is ok.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
		aFrameLength = frameLength;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
		return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
	while (EFalse);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
	// No frame header was found.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
	aFrameLength = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
	iReader.SeekL(-KAACFrameHeaderSize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
	return KErrNotFound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226