mediacontrol.h 8.16 KB
Newer Older
zorglub's avatar
zorglub committed
1 2 3
/*****************************************************************************
 * control.h: global header for mediacontrol
 *****************************************************************************
4
 * Copyright (C) 2005 the VideoLAN team
5
 * $Id$
zorglub's avatar
zorglub committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
 *
 * Authors: Olivier Aubert <olivier.aubert@liris.univ-lyon1.fr>
 *
 * 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
dionoea's avatar
dionoea committed
21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
zorglub's avatar
zorglub committed
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
 *****************************************************************************/

#ifndef _VLC_CONTROL_H
#define _VLC_CONTROL_H 1

# ifdef __cplusplus
extern "C" {
# endif

#if defined( WIN32 )
#define WINDOWHANDLE HWND
#else
#define WINDOWHANDLE int
#endif

zorglub's avatar
zorglub committed
37
#include <vlc/mediacontrol_structures.h>
38

zorglub's avatar
zorglub committed
39 40 41 42 43
/************************************************************************
 * Position Object Manipulation
 *************************************************************************/

typedef struct {
44 45 46 47 48 49
    int  width;
    int  height;
    long type;
    vlc_int64_t date;
    int  size;
    char *data;
zorglub's avatar
zorglub committed
50 51 52
} mediacontrol_RGBPicture;

typedef struct {
53 54
    int size;
    char **data;
zorglub's avatar
zorglub committed
55 56 57
} mediacontrol_PlaylistSeq;

typedef struct {
58 59
    int code;
    char *message;
zorglub's avatar
zorglub committed
60 61 62 63 64 65 66 67 68
} mediacontrol_Exception;

/* Exception codes */
#define mediacontrol_PositionKeyNotSupported    1
#define mediacontrol_PositionOriginNotSupported 2
#define mediacontrol_InvalidPosition            3
#define mediacontrol_PlaylistException          4
#define mediacontrol_InternalException          5

69 70 71
/* mediacontrol_Instance is an opaque structure, defined in
   mediacontrol_internal.h. API users do not have to mess with it. */
typedef struct mediacontrol_Instance mediacontrol_Instance;
zorglub's avatar
zorglub committed
72 73 74

/* Cf stream_control.h */
enum mediacontrol_PlayerStatusList
75
{
zorglub's avatar
zorglub committed
76 77 78 79
    mediacontrol_PlayingStatus, mediacontrol_PauseStatus,
    mediacontrol_ForwardStatus, mediacontrol_BackwardStatus,
    mediacontrol_InitStatus,    mediacontrol_EndStatus,
    mediacontrol_UndefinedStatus
80
};
zorglub's avatar
zorglub committed
81 82 83 84
typedef enum mediacontrol_PlayerStatusList mediacontrol_PlayerStatus;

typedef struct {
    mediacontrol_PlayerStatus streamstatus;
85 86 87 88
    char *url;         /* The URL of the current media stream */
    vlc_int64_t position;     /* actual location in the stream (in ms) */
    vlc_int64_t length;         /* total length of the stream (in ms) */
} mediacontrol_StreamInformation;
zorglub's avatar
zorglub committed
89 90 91 92

/**************************************************************************
 *  Helper functions
 ***************************************************************************/
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

mediacontrol_RGBPicture *mediacontrol_RGBPicture__alloc( int datasize );

void mediacontrol_RGBPicture__free( mediacontrol_RGBPicture *pic );

mediacontrol_RGBPicture *
  _mediacontrol_createRGBPicture( int, int, long, vlc_int64_t l_date,
                                  char *, int);

mediacontrol_PlaylistSeq *mediacontrol_PlaylistSeq__alloc( int size );

void mediacontrol_PlaylistSeq__free( mediacontrol_PlaylistSeq *ps );

mediacontrol_Exception *
  mediacontrol_exception_init( mediacontrol_Exception *exception );

zorglub's avatar
zorglub committed
109 110 111 112 113
void mediacontrol_exception_free(mediacontrol_Exception *exception);

/*****************************************************************************
 * Core functions
 *****************************************************************************/
114 115 116
mediacontrol_Instance *
  mediacontrol_new( char **args, mediacontrol_Exception *exception );

117
/* Bridge with the libvlc API */
118
mediacontrol_Instance *
119 120 121 122 123
mediacontrol_new_from_instance( libvlc_instance_t* p_instance,
				mediacontrol_Exception *exception );

libvlc_instance_t*
mediacontrol_get_libvlc_instance( mediacontrol_Instance* self );
124

125
mediacontrol_Position * mediacontrol_get_media_position(
126 127 128 129 130 131 132 133
                         mediacontrol_Instance *self,
                         const mediacontrol_PositionOrigin an_origin,
                         const mediacontrol_PositionKey a_key,
                         mediacontrol_Exception *exception );

void mediacontrol_set_media_position( mediacontrol_Instance *self,
                                      const mediacontrol_Position *a_position,
                                      mediacontrol_Exception *exception );
zorglub's avatar
zorglub committed
134 135

void mediacontrol_start( mediacontrol_Instance *self,
136 137 138 139
                         const mediacontrol_Position *a_position,
                         mediacontrol_Exception *exception );

void mediacontrol_pause( mediacontrol_Instance *self,
140
                         const mediacontrol_Position *a_position,
141
                         mediacontrol_Exception *exception );
zorglub's avatar
zorglub committed
142

143 144 145
void mediacontrol_resume( mediacontrol_Instance *self,
                          const mediacontrol_Position *a_position,
                          mediacontrol_Exception *exception );
zorglub's avatar
zorglub committed
146

147 148 149
void mediacontrol_stop( mediacontrol_Instance *self,
                        const mediacontrol_Position *a_position,
                        mediacontrol_Exception *exception );
zorglub's avatar
zorglub committed
150

151
void mediacontrol_exit( mediacontrol_Instance *self );
zorglub's avatar
zorglub committed
152

153
void mediacontrol_playlist_add_item( mediacontrol_Instance *self,
zorglub's avatar
zorglub committed
154
                                     const char* psz_file,
155 156 157 158 159 160
                                     mediacontrol_Exception *exception );
void mediacontrol_playlist_clear( mediacontrol_Instance *self,
                                  mediacontrol_Exception *exception );
mediacontrol_PlaylistSeq *
  mediacontrol_playlist_get_list( mediacontrol_Instance *self,
                                  mediacontrol_Exception *exception );
zorglub's avatar
zorglub committed
161 162 163 164 165


/*****************************************************************************
 * A/V functions
 *****************************************************************************/
166 167 168 169
mediacontrol_RGBPicture *
  mediacontrol_snapshot( mediacontrol_Instance *self,
                         const mediacontrol_Position *a_position,
                         mediacontrol_Exception *exception );
zorglub's avatar
zorglub committed
170 171

/* Return a NULL terminated list */
172 173 174 175 176 177
mediacontrol_RGBPicture **
  mediacontrol_all_snapshots( mediacontrol_Instance *self,
                              mediacontrol_Exception *exception );

/* Displays the message string, between "begin" and "end" positions */
void mediacontrol_display_text( mediacontrol_Instance *self,
178 179
                                const char *message,
                                const mediacontrol_Position *begin,
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
                                const mediacontrol_Position *end,
                                mediacontrol_Exception *exception );

mediacontrol_StreamInformation *
  mediacontrol_get_stream_information( mediacontrol_Instance *self,
                                       mediacontrol_PositionKey a_key,
                                       mediacontrol_Exception *exception );

unsigned short
  mediacontrol_sound_get_volume( mediacontrol_Instance *self,
                                 mediacontrol_Exception *exception );
void mediacontrol_sound_set_volume( mediacontrol_Instance *self,
                                    const unsigned short volume,
                                    mediacontrol_Exception *exception );

vlc_bool_t mediacontrol_set_visual( mediacontrol_Instance *self,
                                    WINDOWHANDLE visual_id,
                                    mediacontrol_Exception *exception );
zorglub's avatar
zorglub committed
198

199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
/* Rate in percent. 100 is normal rate. */
int mediacontrol_get_rate( mediacontrol_Instance *self,
			   mediacontrol_Exception *exception );

void mediacontrol_set_rate( mediacontrol_Instance *self,
			    const int rate,
			    mediacontrol_Exception *exception );

int mediacontrol_get_fullscreen( mediacontrol_Instance *self,
				 mediacontrol_Exception *exception );

void mediacontrol_set_fullscreen( mediacontrol_Instance *self,
				  const int b_fullscreen,
				  mediacontrol_Exception *exception );

zorglub's avatar
zorglub committed
214 215 216 217 218
# ifdef __cplusplus
}
# endif

#endif