/* Copyright (c) MediaArea.net SARL. All Rights Reserved. * * Use of this source code is governed by a BSD-style license that can * be found in the License.html file in the root of the source tree. */ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // // Microsoft Visual J# wrapper for MediaInfo Library // See MediaInfo.h for help // // To make it working, you must put MediaInfo.Dll // in the executable folder // // Warning : not tested with J# 64-bit, will not work! // //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ import System.Runtime.InteropServices.*; import System.IntPtr; public enum StreamKind { General, Visual, Audio, Text, Other, Image, Menu, Max } public enum InfoKind { Name, Text, Measure, Options, NameText, MeasureText, Info, HowTo, Max } public enum InfoOptions { ShowInInform, Reserved, ShowInSupported, TypeOfValue, Max } public class MediaInfo { /**@attribute DllImport("MediaInfo.dll")*/ public static native IntPtr MediaInfo_New(); /**@attribute DllImport("MediaInfo.dll")*/ public static native void MediaInfo_Delete(IntPtr Handle); /**@attribute DllImport("MediaInfo.dll")*/ public static native int MediaInfo_Open(IntPtr Handle, /** @attribute MarshalAs(UnmanagedType.LPWStr)*/ String File); /**@attribute DllImport("MediaInfo.dll")*/ public static native void MediaInfo_Close(IntPtr Handle); /**@attribute DllImport("MediaInfo.dll")*/ public static native IntPtr MediaInfo_Inform(IntPtr Handle, int Options); //WARNING : This is a wchar* value /**@attribute DllImport("MediaInfo.dll")*/ public static native IntPtr MediaInfo_GetI(IntPtr Handle, StreamKind StreamKind, int StreamNumber, int Parameter, InfoKind KindOfInfo); //WARNING : This is a wchar* value, see MediaInfoDLL.h for enumeration values /**@attribute DllImport("MediaInfo.dll")*/ public static native IntPtr MediaInfo_Get(IntPtr Handle, StreamKind StreamKind, int StreamNumber, /** @attribute MarshalAs(UnmanagedType.LPWStr)*/ String Parameter, InfoKind KindOfInfo, InfoKind KindOfSearch); //WARNING : This is a wchar* value, see MediaInfoDLL.h for enumeration values /**@attribute DllImport("MediaInfo.dll")*/ public static native IntPtr MediaInfo_Option(IntPtr Handle, /** @attribute MarshalAs(UnmanagedType.LPWStr)*/ String Option, /** @attribute MarshalAs(UnmanagedType.LPWStr)*/ String Value); //WARNING : This is a wchar* value, see MediaInfoDLL.h for enumeration values /**@attribute DllImport("MediaInfo.dll")*/ public static native int MediaInfo_State_Get(IntPtr Handle); //see MediaInfoDLL.h for details /**@attribute DllImport("MediaInfo.dll")*/ public static native int MediaInfo_Count_Get(IntPtr Handle, StreamKind StreamKind, int StreamNumber); //see MediaInfoDLL.h for enumeration values //MediaInfo class public MediaInfo() { Handle = MediaInfo_New(); } void Dispose(boolean disposing) { MediaInfo_Delete(Handle); } public int Open(String FileName) { return MediaInfo_Open(Handle, FileName); } public void Close() { MediaInfo_Close(Handle); } public String Inform() { return Marshal.PtrToStringUni(MediaInfo_Inform(Handle, 0)); } public String Get(StreamKind StreamKind, int StreamNumber, String Parameter, InfoKind KindOfInfo, InfoKind KindOfSearch) { return Marshal.PtrToStringUni(MediaInfo_Get(Handle, StreamKind, StreamNumber, Parameter, KindOfInfo, KindOfSearch)); } public String Get(StreamKind StreamKind, int StreamNumber, int Parameter, InfoKind KindOfInfo) { return Marshal.PtrToStringUni(MediaInfo_GetI(Handle, StreamKind, StreamNumber, Parameter, KindOfInfo)); } public String Option(String Option, String Value) { return Marshal.PtrToStringUni(MediaInfo_Option(Handle, Option, Value)); } public int State_Get() { return MediaInfo_State_Get(Handle); } public int Count_Get(StreamKind StreamKind, int StreamNumber) { return MediaInfo_Count_Get(Handle, StreamKind, StreamNumber); } private IntPtr Handle; //Default values, if you know how to set default values in J#, say me public String Get(StreamKind StreamKind, int StreamNumber, String Parameter, InfoKind KindOfInfo) { return Get(StreamKind, StreamNumber, Parameter, KindOfInfo, InfoKind.Name); } public String Get(StreamKind StreamKind, int StreamNumber, String Parameter) { return Get(StreamKind, StreamNumber, Parameter, InfoKind.Text, InfoKind.Name); } public String Get(StreamKind StreamKind, int StreamNumber, int Parameter) { return Get(StreamKind, StreamNumber, Parameter, InfoKind.Text); } public String Option(String Option) { return Option(Option, ""); } public int Count_Get(StreamKind StreamKind) { return Count_Get(StreamKind, -1); } }