IPlayer.cs
Jump to navigation
Jump to search
This page contains example code for .Net Interface to VLC. This code is licensed under the GNU Lesser General public license |
/***************************************************************************** * IPlayer.cs: IPlayer, IPlayer2 interface definitions ***************************************************************************** * Copyright (C) 2006 Chris Meadowcroft * * Authors: Chris Meadowcroft * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ using System; using System.Drawing; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace VLanControl { [ComVisible(true)] [Guid("B5A4F6A1-B8C8-4f4f-B9CD-396DCDCAC4C3")] public struct TrackPosition : IComparable<TrackPosition> { public int time; public double position; public TrackPosition(int time, double position) { this.time = time; this.position = position; } public TrackPosition(TrackPosition other) { this.time = other.time; this.position = other.position; } #region IComparable<TrackPosition> Members public int CompareTo(TrackPosition other) { return this.time.CompareTo(other.time); } #endregion } [ComVisible(true)] public enum PlayerState { None = 0, Playing = 1, Paused = 2, } [ComVisible(true)] public enum MetaData { NowPlaying = 0, } public class MetaDataUpdateEventArgs : EventArgs { MetaData data; String text; public MetaDataUpdateEventArgs(MetaData data, String text) { this.data = data; this.text = text; } public MetaData Data { get { return this.data; } } public String Text { get { return this.text; } } } public delegate void MetaDataEventHandler(object sender, MetaDataUpdateEventArgs args); [ComVisible(true)] [Guid("2EA6BBFA-8BDE-4023-AEE8-916694614B25")] [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)] public interface IPlayer : IDisposable { bool Visible { get; set; } Control Parent { get; set; } Rectangle Bounds { get; set; } Point Location { get; set; } Size Size { get; set; } Size VideoSize { get; } int Time { get; } double Position { get; } void MoveToPosition(TrackPosition newTrackPosition); int Volume { get; set; } int Rate { get; set; } void GetRates(out int minRate, out int maxRate, out int normalRate); bool IsPlaying { get; } bool IsPaused { get; } bool IsMute { get; } int Length { get; set; } PlayerState State { get; } double TimeScaling { get; set; } void Play(); void ToggleMute(); void TogglePause(); void RotateSubtitles(); void RotateAudioTrack(); void RotateDeinterlaceMode(); void RotateAspectRatio(); void RotateCropModes(); bool UseMpegVbrOffset { get; set; } void CropTop(); void UnCropTop(); void CropBottom(); void UnCropBottom(); void CropLeft(); void UnCropLeft(); void CropRight(); void UnCropRight(); void NextDvdTrack(); void PreviousDvdTrack(); void NextDvdChapter(); void PreviousDvdChapter(); TrackPosition Shuttle(int offsetSeconds); void ClearPlayList(); int AddToPlayList(String fileName, String title, String[] options); void PlayItem(int index); void Stop(); } [ComVisible(true)] [Guid("5CCB86E4-FFD0-49a0-8805-EE16A79CED50")] [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)] public interface IPlayer2 : IPlayer { String DeinterlaceMode { get; set; } String AspectRatio { get; set; } String CropMode { get; set; } int CroppingLeft { get; set; } int CroppingRight { get; set; } int CroppingTop { get; set; } int CroppingBottom { get; set; } int AudioTrack { get; set; } int SubTitleTrack { get; set; } // in ms int AudioDelay { get; set; } int SubTitleDelay { get; set; } int ChapterCount { get; } int Chapter { get; set; } int Program { get; set; } bool AllowVideoAdjustments { get; set; } // needs to be on to allow Contrast, Brightness, etc. to be adjusted float Contrast { get; set; } // range from 0 to 2, default 1 float Brightness { get; set; } // range from 0 to 2, default 1 int Hue { get; set; } // range from 0 to 360, default 0 float Saturation { get; set; } // range from 0 to 3, default 1 float Gamma { get; set; } // range from .01 to 10, default 1 void AddAndPlay(String fileName, String options); String DeinterlaceModesAsString(); void DeinterlaceModes(out String[] choices, out String[] choiceText); String AspectRatiosAsString(); void AspectRatios(out String[] choices, out String[] choiceText); String CropModesAsString(); void CropModes(out String[] choices, out String[] choiceText); String AudioTracksAsString(); void AudioTracks(out int[] trackIds, out String[] trackNames); String SubTitleTracksAsString(); void SubTitleTracks(out int[] trackIds, out String[] trackNames); String ProgramsAsString(); void Programs(out int[] trackIds, out String[] trackNames); void DisplayMessage(String message); String GetConfigVariable(String name, String returnOnError); bool SetConfigVariable(String name, String value); void PrecomputeCrop(Size videoSize, int cropLeft, int cropRight, int cropTop, int cropBottom); bool ComputeCrop(); event MetaDataEventHandler NowPlaying; } }