summaryrefslogtreecommitdiff
path: root/libavcodec/mpegvideo_enc.c
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2015-11-19 09:45:01 +0100
committerVittorio Giovara <vittorio.giovara@gmail.com>2015-11-20 21:05:20 +0100
commit462a54e2291e1fa18e1f1254d09739dfbb795617 (patch)
treec00cbb330010343b3f34904f867978b513494891 /libavcodec/mpegvideo_enc.c
parent8a9de5c52401aa1e87bdb147524831c640d1ec53 (diff)
lavc: Deprecate avctx.rtp_callback field
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 <vittorio.giovara@gmail.com>
Diffstat (limited to 'libavcodec/mpegvideo_enc.c')
-rw-r--r--libavcodec/mpegvideo_enc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index b9157412de..b76d0ad25a 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -2720,10 +2720,14 @@ static int encode_thread(AVCodecContext *c, void *arg){
}
}
+#if FF_API_RTP_CALLBACK
+FF_DISABLE_DEPRECATION_WARNINGS
if (s->avctx->rtp_callback){
int number_mb = (mb_y - s->resync_mb_y)*s->mb_width + mb_x - s->resync_mb_x;
s->avctx->rtp_callback(s->avctx, s->ptr_lastgob, current_packet_size, number_mb);
}
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
update_mb_info(s, 1);
switch(s->codec_id){
@@ -3198,6 +3202,8 @@ static int encode_thread(AVCodecContext *c, void *arg){
write_slice_end(s);
+#if FF_API_RTP_CALLBACK
+FF_DISABLE_DEPRECATION_WARNINGS
/* Send the last GOB if RTP */
if (s->avctx->rtp_callback) {
int number_mb = (mb_y - s->resync_mb_y)*s->mb_width - s->resync_mb_x;
@@ -3206,6 +3212,8 @@ static int encode_thread(AVCodecContext *c, void *arg){
emms_c();
s->avctx->rtp_callback(s->avctx, s->ptr_lastgob, pdif, number_mb);
}
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
return 0;
}