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#include <gavl/trackinfo.h>
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
55typedef void (*gavl_connector_lock_func_t)(void * priv);
56
61typedef void (*gavl_connector_free_func_t)(void * priv);
62
63
98
108(*gavl_audio_source_func_t)(void * priv, gavl_audio_frame_t ** frame);
109
119(*gavl_video_source_func_t)(void * priv, gavl_video_frame_t ** frame);
120
130(*gavl_packet_source_func_t)(void * priv, gavl_packet_t ** p);
131
132
136#define GAVL_SOURCE_SRC_ALLOC (1<<0)
137
138
143#define GAVL_SOURCE_SRC_FRAMESIZE_MAX (1<<2)
144
149#define GAVL_SOURCE_SRC_DISCONTINUOUS (1<<3)
150
151
152/* Called by the source */
153
162GAVL_PUBLIC
165 void * priv, int src_flags,
166 const gavl_video_format_t * src_format);
167
168GAVL_PUBLIC
169void gavl_video_source_set_pts_offset(gavl_video_source_t * src, int64_t offset);
170
171
172GAVL_PUBLIC
173void gavl_video_source_drain(gavl_video_source_t * s);
174
175
187GAVL_PUBLIC
190 void * priv, int src_flags,
191 gavl_video_source_t * src);
192
200GAVL_PUBLIC void
202 gavl_connector_lock_func_t lock_func,
203 gavl_connector_lock_func_t unlock_func,
204 void * priv);
205
213GAVL_PUBLIC void
215 gavl_connector_free_func_t free_func);
216
217
218
225GAVL_PUBLIC
227
234GAVL_PUBLIC
236
244GAVL_PUBLIC
246
247/* Called by the destination */
248
258GAVL_PUBLIC
260
266GAVL_PUBLIC
269
275GAVL_PUBLIC
278
294GAVL_PUBLIC
295void
297 const gavl_video_format_t * dst_format);
298
309GAVL_PUBLIC
312
313/* Called by source */
314
323GAVL_PUBLIC
326 void * priv, int src_flags,
327 const gavl_audio_format_t * src_format);
328
329
330GAVL_PUBLIC
331void gavl_audio_source_drain(gavl_audio_source_t * s);
332
333GAVL_PUBLIC
334void gavl_audio_source_set_pts_offset(gavl_audio_source_t * src, int64_t offset);
335
336
348GAVL_PUBLIC
351 void * priv, int src_flags,
352 gavl_audio_source_t * src);
353
354
362GAVL_PUBLIC void
364 gavl_connector_lock_func_t lock_func,
365 gavl_connector_lock_func_t unlock_func,
366 void * priv);
367
375GAVL_PUBLIC void
377 gavl_connector_free_func_t free_func);
378
379
380
386GAVL_PUBLIC
389
395GAVL_PUBLIC
398
404GAVL_PUBLIC int
406
423GAVL_PUBLIC
424void
426 const gavl_audio_format_t * dst_format);
427
442GAVL_PUBLIC
445
455GAVL_PUBLIC
456void
458
459
460GAVL_PUBLIC
461void
462gavl_audio_source_skip_to(gavl_audio_source_t * s,
463 int64_t t, int scale);
464
474GAVL_PUBLIC
476 int num_samples);
477
483GAVL_PUBLIC
485
492GAVL_PUBLIC
494
502GAVL_PUBLIC
504
505
506/* Packet source */
507
518GAVL_PUBLIC
521 void * priv, int src_flags, const gavl_dictionary_t * s);
522
523GAVL_PUBLIC
524void gavl_packet_source_set_pts_offset(gavl_packet_source_t * src, int64_t offset);
525
526
527GAVL_PUBLIC
528void gavl_packet_source_drain(gavl_packet_source_t * src);
529
530/* Call after seeking */
531GAVL_PUBLIC
532void gavl_packet_source_reset(gavl_packet_source_t * s);
533
534GAVL_PUBLIC const gavl_dictionary_t *
535gavl_packet_source_get_stream(gavl_packet_source_t * s);
536
537GAVL_PUBLIC gavl_dictionary_t *
538gavl_packet_source_get_stream_nc(gavl_packet_source_t * s);
539
540#if 0
549GAVL_PUBLIC
551gavl_packet_source_create_audio(gavl_packet_source_func_t func,
552 void * priv, int src_flags,
553 const gavl_compression_info_t * ci,
554 const gavl_audio_format_t * afmt);
555
564GAVL_PUBLIC
566gavl_packet_source_create_video(gavl_packet_source_func_t func,
567 void * priv, int src_flags,
568 const gavl_compression_info_t * ci,
569 const gavl_video_format_t * vfmt,
570 gavl_stream_type_t type);
571
579GAVL_PUBLIC
581gavl_packet_source_create_text(gavl_packet_source_func_t func,
582 void * priv, int src_flags, int timescale);
583
584#endif
585
593GAVL_PUBLIC
596 void * priv, int src_flags,
598
599
607GAVL_PUBLIC void
609 gavl_connector_lock_func_t lock_func,
610 gavl_connector_lock_func_t unlock_func,
611 void * priv);
612
620GAVL_PUBLIC void
622 gavl_connector_free_func_t free_func);
623
624
625
631// GAVL_PUBLIC const gavl_compression_info_t *
632// gavl_packet_source_get_ci(gavl_packet_source_t * s);
633
639GAVL_PUBLIC const gavl_audio_format_t *
641
647GAVL_PUBLIC const gavl_video_format_t *
649
655GAVL_PUBLIC int
657
663GAVL_PUBLIC gavl_source_status_t
665
666
667GAVL_PUBLIC gavl_source_status_t
668gavl_packet_source_peek_packet(void*sp, gavl_packet_t ** p);
669
670
675GAVL_PUBLIC void
677
704
705
715(*gavl_audio_sink_get_func)(void * priv);
716
725
734GAVL_PUBLIC gavl_audio_sink_t *
737 void * priv,
738 const gavl_audio_format_t * format);
739
747GAVL_PUBLIC void
749 gavl_connector_lock_func_t lock_func,
750 gavl_connector_lock_func_t unlock_func,
751 void * priv);
752
760GAVL_PUBLIC void
762 gavl_connector_free_func_t free_func);
763
764
765
771GAVL_PUBLIC const gavl_audio_format_t *
773
783GAVL_PUBLIC gavl_audio_frame_t *
785
795GAVL_PUBLIC gavl_sink_status_t
797
802GAVL_PUBLIC void
804
805
806
816(*gavl_video_sink_get_func)(void * priv);
817
826
835GAVL_PUBLIC gavl_video_sink_t *
838 void * priv,
839 const gavl_video_format_t * format);
840
848GAVL_PUBLIC void
850 gavl_connector_lock_func_t lock_func,
851 gavl_connector_lock_func_t unlock_func,
852 void * priv);
853
861GAVL_PUBLIC void
863 gavl_connector_free_func_t free_func);
864
865
871GAVL_PUBLIC const gavl_video_format_t *
873
883GAVL_PUBLIC gavl_video_frame_t *
885
895GAVL_PUBLIC gavl_sink_status_t
897
902GAVL_PUBLIC void
904
905
906
916(*gavl_packet_sink_get_func)(void * priv);
917
925(*gavl_packet_sink_put_func)(void * priv, gavl_packet_t * p);
926
934GAVL_PUBLIC gavl_packet_sink_t *
937 void * priv);
938
946GAVL_PUBLIC void
948 gavl_connector_lock_func_t lock_func,
949 gavl_connector_lock_func_t unlock_func,
950 void * priv);
951
959GAVL_PUBLIC void
961 gavl_connector_free_func_t free_func);
962
963
973GAVL_PUBLIC gavl_packet_t *
975
976GAVL_PUBLIC void
977gavl_packet_sink_reset(gavl_packet_sink_t * s);
978
979
989GAVL_PUBLIC gavl_sink_status_t
991
996GAVL_PUBLIC void
998
999
1019typedef struct gavl_audio_connector_s gavl_audio_connector_t;
1020
1026typedef struct gavl_video_connector_s gavl_video_connector_t;
1027
1033typedef struct gavl_packet_connector_s gavl_packet_connector_t;
1034
1046typedef void
1048 gavl_audio_frame_t * frame);
1049
1061typedef void
1063 gavl_video_frame_t * frame);
1064
1073typedef void
1075 gavl_packet_t * p);
1076
1082GAVL_PUBLIC gavl_audio_connector_t *
1084
1092GAVL_PUBLIC gavl_audio_options_t *
1094
1099GAVL_PUBLIC void
1101
1107GAVL_PUBLIC void
1109 gavl_audio_sink_t * sink);
1110
1117GAVL_PUBLIC void
1120 void * priv);
1121
1129GAVL_PUBLIC void
1131
1137GAVL_PUBLIC const gavl_audio_format_t *
1139
1149GAVL_PUBLIC int
1151
1158GAVL_PUBLIC
1160
1166GAVL_PUBLIC gavl_source_status_t
1168
1169
1170/* */
1171
1177GAVL_PUBLIC gavl_video_connector_t *
1179
1187GAVL_PUBLIC gavl_video_options_t *
1189
1194GAVL_PUBLIC void
1196
1202GAVL_PUBLIC void
1204 gavl_video_sink_t * sink);
1205
1212GAVL_PUBLIC void
1215 void * priv);
1216
1224GAVL_PUBLIC void
1226
1232GAVL_PUBLIC const gavl_video_format_t *
1234
1244GAVL_PUBLIC int
1246
1253GAVL_PUBLIC
1255
1261GAVL_PUBLIC gavl_source_status_t
1263
1264/* */
1265
1271GAVL_PUBLIC gavl_packet_connector_t *
1273
1278GAVL_PUBLIC void
1280
1286GAVL_PUBLIC void
1288 gavl_packet_sink_t * sink);
1289
1296GAVL_PUBLIC void
1299 void * priv);
1300
1308GAVL_PUBLIC int
1310
1316GAVL_PUBLIC gavl_source_status_t
1318
1319/* Packet buffer */
1320
1321typedef struct gavl_packet_buffer_s
1322gavl_packet_buffer_t;
1323
1324GAVL_PUBLIC
1325gavl_packet_buffer_t * gavl_packet_buffer_create(const gavl_dictionary_t * stream_info);
1326
1327GAVL_PUBLIC
1328void gavl_packet_buffer_destroy(gavl_packet_buffer_t *);
1329
1330GAVL_PUBLIC
1331void gavl_packet_buffer_flush(gavl_packet_buffer_t *);
1332
1333GAVL_PUBLIC
1334void gavl_packet_buffer_clear(gavl_packet_buffer_t *);
1335
1336GAVL_PUBLIC
1337gavl_packet_sink_t * gavl_packet_buffer_get_sink(gavl_packet_buffer_t *);
1338
1339GAVL_PUBLIC
1340gavl_packet_source_t * gavl_packet_buffer_get_source(gavl_packet_buffer_t *);
1341
1342/* Set output PTS (called after seeking) */
1343
1344GAVL_PUBLIC
1345void gavl_packet_buffer_set_out_pts(gavl_packet_buffer_t * buf, int64_t pts);
1346
1347/*
1348 * Mark the last packet with GAVL_PACKET_LAST.
1349 * Introduces a delay of 1 for low-delay streams
1350 */
1351
1352GAVL_PUBLIC
1353void gavl_packet_buffer_set_mark_last(gavl_packet_buffer_t * buf, int mark);
1354
1355GAVL_PUBLIC
1356void gavl_packet_buffer_set_calc_frame_durations(gavl_packet_buffer_t * buf, int calc);
1357
1362#ifdef __cplusplus
1363}
1364#endif
1365
1366#endif // GAVL_CONNECTORS_H_INCLUDED
struct gavl_audio_options_s gavl_audio_options_t
Opaque container for audio conversion options.
Definition gavl.h:989
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:1019
void(* gavl_packet_connector_process_func)(void *priv, gavl_packet_t *p)
Callback for processing a packet.
Definition connectors.h:1074
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:1033
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:1047
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:1026
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:1062
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:82
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:925
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:700
struct gavl_audio_sink_s gavl_audio_sink_t
Audio sink.
Definition gavl.h:73
struct gavl_packet_sink_s gavl_packet_sink_t
Packet sink.
Definition gavl.h:91
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:724
gavl_audio_frame_t *(* gavl_audio_sink_get_func)(void *priv)
Prototype for getting a frame buffer.
Definition connectors.h:715
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:816
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:916
gavl_sink_status_t(* gavl_video_sink_put_func)(void *priv, gavl_video_frame_t *f)
Prototype for putting a frame.
Definition connectors.h:825
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:702
@ GAVL_SINK_ERROR
Something went wrong.
Definition connectors.h:701
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:130
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(gavl_packet_source_func_t func, void *priv, int src_flags, const gavl_dictionary_t *s)
Create a 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:49
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:93
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:57
GAVL_PUBLIC const gavl_audio_format_t * gavl_packet_source_get_audio_format(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:119
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:108
GAVL_PUBLIC void gavl_packet_source_destroy(gavl_packet_source_t *s)
Destroy a packet source.
struct gavl_packet_source_s gavl_packet_source_t
Forward declaration of the packet source.
Definition gavl.h:65
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 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:95
@ GAVL_SOURCE_EOF
End of file, no more frames available.
Definition connectors.h:94
@ GAVL_SOURCE_AGAIN
No frame available right now, might try later.
Definition connectors.h:96
struct gavl_video_options_s gavl_video_options_t
Definition gavl.h:3178
Audio Format.
Definition gavl.h:272
Generic container for audio samples.
Definition gavl.h:623
Compression format.
Definition compression.h:125
Packet structure.
Definition compression.h:415
Video format.
Definition gavl.h:2375
Definition gavl.h:2587