OSWMxfTool  VERSION V1.5 (2010-07-29)

This product is used by...

The OSWMxfTool
has been developed to solve a wide range of compatibility issues with MXF-Op1a-IMX files (MPEG-2, SDTV, 2..8 PCM-Tracks).

The key features of this product are:

Partial File Export allows to extract a (sub-)part of the input-MXF
correct Timecode-Problems works with MXF-header and/or MXF-Frame-Timecodes!
correct AspectRatio-Metadata-Problems MXF-header and/or MPEG-stream AspectRatio-information!
correct MXF-Problems solves several well known MXF-problems, like: "incomplete" files, undefinded/wrong length-metadata, wrong UMID-formats...
convert PCM-Audio-quantization  from X tracks @16,20,24Bits to Y tracks @16,24Bits.


Some example use cases:
- Fix problems of eVTR MXF files
(MXF-header is "incomplete", Essence- and 1st frame-timecodes may contain different values, Essence-Timecode may be discontinous)

Solve compatibility issues between the following systems by using the OSWMxfTool during MXF-file-exchange:
- Sony eVTR
- Sony PDW-U1
- Sony PDW-HD1500
- Avid Transfer Manager
- Quantel editing systems/ enterprise solutions
- Apple Final Cut Pro

OSWMxfTool is a Win32-application (WinXP,Vista,Windows7, Win-Server 2003 and 2008; 32/64bit editions); Linux-Version on req.

The performance/throughput of the tool depends primarily on the disk-performance of the HW-platform.
With a standard SATA-disk one can expect >5x play-rate, with a RAID-system >15x play-rate (or more) is possible.


Here's the command-line interface of OSWMxfTool:

==================================================================
OSWMxfTool (Version: 1.5)
(c) 2010 by Originate Software GmbH
==================================================================
-USAGE_1: OSWMxfTool PFE "c:\folderA\inputFile.mxf" "c:\folderB\outputFile.mxf" fcIn fcOut -Mode:mode1,mode2,mode3...
-USAGE_2: OSWMxfTool WTF "c:\folderA\WatchfolderConfig.xml"

-Activation: OSWMxfTool ActivateSW

-MODE param strings:
 StartTCUseMxfHeaderAsRef => Use the 'MXF-Header-TC' as base for output-timecode (Default: Use Essence/Frame-TC!)
 StartTC=hh:mm:ss/ff => Use a custom start-TC value (25fps TC!).
 CorrectETC => Correct Essence-TC to new LINEAR timecode based on 'StartTC'.
 MidnightTCWrap => 23:59:59/24 + 1 frame = 00:00:00/00; Otherwise: 24:00:00/00
 Force169 => MXF-Header AND Essence: Set aspect-ratio metadata to 16:9.
 Force43 => MXF-Header AND Essence: Set aspect-ratio metadata to 4:3.
 AspectRatioUseMxfHeaderAsRef => Essence: Set aspect-ratio metadata to same value than in MXF-Header.
 ForceAudioTo4x16 => Convert PCM-data containers to 4 Tracks x 16 Bit
 ForceAudioTo8x16 => Convert PCM-data containers to 8 Tracks x 16 Bit
 ForceAudioTo4x24 => Convert PCM-data containers to 4 Tracks x 24 Bit
 ForceAudioTo8x24 => Convert PCM-data containers to 8 Tracks x 24 Bit
 InputAudioIgnoreChannelValidFlags => Ignore 'channel valid flags' (=try to read 8 PCM-values per sample)

 AddRIP => Add a 'Random Index Pack' to the output-MXF. (Not recommended)

 OutputWRUseTempFileMode1 => Add text-prefix 'ZZZ_' to the output-filename during MXF-writing!
 EnableMXFInfoOutputFile => Write an additional file with DEBUG info! (DO NOT USE IN PRODUCTION)
   <!> Please combine this option with: CorrectETC,ForceAudioTo8x16 <!>

This tool expects an input-MXF file of the following type:
Op1a IMX (MPEG-2, 30..50 MBit/s), PAL 25fps, Audio: 4x or 8x PCM



Example: Config-XML to define a filesystem-folder as a "watchfolder": 

 
<?xml version="1.0" encoding="utf-8" ?>
<!--
============================================================================
OSWMxfTool (V1.5+): Watchfolder-Config DEMO FILE

Remarks:
 1) The folder that will be monitored by the system has to be defined 
     in the <WatchfolderPath>-XML-node.
     -Local folder syntax: C:\myFolder
     -Network folder syntax (SMB): \\myServer\myFolder
     
 1b) A watchfolder (C:\myFolder) *may* contain 1..N subfolders, p.ex: 
        C:\myFolder\subfolderA, C:\myFolder\subfolderB
     You have to define which of these subfolders have to be monitored by this program (XML-node: <WatchfolderSubfolders>).
     Example:
	 <WatchfolderSubfolders>
			<Subfolder_0>subfolderA</Subfolder_0>
			<Subfolder_1>subfolderB</Subfolder_1>
	 </WatchfolderSubfolders>
     
	 If the program should process the contents of the main watchfolder (<WatchfolderPath>)
	 you have to add a special entry:
	    
	 <WatchfolderSubfolders>
			<Subfolder_0>@WTF_ROOT@</Subfolder_0>
			...
	 </WatchfolderSubfolders>

 
 2) Up to 100 "FileGroups" can be specified (FileGroup_0 .. FileGroup_99).
     The watchfolder-logic is checking each detected file for a 
     "FileNamePattern"-match (AND, when necessary: "SubfolderNamePattern"-match) by traversing all FileGroup_X specifications
     in NUMERIC ORDER.
     The first FileGroup-specification that matches, will be used to process the input-file.
     
 2a) Regular expression examples:
 	a1) All files with name-pattern: *.mxl  (p.ex: hello.mxf, fileA122-32.mxf)
 		=> RegExp: ^[\w\d\s_-]*\.mxf
 	a2) All files with name-pattern:  ABC_1234.mxf (p.ex: ABC_0000.mxf, ABC_2222.mxf)
 		=> RegExp: ^ABC_\d\d\d\d\.mxf
 	
	a3) Syntax parts:
		\w : "word character" (A-Z,a-z)
		\d : "digit" (0-9)
		\. : the "." character (needs to be "escaped" with a \, like other special-chars: * $ { } [ ] .)
		[a-z]  : any character in the char-set (a,b...,z).
		[a-z]* : 0..N times "any character in the char-set (a,b,..,z)"    
		[a-z]{2,5} : 2..5 times "any character in the char-set (a,b,..,z)"    

		^ : The regular expression has to "hit" the beginning of the string  
     
     a4) For more info: 
     http://www.radsoftware.com.au/articles/regexlearnsyntax.aspx
     

 3.) FileReadyDetectionLogic
 3a) OSW.MXF-IMX.FileHasMxfFooter : MXF-file contains a valid footer; 
      therefore: High probability that the MXF-processing will work
      
 3b) OSW.FileSizeNotGrowing : Checks if the size (in bytes) of the input-file
      has not grown during the last 30+ seconds.


 4.) "Actions":
 4a) Fcn:  OSW.MXF-IMX.PFE_ProcessAllFrames
     FcnParam0: Mode-string(s)
     REM:  
 
 4b) Fcn: OSW.CopyFile
     FcnParam0: (not used)
     REM: Transfer a COPY of the input-file to the output-file/location.
     
 4c) Fcn: OSW.NoOperation
  	 FcnParam0: (not used)
  	 REM: No output-file is created; This action always returns "Success".
  	      Therefore this action will invoke the fcns in the "OnSuccess"-Block.
  
 4d) Fcn: OSW.FTPClient_Tx
 	 FcnParam0: FTP_Host=myFtpServer.com; FTP_Username=myUserName; FTP_Password=myPwd; FTP_UseStandardProxy=false; FTP_ReadWriteTimeoutMs=600000
 	 REM:
 	 This fcn will try to transfer the input-file to a FTP-server.
 	  

 4e) Useful 'text-variables'
   e1) in XML-node <OutputFile_FileName>:
		- @INPUTFILE_NAME@ : name (without extension) of input-file
		- @INPUTFILE_FULLNAME@ : name (with extension) of input-file
		
   e2) in XML-node <OutputFile_Folder>:
   		- @WATCHFOLDER_PATH@ : full path of main-watchfolder
   		- @SUBFOLDER_NAME@ : name of the subfolder where the input-file has been detected
      
 5.) "OnSuccess", "OnFailure"
     Depending on the completion status of the "Action"-fcn the watchfolder-logic
     executes the additional steps that are defined in these tags.
 5a) Empty-strings or missing-XML-tags mean: Do nothing!
 
 5b) "InputFile_MoveToFolder": Do a "MOVE"-filesys-operation on this file 
       (=fast, but does only work within the same drive, filesystem-tree; Otherwise this operation will fail!)
 5c) "InputFile_CopyToFolder": Do a "COPY"-filesys-operation on this file
       (=slower, but works between 2 drives or even 2 servers)
 5d) "InputFile_Delete": Run a "DELETE"-filesys-operation on this file
 
 5e) "OutputFile_Rename": Optionally renames the output-file after the successful transfer of the
     output-file into the OutputFile_Folder.

============================================================================
-->
 <OSWMxfTool>
 <WatchfolderConfig>
  <Name>Demo Watchfolder Config</Name>
  <LogFolder>C:\OSWMxfTool\Log</LogFolder>
  <RemoteCtrlPort>50000</RemoteCtrlPort>
  <AutoShutdownMode>0</AutoShutdownMode>
  <WatchfolderPath>C:\OSWMxfTool\Demo_Watchfolder</WatchfolderPath>
<WatchfolderSubfolders>
  <Subfolder_0>@WTF_ROOT@</Subfolder_0>
</WatchfolderSubfolders>
 <FileGroup_0>
  <FileNamePattern>^[\w\d\s_-]*\.mxf</FileNamePattern>
  <SubfolderNamePattern />
  <FileReadyDetectionLogic>OSW.MXF-IMX.FileHasMxfFooter</FileReadyDetectionLogic>
 <Action>
  <Fcn>OSW.MXF-IMX.PFE_ProcessAllFrames</Fcn>
  <FcnParam_0>CorrectETC,AspectRatioUseMxfHeaderAsRef,ForceAudioTo8x16,InputAudioIgnoreChannelValidFlags</FcnParam_0>
  <OutputFile_FileName>@INPUTFILE_NAME@_out.mxf</OutputFile_FileName>
  <OutputFile_Folder>C:\OSWMxfTool\Demo_Watchfolder_OUTPUT\OK\</OutputFile_Folder>
  </Action>
 <OnSuccess>
  <InputFile_MoveToFolder />
  <InputFile_CopyToFolder />
  <InputFile_Delete>true</InputFile_Delete>
  </OnSuccess>
 <OnFailure>
  <InputFile_MoveToFolder>C:\OSWMxfTool\Demo_Watchfolder_OUTPUT\NOK</InputFile_MoveToFolder>
  <InputFile_CopyToFolder />
  <InputFile_Delete>false</InputFile_Delete>
  </OnFailure>
  </FileGroup_0>
  <FileGroup_1>
  <FileNamePattern>^[\w\d\s_-]*\.xml</FileNamePattern>
  <SubfolderNamePattern>subfolderB</SubfolderNamePattern>
  <FileReadyDetectionLogic>OSW.FileSizeNotGrowing</FileReadyDetectionLogic>
 <Action>
  <Fcn>OSW.CopyFile</Fcn>
  <FcnParam_0 />
  <OutputFile_FileName>@INPUTFILE_FULLNAME@</OutputFile_FileName>
  <OutputFile_Folder>C:\OSWMxfTool\Demo_Watchfolder_OUTPUT\OK\</OutputFile_Folder>
  </Action>
 <OnSuccess>
  <InputFile_CopyToFolder />
  <InputFile_Delete>true</InputFile_Delete>
  </OnSuccess>
 <OnFailure>
  <InputFile_MoveToFolder>C:\OSWMxfTool\Demo_Watchfolder_OUTPUT\NOK\</InputFile_MoveToFolder>
  </OnFailure>
  </FileGroup_1>
  </WatchfolderConfig>
  </OSWMxfTool>



Option:  OSWMxfTool_Admin_UI (web/silverlight-based):
Displays/ controls the activity of 1..N OSWMxfTool-agent-EXEs.





Interested?
Please contact Originate Software GmbH  for additional information and license cost.