Open Broadcaster Software
Free, open source software for live streaming and recording
obs-output.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 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 #define OBS_OUTPUT_VIDEO (1<<0)
25 #define OBS_OUTPUT_AUDIO (1<<1)
26 #define OBS_OUTPUT_AV (OBS_OUTPUT_VIDEO | OBS_OUTPUT_AUDIO)
27 #define OBS_OUTPUT_ENCODED (1<<2)
28 #define OBS_OUTPUT_SERVICE (1<<3)
29 #define OBS_OUTPUT_MULTI_TRACK (1<<4)
30 
31 struct encoder_packet;
32 
34  /* required */
35  const char *id;
36 
38 
39  const char *(*get_name)(void *type_data);
40 
41  void *(*create)(obs_data_t *settings, obs_output_t *output);
42  void (*destroy)(void *data);
43 
44  bool (*start)(void *data);
45  void (*stop)(void *data, uint64_t ts);
46 
47  void (*raw_video)(void *data, struct video_data *frame);
48  void (*raw_audio)(void *data, struct audio_data *frames);
49 
50  void (*encoded_packet)(void *data, struct encoder_packet *packet);
51 
52  /* optional */
53  void (*update)(void *data, obs_data_t *settings);
54 
55  void (*get_defaults)(obs_data_t *settings);
56 
57  obs_properties_t *(*get_properties)(void *data);
58 
59  void (*pause)(void *data);
60 
62 
63  int (*get_dropped_frames)(void *data);
64 
65  void *type_data;
66  void (*free_type_data)(void *type_data);
67 };
68 
69 EXPORT void obs_register_output_s(const struct obs_output_info *info,
70  size_t size);
71 
72 #define obs_register_output(info) \
73  obs_register_output_s(info, sizeof(struct obs_output_info))
74 
75 #ifdef __cplusplus
76 }
77 #endif
bool(* start)(void *data)
Definition: obs-output.h:44
uint8_t * data
Definition: obs-encoder.h:42
void(* pause)(void *data)
Definition: obs-output.h:59
size_t size
Definition: obs-encoder.h:43
void(* get_defaults)(obs_data_t *settings)
Definition: obs-output.h:55
Definition: obs-internal.h:777
unsigned uint32_t
Definition: vc_stdint.h:31
void * type_data
Definition: obs-output.h:65
EXPORT void obs_register_output_s(const struct obs_output_info *info, size_t size)
void(* raw_video)(void *data, struct video_data *frame)
Definition: obs-output.h:47
uint64_t(* get_total_bytes)(void *data)
Definition: obs-output.h:61
uint32_t flags
Definition: obs-output.h:37
unsigned __int64 uint64_t
Definition: vc_stdint.h:33
Definition: obs-encoder.h:41
struct obs_data obs_data_t
Definition: obs-data.h:42
Definition: obs-output.h:33
int(* get_dropped_frames)(void *data)
Definition: obs-output.h:63
struct obs_properties obs_properties_t
Definition: obs-properties.h:103
void(* stop)(void *data, uint64_t ts)
Definition: obs-output.h:45
const char * id
Definition: obs-output.h:35
#define EXPORT
Definition: c99defs.h:53
void(* update)(void *data, obs_data_t *settings)
Definition: obs-output.h:53
void(* destroy)(void *data)
Definition: obs-output.h:42
uint32_t frames
Definition: audio-io.h:70
Definition: video-io.h:67
void(* free_type_data)(void *type_data)
Definition: obs-output.h:66
Definition: audio-io.h:68
void(* encoded_packet)(void *data, struct encoder_packet *packet)
Definition: obs-output.h:50
uint8_t * data[MAX_AV_PLANES]
Definition: video-io.h:68
void(* raw_audio)(void *data, struct audio_data *frames)
Definition: obs-output.h:48
#define bool
Definition: vc_stdbool.h:5
uint8_t * data[MAX_AV_PLANES]
Definition: audio-io.h:69