gavl
connectors.h
1/*****************************************************************
2 * gavl - a general purpose audio/video processing library
3 *
4 * Copyright (c) 2001 - 2012 Members of the Gmerlin project
5 * gmerlin-general@lists.sourceforge.net
6 * http://gmerlin.sourceforge.net
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 * *****************************************************************/
21
27#ifndef GAVL_CONNECTORS_H_INCLUDED
28#define GAVL_CONNECTORS_H_INCLUDED
29
30#include <gavl/gavl.h>
31#include <gavl/compression.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
54typedef void (*gavl_connector_lock_func_t)(void * priv);
55
60typedef void (*gavl_connector_free_func_t)(void * priv);
61
62
91typedef enum
92 {
97
107(*gavl_audio_source_func_t)(void * priv, gavl_audio_frame_t ** frame);
108
118(*gavl_video_source_func_t)(void * priv, gavl_video_frame_t ** frame);
119
129(*gavl_packet_source_func_t)(void * priv, gavl_packet_t ** p);
130
131
135#define GAVL_SOURCE_SRC_ALLOC (1<<0)
136
137
142#define GAVL_SOURCE_SRC_FRAMESIZE_MAX (1<<2)
143
148#define GAVL_SOURCE_SRC_DISCONTINUOUS (1<<3)
149
150
151/* Called by the source */
152
161GAVL_PUBLIC
164 void * priv, int src_flags,
165 const gavl_video_format_t * src_format);
166
167GAVL_PUBLIC
168void gavl_video_source_set_eof(gavl_video_source_t * src, int eof);
169
170GAVL_PUBLIC
171int gavl_video_source_get_eof(gavl_video_source_t * src);
172
173GAVL_PUBLIC
174void gavl_video_source_drain(gavl_video_source_t * s);
175
176GAVL_PUBLIC
177void gavl_video_source_drain_nolock(gavl_video_source_t * s);
178
179
191GAVL_PUBLIC
194 void * priv, int src_flags,
195 gavl_video_source_t * src);
196
204GAVL_PUBLIC void
206 gavl_connector_lock_func_t lock_func,
207 gavl_connector_lock_func_t unlock_func,
208 void * priv);
209
217GAVL_PUBLIC void
219 gavl_connector_free_func_t free_func);
220
221
222
229GAVL_PUBLIC
231
238GAVL_PUBLIC
240
248GAVL_PUBLIC
250
251/* Called by the destination */
252
262GAVL_PUBLIC
264
270GAVL_PUBLIC
273
279GAVL_PUBLIC
282
298GAVL_PUBLIC
299void
301 const gavl_video_format_t * dst_format);
302
313GAVL_PUBLIC
316
317/* Called by source */
318
327GAVL_PUBLIC
330 void * priv, int src_flags,
331 const gavl_audio_format_t * src_format);
332
333GAVL_PUBLIC
334void gavl_audio_source_set_eof(gavl_audio_source_t * src, int eof);
335
336GAVL_PUBLIC
337int gavl_audio_source_get_eof(gavl_audio_source_t * src);
338
339GAVL_PUBLIC
340void gavl_audio_source_drain(gavl_audio_source_t * s);
341
342GAVL_PUBLIC
343void gavl_audio_source_drain_nolock(gavl_audio_source_t * s);
344
356GAVL_PUBLIC
359 void * priv, int src_flags,
360 gavl_audio_source_t * src);
361
362
370GAVL_PUBLIC void
372 gavl_connector_lock_func_t lock_func,
373 gavl_connector_lock_func_t unlock_func,
374 void * priv);
375
383GAVL_PUBLIC void
385 gavl_connector_free_func_t free_func);
386
387
388
394GAVL_PUBLIC
397
403GAVL_PUBLIC
406
412GAVL_PUBLIC int
414
431GAVL_PUBLIC
432void
434 const gavl_audio_format_t * dst_format);
435
450GAVL_PUBLIC
453
463GAVL_PUBLIC
464void
466
467
468GAVL_PUBLIC
469void
470gavl_audio_source_skip_to(gavl_audio_source_t * s,
471 int64_t t, int scale);
472
482GAVL_PUBLIC
484 int num_samples);
485
491GAVL_PUBLIC
493
500GAVL_PUBLIC
502
510GAVL_PUBLIC
512
513
514/* Packet source */
515
526GAVL_PUBLIC
529 void * priv, int src_flags);
530
531GAVL_PUBLIC
532void gavl_packet_source_set_eof(gavl_packet_source_t * src, int eof);
533
534GAVL_PUBLIC
535int gavl_packet_source_get_eof(gavl_packet_source_t * src);
536
537GAVL_PUBLIC
538void gavl_packet_source_drain(gavl_packet_source_t * src);
539
540GAVL_PUBLIC
541void gavl_packet_source_drain_nolock(gavl_packet_source_t * src);
542
551GAVL_PUBLIC
554 void * priv, int src_flags,
555 const gavl_compression_info_t * ci,
556 const gavl_audio_format_t * afmt);
557
566GAVL_PUBLIC
569 void * priv, int src_flags,
570 const gavl_compression_info_t * ci,
571 const gavl_video_format_t * vfmt);
572
580GAVL_PUBLIC
583 void * priv, int src_flags, int timescale);
584
592GAVL_PUBLIC
595 void * priv, int src_flags,
597
598
606GAVL_PUBLIC void
608 gavl_connector_lock_func_t lock_func,
609 gavl_connector_lock_func_t unlock_func,
610 void * priv);
611
619GAVL_PUBLIC void
621 gavl_connector_free_func_t free_func);
622
623
624
630GAVL_PUBLIC const gavl_compression_info_t *
632
638GAVL_PUBLIC const gavl_audio_format_t *
640
646GAVL_PUBLIC const gavl_video_format_t *
648
654GAVL_PUBLIC int
656
662GAVL_PUBLIC gavl_source_status_t
664
669GAVL_PUBLIC void
671
693typedef enum
694 {
698
699
709(*gavl_audio_sink_get_func)(void * priv);
710
719
728GAVL_PUBLIC gavl_audio_sink_t *
731 void * priv,
732 const gavl_audio_format_t * format);
733
741GAVL_PUBLIC void
743 gavl_connector_lock_func_t lock_func,
744 gavl_connector_lock_func_t unlock_func,
745 void * priv);
746
754GAVL_PUBLIC void
756 gavl_connector_free_func_t free_func);
757
758
759
765GAVL_PUBLIC const gavl_audio_format_t *
767
777GAVL_PUBLIC gavl_audio_frame_t *
779
789GAVL_PUBLIC gavl_sink_status_t
791
796GAVL_PUBLIC void
798
799
800
810(*gavl_video_sink_get_func)(void * priv);
811
820
829GAVL_PUBLIC gavl_video_sink_t *
832 void * priv,
833 const gavl_video_format_t * format);
834
842GAVL_PUBLIC void
844 gavl_connector_lock_func_t lock_func,
845 gavl_connector_lock_func_t unlock_func,
846 void * priv);
847
855GAVL_PUBLIC void
857 gavl_connector_free_func_t free_func);
858
859
865GAVL_PUBLIC const gavl_video_format_t *
867
877GAVL_PUBLIC gavl_video_frame_t *
879
889GAVL_PUBLIC gavl_sink_status_t
891
896GAVL_PUBLIC void
898
899
900
910(*gavl_packet_sink_get_func)(void * priv);
911
919(*gavl_packet_sink_put_func)(void * priv, gavl_packet_t * p);
920
928GAVL_PUBLIC gavl_packet_sink_t *
931 void * priv);
932
940GAVL_PUBLIC void
942 gavl_connector_lock_func_t lock_func,
943 gavl_connector_lock_func_t unlock_func,
944 void * priv);
945
953GAVL_PUBLIC void
955 gavl_connector_free_func_t free_func);
956
957
967GAVL_PUBLIC gavl_packet_t *
969
979GAVL_PUBLIC gavl_sink_status_t
981
986GAVL_PUBLIC void
988
989
1009typedef struct gavl_audio_connector_s gavl_audio_connector_t;
1010
1016typedef struct gavl_video_connector_s gavl_video_connector_t;
1017
1023typedef struct gavl_packet_connector_s gavl_packet_connector_t;
1024
1036typedef void
1038 gavl_audio_frame_t * frame);
1039
1051typedef void
1053 gavl_video_frame_t * frame);
1054
1063typedef void
1065 gavl_packet_t * p);
1066
1072GAVL_PUBLIC gavl_audio_connector_t *
1074
1082GAVL_PUBLIC gavl_audio_options_t *
1084
1089GAVL_PUBLIC void
1091
1097GAVL_PUBLIC void
1099 gavl_audio_sink_t * sink);
1100
1107GAVL_PUBLIC void
1110 void * priv);
1111
1119GAVL_PUBLIC void
1121
1127GAVL_PUBLIC const gavl_audio_format_t *
1129
1139GAVL_PUBLIC int
1141
1148GAVL_PUBLIC
1150
1156GAVL_PUBLIC gavl_source_status_t
1158
1159
1160/* */
1161
1167GAVL_PUBLIC gavl_video_connector_t *
1169
1177GAVL_PUBLIC gavl_video_options_t *
1179
1184GAVL_PUBLIC void
1186
1192GAVL_PUBLIC void
1194 gavl_video_sink_t * sink);
1195
1202GAVL_PUBLIC void
1205 void * priv);
1206
1214GAVL_PUBLIC void
1216
1222GAVL_PUBLIC const gavl_video_format_t *
1224
1234GAVL_PUBLIC int
1236
1243GAVL_PUBLIC
1245
1251GAVL_PUBLIC gavl_source_status_t
1253
1254/* */
1255
1261GAVL_PUBLIC gavl_packet_connector_t *
1263
1268GAVL_PUBLIC void
1270
1276GAVL_PUBLIC void
1278 gavl_packet_sink_t * sink);
1279
1286GAVL_PUBLIC void
1289 void * priv);
1290
1298GAVL_PUBLIC int
1300
1306GAVL_PUBLIC gavl_source_status_t
1308
1309
1310
1315#ifdef __cplusplus
1316}
1317#endif
1318
1319#endif // GAVL_CONNECTORS_H_INCLUDED
struct gavl_audio_options_s gavl_audio_options_t
Opaque container for audio conversion options.
Definition: gavl.h:1018
GAVL_PUBLIC gavl_video_connector_t * gavl_video_connector_create(gavl_video_source_t *src)
Create a video connector.
struct gavl_audio_connector_s gavl_audio_connector_t
Opaque structure for the audio connector.
Definition: connectors.h:1009
void(* gavl_packet_connector_process_func)(void *priv, gavl_packet_t *p)
Callback for processing a packet.
Definition: connectors.h:1064
GAVL_PUBLIC gavl_packet_connector_t * gavl_packet_connector_create(gavl_packet_source_t *src)
Create a packet connector.
GAVL_PUBLIC gavl_source_status_t gavl_packet_connector_get_source_status(gavl_packet_connector_t *c)
Get the status of the last read call.
struct gavl_packet_connector_s gavl_packet_connector_t
Opaque structure for the packet connector.
Definition: connectors.h:1023
GAVL_PUBLIC gavl_video_options_t * gavl_video_connector_get_options(gavl_video_connector_t *c)
Get conversion options.
void(* gavl_audio_connector_process_func)(void *priv, gavl_audio_frame_t *frame)
Callback for processing an audio frame.
Definition: connectors.h:1037
GAVL_PUBLIC const gavl_video_format_t * gavl_video_connector_get_process_format(gavl_video_connector_t *c)
Get process format.
GAVL_PUBLIC void gavl_audio_connector_reset(gavl_audio_connector_t *c)
Reset an audio connector.
GAVL_PUBLIC int gavl_video_connector_process(gavl_video_connector_t *c)
Process one frame.
GAVL_PUBLIC const gavl_audio_format_t * gavl_audio_connector_get_process_format(gavl_audio_connector_t *c)
Get process format.
GAVL_PUBLIC void gavl_audio_connector_start(gavl_audio_connector_t *c)
Start an audio connector.
GAVL_PUBLIC void gavl_video_connector_connect(gavl_video_connector_t *c, gavl_video_sink_t *sink)
Connect a sink.
GAVL_PUBLIC gavl_audio_connector_t * gavl_audio_connector_create(gavl_audio_source_t *src)
Create an audio connector.
GAVL_PUBLIC void gavl_audio_connector_set_process_func(gavl_audio_connector_t *c, gavl_audio_connector_process_func func, void *priv)
Set process callback.
GAVL_PUBLIC void gavl_packet_connector_connect(gavl_packet_connector_t *c, gavl_packet_sink_t *sink)
Connect a sink.
struct gavl_video_connector_s gavl_video_connector_t
Opaque structure for the audio connector.
Definition: connectors.h:1016
GAVL_PUBLIC void gavl_video_connector_start(gavl_video_connector_t *c)
Start a video connector.
void(* gavl_video_connector_process_func)(void *priv, gavl_video_frame_t *frame)
Callback for processing a video frame.
Definition: connectors.h:1052
GAVL_PUBLIC int gavl_audio_connector_process(gavl_audio_connector_t *c)
Process one frame.
GAVL_PUBLIC gavl_audio_options_t * gavl_audio_connector_get_options(gavl_audio_connector_t *c)
Get conversion options.
GAVL_PUBLIC void gavl_packet_connector_set_process_func(gavl_packet_connector_t *c, gavl_packet_connector_process_func func, void *priv)
Set process callback.
GAVL_PUBLIC void gavl_video_connector_destroy(gavl_video_connector_t *c)
Destroy a video connector.
GAVL_PUBLIC void gavl_audio_connector_connect(gavl_audio_connector_t *c, gavl_audio_sink_t *sink)
Connect a sink.
GAVL_PUBLIC gavl_source_status_t gavl_video_connector_get_source_status(gavl_video_connector_t *c)
Get the status of the last read call.
GAVL_PUBLIC gavl_source_status_t gavl_audio_connector_get_source_status(gavl_audio_connector_t *c)
Get the status of the last read call.
GAVL_PUBLIC void gavl_packet_connector_destroy(gavl_packet_connector_t *c)
Destroy a packet connector.
GAVL_PUBLIC void gavl_video_connector_reset(gavl_video_connector_t *c)
Reset a video connector.
GAVL_PUBLIC void gavl_audio_connector_destroy(gavl_audio_connector_t *c)
Destroy an audio connector.
GAVL_PUBLIC int gavl_packet_connector_process(gavl_packet_connector_t *c)
Process one packet.
GAVL_PUBLIC void gavl_video_connector_set_process_func(gavl_video_connector_t *c, gavl_video_connector_process_func func, void *priv)
Set process callback.
struct gavl_video_sink_s gavl_video_sink_t
Video sink.
Definition: gavl.h:81
GAVL_PUBLIC void gavl_video_sink_set_free_func(gavl_video_sink_t *sink, gavl_connector_free_func_t free_func)
Set free function.
GAVL_PUBLIC gavl_audio_sink_t * gavl_audio_sink_create(gavl_audio_sink_get_func get_func, gavl_audio_sink_put_func put_func, void *priv, const gavl_audio_format_t *format)
Create an audio sink.
GAVL_PUBLIC void gavl_video_sink_set_lock_funcs(gavl_video_sink_t *sink, gavl_connector_lock_func_t lock_func, gavl_connector_lock_func_t unlock_func, void *priv)
Set lock functions.
gavl_sink_status_t(* gavl_packet_sink_put_func)(void *priv, gavl_packet_t *p)
Prototype for putting a frame.
Definition: connectors.h:919
GAVL_PUBLIC void gavl_video_sink_destroy(gavl_video_sink_t *s)
Destroy a video sink.
gavl_sink_status_t
Return status of the sink functions.
Definition: connectors.h:694
struct gavl_audio_sink_s gavl_audio_sink_t
Audio sink.
Definition: gavl.h:72
struct gavl_packet_sink_s gavl_packet_sink_t
Packet sink.
Definition: gavl.h:90
GAVL_PUBLIC void gavl_audio_sink_set_free_func(gavl_audio_sink_t *sink, gavl_connector_free_func_t free_func)
Set free function.
GAVL_PUBLIC gavl_video_sink_t * gavl_video_sink_create(gavl_video_sink_get_func get_func, gavl_video_sink_put_func put_func, void *priv, const gavl_video_format_t *format)
Create a video sink.
gavl_sink_status_t(* gavl_audio_sink_put_func)(void *priv, gavl_audio_frame_t *f)
Prototype for putting a frame.
Definition: connectors.h:718
gavl_audio_frame_t *(* gavl_audio_sink_get_func)(void *priv)
Prototype for getting a frame buffer.
Definition: connectors.h:709
GAVL_PUBLIC gavl_packet_t * gavl_packet_sink_get_packet(gavl_packet_sink_t *s)
Get a buffer for a packet.
GAVL_PUBLIC void gavl_packet_sink_set_free_func(gavl_packet_sink_t *sink, gavl_connector_free_func_t free_func)
Set free function.
GAVL_PUBLIC void gavl_audio_sink_destroy(gavl_audio_sink_t *s)
Destroy an audio sink.
GAVL_PUBLIC gavl_sink_status_t gavl_video_sink_put_frame(gavl_video_sink_t *s, gavl_video_frame_t *f)
Output a frame.
gavl_video_frame_t *(* gavl_video_sink_get_func)(void *priv)
Prototype for getting a frame buffer.
Definition: connectors.h:810
GAVL_PUBLIC gavl_sink_status_t gavl_packet_sink_put_packet(gavl_packet_sink_t *s, gavl_packet_t *p)
Output a frame.
GAVL_PUBLIC gavl_video_frame_t * gavl_video_sink_get_frame(gavl_video_sink_t *s)
Get a buffer for a frame.
GAVL_PUBLIC gavl_packet_sink_t * gavl_packet_sink_create(gavl_packet_sink_get_func get_func, gavl_packet_sink_put_func put_func, void *priv)
Create a packet sink.
gavl_packet_t *(* gavl_packet_sink_get_func)(void *priv)
Prototype for getting a packet buffer.
Definition: connectors.h:910
gavl_sink_status_t(* gavl_video_sink_put_func)(void *priv, gavl_video_frame_t *f)
Prototype for putting a frame.
Definition: connectors.h:819
GAVL_PUBLIC void gavl_audio_sink_set_lock_funcs(gavl_audio_sink_t *sink, gavl_connector_lock_func_t lock_func, gavl_connector_lock_func_t unlock_func, void *priv)
Set lock functions.
GAVL_PUBLIC void gavl_packet_sink_set_lock_funcs(gavl_packet_sink_t *sink, gavl_connector_lock_func_t lock_func, gavl_connector_lock_func_t unlock_func, void *priv)
Set lock functions.
GAVL_PUBLIC gavl_sink_status_t gavl_audio_sink_put_frame(gavl_audio_sink_t *s, gavl_audio_frame_t *f)
Output a frame.
GAVL_PUBLIC gavl_audio_frame_t * gavl_audio_sink_get_frame(gavl_audio_sink_t *s)
Get a buffer for a frame.
GAVL_PUBLIC const gavl_audio_format_t * gavl_audio_sink_get_format(gavl_audio_sink_t *s)
Get the format.
GAVL_PUBLIC void gavl_packet_sink_destroy(gavl_packet_sink_t *s)
Destroy a packet sink.
GAVL_PUBLIC const gavl_video_format_t * gavl_video_sink_get_format(gavl_video_sink_t *s)
Get the format.
@ GAVL_SINK_OK
Frame was successfully processed.
Definition: connectors.h:696
@ GAVL_SINK_ERROR
Something went wrong.
Definition: connectors.h:695
GAVL_PUBLIC gavl_source_status_t gavl_packet_source_read_packet(void *s, gavl_packet_t **p)
Read one packet.
gavl_source_status_t(* gavl_packet_source_func_t)(void *priv, gavl_packet_t **p)
Prototype for obtaining one packet.
Definition: connectors.h:129
GAVL_PUBLIC gavl_video_source_t * gavl_video_source_create_source(gavl_video_source_func_t func, void *priv, int src_flags, gavl_video_source_t *src)
Create a video source from another source.
GAVL_PUBLIC gavl_packet_source_t * gavl_packet_source_create_text(gavl_packet_source_func_t func, void *priv, int src_flags, int timescale)
Create a text packet source.
GAVL_PUBLIC gavl_video_source_t * gavl_video_source_create(gavl_video_source_func_t func, void *priv, int src_flags, const gavl_video_format_t *src_format)
Create a video source.
GAVL_PUBLIC gavl_source_status_t gavl_audio_source_read_frame(void *s, gavl_audio_frame_t **frame)
Read an audio frame.
GAVL_PUBLIC const gavl_audio_format_t * gavl_audio_source_get_dst_format(gavl_audio_source_t *s)
Get the output format.
GAVL_PUBLIC void gavl_audio_source_set_dst(gavl_audio_source_t *s, int dst_flags, const gavl_audio_format_t *dst_format)
Set the destination mode.
GAVL_PUBLIC void gavl_video_source_set_dst(gavl_video_source_t *s, int dst_flags, const gavl_video_format_t *dst_format)
Set the destination mode.
GAVL_PUBLIC gavl_audio_source_t * gavl_audio_source_create(gavl_audio_source_func_t func, void *priv, int src_flags, const gavl_audio_format_t *src_format)
Create an audio source.
struct gavl_video_source_s gavl_video_source_t
Forward declaration of the video source.
Definition: gavl.h:48
GAVL_PUBLIC void gavl_audio_source_set_free_func(gavl_audio_source_t *src, gavl_connector_free_func_t free_func)
Set free function.
GAVL_PUBLIC void gavl_audio_source_skip(gavl_audio_source_t *s, int num_samples)
Skip audio samples at the input.
GAVL_PUBLIC gavl_audio_source_t * gavl_audio_source_create_source(gavl_audio_source_func_t func, void *priv, int src_flags, gavl_audio_source_t *src)
Create an audio source from another source.
gavl_source_status_t
Return value of the source function.
Definition: connectors.h:92
GAVL_PUBLIC const gavl_video_format_t * gavl_video_source_get_src_format(gavl_video_source_t *s)
Get the native format.
GAVL_PUBLIC void gavl_audio_source_reset(gavl_audio_source_t *s)
Reset an audio source.
GAVL_PUBLIC gavl_source_status_t gavl_video_source_read_frame(void *s, gavl_video_frame_t **frame)
Read a video frame.
GAVL_PUBLIC void gavl_video_source_set_lock_funcs(gavl_video_source_t *src, gavl_connector_lock_func_t lock_func, gavl_connector_lock_func_t unlock_func, void *priv)
Set lock functions.
GAVL_PUBLIC void gavl_video_source_set_free_func(gavl_video_source_t *src, gavl_connector_free_func_t free_func)
Set free function.
GAVL_PUBLIC int gavl_audio_source_read_samples(void *s, gavl_audio_frame_t *frame, int num_samples)
Read audio samples.
GAVL_PUBLIC gavl_video_options_t * gavl_video_source_get_options(gavl_video_source_t *s)
Get coversion options of a video source.
GAVL_PUBLIC gavl_packet_source_t * gavl_packet_source_create_source(gavl_packet_source_func_t func, void *priv, int src_flags, gavl_packet_source_t *src)
Create a packet source from another packet source.
GAVL_PUBLIC void gavl_video_source_support_hw(gavl_video_source_t *s)
Enable hardware surfaces.
struct gavl_audio_source_s gavl_audio_source_t
Forward declaration of the audio source.
Definition: gavl.h:56
GAVL_PUBLIC const gavl_audio_format_t * gavl_packet_source_get_audio_format(gavl_packet_source_t *s)
Get the audio format.
GAVL_PUBLIC const gavl_compression_info_t * gavl_packet_source_get_ci(gavl_packet_source_t *s)
Get the compression info.
GAVL_PUBLIC gavl_audio_options_t * gavl_audio_source_get_options(gavl_audio_source_t *s)
Get coversion options of an audio source.
gavl_source_status_t(* gavl_video_source_func_t)(void *priv, gavl_video_frame_t **frame)
Prototype for obtaining one video frame.
Definition: connectors.h:118
gavl_source_status_t(* gavl_audio_source_func_t)(void *priv, gavl_audio_frame_t **frame)
Prototype for obtaining one audio frame.
Definition: connectors.h:107
GAVL_PUBLIC void gavl_packet_source_destroy(gavl_packet_source_t *s)
Destroy a packet source.
GAVL_PUBLIC gavl_packet_source_t * gavl_packet_source_create_video(gavl_packet_source_func_t func, void *priv, int src_flags, const gavl_compression_info_t *ci, const gavl_video_format_t *vfmt)
Create a video packet source.
struct gavl_packet_source_s gavl_packet_source_t
Forward declaration of the packet source.
Definition: gavl.h:64
GAVL_PUBLIC gavl_packet_source_t * gavl_packet_source_create_audio(gavl_packet_source_func_t func, void *priv, int src_flags, const gavl_compression_info_t *ci, const gavl_audio_format_t *afmt)
Create an audio packet source.
GAVL_PUBLIC const gavl_video_format_t * gavl_video_source_get_dst_format(gavl_video_source_t *s)
Get the output format.
GAVL_PUBLIC int gavl_packet_source_get_timescale(gavl_packet_source_t *s)
Get the time scale.
GAVL_PUBLIC void gavl_packet_source_set_free_func(gavl_packet_source_t *src, gavl_connector_free_func_t free_func)
Set free function.
GAVL_PUBLIC void gavl_audio_source_set_lock_funcs(gavl_audio_source_t *src, gavl_connector_lock_func_t lock_func, gavl_connector_lock_func_t unlock_func, void *priv)
Set lock functions.
GAVL_PUBLIC const gavl_video_format_t * gavl_packet_source_get_video_format(gavl_packet_source_t *s)
Get the video format.
GAVL_PUBLIC void gavl_audio_source_destroy(gavl_audio_source_t *s)
Destroy an audio source.
GAVL_PUBLIC void gavl_packet_source_set_lock_funcs(gavl_packet_source_t *src, gavl_connector_lock_func_t lock_func, gavl_connector_lock_func_t unlock_func, void *priv)
Set lock functions.
GAVL_PUBLIC void gavl_video_source_reset(gavl_video_source_t *s)
Reset a video source.
GAVL_PUBLIC gavl_packet_source_t * gavl_packet_source_create(gavl_packet_source_func_t func, void *priv, int src_flags)
Create a packet source.
GAVL_PUBLIC void gavl_video_source_destroy(gavl_video_source_t *s)
Destroy a video source.
GAVL_PUBLIC int gavl_audio_source_get_dst_flags(gavl_audio_source_t *s)
Get the output flags.
GAVL_PUBLIC const gavl_audio_format_t * gavl_audio_source_get_src_format(gavl_audio_source_t *s)
Get the native format.
@ GAVL_SOURCE_OK
Frame available.
Definition: connectors.h:94
@ GAVL_SOURCE_EOF
End of file, no more frames available.
Definition: connectors.h:93
@ GAVL_SOURCE_AGAIN
No frame available right now, might try later.
Definition: connectors.h:95
struct gavl_video_options_s gavl_video_options_t
Definition: gavl.h:3160
Audio Format.
Definition: gavl.h:321
Generic container for audio samples.
Definition: gavl.h:668
Compression format.
Definition: compression.h:121
Packet structure.
Definition: compression.h:342
Video format.
Definition: gavl.h:2380
Definition: gavl.h:2584