mmplugins/lib3gp/impl/src/file.cpp
branchRCL_3
changeset 11 d5f04de580b7
parent 7 94dbab0a2133
child 23 545d349d14da
--- a/mmplugins/lib3gp/impl/src/file.cpp	Mon Mar 15 12:46:07 2010 +0200
+++ b/mmplugins/lib3gp/impl/src/file.cpp	Wed Mar 31 23:56:23 2010 +0300
@@ -1758,4 +1758,48 @@
 }
 
 
+TInt RecommendedBufferSize(MP4HandleImp aHandle)
+	{
+	TInt recommendedSize = READBUFSIZE;
+	
+    MP4HandleImp handle = (MP4HandleImp)aHandle;
+    if (handle)
+    	{
+		// handle->rfile will be set in the cases of
+		// - MP4ParseOpen(MP4FileName) <if the filename is set>
+		// - MP4ParseOpenFileHandle64(RFile64)
+		// - MP4ParseOpenFileHandle(RFile) <via MP4ParseOpenFileHandle64()>
+		//
+		// It will not be set by MP4ParseOpenCAF()
+
+		RFs* fs = (RFs*)handle->fs;
+		RFile64* file64 = (RFile64*)handle->rfile;
+		
+		if (fs && file64)
+			{
+			TInt driveNumber = 0;
+			TDriveInfo driveInfo;
+			TVolumeIOParamInfo volumeInfo;
+			
+			TInt err = file64->Drive(driveNumber, driveInfo);
+			if (err == KErrNone)
+				{
+				err = fs->VolumeIOParam(driveNumber, volumeInfo);
+				}
+			
+			if (err == KErrNone)
+				{
+				if (volumeInfo.iRecReadBufSize != KErrNotSupported)
+					{
+					recommendedSize = Max(recommendedSize, volumeInfo.iRecReadBufSize);
+					}
+				}
+				
+			}
+    	}
+
+    return recommendedSize;
+	}
+	
+
 // End of File