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 <vittorio.giovara@gmail.com>
This commit is contained in:
Vittorio Giovara 2015-09-13 23:45:24 +02:00
parent d749615333
commit 936f0d98f8
5 changed files with 21 additions and 11 deletions

View File

@ -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 */

View File

@ -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;
}
}

View File

@ -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[];

View File

@ -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;

View File

@ -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},