2017-02-07 16:05:17 +00:00
|
|
|
#ifndef MP_RECORDER_H_
|
|
|
|
#define MP_RECORDER_H_
|
|
|
|
|
|
|
|
struct mp_recorder;
|
|
|
|
struct mpv_global;
|
|
|
|
struct demux_packet;
|
|
|
|
struct sh_stream;
|
2021-05-28 22:28:15 +00:00
|
|
|
struct demux_attachment;
|
2017-02-07 16:05:17 +00:00
|
|
|
struct mp_recorder_sink;
|
|
|
|
|
|
|
|
struct mp_recorder *mp_recorder_create(struct mpv_global *global,
|
|
|
|
const char *target_file,
|
|
|
|
struct sh_stream **streams,
|
2021-05-28 22:28:15 +00:00
|
|
|
int num_streams,
|
|
|
|
struct demux_attachment **demux_attachments,
|
|
|
|
int num_attachments);
|
2017-02-07 16:05:17 +00:00
|
|
|
void mp_recorder_destroy(struct mp_recorder *r);
|
|
|
|
void mp_recorder_mark_discontinuity(struct mp_recorder *r);
|
|
|
|
|
recorder: don't use a magic index for mp_recorder_get_sink()
Although this was sort of elegant, it just seems to complicate things
slightly. Originally, the API meant that you cache mp_recorder_sink
yourself (which would avoid the mess of passing an index around), but
that too seems slightly roundabout.
In a later change, I want to change the set of streams passed to
mp_recorder_create(), and then I'd have to keep track of the index for
each stream, which would suck. With this commit, I can just pass the
unambiguous sh_stream to it, and it will be guaranteed to match the
correct stream.
The disadvantages are barely worth discussing. It's a new linear search
per packet, but usually only 2 to 4 streams are active at a time. Also,
in theory a user could want to write 2 streams using the same sh_stream
(same metadata, just writing different packets or so), but in practice
this is never done.
2019-09-28 23:39:17 +00:00
|
|
|
struct mp_recorder_sink *mp_recorder_get_sink(struct mp_recorder *r,
|
|
|
|
struct sh_stream *stream);
|
2017-02-07 16:05:17 +00:00
|
|
|
void mp_recorder_feed_packet(struct mp_recorder_sink *s,
|
|
|
|
struct demux_packet *pkt);
|
|
|
|
|
|
|
|
#endif
|