L_GetExtensionAudio

#include "l_bitmap.h"

L_INT EXT_FUNCTION L_GetExtensionAudio(pExtensionList, nIndex, ppBuffer, puSize)

pEXTENSIONLIST pExtensionList;

/* pointer to a structure */

L_INT nIndex;

/* audio stream index */

L_UCHAR L_FAR * L_FAR * ppBuffer;

/* pointer to a buffer */

L_UINT L_FAR *puSize;

/* pointer to a variable to be updated */

Gets the embedded audio data from the specified extension list.

Parameter

Description

pExtensionList

Pointer to the EXTENSIONLIST structure that contains the audio data to get.

nIndex

Index of the audio stream to retrieve. The extensions may have more than one audio stream. This index is 0-based. Therefore, the first stream is stream 0, the second stream is stream 1, etc. To retrieve all the audio streams, retrieve the streams one by one until an error is returned.

ppBuffer

Pointer to be updated with a pointer to the retrieved audio data. This pointer will point into the pExtensionList. Therefore, this pointer will be valid as long as pExtensionList is valid. The memory will be freed when L_FreeExtensions is called, so do not try to free this memory.

puSize

Pointer to a variable to be updated with the size of the audio data.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

The audio data is stored inside extensions in the WAVE format. The audio data can be played directly from memory, or the data can be written to a disk file and played from the disk. When writing the audio data to a disk file, give the file a .WAV extension.

Required DLLs and Libraries

LTFIL
Exif file format DLLs

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.

Platforms

Windows 95 / 98 / Me, Windows 2000 / XP, Windows CE.

See Also

Functions:

L_ReadFileExtensions, L_LoadExtensionStamp, L_FreeExtensions, L_ReadFileStamp

Topics:

Raster Image Functions: Getting and Setting File Information

 

Exif File Extensions

 

Implementing Exif Features

Example

static L_INT LoadExtensionStamp(HWND hWnd, L_TCHAR L_FAR* pszName, pBITMAPHANDLE pBitmap)
{
pEXTENSIONLIST pExtensionList;
L_INT nRet;
L_TCHAR s[300];

nRet = L_ReadFileExtensions(pszName, &pExtensionList, NULL);
if(nRet != SUCCESS)
{
wsprintf(s, TEXT("Error %d getting extensions!"), nRet);
MessageBox(hWnd, s, TEXT("ERROR"), MB_OK);
return nRet;
}

if(pExtensionList->uFlags & EXTENSION_AUDIO)
{
L_UCHAR L_FAR*pAudioData;
L_UINT uSize;

nRet = L_GetExtensionAudio(pExtensionList, 0, &pAudioData, &uSize);
if(nRet != SUCCESS)
{
wsprintf(s, TEXT("Error %d getting the audio data"), nRet);
MessageBox(hWnd, s, TEXT("ERROR"), MB_OK);
}
else
{
#ifdef UNICODE

fd = _wfopen(TEXT("c:\\temp\\exif.wav"), TEXT("wb"));

#else

fd = fopen("c:\\temp\\exif.wav", "wb");

#endif

if(fd)
{
fwrite(pAudioData, uSize, 1, fd);
fclose(fd);
}
}
}

L_FreeExtensions
(pExtensionList);
return SUCCESS;
}