X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=bindings%2Fmediacontrol%2Fmediacontrol_structures.h;fp=bindings%2Fmediacontrol%2Fmediacontrol_structures.h;h=6a3748276664ddd6c649cda61bc1dd308b65bb97;hb=353b6731966bd45e8b610501ed70617829bbf427;hp=0000000000000000000000000000000000000000;hpb=ca46a8b72ea78b00394e463d12052e036796cefa;p=vlc diff --git a/bindings/mediacontrol/mediacontrol_structures.h b/bindings/mediacontrol/mediacontrol_structures.h new file mode 100644 index 0000000000..6a37482766 --- /dev/null +++ b/bindings/mediacontrol/mediacontrol_structures.h @@ -0,0 +1,144 @@ +/***************************************************************************** + * mediacontrol_structures.h: global header for mediacontrol + ***************************************************************************** + * Copyright (C) 2005-2008 the VideoLAN team + * $Id$ + * + * Authors: Olivier Aubert + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * 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 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. + *****************************************************************************/ + +/** + * \file + * This file defines libvlc mediacontrol_* data structures + */ + +/** + * \defgroup mediacontrol_structures MediaControl Structures + * Data structures used in the MediaControl API. + * + * @{ + */ + +#ifndef VLC_CONTROL_STRUCTURES_H +#define VLC_CONTROL_STRUCTURES_H 1 + +# ifdef __cplusplus +extern "C" { +# endif + +#include + +/** + * A position may have different origins: + * - absolute counts from the movie start + * - relative counts from the current position + * - modulo counts from the current position and wraps at the end of the movie + */ +typedef enum { + mediacontrol_AbsolutePosition, + mediacontrol_RelativePosition, + mediacontrol_ModuloPosition +} mediacontrol_PositionOrigin; + +/** + * Units available in mediacontrol Positions + * - ByteCount number of bytes + * - SampleCount number of frames + * - MediaTime time in milliseconds + */ +typedef enum { + mediacontrol_ByteCount, + mediacontrol_SampleCount, + mediacontrol_MediaTime +} mediacontrol_PositionKey; + +/** + * Possible player status + * Note the order of these enums must match exactly the order of + * libvlc_state_t and input_state_e enums. + */ +typedef enum { + mediacontrol_UndefinedStatus=0, mediacontrol_InitStatus, + mediacontrol_BufferingStatus, mediacontrol_PlayingStatus, + mediacontrol_PauseStatus, mediacontrol_StopStatus, + mediacontrol_EndStatus, mediacontrol_ErrorStatus, +} mediacontrol_PlayerStatus; + +/** + * MediaControl Position + */ +typedef struct { + mediacontrol_PositionOrigin origin; + mediacontrol_PositionKey key; + int64_t value; +} mediacontrol_Position; + +/** + * RGBPicture structure + * This generic structure holds a picture in an encoding specified by type. + */ +typedef struct { + int width; + int height; + uint32_t type; + int64_t date; + int size; + char *data; +} mediacontrol_RGBPicture; + +/** + * Playlist sequence + * A simple list of strings. + */ +typedef struct { + int size; + char **data; +} mediacontrol_PlaylistSeq; + +typedef struct { + int code; + char *message; +} mediacontrol_Exception; + +/** + * Exception codes + */ +#define mediacontrol_PositionKeyNotSupported 1 +#define mediacontrol_PositionOriginNotSupported 2 +#define mediacontrol_InvalidPosition 3 +#define mediacontrol_PlaylistException 4 +#define mediacontrol_InternalException 5 + +/** + * Stream information + * This structure allows to quickly get various informations about the stream. + */ +typedef struct { + mediacontrol_PlayerStatus streamstatus; + char *url; /* The URL of the current media stream */ + int64_t position; /* actual location in the stream (in ms) */ + int64_t length; /* total length of the stream (in ms) */ +} mediacontrol_StreamInformation; + + +# ifdef __cplusplus +} +# endif + +#endif + +/** @} */