Discussion:
[PATCH] rtsp: rename certain options after a deprecation period
(too old to reply)
wm4
2018-01-25 18:00:43 UTC
Permalink
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 59e3b20c08..bf8664c799 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,11 @@ libavutil: 2017-10-21

API changes, most recent first:

+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
+ options. Once the deprecation is over, "timeout" will be renamed to
+ "listen_timeout", "stimeout" to "timeout", and "user-agent" to "user_agent".
+
2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).

diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index cf7cdb2f2b..bed5f1ea11 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -93,10 +93,19 @@ const AVOption ff_rtsp_options[] = {
RTSP_MEDIATYPE_OPTS("allowed_media_types", "set media types to accept from the server"),
{ "min_port", "set minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
{ "max_port", "set maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
+#if FF_API_OLD_RTSP_OPTIONS
{ "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
{ "stimeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#else
+ { "listen_timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+ { "timeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#endif
COMMON_OPTS(),
+#if FF_API_OLD_RTSP_OPTIONS
{ "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#else
+ { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#endif
{ NULL },
};

diff --git a/libavformat/version.h b/libavformat/version.h
index 5ff8a89ae0..4285e925cf 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -32,7 +32,7 @@
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
// Also please add any ticket numbers that you believe might be affected here
#define LIBAVFORMAT_VERSION_MAJOR 58
-#define LIBAVFORMAT_VERSION_MINOR 6
+#define LIBAVFORMAT_VERSION_MINOR 7
#define LIBAVFORMAT_VERSION_MICRO 100

#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
@@ -85,6 +85,9 @@
#ifndef FF_API_LAVF_FFSERVER
#define FF_API_LAVF_FFSERVER (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
+#ifndef FF_API_OLD_RTSP_OPTIONS
+#define FF_API_OLD_RTSP_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif


#ifndef FF_API_R_FRAME_RATE
--
2.15.1
James Almer
2018-01-25 18:12:27 UTC
Permalink
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 59e3b20c08..bf8664c799 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,11 @@ libavutil: 2017-10-21
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
+ options. Once the deprecation is over, "timeout" will be renamed to
+ "listen_timeout", "stimeout" to "timeout", and "user-agent" to "user_agent".
+
2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index cf7cdb2f2b..bed5f1ea11 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -93,10 +93,19 @@ const AVOption ff_rtsp_options[] = {
RTSP_MEDIATYPE_OPTS("allowed_media_types", "set media types to accept from the server"),
{ "min_port", "set minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
{ "max_port", "set maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
+#if FF_API_OLD_RTSP_OPTIONS
{ "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
{ "stimeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#else
+ { "listen_timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+ { "timeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#endif
COMMON_OPTS(),
+#if FF_API_OLD_RTSP_OPTIONS
{ "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#else
+ { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#endif
Wouldn't it be better to add the new one right now instead of right
after the deprecated one is removed? People should start moving to the
new one before that happens, rather than right when it happens.
That way you can also add "(deprecated, use user_agent instead)" to the
description of the old one.
Post by wm4
{ NULL },
};
diff --git a/libavformat/version.h b/libavformat/version.h
index 5ff8a89ae0..4285e925cf 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -32,7 +32,7 @@
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
// Also please add any ticket numbers that you believe might be affected here
#define LIBAVFORMAT_VERSION_MAJOR 58
-#define LIBAVFORMAT_VERSION_MINOR 6
+#define LIBAVFORMAT_VERSION_MINOR 7
#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
@@ -85,6 +85,9 @@
#ifndef FF_API_LAVF_FFSERVER
#define FF_API_LAVF_FFSERVER (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
+#ifndef FF_API_OLD_RTSP_OPTIONS
+#define FF_API_OLD_RTSP_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif
#ifndef FF_API_R_FRAME_RATE
wm4
2018-01-25 18:16:44 UTC
Permalink
On Thu, 25 Jan 2018 15:12:27 -0300
Post by James Almer
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 59e3b20c08..bf8664c799 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,11 @@ libavutil: 2017-10-21
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
+ options. Once the deprecation is over, "timeout" will be renamed to
+ "listen_timeout", "stimeout" to "timeout", and "user-agent" to "user_agent".
+
2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index cf7cdb2f2b..bed5f1ea11 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -93,10 +93,19 @@ const AVOption ff_rtsp_options[] = {
RTSP_MEDIATYPE_OPTS("allowed_media_types", "set media types to accept from the server"),
{ "min_port", "set minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
{ "max_port", "set maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
+#if FF_API_OLD_RTSP_OPTIONS
{ "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
{ "stimeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#else
+ { "listen_timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+ { "timeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#endif
COMMON_OPTS(),
+#if FF_API_OLD_RTSP_OPTIONS
{ "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#else
+ { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#endif
Wouldn't it be better to add the new one right now instead of right
after the deprecated one is removed? People should start moving to the
new one before that happens, rather than right when it happens.
That way you can also add "(deprecated, use user_agent instead)" to the
description of the old one.
Probably, but it can't be solved like this for the timeout options. (If
the patch is accepted I can always expose the user_agent option and
edit the description of user-agent to mention it as deprecated.)
Michael Niedermayer
2018-01-25 19:46:13 UTC
Permalink
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
Make sure all newly added options are in standard SI units
that is seconds (not micro seconds for example)

thx

[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
wm4
2018-01-25 19:54:51 UTC
Permalink
On Thu, 25 Jan 2018 20:46:13 +0100
Post by Michael Niedermayer
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
Make sure all newly added options are in standard SI units
that is seconds (not micro seconds for example)
1. you can not use seconds if the option type is int because that would
not be fine grained enough
2. HTTP already uses microseconds and the whole point is making this
compatible with the HTTP impl. (as it establishes sort of a standard
being the most used protocol other than file)
3. Microsecond actually counts as SI unit
4. I'm not going to change the HTTP impl. as that would be a much
larger and intrusive change and would not solve the RTSP problem
either
Michael Niedermayer
2018-01-25 20:17:54 UTC
Permalink
Post by wm4
On Thu, 25 Jan 2018 20:46:13 +0100
Post by Michael Niedermayer
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
Make sure all newly added options are in standard SI units
that is seconds (not micro seconds for example)
1. you can not use seconds if the option type is int because that would
not be fine grained enough
2. HTTP already uses microseconds and the whole point is making this
compatible with the HTTP impl. (as it establishes sort of a standard
being the most used protocol other than file)
3. Microsecond actually counts as SI unit
4. I'm not going to change the HTTP impl. as that would be a much
larger and intrusive change and would not solve the RTSP problem
either
if the user specifies "-whatever_timeout 500m" That should consistently be
interpreted as 500 milli seconds.
All new code should follow this consistently

The user always provides a string never an integer. That is parsed, it can
be parsed into a double representing seconds, or an integer representing
micro/nano/milli/whatever.

If you want to use an integer there are many ways to achive this, adding
a
AV_OPT_TYPE_TIMEOUT with int64 in nano seconds would be one. Using a
double in seconds would be much easier though

If you do not want to change http, you can leave that to someone else
iam not asking you to do any extra work, just that we move toward
having timeouts handled consistently

thanks

[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Republics decline into democracies and democracies degenerate into
despotisms. -- Aristotle
Nicolas George
2018-01-25 20:20:26 UTC
Permalink
Post by Michael Niedermayer
If you want to use an integer there are many ways to achive this,
adding a AV_OPT_TYPE_TIMEOUT with int64 in nano seconds would be one.
Using a double in seconds would be much easier though
We already have AV_OPT_TYPE_DURATION, in microseconds rather than
nanoseconds, but with all the good properties.

I fully agree with the points you make.

Regards,
--
Nicolas George
wm4
2018-01-25 20:54:46 UTC
Permalink
On Thu, 25 Jan 2018 21:17:54 +0100
Post by Michael Niedermayer
Post by wm4
On Thu, 25 Jan 2018 20:46:13 +0100
Post by Michael Niedermayer
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
Make sure all newly added options are in standard SI units
that is seconds (not micro seconds for example)
1. you can not use seconds if the option type is int because that would
not be fine grained enough
2. HTTP already uses microseconds and the whole point is making this
compatible with the HTTP impl. (as it establishes sort of a standard
being the most used protocol other than file)
3. Microsecond actually counts as SI unit
4. I'm not going to change the HTTP impl. as that would be a much
larger and intrusive change and would not solve the RTSP problem
either
if the user specifies "-whatever_timeout 500m" That should consistently be
interpreted as 500 milli seconds.
All new code should follow this consistently
The user always provides a string never an integer. That is parsed, it can
be parsed into a double representing seconds, or an integer representing
micro/nano/milli/whatever.
If you want to use an integer there are many ways to achive this, adding
a
AV_OPT_TYPE_TIMEOUT with int64 in nano seconds would be one. Using a
double in seconds would be much easier though
If you do not want to change http, you can leave that to someone else
iam not asking you to do any extra work, just that we move toward
having timeouts handled consistently
Clearly you're trying to bikeshed me here. I'll just ignore this
instead of wasting my time on you.
Carl Eugen Hoyos
2018-01-25 21:41:48 UTC
Permalink
Post by wm4
Clearly you're trying to bikeshed me here. I'll just ignore this
instead of wasting my time on you.
Is there really no hope that you go away for good?

Carl Eugen
wm4
2018-01-25 22:04:19 UTC
Permalink
On Thu, 25 Jan 2018 22:41:48 +0100
Post by Carl Eugen Hoyos
Post by wm4
Clearly you're trying to bikeshed me here. I'll just ignore this
instead of wasting my time on you.
Is there really no hope that you go away for good?
Oh not you again.

Is there any hope that you will?
Carl Eugen Hoyos
2018-01-25 22:08:21 UTC
Permalink
Post by wm4
On Thu, 25 Jan 2018 22:41:48 +0100
Post by Carl Eugen Hoyos
Post by wm4
Clearly you're trying to bikeshed me here. I'll just ignore this
instead of wasting my time on you.
Is there really no hope that you go away for good?
Oh not you again.
Isn't it more like "you again"?

This is the second time within a few hours that you have
without any imaginable reason attacked another developer
(that it happened both times without any action from the
mailing list admins is just a detail).
Some people here argue that you are simply ill, I tend to
disagree.

Carl Eugen
wm4
2018-01-25 22:13:49 UTC
Permalink
On Thu, 25 Jan 2018 23:08:21 +0100
Post by Carl Eugen Hoyos
Post by wm4
On Thu, 25 Jan 2018 22:41:48 +0100
Post by Carl Eugen Hoyos
Post by wm4
Clearly you're trying to bikeshed me here. I'll just ignore this
instead of wasting my time on you.
Is there really no hope that you go away for good?
Oh not you again.
Isn't it more like "you again"?
This is the second time within a few hours that you have
without any imaginable reason attacked another developer
(that it happened both times without any action from the
mailing list admins is just a detail).
Some people here argue that you are simply ill, I tend to
disagree.
Please cease your childish and unprofessional behavior and in particular
stop outright harassing me into leaving.

Thank you.
Carl Eugen Hoyos
2018-01-25 22:35:06 UTC
Permalink
Post by wm4
On Thu, 25 Jan 2018 23:08:21 +0100
Post by Carl Eugen Hoyos
Post by wm4
On Thu, 25 Jan 2018 22:41:48 +0100
Post by Carl Eugen Hoyos
Post by wm4
Clearly you're trying to bikeshed me here. I'll just ignore this
instead of wasting my time on you.
Is there really no hope that you go away for good?
Oh not you again.
Isn't it more like "you again"?
This is the second time within a few hours that you have
without any imaginable reason attacked another developer
(that it happened both times without any action from the
mailing list admins is just a detail).
Some people here argue that you are simply ill, I tend to
disagree.
Please cease your childish
(I have never understood this insult, sorry...)
Post by wm4
and unprofessional behavior
Hmm.
I am not working "professionally" on FFmpeg, are you?
Post by wm4
and in particular stop outright harassing me into leaving.
Yes, I would very much prefer if I could stop;-)

Carl Eugen
Hendrik Leppkes
2018-01-25 23:00:48 UTC
Permalink
Post by Carl Eugen Hoyos
Post by wm4
and in particular stop outright harassing me into leaving.
Yes, I would very much prefer if I could stop;-)
So you openly admit to harassing a fellow developer, and even more so
to your plans to not stop?
If this isn't grounds to remove someone from the project, I don't know what is.

- Hendrik
Carl Eugen Hoyos
2018-01-25 23:21:14 UTC
Permalink
Post by Hendrik Leppkes
Post by Carl Eugen Hoyos
Post by wm4
and in particular stop outright harassing me into leaving.
Yes, I would very much prefer if I could stop;-)
So you openly admit to harassing a fellow developer, and
even more so to your plans to not stop?
I had the feeling he was harassing Michael several times in the
last hours, do you disagree?

Carl Eugen
Hendrik Leppkes
2018-01-25 23:27:42 UTC
Permalink
Post by Carl Eugen Hoyos
Post by Hendrik Leppkes
Post by Carl Eugen Hoyos
Post by wm4
and in particular stop outright harassing me into leaving.
Yes, I would very much prefer if I could stop;-)
So you openly admit to harassing a fellow developer, and
even more so to your plans to not stop?
I had the feeling he was harassing Michael several times in the
last hours, do you disagree?
This is about your actions.

- Hendrik
wm4
2018-01-25 23:52:19 UTC
Permalink
On Fri, 26 Jan 2018 00:21:14 +0100
Post by Carl Eugen Hoyos
Post by Hendrik Leppkes
Post by Carl Eugen Hoyos
Post by wm4
and in particular stop outright harassing me into leaving.
Yes, I would very much prefer if I could stop;-)
So you openly admit to harassing a fellow developer, and
even more so to your plans to not stop?
I had the feeling he was harassing Michael several times in the
last hours, do you disagree?
Well, going by your standards, harassment is just OK?

Anyway, if my reply to Michael was too harsh/unfriendly, I hereby
apologize (and I already wrote that on IRC too, where he lurks as
michaelni). I'd still like to ask him to explicitly state whether his
reply is a change request in context of a patch review, or just general
advice when he's suggesting something that would be disproportionally
more work and not solve the problem the original patch tried to solve.
This is sort of irritating because you never know what you're supposed
to do to get the patch OK'ed.

I'd also like to point out that it _did_ happen in the past that
Michael went off tangents in patch reviews and asked for unreasonable
extra work because of minor issues. The AVFrame.opaque_ref fiasco
(whose non-sensical later solution which he demanded was finally
pushed, even though it still does not solve the issues he claimed his
approach would solve) comes to mind, and I considered his general
conduct on this issue harassment (not like I'd get an apology).

I don't know what the other case of supposed harassment Carl Eugen is
making up without providing any proof.
Carl Eugen Hoyos
2018-01-25 23:56:16 UTC
Permalink
Post by wm4
(and I already wrote that on IRC too, where he lurks as
michaelni)
Could one of the native speakers please try to convince
me that this is not a disparaging term?

Thank you, Carl Eugen
wm4
2018-01-25 23:59:00 UTC
Permalink
On Fri, 26 Jan 2018 00:56:16 +0100
Post by Carl Eugen Hoyos
Post by wm4
(and I already wrote that on IRC too, where he lurks as
michaelni)
Could one of the native speakers please try to convince
me that this is not a disparaging term?
That's his IRC nick name. Did you not know this, and this is another
failed attempt of you trying to put me in a bad light?

Maybe you could just stop this behavior for general de-escalation?
Jan Ekström
2018-01-26 00:45:47 UTC
Permalink
Post by Carl Eugen Hoyos
Post by wm4
(and I already wrote that on IRC too, where he lurks as
michaelni)
Could one of the native speakers please try to convince
me that this is not a disparaging term?
Hi,

I am not an English native, but the verb "to lurk" is colloquially utilized as:

"read the postings in an Internet forum without actively contributing."
(quote from whatever dictionary Google utilizes)

...and this IMHO is applicable enough as Michael is busy just like
many of us are busy most of the day.

Now, please, all parties. Stop. We've had enough rudeness in this
thread. And now, back to on-topic:

* This change set offers to rename some options to make them similar
to how the TCP protocol does things
(http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavformat/tcp.c;h=8773493df1efebac33cff5d203c8c9ff17299d4b;hb=HEAD#l52).
UDP protocol seems to follow suite regarding the "timeout" parameter,
even matching the microsecond part?
* It's imperfect since it doesn't change any of the types of the
options (listen_timeout is now name-wise matched, but type-wise is
supposed to contain seconds for rtsp, milliseconds (! yet another time
scale) in tcp).
* But if we do not rename the current timeout parameter (which does a
different thing than timeout for both TCP and UDP - and name-wise
matches "listen_timeout" as far as it can be seen), we cannot have the
matching name for the matching type of - which should be under the
option "timeout".

So, as far as I can see for now applying this or a slightly modified
version of this as per James' comments doesn't seem to be a too bad
initial step. It brings at least one option in line. We can then start
the larger job of normalizing the timeout parameter across FFmpeg, as
it seems like mentioning this area made multiple people notice
possible improvements in this area. But this is just my 2 eurocents.


Best regards,
Jan
Michael Niedermayer
2018-01-26 15:44:44 UTC
Permalink
Post by Jan Ekström
Post by Carl Eugen Hoyos
Post by wm4
(and I already wrote that on IRC too, where he lurks as
michaelni)
Could one of the native speakers please try to convince
me that this is not a disparaging term?
Hi,
"read the postings in an Internet forum without actively contributing."
(quote from whatever dictionary Google utilizes)
...and this IMHO is applicable enough as Michael is busy just like
many of us are busy most of the day.
Now, please, all parties. Stop. We've had enough rudeness in this
* This change set offers to rename some options to make them similar
to how the TCP protocol does things
(http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavformat/tcp.c;h=8773493df1efebac33cff5d203c8c9ff17299d4b;hb=HEAD#l52).
UDP protocol seems to follow suite regarding the "timeout" parameter,
even matching the microsecond part?
* It's imperfect since it doesn't change any of the types of the
options (listen_timeout is now name-wise matched, but type-wise is
supposed to contain seconds for rtsp, milliseconds (! yet another time
scale) in tcp).
* But if we do not rename the current timeout parameter (which does a
different thing than timeout for both TCP and UDP - and name-wise
matches "listen_timeout" as far as it can be seen), we cannot have the
matching name for the matching type of - which should be under the
option "timeout".
So, as far as I can see for now applying this or a slightly modified
version of this as per James' comments doesn't seem to be a too bad
initial step. It brings at least one option in line. We can then start
the larger job of normalizing the timeout parameter across FFmpeg, as
it seems like mentioning this area made multiple people notice
possible improvements in this area. But this is just my 2 eurocents.
I think we first should take a step back and decide how we want a
consistent API to look exactly.
Then make changes towards that.

This patch introduces a parameter that very possibly will have to
be deprecated when things are changed to consistent second based timeouts.

I mean this patch makes rtsp consistent with parameters that we may have to
deprecate.

Lets just for a moment assume we agree that we want to have consistent
second based timeouts throughout the codebase.
To achive this with minimal confusion it requires a new parameter name
that has not been used for micro or nano or milli seconds before.
If now a new parameter for timeouts is added in seconds then each
piece of code can independantly add support to it one by one never
conflicting with anything or depending on anything.
And all existing timeouts that are not in seconds would then become
deprecated.

I think thats a meaningfull way forward and i would suggest that we
go that direction. Its very easy to do too once there is agreement on
the name of the new parameter(s)

We can also apply this patch but its not really moving us closer to
consistent second based timeouts.

thanks

[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When you are offended at any man's fault, turn to yourself and study your
own failings. Then you will forget your anger. -- Epictetus
Michael Niedermayer
2018-01-27 01:25:49 UTC
Permalink
Post by wm4
On Fri, 26 Jan 2018 00:21:14 +0100
[...]
Post by wm4
I'd also like to point out that it _did_ happen in the past that
Michael went off tangents in patch reviews and asked for unreasonable
extra work because of minor issues.
Ive written a huge number of reviews over the years, and i certainly
did what you claim above in one of these many reviews. Not in the case
you refer here to though. And if it happens, that a unreasonable request
is made, discussion is whats needed.
In fact many developers have made requests that others have found
unreasonable. Many if not most of the more active developers have.
Its not a uncommon source of long discussions.
Post by wm4
The AVFrame.opaque_ref fiasco
(whose non-sensical later solution which he demanded was finally
pushed, even though it still does not solve the issues he claimed his
approach would solve) comes to mind,
so much you say in here
ill skip over "non-sensical" and "demanded" these are not really true in
the way you present it here.
the solution choosen IIRC does indeed not achive everything. It was
in fact a compromise that resulted from the discussion of many developers.
IIRC a solution that would solve all teh listed issues was not liked by
multiple people
Post by wm4
and I considered his general
conduct on this issue harassment (not like I'd get an apology).
If anything i said felt like harrasment, i appologize. That said
a review or comment or objection to a patch is not harrasment and
I will continue to review and when it is needed object to changes.

Maybe it is just my point of view here but you seem very sensitive
to anything that is not an approval of your changes.
While at the same time your replies are often aggressive or offensive.

Just as random examples, your single line objection here certainly came
over in a passive aggressive tone:
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2018-January/224488.html

and your next reply, that basically told me farewell when i said that i
wouldnt continue to maintain or help maintain hevc when error messages
would have to be ommited (not one specific one but in general)
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2018-January/224506.html

And that was just a day or 2 ago.

The very mail here i reply to is then also accusing me of harrasment
in patch review from last year. I dont exactly enjoy having to reply
to these kind of accusations. More so considering how long ago the
review is that refers to.

and on IRC 2 days ago

Jän 25 23:47:53 <jamrial> <+wm4> also michaelni harassed me a lot in the past (like making me go through all that pointless crap when getting rid of the side data merging
Jän 25 23:48:02 <jamrial> can you drop that already? it was not pointless
Jän 25 23:48:22 <jamrial> i was careless and did a merge wrong, and google came out of the woodworks because i broke chromium
Jän 25 23:48:41 <jamrial> the abi concerns had a reason

I would really like to see these accusations stop, this is not something
anyone else that i remember has done in FFmpeg or Libav, not at this scale
at least.

Thanks

[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When the tyrant has disposed of foreign enemies by conquest or treaty, and
there is nothing more to fear from them, then he is always stirring up
some war or other, in order that the people may require a leader. -- Plato
wm4
2018-01-27 02:23:00 UTC
Permalink
On Sat, 27 Jan 2018 02:25:49 +0100
Post by Michael Niedermayer
Post by wm4
On Fri, 26 Jan 2018 00:21:14 +0100
[...]
Post by wm4
I'd also like to point out that it _did_ happen in the past that
Michael went off tangents in patch reviews and asked for unreasonable
extra work because of minor issues.
Ive written a huge number of reviews over the years, and i certainly
did what you claim above in one of these many reviews. Not in the case
you refer here to though. And if it happens, that a unreasonable request
is made, discussion is whats needed.
In fact many developers have made requests that others have found
unreasonable. Many if not most of the more active developers have.
Its not a uncommon source of long discussions.
And so we're having a long discussion again. You could just have left
it alone.
Post by Michael Niedermayer
Post by wm4
The AVFrame.opaque_ref fiasco
(whose non-sensical later solution which he demanded was finally
pushed, even though it still does not solve the issues he claimed his
approach would solve) comes to mind,
so much you say in here
ill skip over "non-sensical" and "demanded" these are not really true in
the way you present it here.
The "demanded" was definitely true. You blocked my patch, even though
it was just a Libav merge to begin with.

There were never big discussions about such tiny merges before, and
nobody would have given a shit had I pushed those merges directly to
git (like it's normally done with merges). But you started a big
discussion and eventually achieved that a sub-optimal solution was
added.

The current solution _is_ nonsense. There is now a semi-public field
(AVFrame.private_ref) in a libavutil struct that can be used only by
libavcodec, something which we always avoid, because the libraries are
supposed to use only the public API of each other (except avpriv_ and
headers).

It still doesn't solve the problem you claimed there was: if libavcodec
fails to "process" the private_ref contents, the returned frame to the
user will be broken and make the user application crash.

Oh, and of course the doxygen says AVFrame.private_ref can be used by
other ffmpeg libs too. So what happens if libavfilter's use of
private_ref clashes with libavcodec's? Please explain.

Absolutely NOTHING is helped by using a separate field instead of
opaque_ref, and you were the only one who insisted on doing this (the
others at best unaware of the details and vaguely trusting your claims).

You even ignored my solution, which was consistently checking all
entrypoints for opaque_ref (and wrapping the user use of it), which my
patches did. You didn't even care and somehow claimed there were holes
in it, which there were not, and even if there were, YOUR CURRENT CODE
WOULD FAIL TOO.

At this point I seriously had enough of your shit and left the project
for a while.
Post by Michael Niedermayer
the solution choosen IIRC does indeed not achive everything. It was
in fact a compromise that resulted from the discussion of many developers.
IIRC a solution that would solve all teh listed issues was not liked by
multiple people
Because apparently they still wanted it to be merged, so they just did
whatever you wanted, whether it made sense or not. I on the other hand
was seeking a solution that was technically closer to ideal. But it was
impossible to get through you.
Post by Michael Niedermayer
Post by wm4
and I considered his general
conduct on this issue harassment (not like I'd get an apology).
If anything i said felt like harrasment, i appologize. That said
a review or comment or objection to a patch is not harrasment and
I will continue to review and when it is needed object to changes.
Maybe it is just my point of view here but you seem very sensitive
to anything that is not an approval of your changes.
While at the same time your replies are often aggressive or offensive.
Just as random examples, your single line objection here certainly came
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2018-January/224488.html
That's not passive aggressive. You know certain devs (including me)
don't like excessive logging code for fuzzing fixes, and that was
extensively discussed in the past. But there you go again. (And sure, I
can be convinced that the logging is actually OK in this specific case,
but you preferred doing something else instead.)
Post by Michael Niedermayer
and your next reply, that basically told me farewell when i said that i
wouldnt continue to maintain or help maintain hevc when error messages
would have to be ommited (not one specific one but in general)
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2018-January/224506.html
You basically threatened that you'd stop doing important work on hevc
if you didn't get to add your error messages. Well, I ignored the
threat and just told you to do draw your consequences out of the
non-approval, if you really want to. I expect it was an empty threat
anyway.

Such "threats" are completely inappropriate in patch reviews.

You realize the irony of threatening something like this, while your
patch "reviews" made me leave the project for a while, right?
Post by Michael Niedermayer
And that was just a day or 2 ago.
The very mail here i reply to is then also accusing me of harrasment
in patch review from last year. I dont exactly enjoy having to reply
to these kind of accusations. More so considering how long ago the
review is that refers to.
and on IRC 2 days ago
Jän 25 23:47:53 <jamrial> <+wm4> also michaelni harassed me a lot in the past (like making me go through all that pointless crap when getting rid of the side data merging
Jän 25 23:48:02 <jamrial> can you drop that already? it was not pointless
Jän 25 23:48:22 <jamrial> i was careless and did a merge wrong, and google came out of the woodworks because i broke chromium
Jän 25 23:48:41 <jamrial> the abi concerns had a reason
Definitely the side data merging ABI claim was completely pointless. If
any application had a dependency on side data being merged, they would
have broken on the ABI bump. I don't know what jamrial is referring to.
Besides, packet contents were not considered ABI relevant before. My
own project was once broken by a packet format change - so what? I just
fixed it on my side.

Sure, these technical points can be fuzzy and I might be wrong too.
But it's not just about that. You fought pretty hard against my patches
and invented all sorts of arguments. You accused me of trolling too. I
didn't enjoy this interaction.

How come you find my claims illegitimate, but if I tell you something
as simple to drop the logging it's suddenly passive aggressive
harassment. Come on?
Post by Michael Niedermayer
I would really like to see these accusations stop, this is not something
anyone else that i remember has done in FFmpeg or Libav, not at this scale
at least.
Well, you remember how half of the project forked off years ago because
they were tired of your antics as project leader, right? That was pretty
big scale wasn't it? I'm not threatening to fork ffmpeg as a project or
anything close to it, nor do I want to unearth the Libav drama, but
your claim is certainly a bit of an exaggeration.

Anyway, I too would like if the harassment against me by you and CE
would stop. On a related note, I know no other project that would
tolerate CE's behavior at all.
James Almer
2018-01-27 02:26:20 UTC
Permalink
Post by wm4
On Sat, 27 Jan 2018 02:25:49 +0100
Post by Michael Niedermayer
Post by wm4
On Fri, 26 Jan 2018 00:21:14 +0100
[...]
Post by wm4
I'd also like to point out that it _did_ happen in the past that
Michael went off tangents in patch reviews and asked for unreasonable
extra work because of minor issues.
Ive written a huge number of reviews over the years, and i certainly
did what you claim above in one of these many reviews. Not in the case
you refer here to though. And if it happens, that a unreasonable request
is made, discussion is whats needed.
In fact many developers have made requests that others have found
unreasonable. Many if not most of the more active developers have.
Its not a uncommon source of long discussions.
And so we're having a long discussion again. You could just have left
it alone.
Then drop it, the lot of you. Stop replying, throwing contradicting
accusations in every direction, and let this thread die already.

Nothing, absolutely nothing good will come out of this if you keep going.
wm4
2018-01-27 02:38:37 UTC
Permalink
On Fri, 26 Jan 2018 23:26:20 -0300
Post by James Almer
Post by wm4
On Sat, 27 Jan 2018 02:25:49 +0100
Post by Michael Niedermayer
Post by wm4
On Fri, 26 Jan 2018 00:21:14 +0100
[...]
Post by wm4
I'd also like to point out that it _did_ happen in the past that
Michael went off tangents in patch reviews and asked for unreasonable
extra work because of minor issues.
Ive written a huge number of reviews over the years, and i certainly
did what you claim above in one of these many reviews. Not in the case
you refer here to though. And if it happens, that a unreasonable request
is made, discussion is whats needed.
In fact many developers have made requests that others have found
unreasonable. Many if not most of the more active developers have.
Its not a uncommon source of long discussions.
And so we're having a long discussion again. You could just have left
it alone.
Then drop it, the lot of you. Stop replying, throwing contradicting
accusations in every direction, and let this thread die already.
Nothing, absolutely nothing good will come out of this if you keep going.
I'm just defending myself. I don't want to be accused of throwing
around baseless accusations. That includes your post too.

There are _real_ issues and they will come up again and again if we
don't solve them. Pretending they don't exist isn't a solution.

But whatever.
wm4
2018-01-26 20:29:12 UTC
Permalink
On Thu, 25 Jan 2018 19:00:43 +0100
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
I'll push this in a few days or so with James Almers change requests
applied. There was a lot of other bikeshedding and personal insults,
but no actual rejection or further mandatory change requests.
wm4
2018-02-04 14:24:06 UTC
Permalink
On Thu, 25 Jan 2018 19:00:43 +0100
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 59e3b20c08..bf8664c799 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,11 @@ libavutil: 2017-10-21
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
+ options. Once the deprecation is over, "timeout" will be renamed to
+ "listen_timeout", "stimeout" to "timeout", and "user-agent" to "user_agent".
+
2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index cf7cdb2f2b..bed5f1ea11 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -93,10 +93,19 @@ const AVOption ff_rtsp_options[] = {
RTSP_MEDIATYPE_OPTS("allowed_media_types", "set media types to accept from the server"),
{ "min_port", "set minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
{ "max_port", "set maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
+#if FF_API_OLD_RTSP_OPTIONS
{ "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
{ "stimeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#else
+ { "listen_timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+ { "timeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#endif
COMMON_OPTS(),
+#if FF_API_OLD_RTSP_OPTIONS
{ "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#else
+ { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#endif
{ NULL },
};
diff --git a/libavformat/version.h b/libavformat/version.h
index 5ff8a89ae0..4285e925cf 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -32,7 +32,7 @@
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
// Also please add any ticket numbers that you believe might be affected here
#define LIBAVFORMAT_VERSION_MAJOR 58
-#define LIBAVFORMAT_VERSION_MINOR 6
+#define LIBAVFORMAT_VERSION_MINOR 7
#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
@@ -85,6 +85,9 @@
#ifndef FF_API_LAVF_FFSERVER
#define FF_API_LAVF_FFSERVER (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
+#ifndef FF_API_OLD_RTSP_OPTIONS
+#define FF_API_OLD_RTSP_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif
#ifndef FF_API_R_FRAME_RATE
Pushed, with James Almer's change request added.

Anyone is free to add a fancy new timeout system on top of this, it
doesn't conflict.
Carl Eugen Hoyos
2018-02-05 02:42:48 UTC
Permalink
Post by wm4
On Thu, 25 Jan 2018 19:00:43 +0100
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 59e3b20c08..bf8664c799 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,11 @@ libavutil: 2017-10-21
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
+ options. Once the deprecation is over, "timeout" will be renamed to
+ "listen_timeout", "stimeout" to "timeout", and "user-agent" to "user_agent".
+
2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index cf7cdb2f2b..bed5f1ea11 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -93,10 +93,19 @@ const AVOption ff_rtsp_options[] = {
RTSP_MEDIATYPE_OPTS("allowed_media_types", "set media types to accept from the server"),
{ "min_port", "set minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
{ "max_port", "set maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
+#if FF_API_OLD_RTSP_OPTIONS
{ "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
{ "stimeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#else
+ { "listen_timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+ { "timeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#endif
COMMON_OPTS(),
+#if FF_API_OLD_RTSP_OPTIONS
{ "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#else
+ { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#endif
{ NULL },
};
diff --git a/libavformat/version.h b/libavformat/version.h
index 5ff8a89ae0..4285e925cf 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -32,7 +32,7 @@
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
// Also please add any ticket numbers that you believe might be affected here
#define LIBAVFORMAT_VERSION_MAJOR 58
-#define LIBAVFORMAT_VERSION_MINOR 6
+#define LIBAVFORMAT_VERSION_MINOR 7
#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
@@ -85,6 +85,9 @@
#ifndef FF_API_LAVF_FFSERVER
#define FF_API_LAVF_FFSERVER (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
+#ifndef FF_API_OLD_RTSP_OPTIONS
+#define FF_API_OLD_RTSP_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif
#ifndef FF_API_R_FRAME_RATE
Pushed, with James Almer's change request added.
This is completely unacceptable:
Why are you constantly breaking developer rules?

Carl Eugen
wm4
2018-02-05 09:42:43 UTC
Permalink
On Mon, 5 Feb 2018 03:42:48 +0100
Post by Carl Eugen Hoyos
Post by wm4
On Thu, 25 Jan 2018 19:00:43 +0100
Post by wm4
The names inherently clash with the meanings of the HTTP libavformat
protocol options. Rename them after a deprecation period to make them
compatible with the HTTP ones.
---
I see no better way that wouldn't require more effort than justified.
The incompatible semantics of the "timeout" option while still clashing
with the HTTP one caused major problems to me as API user, and I'm
hoping that this will solve itself in 2 years.
---
doc/APIchanges | 5 +++++
libavformat/rtsp.c | 9 +++++++++
libavformat/version.h | 5 ++++-
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 59e3b20c08..bf8664c799 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,11 @@ libavutil: 2017-10-21
+2018-01-xx - xxxxxxx - lavf 58.7.100 - avformat.h
+ Deprecate the current names of the RTSP "timeout", "stimeout", "user-agent"
+ options. Once the deprecation is over, "timeout" will be renamed to
+ "listen_timeout", "stimeout" to "timeout", and "user-agent" to "user_agent".
+
2018-01-xx - xxxxxxx - lavf 58.6.100 - avformat.h
Add AVFMTCTX_UNSEEKABLE (for HLS demuxer).
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index cf7cdb2f2b..bed5f1ea11 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -93,10 +93,19 @@ const AVOption ff_rtsp_options[] = {
RTSP_MEDIATYPE_OPTS("allowed_media_types", "set media types to accept from the server"),
{ "min_port", "set minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
{ "max_port", "set maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
+#if FF_API_OLD_RTSP_OPTIONS
{ "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
{ "stimeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#else
+ { "listen_timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+ { "timeout", "set timeout (in microseconds) of socket TCP I/O operations", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
+#endif
COMMON_OPTS(),
+#if FF_API_OLD_RTSP_OPTIONS
{ "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#else
+ { "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
+#endif
{ NULL },
};
diff --git a/libavformat/version.h b/libavformat/version.h
index 5ff8a89ae0..4285e925cf 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -32,7 +32,7 @@
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
// Also please add any ticket numbers that you believe might be affected here
#define LIBAVFORMAT_VERSION_MAJOR 58
-#define LIBAVFORMAT_VERSION_MINOR 6
+#define LIBAVFORMAT_VERSION_MINOR 7
#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
@@ -85,6 +85,9 @@
#ifndef FF_API_LAVF_FFSERVER
#define FF_API_LAVF_FFSERVER (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
+#ifndef FF_API_OLD_RTSP_OPTIONS
+#define FF_API_OLD_RTSP_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 59)
+#endif
#ifndef FF_API_R_FRAME_RATE
Pushed, with James Almer's change request added.
Why are you constantly breaking developer rules?
I'm not. Stop attacking me, for no reason too.

Continue reading on narkive:
Loading...