VML Clip Player is a direct replacement for DirectShow Clip Player and an alternative to Matrox Clip Player. The main goal of VML Clip Player is to be able to play non-broadcast resolution while offering similar functionality and behavior to Matrox Clip Player.

In Matrox workflow, the user can choose the preferred clip player, between VML Clip Player and Matrox Clip Player via the following configuration (VerboseConfig must be set to 1):

Default clip player to be used for this channel. 0=Matrox 1=VML
ClipIn1.Player: Default=0 Min=0 Max=1
ClipIn1.Player = 0

The default preferred clip player in Matrox workflow is Matrox Clip Player. It is also possible to change the preferred clip player during run-time via the following command:

MAIN*CONFIGURATION*CHANNELS*CLIPIN_0*PLAYER SET VML
MAIN*CONFIGURATION*CHANNELS*CLIPIN_0*PLAYER SET MATROX

Feature Comparison between Clip Players

Not all functionalities are available for VML. The following is a feature comparison between the three different supported clip players:

Functionality

VML

Matrox 

DirectShow
(Viz 4.x and earlier)

Basic Functions (Play, Pause, Stop, Load, Scrub, Continue, Flush, Autorun)

(tick)

(tick)

(tick)

In and out setting and getting

(tick)

(tick)

(tick)

Loop playback

(tick)

(tick)

(tick)

3-point loop / 4-point loop

(tick)

(tick)

(error)

Upscale luma

(error)

(tick)

(error)

Repeat field

(tick)

(tick)

(error)

Reverse field

(tick)

(tick)

(error)

Playback speed

(tick)

(tick)

(tick)

Native pending support

(tick)

(tick)

(tick)

Embedded alpha format

(tick)

(tick)

(tick)

Multiple files (alpha / fill / audio / VBI files)

(error)

(tick)

(error)

Timecode

(tick)

(tick)

(error)

VBI Passthrough (to output)

(error)

(tick)

(error)

Timecode Passthrough (to output)

(error)

(tick)

(error)

CC Extraction

(error)

(tick)

(error)

Audio 

(tick)

(tick)

(error)

SHM key events

(tick)

(tick)

(tick)

Contiguous seek performance

(tick)

(tick)

(error)

DVE

(error) (1)

(tick)

(error) (1)

Playlist management (insert, remove, replace, etc.)

(tick)

(tick)

(error)

Mode on load error (pending)

(tick)

(tick)

(error)

V210 (10-bit support)

(tick)

(tick)

(error)

Broadcast clip status

(tick)

(tick)

(tick)

Replay mode (TDIR)

(tick)

(tick)

(error)

Growing files

(tick)

(tick)

(error)

Dealing with display aspect ratio

(tick)

(tick)

(error)

Delay audio and video

(error)

(tick)

(error)

Hardware-accelerated decoding

(tick) (4)

(tick) (2)

(error)

Mixed resolution mode

(tick) (3)

(tick) (3)

(tick) (3)

(1) Simulated DVE is supported.

(2) With an additional Matrox M264 board.

(3) With a slight difference in behavior documented below.

(4) With an NVIDIA GPU that supports NVDEC.

Mixed Resolution Mode in Matrox and VML Clip Player

Mixed resolution mode means playing clips with different resolution than the configured Viz Engine output resolution and/or the configured Viz Engine clip channel resolution. Matrox and VML clip player support the playback in mixed resolution. In Viz 4.x and earlier, Matrox clip player was already able to playback clips in mixed resolution, as long as the clips have the same framerate family as the output. However from Viz Engine 5.0 and later, Matrox clip player also support the playback of selected clips coming from smartphones with framerate family different than the configured Viz Engine output resolution. VML has always supported clips with framerate family different than the configured Viz Engine output resolution since its inception.

Even if both Matrox and VML clip players support mixed resolution, the following differences in behavior needs to be taken into account. This is referring only to mixed resolution in which the clip has the same framerate family as the configured Viz Engine output resolution.

Player

Output 

Channel 

Clip 

STATUS GET AT EOF

SCRUBBING

CONCLUSIONS

VML

p50

p50

p50

duration 1000
current_position 999
play_mode scrubbing EOF
file_name D:/clips_reference/1080p50/1080p50_Video_ProRes_Encoder_ProRes[ch=2 bits=24-32]_matrox.mov
frame_rate 50.00000000
markin 0
markout 1000
output_frame_rate 50.00000000

Exactly the same between Matrox and VML. (tick)

Exactly the same between Matrox and VML. (tick)

MATROX

p50

p50

p50

duration 1000
current_position 999
play_mode scrubbing EOF
file_name D:/clips_reference/1080p50/1080p50_Video_ProRes_Encoder_ProRes[ch=2 bits=24-32]_matrox.mov
frame_rate 50.00000000
markin 0
markout 1000
output_frame_rate 50.00000000

Exactly the same between Matrox and VML. (tick)

Exactly the same between Matrox and VML. (tick)

VML

p50

i25

p50

duration 1000
current_position 998
play_mode scrubbing EOF
file_name D:/clips_reference/1080p50/1080p50_Video_ProRes_Encoder_ProRes[ch=2 bits=24-32]_matrox.mov
frame_rate 50.00000000
markin 0
markout 1000
output_frame_rate 25.00000000

Matrox displayed is -1 compared to VML on scrubbing to 00:00:05:00. (error)

Matrox displayed last position is -1 compared to VML at scrubbing EOF. (error)

MATROX

p50

i25

p50

duration 1000
current_position 998
play_mode scrubbing EOF
file_name D:/clips_reference/1080p50/1080p50_Video_ProRes_Encoder_ProRes[ch=2 bits=24-32]_matrox.mov
frame_rate 50.00000000
markin 0
markout 1000
output_frame_rate 25.00000000

Matrox displayed is -1 compared to VML on scrubbing to 00:00:05:00. (error)

Matrox displayed last position is -1 compared to VML at scrubbing EOF. (error)

VML

p50

p50

i25

duration 2000
current_position 1999
play_mode scrubbing EOF
file_name D:/clips_reference/1080i50/1080i50_Video_AVC-Intra_Encoder_AVCIntraClass100[TimeCode] [VBI] [ch=2 bits=24-32]_avcintra.mxf
frame_rate 25.00000000
markin 0
markout 2000
output_frame_rate 50.00000000

Exactly the same between Matrox and VML. (tick)

Matrox displayed last position and Current Position is -1 compared to VML at scrubbing EOF. (error)

MATROX

p50

p50

i25

duration 2000
current_position 1998
play_mode scrubbing EOF
file_name D:/clips_reference/1080i50/1080i50_Video_AVC-Intra_Encoder_AVCIntraClass100[TimeCode] [VBI] [ch=2 bits=24-32]_avcintra.mxf
frame_rate 25.00000000
markin 0
markout 2000
output_frame_rate 50.00000000

Exactly the same between Matrox and VML. (tick)

Matrox displayed last position and "Current Position" is -1 compared to VML at scrubbing EOF. (error)

VML

p50

i25

p50

duration 2000
current_position 1998
play_mode scrubbing EOF
file_name D:/clips_reference/1080i50/1080i50_Video_AVC-Intra_Encoder_AVCIntraClass100[TimeCode] [VBI] [ch=2 bits=24-32]_avcintra.mxf
frame_rate 25.00000000
markin 0
markout 2000
output_frame_rate 25.00000000

Exactly the same between Matrox and VML. (tick)

Exactly the same between Matrox and VML. (tick)

MATROX

p50

i25

p50

duration 2000
current_position 1998
play_mode scrubbing EOF
file_name D:/clips_reference/1080i50/1080i50_Video_AVC-Intra_Encoder_AVCIntraClass100[TimeCode] [VBI] [ch=2 bits=24-32]_avcintra.mxf
frame_rate 25.00000000
markin 0
markout 2000
output_frame_rate 25.00000000

Exactly the same between Matrox and VML. (tick)

Exactly the same between Matrox and VML. (tick)

VML

i25

i25

i25

duration 1000
current_position 999
play_mode scrubbing EOF
file_name D:/clips_reference/1080i50/1080i50_Video_AVC-Intra_Encoder_AVCIntraClass100[TimeCode] [VBI] [ch=2 bits=24-32]_avcintra.mxf
frame_rate 25.00000000
markin 0
markout 1000
output_frame_rate 25.00000000

Exactly the same between Matrox and VML. (tick)

Exactly the same between Matrox and VML. (tick)

MATROX

i25

i25

i25

duration 1000
current_position 999
play_mode scrubbing EOF
file_name D:/clips_reference/1080i50/1080i50_Video_AVC-Intra_Encoder_AVCIntraClass100[TimeCode] [VBI] [ch=2 bits=24-32]_avcintra.mxf
frame_rate 25.00000000
markin 0
markout 1000
output_frame_rate 25.00000000

Exactly the same between Matrox and VML. (tick)

Exactly the same between Matrox and VML. (tick)

VML

i25

p50

i25

duration 1000
current_position 999
play_mode scrubbing EOF
file_name D:/clips_reference/1080i50/1080i50_Video_AVC-Intra_Encoder_AVCIntraClass100[TimeCode] [VBI] [ch=2 bits=24-32]_avcintra.mxf
frame_rate 25.00000000
markin 0
markout 1000
output_frame_rate 50.00000000

Exactly the same between Matrox and VML. (tick)

Matrox displayed last position is -1 compared to VML at scrubbing EOF. (error)

MATROX

i25

p50

i25

duration 1000
current_position 999
play_mode scrubbing EOF
file_name D:/clips_reference/1080i50/1080i50_Video_AVC-Intra_Encoder_AVCIntraClass100[TimeCode] [VBI] [ch=2 bits=24-32]_avcintra.mxf
frame_rate 25.00000000
markin 0
markout 1000
output_frame_rate 50.00000000

Exactly the same between Matrox and VML. (tick)

Matrox displayed last position is -1 compared to VML at scrubbing EOF. (error)

VML

i25

i25

p50

duration 500
current_position 499
play_mode scrubbing EOF
file_name D:/clips_reference/1080p50/1080p50_MPEG-2__MpegIFrame422ProfileHighLevel_422[bitrate=300].avi
frame_rate 50.00000000
markin 0
markout 500
output_frame_rate 25.00000000

Matrox displayed is -1 compared to VML on scrubbing to 00:00:05:00. (error)

Matrox displayed last position is -1 compared to VML at scrubbing EOF. (error)

MATROX

i25

i25

p50

duration 500
current_position 499
play_mode scrubbing EOF
file_name D:/clips_reference/1080p50/1080p50_MPEG-2__MpegIFrame422ProfileHighLevel_422[bitrate=300].avi
frame_rate 50.00000000
markin 0
markout 500
output_frame_rate 25.00000000

Matrox displayed is -1 compared to VML on scrubbing to 00:00:05:00. (error)

Matrox displayed last position is -1 compared to VML at scrubbing EOF. (error)

VML

i25

p50

p50

duration 500
current_position 499
play_mode scrubbing EOF
file_name D:/clips_reference/1080p50/1080p50_MPEG-2__MpegIFrame422ProfileHighLevel_422[bitrate=300].avi
frame_rate 50.00000000
markin 0
markout 500
output_frame_rate 50.00000000

Exactly the same between Matrox and VML. (tick)

Matrox Current Position (but not displayed one) is the same as duration but VML is duration -1. (error)

MATROX

i25

p50

p50

duration 500
current_position 500
play_mode scrubbing EOF
file_name D:/clips_reference/1080p50/1080p50_MPEG-2__MpegIFrame422ProfileHighLevel_422[bitrate=300].avi
frame_rate 50.00000000
markin 0
markout 500
output_frame_rate 50.00000000

Exactly the same between Matrox and VML. (tick)

Matrox Current Position (but not displayed one) is the same as duration but VML is duration -1. (error)

Non-broadcast Clip Support in Matrox and VML Clip Player

Broadcast clips are defined by their resolution (width and height), framerate, aspect ratio, scan mode and audio sample rate (48khz). The codec and format can also define a clip as broadcast clip. Examples of broadcast clips can be found in the Media Assets > Supported Codecs > Supported Codecs for Matrox Clip Playback section of the Viz Artist User Guide.

From Viz Engine version 5.0 and later, Matrox Clip Player also supports non-broadcast clips. These clips usually comes from smartphones. All of these clips are progressive resolution with non-broadcast resolution, aspect ratio, framerate and audio sample rate (41.1khz). The following needs to be taken into account regarding non-broadcast clip support in Matrox clip player:

  • Loading a clip with different framerate than the configured Viz Engine Output framerate, converts the clip framerate to the Viz Engine Output framerate.

  • DVE or Hybrid is not supported for non-broadcast clip.

  • Reverse playback might not be in real time.

  • Supported containers for non-broadcast clips are mostly .mov or .mp4.

VML Clip Player as a Fallback Clip Player

When using Matrox clip player as preferred clip player and the input clip is not supported, Viz Engine automatically tries to load the clip with VML clip player. However, this is not always possible, such as in the following case:

  • If the clip channel is configured as DVE or Hybrid.

When a clip channel is in fallback mode (using VML Clip Player) calling:

MAIN*CONFIGURATION*CHANNELS*CLIPIN_0*PLAYER GET

Still returns the original configuration. This is because this configuration means the preferred clip player to be used. If a clip is supported in Matrox clip player, then Matrox clip player is always the one used.

To know which clip player is being used at the moment the following command can be called:

MAIN_SCENE*VIDEO*CLIPIN*1*PLAYER GET

Calling this command after loading a clip tells you if a fallback has been triggered and VML is being used instead of Matrox Clip Player, if the preferred clip player is configured as Matrox Clip Player. If the preferred clip player is configured as VML, the command always returns VML.

The preferred clip player is always used first in an attempt to load a new clip. If the loads fails, then the fallback triggers. An example of a workflow if the preferred clip player is configured as Matrox Clip Player:

  • User tries to load a supported clip: Matrox Clip Player is used.

  • User then tries to load an unsupported clip: Matrox Clip Player is used first, Matrox Clip Player reports the clip is not supported, fallback triggers and VML Clip Player is instead used to load the clip.

  • User then tries to load a supported clip: Matrox Clip Player is used first (since it is the preferred clip player) in an attempt to load the clip.

The following warning messages should appear in the console when a fallback has triggered:

WARNING: Unable to open file with Matrox clip player (active). Attempting to open file with VML clip player.

WARNING: Unable to open file with Matrox clip player (pending). Attempting to open file with VML clip player.

Depending on whether the target clip player inside Matrox Clip Player is the active or pending one.

The following message also appears after a VML Clip Player has been used to load an unsupported clip and a new clip is about to be loaded in Matrox Clip Player:

WARNING: VML Clip Player was used to open an unsupported clip. Using Matrox Clip Player again as preferred clip player.

The messages are there to warn the user that a clip player switch has been performed.

Warning: Do not use clip fallback in stage workflow since it is not fully supported. The console also displays a warning when the pending clip player is the one failing to load a clip. Basic stage workflow which do not include back to back playback or 3-4 point loop work fine. If an unsupported clip is needed, then the best course of action is to change the preferred clip player of the clip channel to VML: ClipIn1.Player = 1.

The following warning appears in console when the pending clip player was used to attempt load a clip but failed:

WARNING: If this is part of a stage workflow (B2B, 3-4 point loop) clip fallback is not fully supported!!!

Clip Player AutoFormat

From Viz Engine version 5.1, VML and Matrox Clip Player automatically decides which format to use based on the clip characteristics. The following configurations are ignored when ClipInX.AutoFormat is enabled:

  • clip_bpcX

  • ClipInX.ContainsAlpha

  • ClipInX.UseV210

If for any reason the old behavior is needed, disable ClipInX.AutoFormat (for example, ClipInX.AutoFormat = 0).

Info: The stage b2b workflow does not work with Matrox Clip Player if two clips have different formats (for example, one clip has alpha and the next one does not). If this workflow is needed with Matrox Clip Player, disable the AutoFormat setting or use VML Clip Player as the default clip player.

VML Clip Player with NVDEC

It is possible to decode a clip using NVDEC. Depending on the NVIDIA GPU in use, there are different capabilities in terms of which codec can be decoded. This is an experimental feature and can be enabled in the configuration file:

## Allow using NVDEC to decode clips (experimental)
#* clip_use_NVDEC: Default=0
# clip_use_NVDEC = 0