mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-24 00:02:52 +00:00
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>
This commit is contained in:
parent
8a9de5c524
commit
462a54e229
@ -13,6 +13,11 @@ libavutil: 2015-08-28
|
||||
|
||||
API changes, most recent first:
|
||||
|
||||
2015-xx-xx - xxxxxxx - lavc 57.9.1 - avcodec.h
|
||||
Deprecate rtp_callback without replacement, i.e. it won't be possible to
|
||||
get image slices before the full frame is encoded any more. The libavformat
|
||||
rtpenc muxer can still be used for RFC-2190 packetization.
|
||||
|
||||
2015-11-xx - xxxxxxx - lavc 57.9.0 - avcodec.h
|
||||
Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations between
|
||||
streams.
|
||||
|
@ -2372,13 +2372,19 @@ typedef struct AVCodecContext {
|
||||
*/
|
||||
int64_t timecode_frame_start;
|
||||
|
||||
#if FF_API_RTP_CALLBACK
|
||||
/**
|
||||
* @deprecated unused
|
||||
*/
|
||||
/* The RTP callback: This function is called */
|
||||
/* every time the encoder has a packet to send. */
|
||||
/* It depends on the encoder if the data starts */
|
||||
/* with a Start Code (it should). H.263 does. */
|
||||
/* mb_nb contains the number of macroblocks */
|
||||
/* encoded in the RTP payload. */
|
||||
attribute_deprecated
|
||||
void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb);
|
||||
#endif
|
||||
|
||||
int rtp_payload_size; /* The size of the RTP payload: the coder will */
|
||||
/* do its best to deliver a chunk with size */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 57
|
||||
#define LIBAVCODEC_VERSION_MINOR 9
|
||||
#define LIBAVCODEC_VERSION_MICRO 0
|
||||
#define LIBAVCODEC_VERSION_MICRO 1
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
LIBAVCODEC_VERSION_MINOR, \
|
||||
@ -177,5 +177,8 @@
|
||||
#ifndef FF_API_AVPACKET_OLD_API
|
||||
#define FF_API_AVPACKET_OLD_API (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||
#endif
|
||||
#ifndef FF_API_RTP_CALLBACK
|
||||
#define FF_API_RTP_CALLBACK (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||
#endif
|
||||
|
||||
#endif /* AVCODEC_VERSION_H */
|
||||
|
Loading…
Reference in New Issue
Block a user