* [FFmpeg-devel] [PATCH 1/4] fftools/ffmpeg: add ability to set a input burst time before readrate is enforced
@ 2023-05-02 13:43 Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 2/4] fftools/ffmpeg: use a non-zero default for -readrate_initial_burst Anton Khirnov
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Anton Khirnov @ 2023-05-02 13:43 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: ddurham
From: Davy Durham <ddurham@davyandbeth.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
---
Picking up this patch because it interacts with my ongoing work on
ffmpeg CLI. Applied my review comments, including renaming the option to
-readrate_initial_burst.
CCing the original author, please let me know if you'd prefer to handle
this patch yourself.
---
Changelog | 1 +
doc/ffmpeg.texi | 3 +++
fftools/ffmpeg.h | 1 +
fftools/ffmpeg_demux.c | 18 +++++++++++++++++-
fftools/ffmpeg_opt.c | 3 +++
5 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/Changelog b/Changelog
index 4901ef6ad7..2061aaf462 100644
--- a/Changelog
+++ b/Changelog
@@ -7,6 +7,7 @@ version <next>:
- Extend VAAPI support for libva-win32 on Windows
- afireqsrc audio source filter
- arls filter
+- ffmpeg CLI new option: -readrate_initial_burst
version 6.0:
- Radiance HDR image support
diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index 0fea0bacb1..a12700e2f3 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -1708,6 +1708,9 @@ it may cause packet loss.
It is useful for when flow speed of output packets is important, such as live streaming.
@item -re (@emph{input})
Read input at native frame rate. This is equivalent to setting @code{-readrate 1}.
+@item -readrate_initial_burst @var{seconds}
+Set an initial read burst time, in seconds, after which @option{-re/-readrate}
+will be enforced.
@item -vsync @var{parameter} (@emph{global})
@itemx -fps_mode[:@var{stream_specifier}] @var{parameter} (@emph{output,per-stream})
Set video sync method / framerate mode. vsync is applied to all output video streams
diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index b6389d7f99..a03a6b0302 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -126,6 +126,7 @@ typedef struct OptionsContext {
int loop;
int rate_emu;
float readrate;
+ double readrate_initial_burst;
int accurate_seek;
int thread_queue_size;
int input_sync_ref;
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index 26426c7ac1..37d7649da9 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -81,6 +81,8 @@ typedef struct Demuxer {
/* number of streams that the user was warned of */
int nb_streams_warn;
+ double readrate_initial_burst;
+
AVThreadMessageQueue *in_thread_queue;
int thread_queue_size;
pthread_t thread;
@@ -455,6 +457,7 @@ int ifile_get_packet(InputFile *f, AVPacket **pkt)
(f->start_time != AV_NOPTS_VALUE ? f->start_time : 0)
);
float scale = f->rate_emu ? 1.0 : f->readrate;
+ int64_t burst_until = AV_TIME_BASE * d->readrate_initial_burst;
for (i = 0; i < f->nb_streams; i++) {
InputStream *ist = f->streams[i];
int64_t stream_ts_offset, pts, now;
@@ -462,7 +465,7 @@ int ifile_get_packet(InputFile *f, AVPacket **pkt)
stream_ts_offset = FFMAX(ist->first_dts != AV_NOPTS_VALUE ? ist->first_dts : 0, file_start);
pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
now = (av_gettime_relative() - ist->start) * scale + stream_ts_offset;
- if (pts > now)
+ if (pts - burst_until > now)
return AVERROR(EAGAIN);
}
}
@@ -1236,6 +1239,19 @@ int ifile_open(const OptionsContext *o, const char *filename)
f->rate_emu = 0;
}
+ if (f->readrate || f->rate_emu) {
+ d->readrate_initial_burst = o->readrate_initial_burst ? o->readrate_initial_burst : 0.0;
+ if (d->readrate_initial_burst < 0.0) {
+ av_log(d, AV_LOG_ERROR,
+ "Option -readrate_initial_burst is %0.3f; it must be non-negative.\n",
+ d->readrate_initial_burst);
+ exit_program(1);
+ }
+ } else if (o->readrate_initial_burst) {
+ av_log(d, AV_LOG_WARNING, "Option -readrate_initial_burst ignored "
+ "since neither -readrate nor -re were given\n");
+ }
+
d->thread_queue_size = o->thread_queue_size;
/* update the current parameters so that they match the one of the input stream */
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index cf385c388e..7f22b22604 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -1454,6 +1454,9 @@ const OptionDef options[] = {
{ "readrate", HAS_ARG | OPT_FLOAT | OPT_OFFSET |
OPT_EXPERT | OPT_INPUT, { .off = OFFSET(readrate) },
"read input at specified rate", "speed" },
+ { "readrate_initial_burst", HAS_ARG | OPT_DOUBLE | OPT_OFFSET |
+ OPT_EXPERT | OPT_INPUT, { .off = OFFSET(readrate_initial_burst) },
+ "The initial amount of input to burst read before imposing any readrate", "seconds" },
{ "target", HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_target },
"specify target file type (\"vcd\", \"svcd\", \"dvd\", \"dv\" or \"dv50\" "
"with optional prefixes \"pal-\", \"ntsc-\" or \"film-\")", "type" },
--
2.39.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* [FFmpeg-devel] [PATCH 2/4] fftools/ffmpeg: use a non-zero default for -readrate_initial_burst
2023-05-02 13:43 [FFmpeg-devel] [PATCH 1/4] fftools/ffmpeg: add ability to set a input burst time before readrate is enforced Anton Khirnov
@ 2023-05-02 13:43 ` Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 3/4] fftools/ffmpeg: reduce -re to -readrate 1 Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 4/4] fftools/ffmpeg: deprecate -re Anton Khirnov
2 siblings, 0 replies; 6+ messages in thread
From: Anton Khirnov @ 2023-05-02 13:43 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: ddurham
Use it to replace a hack added in 6f206852289.
---
fftools/ffmpeg_demux.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index 37d7649da9..e6f700f6c3 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -461,7 +461,7 @@ int ifile_get_packet(InputFile *f, AVPacket **pkt)
for (i = 0; i < f->nb_streams; i++) {
InputStream *ist = f->streams[i];
int64_t stream_ts_offset, pts, now;
- if (!ist->nb_packets || (ist->decoding_needed && !ist->got_output)) continue;
+ if (!ist->nb_packets) continue;
stream_ts_offset = FFMAX(ist->first_dts != AV_NOPTS_VALUE ? ist->first_dts : 0, file_start);
pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
now = (av_gettime_relative() - ist->start) * scale + stream_ts_offset;
@@ -1240,7 +1240,7 @@ int ifile_open(const OptionsContext *o, const char *filename)
}
if (f->readrate || f->rate_emu) {
- d->readrate_initial_burst = o->readrate_initial_burst ? o->readrate_initial_burst : 0.0;
+ d->readrate_initial_burst = o->readrate_initial_burst ? o->readrate_initial_burst : 0.5;
if (d->readrate_initial_burst < 0.0) {
av_log(d, AV_LOG_ERROR,
"Option -readrate_initial_burst is %0.3f; it must be non-negative.\n",
--
2.39.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* [FFmpeg-devel] [PATCH 3/4] fftools/ffmpeg: reduce -re to -readrate 1
2023-05-02 13:43 [FFmpeg-devel] [PATCH 1/4] fftools/ffmpeg: add ability to set a input burst time before readrate is enforced Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 2/4] fftools/ffmpeg: use a non-zero default for -readrate_initial_burst Anton Khirnov
@ 2023-05-02 13:43 ` Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 4/4] fftools/ffmpeg: deprecate -re Anton Khirnov
2 siblings, 0 replies; 6+ messages in thread
From: Anton Khirnov @ 2023-05-02 13:43 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: ddurham
They are exactly equivalent, so there is no point in maintaining a
separate flag for -re.
---
fftools/ffmpeg.c | 2 +-
fftools/ffmpeg.h | 1 -
fftools/ffmpeg_demux.c | 16 ++++++++--------
3 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index be9a3b2e34..27bfc28798 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -1564,7 +1564,7 @@ static int transcode_init(void)
/* init framerate emulation */
for (int i = 0; i < nb_input_files; i++) {
InputFile *ifile = input_files[i];
- if (ifile->readrate || ifile->rate_emu)
+ if (ifile->readrate)
for (int j = 0; j < ifile->nb_streams; j++)
ifile->streams[j]->start = av_gettime_relative();
}
diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index a03a6b0302..b30f0758ec 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -484,7 +484,6 @@ typedef struct InputFile {
InputStream **streams;
int nb_streams;
- int rate_emu;
float readrate;
int accurate_seek;
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index e6f700f6c3..9eea5a4eec 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -450,13 +450,12 @@ int ifile_get_packet(InputFile *f, AVPacket **pkt)
return ret;
}
- if (f->readrate || f->rate_emu) {
+ if (f->readrate) {
int i;
int64_t file_start = copy_ts * (
(f->start_time_effective != AV_NOPTS_VALUE ? f->start_time_effective * !start_at_zero : 0) +
(f->start_time != AV_NOPTS_VALUE ? f->start_time : 0)
);
- float scale = f->rate_emu ? 1.0 : f->readrate;
int64_t burst_until = AV_TIME_BASE * d->readrate_initial_burst;
for (i = 0; i < f->nb_streams; i++) {
InputStream *ist = f->streams[i];
@@ -464,7 +463,7 @@ int ifile_get_packet(InputFile *f, AVPacket **pkt)
if (!ist->nb_packets) continue;
stream_ts_offset = FFMAX(ist->first_dts != AV_NOPTS_VALUE ? ist->first_dts : 0, file_start);
pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
- now = (av_gettime_relative() - ist->start) * scale + stream_ts_offset;
+ now = (av_gettime_relative() - ist->start) * f->readrate + stream_ts_offset;
if (pts - burst_until > now)
return AVERROR(EAGAIN);
}
@@ -1223,7 +1222,6 @@ int ifile_open(const OptionsContext *o, const char *filename)
f->input_sync_ref = o->input_sync_ref;
f->input_ts_offset = o->input_ts_offset;
f->ts_offset = o->input_ts_offset - (copy_ts ? (start_at_zero && ic->start_time != AV_NOPTS_VALUE ? ic->start_time : 0) : timestamp);
- f->rate_emu = o->rate_emu;
f->accurate_seek = o->accurate_seek;
d->loop = o->loop;
d->duration = 0;
@@ -1234,12 +1232,14 @@ int ifile_open(const OptionsContext *o, const char *filename)
av_log(d, AV_LOG_ERROR, "Option -readrate is %0.3f; it must be non-negative.\n", f->readrate);
exit_program(1);
}
- if (f->readrate && f->rate_emu) {
- av_log(d, AV_LOG_WARNING, "Both -readrate and -re set. Using -readrate %0.3f.\n", f->readrate);
- f->rate_emu = 0;
+ if (o->rate_emu) {
+ if (f->readrate) {
+ av_log(d, AV_LOG_WARNING, "Both -readrate and -re set. Using -readrate %0.3f.\n", f->readrate);
+ } else
+ f->readrate = 1.0f;
}
- if (f->readrate || f->rate_emu) {
+ if (f->readrate) {
d->readrate_initial_burst = o->readrate_initial_burst ? o->readrate_initial_burst : 0.5;
if (d->readrate_initial_burst < 0.0) {
av_log(d, AV_LOG_ERROR,
--
2.39.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* [FFmpeg-devel] [PATCH 4/4] fftools/ffmpeg: deprecate -re
2023-05-02 13:43 [FFmpeg-devel] [PATCH 1/4] fftools/ffmpeg: add ability to set a input burst time before readrate is enforced Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 2/4] fftools/ffmpeg: use a non-zero default for -readrate_initial_burst Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 3/4] fftools/ffmpeg: reduce -re to -readrate 1 Anton Khirnov
@ 2023-05-02 13:43 ` Anton Khirnov
2023-05-02 15:36 ` Timo Rothenpieler
2 siblings, 1 reply; 6+ messages in thread
From: Anton Khirnov @ 2023-05-02 13:43 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: ddurham
It is exactly equivalent to -readrate 1.0
---
Changelog | 1 +
doc/ffmpeg.texi | 2 +-
fftools/ffmpeg.h | 3 +++
fftools/ffmpeg_demux.c | 5 +++++
fftools/ffmpeg_opt.c | 4 +++-
5 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/Changelog b/Changelog
index 2061aaf462..5feb4fd24e 100644
--- a/Changelog
+++ b/Changelog
@@ -8,6 +8,7 @@ version <next>:
- afireqsrc audio source filter
- arls filter
- ffmpeg CLI new option: -readrate_initial_burst
+- ffmpeg CLI option -re deprecated in favor of -readrate 1.0
version 6.0:
- Radiance HDR image support
diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index a12700e2f3..01fd2ae0fe 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -1707,7 +1707,7 @@ it may cause packet loss.
It is useful for when flow speed of output packets is important, such as live streaming.
@item -re (@emph{input})
-Read input at native frame rate. This is equivalent to setting @code{-readrate 1}.
+This option is deprecated and equivalent to setting @code{-readrate 1}.
@item -readrate_initial_burst @var{seconds}
Set an initial read burst time, in seconds, after which @option{-re/-readrate}
will be enforced.
diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index b30f0758ec..ec4c580b91 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -56,6 +56,7 @@
#define FFMPEG_ROTATION_METADATA 1
#define FFMPEG_OPT_QPHIST 1
#define FFMPEG_OPT_ADRIFT_THRESHOLD 1
+#define FFMPEG_OPT_RE 1
enum VideoSyncMethod {
VSYNC_AUTO = -1,
@@ -124,7 +125,9 @@ typedef struct OptionsContext {
/* input options */
int64_t input_ts_offset;
int loop;
+#if FFMPEG_OPT_RE
int rate_emu;
+#endif
float readrate;
double readrate_initial_burst;
int accurate_seek;
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index 9eea5a4eec..6727193697 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -1232,12 +1232,17 @@ int ifile_open(const OptionsContext *o, const char *filename)
av_log(d, AV_LOG_ERROR, "Option -readrate is %0.3f; it must be non-negative.\n", f->readrate);
exit_program(1);
}
+#if FFMPEG_OPT_RE
if (o->rate_emu) {
+ av_log(d, AV_LOG_WARNING, "Option -re is deprecated and will be removed. "
+ "Use -readrate 1.0 instead\n");
+
if (f->readrate) {
av_log(d, AV_LOG_WARNING, "Both -readrate and -re set. Using -readrate %0.3f.\n", f->readrate);
} else
f->readrate = 1.0f;
}
+#endif
if (f->readrate) {
d->readrate_initial_burst = o->readrate_initial_burst ? o->readrate_initial_burst : 0.5;
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index 7f22b22604..9670b65a96 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -1448,9 +1448,11 @@ const OptionDef options[] = {
"dump each input packet" },
{ "hex", OPT_BOOL | OPT_EXPERT, { &do_hex_dump },
"when dumping packets, also dump the payload" },
+#if FFMPEG_OPT_RE
{ "re", OPT_BOOL | OPT_EXPERT | OPT_OFFSET |
OPT_INPUT, { .off = OFFSET(rate_emu) },
- "read input at native frame rate; equivalent to -readrate 1", "" },
+ "deprecated, equivalent to -readrate 1.0", "" },
+#endif
{ "readrate", HAS_ARG | OPT_FLOAT | OPT_OFFSET |
OPT_EXPERT | OPT_INPUT, { .off = OFFSET(readrate) },
"read input at specified rate", "speed" },
--
2.39.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [FFmpeg-devel] [PATCH 4/4] fftools/ffmpeg: deprecate -re
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 4/4] fftools/ffmpeg: deprecate -re Anton Khirnov
@ 2023-05-02 15:36 ` Timo Rothenpieler
2023-05-02 15:40 ` Devin Heitmueller
0 siblings, 1 reply; 6+ messages in thread
From: Timo Rothenpieler @ 2023-05-02 15:36 UTC (permalink / raw)
To: ffmpeg-devel
On 02.05.2023 15:43, Anton Khirnov wrote:
> It is exactly equivalent to -readrate 1.0
> ---
> Changelog | 1 +
> doc/ffmpeg.texi | 2 +-
> fftools/ffmpeg.h | 3 +++
> fftools/ffmpeg_demux.c | 5 +++++
> fftools/ffmpeg_opt.c | 4 +++-
> 5 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/Changelog b/Changelog
> index 2061aaf462..5feb4fd24e 100644
> --- a/Changelog
> +++ b/Changelog
> @@ -8,6 +8,7 @@ version <next>:
> - afireqsrc audio source filter
> - arls filter
> - ffmpeg CLI new option: -readrate_initial_burst
> +- ffmpeg CLI option -re deprecated in favor of -readrate 1.0
Not sure if deprecating that option is a good idea.
It's in A LOT of guides, and in a lot of peoples scripts.
I see no harm in keeping it around as a shorthand for a common use of
-readrate.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [FFmpeg-devel] [PATCH 4/4] fftools/ffmpeg: deprecate -re
2023-05-02 15:36 ` Timo Rothenpieler
@ 2023-05-02 15:40 ` Devin Heitmueller
0 siblings, 0 replies; 6+ messages in thread
From: Devin Heitmueller @ 2023-05-02 15:40 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Tue, May 2, 2023 at 11:36 AM Timo Rothenpieler <timo@rothenpieler.org> wrote:
> Not sure if deprecating that option is a good idea.
> It's in A LOT of guides, and in a lot of peoples scripts.
>
> I see no harm in keeping it around as a shorthand for a common use of
> -readrate.
I actually thought about making a similar comment. Lots of existing
users out there just know to add "-re" (and have it in scripts), and
the cost of keeping it as a simple alias to "readrate 1.0" is very
low.
Devin
--
Devin Heitmueller, Senior Software Engineer
LTN Global Communications
o: +1 (301) 363-1001
w: https://ltnglobal.com e: devin.heitmueller@ltnglobal.com
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-05-02 15:40 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-02 13:43 [FFmpeg-devel] [PATCH 1/4] fftools/ffmpeg: add ability to set a input burst time before readrate is enforced Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 2/4] fftools/ffmpeg: use a non-zero default for -readrate_initial_burst Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 3/4] fftools/ffmpeg: reduce -re to -readrate 1 Anton Khirnov
2023-05-02 13:43 ` [FFmpeg-devel] [PATCH 4/4] fftools/ffmpeg: deprecate -re Anton Khirnov
2023-05-02 15:36 ` Timo Rothenpieler
2023-05-02 15:40 ` Devin Heitmueller
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git