/* * (C) 2006-2015 see Authors.txt * * This file is part of MPC-HC. * * MPC-HC is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * MPC-HC 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 General Public License * along with this program. If not, see . * */ /* This file defines commands used for "MPC-HC" API. To send commands to MPC-HC and receive playback notifications, first launch MPC-HC with the /slave command line argument followed by a HWnd handle used to receive notification: ..\bin\mpc-hc /slave 125421 After startup, MPC-HC sends a WM_COPYDATA message to host with COPYDATASTRUCT struct filled with: - dwData : CMD_CONNECT - lpData : Unicode string containing MPC-HC's main window handle To control MPC-HC, send WM_COPYDATA messages to Hwnd provided on connection. All messages should be formatted as null-terminated Unicode strings. For commands or notifications with multiple parameters, values are separated by |. If a string contains a |, it will be escaped with a \ so a \| is not a separator. Ex: When a file is opened, MPC-HC sends to host the "now playing" notification: - dwData : CMD_NOWPLAYING - lpData : title|author|description|filename|duration Ex: When a DVD is playing, use CMD_GETNOWPLAYING to get: - dwData : CMD_NOWPLAYING - lpData : dvddomain|titlenumber|numberofchapters|currentchapter|titleduration dvddomains: DVD - Stopped, DVD - FirstPlay, DVD - RootMenu, DVD - TitleMenu, DVD - Title */ #pragma once typedef enum MPC_LOADSTATE { MLS_CLOSED, MLS_LOADING, MLS_LOADED, MLS_CLOSING, MLS_FAILING, } MPC_LOADSTATE; typedef enum MPC_PLAYSTATE { PS_PLAY = 0, PS_PAUSE = 1, PS_STOP = 2, PS_UNUSED = 3 } MPC_PLAYSTATE; struct MPC_OSDDATA { int nMsgPos; // screen position constant (see OSD_MESSAGEPOS constants) int nDurationMS; // duration in milliseconds TCHAR strMsg[128]; // message to display in OSD }; // MPC_OSDDATA. nMsgPos constants (for host side programming): /* typedef enum { OSD_NOMESSAGE, OSD_TOPLEFT, OSD_TOPRIGHT } OSD_MESSAGEPOS; */ typedef enum MPCAPI_COMMAND : unsigned int { // ==== Commands from MPC-HC to host // Send after connection // Parameter 1: MPC-HC window handle (command should be sent to this HWnd) CMD_CONNECT = 0x50000000, // Send when opening or closing file // Parameter 1: current state (see MPC_LOADSTATE enum) CMD_STATE = 0x50000001, // Send when playing, pausing or closing file // Parameter 1: current play mode (see MPC_PLAYSTATE enum) CMD_PLAYMODE = 0x50000002, // Send after opening a new file // Parameter 1: title // Parameter 2: author // Parameter 3: description // Parameter 4: complete filename (path included) // Parameter 5: duration in seconds CMD_NOWPLAYING = 0x50000003, // List of subtitle tracks // Parameter 1: Subtitle track name 0 // Parameter 2: Subtitle track name 1 // ... // Parameter n: Active subtitle track, -1 if subtitles are disabled // // if no subtitle track present, returns -1 // if no file loaded, returns -2 CMD_LISTSUBTITLETRACKS = 0x50000004, // List of audio tracks // Parameter 1: Audio track name 0 // Parameter 2: Audio track name 1 // ... // Parameter n: Active audio track // // if no audio track is present, returns -1 // if no file is loaded, returns -2 CMD_LISTAUDIOTRACKS = 0x50000005, // Send current playback position in response // of CMD_GETCURRENTPOSITION. // Parameter 1: current position in seconds CMD_CURRENTPOSITION = 0x50000007, // Send the current playback position after a jump. // (Automatically sent after a seek event). // Parameter 1: new playback position (in seconds). CMD_NOTIFYSEEK = 0x50000008, // Notify the end of current playback // (Automatically sent). // Parameter 1: none. CMD_NOTIFYENDOFSTREAM = 0x50000009, // Send version str // Parameter 1: MPC-HC's version CMD_VERSION = 0x5000000A, // List of files in the playlist // Parameter 1: file path 0 // Parameter 2: file path 1 // ... // Parameter n: active file, -1 if no active file CMD_PLAYLIST = 0x50000006, // Send information about MPC-HC closing CMD_DISCONNECT = 0x5000000B, // ==== Commands from host to MPC-HC // Open new file // Parameter 1: file path CMD_OPENFILE = 0xA0000000, // Stop playback, but keep file / playlist CMD_STOP = 0xA0000001, // Stop playback and close file / playlist CMD_CLOSEFILE = 0xA0000002, // Pause or restart playback CMD_PLAYPAUSE = 0xA0000003, // Unpause playback CMD_PLAY = 0xA0000004, // Pause playback CMD_PAUSE = 0xA0000005, // Add a new file to playlist (did not start playing) // Parameter 1: file path CMD_ADDTOPLAYLIST = 0xA0001000, // Remove all files from playlist CMD_CLEARPLAYLIST = 0xA0001001, // Start playing playlist CMD_STARTPLAYLIST = 0xA0001002, CMD_REMOVEFROMPLAYLIST = 0xA0001003, // TODO // Cue current file to specific position // Parameter 1: new position in seconds CMD_SETPOSITION = 0xA0002000, // Set the audio delay // Parameter 1: new audio delay in ms CMD_SETAUDIODELAY = 0xA0002001, // Set the subtitle delay // Parameter 1: new subtitle delay in ms CMD_SETSUBTITLEDELAY = 0xA0002002, // Set the active file in the playlist // Parameter 1: index of the active file, -1 for no file selected // DOESN'T WORK CMD_SETINDEXPLAYLIST = 0xA0002003, // Set the audio track // Parameter 1: index of the audio track CMD_SETAUDIOTRACK = 0xA0002004, // Set the subtitle track // Parameter 1: index of the subtitle track, -1 for disabling subtitles CMD_SETSUBTITLETRACK = 0xA0002005, // Ask for a list of the subtitles tracks of the file // return a CMD_LISTSUBTITLETRACKS CMD_GETSUBTITLETRACKS = 0xA0003000, // Ask for the current playback position, // see CMD_CURRENTPOSITION. // Parameter 1: current position in seconds CMD_GETCURRENTPOSITION = 0xA0003004, // Jump forward/backward of N seconds, // Parameter 1: seconds (negative values for backward) CMD_JUMPOFNSECONDS = 0xA0003005, // Ask slave for version CMD_GETVERSION = 0xA0003006, // Ask for a list of the audio tracks of the file // return a CMD_LISTAUDIOTRACKS CMD_GETAUDIOTRACKS = 0xA0003001, // Ask for the properties of the current loaded file // return a CMD_NOWPLAYING CMD_GETNOWPLAYING = 0xA0003002, // Ask for the current playlist // return a CMD_PLAYLIST CMD_GETPLAYLIST = 0xA0003003, // Toggle FullScreen CMD_TOGGLEFULLSCREEN = 0xA0004000, // Jump forward(medium) CMD_JUMPFORWARDMED = 0xA0004001, // Jump backward(medium) CMD_JUMPBACKWARDMED = 0xA0004002, // Increase Volume CMD_INCREASEVOLUME = 0xA0004003, // Decrease volume CMD_DECREASEVOLUME = 0xA0004004, // Toggle shader //CMD_SHADER_TOGGLE = 0xA0004005, // Close App CMD_CLOSEAPP = 0xA0004006, // Set playing rate CMD_SETSPEED = 0xA0004008, // Show host defined OSD message string CMD_OSDSHOWMESSAGE = 0xA0005000 } MPCAPI_COMMAND;