![]() |
![]() |
![]() |
The "new" procedure |
This procedure only works if codecs implementing the new CUniCodec
API are present on the device. Such codecs come with a class CUniCodecList
, a convenient API for obtaining information about the codecs present on the device.
To obtain a CUniCodecList
object, proceed as follows:
RLibrary dll; _LIT(KUfcodecDllName, "\\System\\Unifep\\Ufcodec.dll"); TInt err = dll.Load(KUfcodecDllName); if (err == KErrNotFound) { // New API not present - suggest to user to upgrade, // or fall back on old API // ... } else { User::LeaveIfError(err); TLibraryFunction entry = dll.Lookup(1); CUniCodecList *list = (CUniCodecList *) ((*entry)()); User::LeaveIfNull(list); CleanupStack::PushL(list); list->ConstructL(CEikonEnv::Static()->FsSession()); // ... use the list object ... CleanupStack::PopAndDestroy(); // list dll.Close(); }Of course,
dll
and list
would likely be members of one of your classes, typically the AppUi class.
Once a CUniCodecList
object is available, you can easily search for codecs by UID or MIME-name. You can also use the object itself as the parameter for CEikChoiceList::SetArrayL
if you wish to allow the user to select an encoding from all available ones. (Don't forget to call CEikChoiceList::SetArrayExternalOwnership(ETrue)
to avoid destruction of the codec list by the choice list.)
CUniCodecList
obtains its information from codec information files (CIF files) in \system\unifep\encoding
. A CIF file lists a number of encodings with their MIME names, a long name (for presentation to the user), and a reference to the DLL that implements the encoding, with the export number to be used. The format is not formally documented, and future versions may include more information.
![]() |
![]() |
![]() |
The "new" procedure |