Open Broadcaster Software
Free, open source software for live streaming and recording
obs-service.h
Go to the documentation of this file.
1 /******************************************************************************
2  Copyright (C) 2013-2014 by Hugh Bailey <obs.jim@gmail.com>
3 
4  This program is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see <http://www.gnu.org/licenses/>.
16 ******************************************************************************/
17 
18 #pragma once
19 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
32  /* required */
33  const char *id;
34 
35  const char *(*get_name)(void *type_data);
36  void *(*create)(obs_data_t *settings, obs_service_t *service);
37  void (*destroy)(void *data);
38 
39  /* optional */
40  void (*activate)(void *data, obs_data_t *settings);
41  void (*deactivate)(void *data);
42 
43  void (*update)(void *data, obs_data_t *settings);
44 
45  void (*get_defaults)(obs_data_t *settings);
46 
47  obs_properties_t *(*get_properties)(void *data);
48 
58  bool (*initialize)(void *data, obs_output_t *output);
59 
60  const char *(*get_url)(void *data);
61  const char *(*get_key)(void *data);
62 
63  const char *(*get_username)(void *data);
64  const char *(*get_password)(void *data);
65 
66  bool (*supports_multitrack)(void *data);
67 
68  void (*apply_encoder_settings)(void *data,
69  obs_data_t *video_encoder_settings,
70  obs_data_t *audio_encoder_settings);
71 
72  void *type_data;
73  void (*free_type_data)(void *type_data);
74 
75  const char *(*get_output_type)(void *data);
76 
77  /* TODO: more stuff later */
78 };
79 
80 EXPORT void obs_register_service_s(const struct obs_service_info *info,
81  size_t size);
82 
83 #define obs_register_service(info) \
84  obs_register_service_s(info, sizeof(struct obs_service_info))
85 
86 #ifdef __cplusplus
87 }
88 #endif
void * type_data
Definition: obs-service.h:72
bool(* supports_multitrack)(void *data)
Definition: obs-service.h:66
Definition: obs-internal.h:889
void(* update)(void *data, obs_data_t *settings)
Definition: obs-service.h:43
struct obs_data obs_data_t
Definition: obs-data.h:42
void(* free_type_data)(void *type_data)
Definition: obs-service.h:73
struct obs_properties obs_properties_t
Definition: obs-properties.h:110
#define EXPORT
Definition: c99defs.h:37
const char * id
Definition: obs-service.h:33
void(* get_defaults)(obs_data_t *settings)
Definition: obs-service.h:45
void(* activate)(void *data, obs_data_t *settings)
Definition: obs-service.h:40
void(* destroy)(void *data)
Definition: obs-service.h:37
EXPORT void obs_register_service_s(const struct obs_service_info *info, size_t size)
void(* apply_encoder_settings)(void *data, obs_data_t *video_encoder_settings, obs_data_t *audio_encoder_settings)
Definition: obs-service.h:68
void(* deactivate)(void *data)
Definition: obs-service.h:41
bool(* initialize)(void *data, obs_output_t *output)
Definition: obs-service.h:58
Definition: obs-internal.h:1118
Definition: obs-service.h:31