Copyright © 2005-2019 MultiMedia Soft

VideoPlayer.LoadFromMemoryForEAX method

Previous pageReturn to chapter overviewNext page

Remarks

 

Loads a video clip stored inside a memory buffer converting the audio track to Mono for use with EAX effects. Depending upon the codec and the duration of the video clip to load, due to the fact that the loading is performed inside the main application's thread, the call to this method could cause a temporary freeze of the container application user interface: in order to avoid this issue, the use of the VideoPlayer.LoadFromMemorySyncForEAX method should be preferred.

 

Video loading and rendering is performed through DirectShow so, in order to load a certain video format (like MPEG, MP4, AVI, etc.) the specific codec must be available on the target system or calls to this method would fail. One of the best packages containing most audio and video codecs for DirectShow is K-Lite Codec Pack and can be downloaded for free from the following link.

 

IMPORTANT NOTE ABOUT CODECS AND WINDOWS 7: When dealing with Windows 7, also if you have installed K-Lite and configured ffdshow to manage a specific format (for example the MPEG-2 format or the H.264 format used in some MP4 video clip), DirectShow will continue using the default decoder named "Microsoft DTV-DVD Video Decoder": the quality of this decoder is quite poor and doesn't support the VMR-9 video renderer used for mixing/blending video clips so a call to this method could return back an error when the involved player has been added to a video mixer through the VideoPlayer.AttachToVideoMixer method; inside Appendix B you will find a few guidelines that could be of help in order to manage DirectShow configuration through K-Lite provided tools.

 

A successful call to this method invokes the CallbackForPlayersEvents delegate with the nEvent parameter set to EV_SOUND_LOADED.

 

When using a media format different from MEMORY_MEDIA_FORMAT_UNKNOWN, it's very important that the memory buffer containing the video clip is not deallocated and/or moved until the video clip is not closed through the VideoPlayer.Close method: deallocating and/or moving the memory buffer during playback could crash the container application. When using the MEMORY_MEDIA_FORMAT_UNKNOWN media format, also if the memory buffer is copied into a temporary file, you should in any case wait for the EV_SOUND_LOADED event before deallocating the buffer.

 

For further details about the use of the embedded video player see the VideoPlayer class section.

For details about video clips rendering refer to the How to play video files through DirectShow tutorial.

 

 

Syntax

 

[Visual Basic]

Public Function LoadFromMemoryForEAX (

nPlayerIndex as Int16,

pBuffer() as Byte,

nBufferLength as Int32,

nMediaFormat as enumMemoryMediaFormats

) as enumErrorCodes


 

[C#]

public enumErrorCodes LoadFromMemoryForEAX (

Int16 nPlayerIndex,

byte[] pBuffer,

Int32 nBufferLength,

enumMemoryMediaFormats nMediaFormat

);


 

[C++]

public: enumErrorCodes LoadFromMemoryForEAX (

Int16 nPlayerIndex,

unsigned char __gc[] pBuffer,

Int32 nBufferLength,

enumMemoryMediaFormats nMediaFormat

);


 

 

Parameter

Description

 

 

nPlayerIndex

Number representing the zero-based index of the player that will load the memory sound

pBuffer

Buffer containing sound data

nBufferLen

Length in bytes of the given buffer

nMediaFormat

Media format of the video clip stored inside the memory buffer.

Supported values are the following:

Mnemonic constant

Value

Meaning

MEMORY_MEDIA_FORMAT_UNKNOWN

0

The media format is unknown or is a format that doesn't allow creating a filter graph from a memory source (like WMV and MP4): in this case the memory buffer is always copied into a temporary file and the filter graph is created starting from the temporary file itself.

MEMORY_MEDIA_FORMAT_AVI

1

AVI format.

MEMORY_MEDIA_FORMAT_MPEG1

2

MPEG1 format

MEMORY_MEDIA_FORMAT_MPEG2

3

MPEG2 format

 

 

Return value

 

Value

Meaning

 

 

Negative value

An error occurred (see the LastError property for further error details)

enumErrorCodes.NOERROR (0)

The method call was successful.