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
34 extern "C" {
35 #endif
36 
54 typedef void (*gavl_connector_lock_func_t)(void * priv);
55 
60 typedef void (*gavl_connector_free_func_t)(void * priv);
61 
62 
91 typedef 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 
161 GAVL_PUBLIC
164  void * priv, int src_flags,
165  const gavl_video_format_t * src_format);
166 
167 GAVL_PUBLIC
168 void gavl_video_source_set_eof(gavl_video_source_t * src, int eof);
169 
170 GAVL_PUBLIC
171 int gavl_video_source_get_eof(gavl_video_source_t * src);
172 
173 GAVL_PUBLIC
174 void gavl_video_source_drain(gavl_video_source_t * s);
175 
176 GAVL_PUBLIC
177 void gavl_video_source_drain_nolock(gavl_video_source_t * s);
178 
179 
191 GAVL_PUBLIC
194  void * priv, int src_flags,
195  gavl_video_source_t * src);
196 
204 GAVL_PUBLIC void
206  gavl_connector_lock_func_t lock_func,
207  gavl_connector_lock_func_t unlock_func,
208  void * priv);
209 
217 GAVL_PUBLIC void
219  gavl_connector_free_func_t free_func);
220 
221 
222 
229 GAVL_PUBLIC
231 
238 GAVL_PUBLIC
240 
248 GAVL_PUBLIC
250 
251 /* Called by the destination */
252 
262 GAVL_PUBLIC
264 
270 GAVL_PUBLIC
271 const gavl_video_format_t *
273 
279 GAVL_PUBLIC
280 const gavl_video_format_t *
282 
298 GAVL_PUBLIC
299 void
301  const gavl_video_format_t * dst_format);
302 
313 GAVL_PUBLIC
316 
317 /* Called by source */
318 
327 GAVL_PUBLIC
330  void * priv, int src_flags,
331  const gavl_audio_format_t * src_format);
332 
333 GAVL_PUBLIC
334 void gavl_audio_source_set_eof(gavl_audio_source_t * src, int eof);
335 
336 GAVL_PUBLIC
337 int gavl_audio_source_get_eof(gavl_audio_source_t * src);
338 
339 GAVL_PUBLIC
340 void gavl_audio_source_drain(gavl_audio_source_t * s);
341 
342 GAVL_PUBLIC
343 void gavl_audio_source_drain_nolock(gavl_audio_source_t * s);
344 
356 GAVL_PUBLIC
359  void * priv, int src_flags,
360  gavl_audio_source_t * src);
361 
362 
370 GAVL_PUBLIC void
372  gavl_connector_lock_func_t lock_func,
373  gavl_connector_lock_func_t unlock_func,
374  void * priv);
375 
383 GAVL_PUBLIC void
385  gavl_connector_free_func_t free_func);
386 
387 
388 
394 GAVL_PUBLIC
395 const gavl_audio_format_t *
397 
403 GAVL_PUBLIC
404 const gavl_audio_format_t *
406 
412 GAVL_PUBLIC int
414 
431 GAVL_PUBLIC
432 void
434  const gavl_audio_format_t * dst_format);
435 
450 GAVL_PUBLIC
453 
463 GAVL_PUBLIC
464 void
466 
467 
468 GAVL_PUBLIC
469 void
470 gavl_audio_source_skip_to(gavl_audio_source_t * s,
471  int64_t t, int scale);
472 
482 GAVL_PUBLIC
484  int num_samples);
485 
491 GAVL_PUBLIC
493 
500 GAVL_PUBLIC
502 
510 GAVL_PUBLIC
512 
513 
514 /* Packet source */
515 
526 GAVL_PUBLIC
529  void * priv, int src_flags);
530 
531 GAVL_PUBLIC
532 void gavl_packet_source_set_eof(gavl_packet_source_t * src, int eof);
533 
534 GAVL_PUBLIC
535 int gavl_packet_source_get_eof(gavl_packet_source_t * src);
536 
537 GAVL_PUBLIC
538 void gavl_packet_source_drain(gavl_packet_source_t * src);
539 
540 GAVL_PUBLIC
541 void gavl_packet_source_drain_nolock(gavl_packet_source_t * src);
542 
551 GAVL_PUBLIC
554  void * priv, int src_flags,
555  const gavl_compression_info_t * ci,
556  const gavl_audio_format_t * afmt);
557 
566 GAVL_PUBLIC
569  void * priv, int src_flags,
570  const gavl_compression_info_t * ci,
571  const gavl_video_format_t * vfmt);
572 
580 GAVL_PUBLIC
583  void * priv, int src_flags, int timescale);
584 
592 GAVL_PUBLIC
595  void * priv, int src_flags,
596  gavl_packet_source_t * src);
597 
598 
606 GAVL_PUBLIC void
608  gavl_connector_lock_func_t lock_func,
609  gavl_connector_lock_func_t unlock_func,
610  void * priv);
611 
619 GAVL_PUBLIC void
621  gavl_connector_free_func_t free_func);
622 
623 
624 
630 GAVL_PUBLIC const gavl_compression_info_t *
632 
638 GAVL_PUBLIC const gavl_audio_format_t *
640 
646 GAVL_PUBLIC const gavl_video_format_t *
648 
654 GAVL_PUBLIC int
656 
662 GAVL_PUBLIC gavl_source_status_t
664 
669 GAVL_PUBLIC void
671 
693 typedef enum
694  {
698 
699 
709 (*gavl_audio_sink_get_func)(void * priv);
710 
718 (*gavl_audio_sink_put_func)(void * priv, gavl_audio_frame_t * f);
719 
728 GAVL_PUBLIC gavl_audio_sink_t *
730  gavl_audio_sink_put_func put_func,
731  void * priv,
732  const gavl_audio_format_t * format);
733 
741 GAVL_PUBLIC void
743  gavl_connector_lock_func_t lock_func,
744  gavl_connector_lock_func_t unlock_func,
745  void * priv);
746 
754 GAVL_PUBLIC void
756  gavl_connector_free_func_t free_func);
757 
758 
759 
765 GAVL_PUBLIC const gavl_audio_format_t *
767 
777 GAVL_PUBLIC gavl_audio_frame_t *
779 
789 GAVL_PUBLIC gavl_sink_status_t
791 
796 GAVL_PUBLIC void
798 
799 
800 
810 (*gavl_video_sink_get_func)(void * priv);
811 
819 (*gavl_video_sink_put_func)(void * priv, gavl_video_frame_t * f);
820 
829 GAVL_PUBLIC gavl_video_sink_t *
831  gavl_video_sink_put_func put_func,
832  void * priv,
833  const gavl_video_format_t * format);
834 
842 GAVL_PUBLIC void
844  gavl_connector_lock_func_t lock_func,
845  gavl_connector_lock_func_t unlock_func,
846  void * priv);
847 
855 GAVL_PUBLIC void
857  gavl_connector_free_func_t free_func);
858 
859 
865 GAVL_PUBLIC const gavl_video_format_t *
867 
877 GAVL_PUBLIC gavl_video_frame_t *
879 
889 GAVL_PUBLIC gavl_sink_status_t
891 
896 GAVL_PUBLIC void
898 
899 
900 
909 typedef gavl_packet_t *
910 (*gavl_packet_sink_get_func)(void * priv);
911 
919 (*gavl_packet_sink_put_func)(void * priv, gavl_packet_t * p);
920 
928 GAVL_PUBLIC gavl_packet_sink_t *
930  gavl_packet_sink_put_func put_func,
931  void * priv);
932 
940 GAVL_PUBLIC void
942  gavl_connector_lock_func_t lock_func,
943  gavl_connector_lock_func_t unlock_func,
944  void * priv);
945 
953 GAVL_PUBLIC void
955  gavl_connector_free_func_t free_func);
956 
957 
967 GAVL_PUBLIC gavl_packet_t *
969 
979 GAVL_PUBLIC gavl_sink_status_t
981 
986 GAVL_PUBLIC void
988 
989 
1009 typedef struct gavl_audio_connector_s gavl_audio_connector_t;
1010 
1016 typedef struct gavl_video_connector_s gavl_video_connector_t;
1017 
1023 typedef struct gavl_packet_connector_s gavl_packet_connector_t;
1024 
1036 typedef void
1037 (*gavl_audio_connector_process_func)(void * priv,
1038  gavl_audio_frame_t * frame);
1039 
1051 typedef void
1052 (*gavl_video_connector_process_func)(void * priv,
1053  gavl_video_frame_t * frame);
1054 
1063 typedef void
1064 (*gavl_packet_connector_process_func)(void * priv,
1065  gavl_packet_t * p);
1066 
1072 GAVL_PUBLIC gavl_audio_connector_t *
1074 
1082 GAVL_PUBLIC gavl_audio_options_t *
1084 
1089 GAVL_PUBLIC void
1091 
1097 GAVL_PUBLIC void
1099  gavl_audio_sink_t * sink);
1100 
1107 GAVL_PUBLIC void
1110  void * priv);
1111 
1119 GAVL_PUBLIC void
1121 
1127 GAVL_PUBLIC const gavl_audio_format_t *
1129 
1139 GAVL_PUBLIC int
1141 
1148 GAVL_PUBLIC
1150 
1156 GAVL_PUBLIC gavl_source_status_t
1158 
1159 
1160 /* */
1161 
1167 GAVL_PUBLIC gavl_video_connector_t *
1169 
1177 GAVL_PUBLIC gavl_video_options_t *
1179 
1184 GAVL_PUBLIC void
1186 
1192 GAVL_PUBLIC void
1194  gavl_video_sink_t * sink);
1195 
1202 GAVL_PUBLIC void
1205  void * priv);
1206 
1214 GAVL_PUBLIC void
1216 
1222 GAVL_PUBLIC const gavl_video_format_t *
1224 
1234 GAVL_PUBLIC int
1236 
1243 GAVL_PUBLIC
1245 
1251 GAVL_PUBLIC gavl_source_status_t
1253 
1254 /* */
1255 
1261 GAVL_PUBLIC gavl_packet_connector_t *
1263 
1268 GAVL_PUBLIC void
1270 
1276 GAVL_PUBLIC void
1278  gavl_packet_sink_t * sink);
1279 
1286 GAVL_PUBLIC void
1289  void * priv);
1290 
1298 GAVL_PUBLIC int
1300 
1306 GAVL_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
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_source_status_t gavl_packet_connector_get_source_status(gavl_packet_connector_t *c)
Get the status of the last read call.
GAVL_PUBLIC gavl_video_connector_t * gavl_video_connector_create(gavl_video_source_t *src)
Create a video connector.
struct gavl_packet_connector_s gavl_packet_connector_t
Opaque structure for the packet connector.
Definition: connectors.h:1023
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 gavl_audio_options_t * gavl_audio_connector_get_options(gavl_audio_connector_t *c)
Get conversion options.
GAVL_PUBLIC void gavl_audio_connector_reset(gavl_audio_connector_t *c)
Reset an audio connector.
GAVL_PUBLIC gavl_video_options_t * gavl_video_connector_get_options(gavl_video_connector_t *c)
Get conversion options.
GAVL_PUBLIC int gavl_video_connector_process(gavl_video_connector_t *c)
Process one frame.
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 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 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 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_connect(gavl_audio_connector_t *c, gavl_audio_sink_t *sink)
Connect a sink.
GAVL_PUBLIC const gavl_audio_format_t * gavl_audio_connector_get_process_format(gavl_audio_connector_t *c)
Get process format.
GAVL_PUBLIC gavl_audio_connector_t * gavl_audio_connector_create(gavl_audio_source_t *src)
Create an audio connector.
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 gavl_packet_connector_t * gavl_packet_connector_create(gavl_packet_source_t *src)
Create a packet 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 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_video_frame_t *(* gavl_video_sink_get_func)(void *priv)
Prototype for getting a frame buffer.
Definition: connectors.h:810
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 const gavl_video_format_t * gavl_video_sink_get_format(gavl_video_sink_t *s)
Get the format.
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_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_PUBLIC gavl_packet_t * gavl_packet_sink_get_packet(gavl_packet_sink_t *s)
Get a buffer for a packet.
GAVL_PUBLIC gavl_video_frame_t * gavl_video_sink_get_frame(gavl_video_sink_t *s)
Get a buffer for a frame.
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 const gavl_audio_format_t * gavl_audio_sink_get_format(gavl_audio_sink_t *s)
Get the format.
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_PUBLIC gavl_sink_status_t gavl_packet_sink_put_packet(gavl_packet_sink_t *s, gavl_packet_t *p)
Output a frame.
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_audio_frame_t *(* gavl_audio_sink_get_func)(void *priv)
Prototype for getting a frame buffer.
Definition: connectors.h:709
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_packet_t *(* gavl_packet_sink_get_func)(void *priv)
Prototype for getting a packet buffer.
Definition: connectors.h:910
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 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_packet_sink_destroy(gavl_packet_sink_t *s)
Destroy a packet sink.
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_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_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_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_src_format(gavl_audio_source_t *s)
Get the native 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 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.
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.
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_source_status_t
Return value of the source function.
Definition: connectors.h:92
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_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 void gavl_video_source_support_hw(gavl_video_source_t *s)
Enable hardware surfaces.
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_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 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 const gavl_video_format_t * gavl_video_source_get_dst_format(gavl_video_source_t *s)
Get the output format.
struct gavl_audio_source_s gavl_audio_source_t
Forward declaration of the audio source.
Definition: gavl.h:56
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_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_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_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.
struct gavl_packet_source_s gavl_packet_source_t
Forward declaration of the packet source.
Definition: gavl.h:64
GAVL_PUBLIC const gavl_audio_format_t * gavl_audio_source_get_dst_format(gavl_audio_source_t *s)
Get the output format.
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 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 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_compression_info_t * gavl_packet_source_get_ci(gavl_packet_source_t *s)
Get the compression info.
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 const gavl_audio_format_t * gavl_packet_source_get_audio_format(gavl_packet_source_t *s)
Get the audio format.
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 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.
GAVL_PUBLIC const gavl_video_format_t * gavl_video_source_get_src_format(gavl_video_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