common --m2m-device option

This commit is contained in:
Maxim Devaev
2021-11-26 06:34:20 +03:00
parent 459060532a
commit c51984c9d9
5 changed files with 8 additions and 8 deletions

View File

@@ -53,6 +53,7 @@ encoder_s *encoder_init(void) {
A_CALLOC(enc, 1);
enc->type = run->type;
enc->n_workers = get_cores_available();
enc->m2m_path = "/dev/video11";
enc->run = run;
return enc;
}
@@ -136,7 +137,7 @@ workers_pool_s *encoder_workers_pool_init(encoder_s *enc, device_s *dev) {
{"BITRATE", true, V4L2_CID_MPEG_VIDEO_BITRATE, bitrate * 1000},
{NULL, false, 0, 0},
};
ER(m2ms[ER(n_m2ms)]) = m2m_encoder_init(name, "/dev/video11", V4L2_PIX_FMT_MJPEG, 0, options);
ER(m2ms[ER(n_m2ms)]) = m2m_encoder_init(name, enc->m2m_path, V4L2_PIX_FMT_MJPEG, 0, options);
}
}

View File

@@ -83,6 +83,7 @@ typedef struct {
typedef struct {
encoder_type_e type;
unsigned n_workers;
char *m2m_path;
encoder_runtime_s *run;
} encoder_s;

View File

@@ -61,6 +61,7 @@ enum _OPT_VALUES {
_O_DEVICE_TIMEOUT = 10000,
_O_DEVICE_ERROR_DELAY,
_O_M2M_DEVICE,
_O_IMAGE_DEFAULT,
_O_BRIGHTNESS,
@@ -93,7 +94,6 @@ enum _OPT_VALUES {
ADD_SINK(SINK)
ADD_SINK(RAW_SINK)
ADD_SINK(H264_SINK)
_O_H264_DEVICE,
_O_H264_BITRATE,
_O_H264_GOP,
# undef ADD_SINK
@@ -146,6 +146,7 @@ static const struct option _LONG_OPTS[] = {
{"slowdown", no_argument, NULL, _O_SLOWDOWN},
{"device-timeout", required_argument, NULL, _O_DEVICE_TIMEOUT},
{"device-error-delay", required_argument, NULL, _O_DEVICE_ERROR_DELAY},
{"m2m-device", required_argument, NULL, _O_M2M_DEVICE},
{"image-default", no_argument, NULL, _O_IMAGE_DEFAULT},
{"brightness", required_argument, NULL, _O_BRIGHTNESS},
@@ -188,7 +189,6 @@ static const struct option _LONG_OPTS[] = {
ADD_SINK("", SINK)
ADD_SINK("raw-", RAW_SINK)
ADD_SINK("h264-", H264_SINK)
{"h264-device", required_argument, NULL, _O_H264_DEVICE},
{"h264-bitrate", required_argument, NULL, _O_H264_BITRATE},
{"h264-gop", required_argument, NULL, _O_H264_GOP},
# undef ADD_SINK
@@ -380,6 +380,7 @@ int options_parse(options_s *options, device_s *dev, encoder_s *enc, stream_s *s
case _O_SLOWDOWN: OPT_SET(stream->slowdown, true);
case _O_DEVICE_TIMEOUT: OPT_NUMBER("--device-timeout", dev->timeout, 1, 60, 0);
case _O_DEVICE_ERROR_DELAY: OPT_NUMBER("--device-error-delay", stream->error_delay, 1, 60, 0);
case _O_M2M_DEVICE: OPT_SET(enc->m2m_path, optarg);
case _O_IMAGE_DEFAULT:
OPT_CTL_DEFAULT_NOBREAK(brightness);
@@ -436,7 +437,6 @@ int options_parse(options_s *options, device_s *dev, encoder_s *enc, stream_s *s
ADD_SINK("", sink, SINK)
ADD_SINK("raw-", raw_sink, RAW_SINK)
ADD_SINK("h264-", h264_sink, H264_SINK)
case _O_H264_DEVICE: OPT_SET(stream->h264_path, optarg);
case _O_H264_BITRATE: OPT_NUMBER("--h264-bitrate", stream->h264_bitrate, 25, 25000, 0);
case _O_H264_GOP: OPT_NUMBER("--h264-gop", stream->h264_gop, 0, 60, 0);
# undef ADD_SINK
@@ -621,6 +621,7 @@ static void _help(FILE *fp, device_s *dev, encoder_s *enc, stream_s *stream, ser
SAY(" --device-timeout <sec> ────────────── Timeout for device querying. Default: %u.\n", dev->timeout);
SAY(" --device-error-delay <sec> ────────── Delay before trying to connect to the device again");
SAY(" after an error (timeout for example). Default: %u.\n", stream->error_delay);
SAY(" --m2m-device </dev/path> ──────────── Path to V4L2 M2M encoder device. Default: %s.\n", enc->m2m_path);
SAY("Image control options:");
SAY("══════════════════════");
SAY(" --image-default ────────────────────── Reset all image settings below to default. Default: no change.\n");
@@ -672,7 +673,6 @@ static void _help(FILE *fp, device_s *dev, encoder_s *enc, stream_s *stream, ser
ADD_SINK("JPEG", "")
ADD_SINK("RAW", "raw-")
ADD_SINK("H264", "h264-")
SAY(" --h264-device </dev/path> ──── Path to V4L2 H.264 encoder device. Default: %s.\n", stream->h264_path);
SAY(" --h264-bitrate <kbps> ──────── H264 bitrate in Kbps. Default: %u.\n", stream->h264_bitrate);
SAY(" --h264-gop <N> ─────────────── Intarval between keyframes. Default: %u.\n", stream->h264_gop);
# undef ADD_SINK

View File

@@ -62,7 +62,6 @@ stream_s *stream_init(device_s *dev, encoder_s *enc) {
stream->enc = enc;
stream->last_as_blank = -1;
stream->error_delay = 1;
stream->h264_path = "/dev/video11";
stream->h264_bitrate = 5000; // Kbps
stream->h264_gop = 30;
stream->run = run;
@@ -84,7 +83,7 @@ void stream_loop(stream_s *stream) {
LOG_INFO("Using desired FPS: %u", stream->dev->desired_fps);
if (stream->h264_sink) {
RUN(h264) = h264_stream_init(stream->h264_sink, stream->h264_path, stream->h264_bitrate, stream->h264_gop);
RUN(h264) = h264_stream_init(stream->h264_sink, stream->enc->m2m_path, stream->h264_bitrate, stream->h264_gop);
}
for (workers_pool_s *pool; (pool = _stream_init_loop(stream)) != NULL;) {

View File

@@ -79,7 +79,6 @@ typedef struct {
memsink_s *raw_sink;
memsink_s *h264_sink;
char *h264_path;
unsigned h264_bitrate;
unsigned h264_gop;