On Fri, 20 Nov 2015, Andreas Cadhalpun wrote:

On 19.11.2015 09:45, Vittorio Giovara wrote:
This function returns the encoded data of a frame, one slice at a time
directly when that slice is encoded, instead of waiting for the full
frame to be done. However this field has a debatable usefulness, since
it looks like it is just a convoluted way to get data at lowest
possible latency, or a somewhat hacky way to store h263 in RFC-2190
rtp encapsulation.

Moreover when multi-threading is enabled (which is by default) the order
of returned slices is not deterministic at all, making the use of this
function not reliable at all (or at the very least, more complicated
than it should be).

So, for the reasons stated above, and being used by only a single encoder
family (mpegvideo), this field is deemed unnecessary, overcomplicated,
and not really belonging to libavcodec. Libavformat features a complete
implementation of RFC-2190, for any other case.

Signed-off-by: Vittorio Giovara <[email protected]>
---
I received more feedback from Opal, so I mentioned their usecase in
the commit log. Also added APIchange entry as Andreas requested.

Vittorio

 doc/APIchanges             | 3 +++
 libavcodec/avcodec.h       | 6 ++++++
 libavcodec/mpegvideo_enc.c | 8 ++++++++
 libavcodec/version.h       | 5 ++++-
 4 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index fbabb51..52b09ae 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,9 @@ libavutil:     2015-08-28

 API changes, most recent first:

+2015-xx-xx - xxxxxxx - lavc 57.9.1 - avcodec.h
+  Deprecate rtp_callback in favour of AVFormat rtpenc muxer.

Does that mean opal can use the AVFormat rtpenc muxer for its purposes?
I'm just wondering, because you previously mentioned that there was no
replacement.

The rtpenc muxer is not related to the rtp_callback whatsoever. The rtpenc muxer is not a replacement, and even if you used rtp_callback before, you still also would have used the rtpenc muxer (or an equivalent).

Vittorio, how many times do we have to explain this?

The rtp_callback was only a way to get one slice returned from the encoder at a time, without having to wait for the full frame to be encoded. You can't replace that with a muxer, that's just plain nonsense.

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to