From: Vittorio Giovara Date: Sun, 13 Sep 2015 21:45:24 +0000 (+0200) Subject: lavc: Move rtp_payload_size to codec private options X-Git-Tag: android-x86-7.1-r1~252^2~1569 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=936f0d98f864f9f6bb4f9e5458b78537e146bacd;p=android-x86%2Fexternal-ffmpeg.git lavc: Move rtp_payload_size to codec private options This option is only used by mpegvideoenc and openh264. It is a very codec-specific option, so deprecate the global variant. The openh264 option is dropped altogether since it is just a fallback for -max_nal_size anyway. Signed-off-by: Vittorio Giovara --- diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index ca7cfa688f..de367de390 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2418,12 +2418,16 @@ typedef struct AVCodecContext { void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); #endif +#if FF_API_PRIVATE_OPT + /** @deprecated use encoder private options instead */ + attribute_deprecated int rtp_payload_size; /* The size of the RTP payload: the coder will */ /* do its best to deliver a chunk with size */ /* below rtp_payload_size, the chunk will start */ /* with a start code on some codecs like H.263. */ /* This doesn't take account of any particular */ /* headers inside the transmitted RTP payload. */ +#endif #if FF_API_STAT_BITS /* statistics, used for 2-pass encoding */ diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index 04e7ffd210..747beef96b 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -203,14 +203,9 @@ FF_ENABLE_DEPRECATION_WARNINGS param.uiMaxNalSize = s->max_nal_size; param.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceSizeConstraint = s->max_nal_size; } else { - if (avctx->rtp_payload_size) { - av_log(avctx,AV_LOG_DEBUG,"Using RTP Payload size for uiMaxNalSize"); - param.uiMaxNalSize = avctx->rtp_payload_size; - param.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceSizeConstraint = avctx->rtp_payload_size; - } else { - av_log(avctx,AV_LOG_ERROR,"Invalid -max_nal_size, specify a valid max_nal_size to use -slice_mode dyn\n"); - goto fail; - } + av_log(avctx, AV_LOG_ERROR, "Invalid -max_nal_size, " + "specify a valid max_nal_size to use -slice_mode dyn\n"); + goto fail; } } diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index c1755eba3b..ea8da572c0 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -465,6 +465,7 @@ typedef struct MpegEncContext { /* RTP specific */ int rtp_mode; + int rtp_payload_size; uint8_t *ptr_lastgob; int16_t (*pblocks[12])[64]; @@ -613,6 +614,7 @@ FF_MPV_OPT_CMP_FUNC, \ {"sc_threshold", "Scene change threshold", FF_MPV_OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"noise_reduction", "Noise reduction", FF_MPV_OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"mpeg_quant", "Use MPEG quantizers instead of H.263", FF_MPV_OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, FF_MPV_OPT_FLAGS }, \ +{"ps", "RTP payload size in bytes", FF_MPV_OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ extern const AVOption ff_mpv_generic_options[]; diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index b032148c9e..fbbbb00990 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -294,6 +294,13 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) break; } +#if FF_API_PRIVATE_OPT +FF_DISABLE_DEPRECATION_WARNINGS + if (avctx->rtp_payload_size) + s->rtp_payload_size = avctx->rtp_payload_size; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + s->bit_rate = avctx->bit_rate; s->width = avctx->width; s->height = avctx->height; @@ -313,7 +320,7 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) s->codec_id = avctx->codec->id; s->strict_std_compliance = avctx->strict_std_compliance; s->quarter_sample = (avctx->flags & AV_CODEC_FLAG_QPEL) != 0; - s->rtp_mode = !!avctx->rtp_payload_size; + s->rtp_mode = !!s->rtp_payload_size; s->intra_dc_precision = avctx->intra_dc_precision; s->user_specified_pts = AV_NOPTS_VALUE; @@ -2766,7 +2773,9 @@ static int encode_thread(AVCodecContext *c, void *arg){ current_packet_size= ((put_bits_count(&s->pb)+7)>>3) - (s->ptr_lastgob - s->pb.buf); - is_gob_start= s->avctx->rtp_payload_size && current_packet_size >= s->avctx->rtp_payload_size && mb_y + mb_x>0; + is_gob_start = s->rtp_payload_size && + current_packet_size >= s->rtp_payload_size && + mb_y + mb_x > 0; if(s->start_mb_y == mb_y && mb_y > 0 && mb_x==0) is_gob_start=1; diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index 3dbe315452..570a66e843 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -121,8 +121,8 @@ static const AVOption avcodec_options[] = { #endif #if FF_API_PRIVATE_OPT {"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, V|E}, -#endif {"ps", "RTP payload size in bytes", OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, +#endif #if FF_API_STAT_BITS {"mv_bits", NULL, OFFSET(mv_bits), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, {"header_bits", NULL, OFFSET(header_bits), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX},