Introduce packet source trait

There was a packet sink trait, implemented by components able to
receive AVPackets, but each packet source had to manually send to packet
sinks.

In order to mutualise sink management, add a packet source trait.
This commit is contained in:
Romain Vimont
2023-03-02 09:07:25 +01:00
parent 57192b4a2f
commit fdfe1e7776
3 changed files with 112 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
#ifndef SC_PACKET_SOURCE_H
#define SC_PACKET_SOURCE_H
#include "common.h"
#include "packet_sink.h"
#define SC_PACKET_SOURCE_MAX_SINKS 2
/**
* Packet source trait
*
* Component able to send AVPackets should implement this trait.
*/
struct sc_packet_source {
struct sc_packet_sink *sinks[SC_PACKET_SOURCE_MAX_SINKS];
unsigned sink_count;
};
void
sc_packet_source_init(struct sc_packet_source *source);
void
sc_packet_source_add_sink(struct sc_packet_source *source,
struct sc_packet_sink *sink);
bool
sc_packet_source_sinks_open(struct sc_packet_source *source,
const AVCodec *codec);
void
sc_packet_source_sinks_close(struct sc_packet_source *source);
bool
sc_packet_source_sinks_push(struct sc_packet_source *source,
const AVPacket *packet);
void
sc_packet_source_sinks_disable(struct sc_packet_source *source);
#endif