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>tags/n3.0
@@ -2418,12 +2418,16 @@ typedef struct AVCodecContext { | |||||
void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); | void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); | ||||
#endif | #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 */ | int rtp_payload_size; /* The size of the RTP payload: the coder will */ | ||||
/* do its best to deliver a chunk with size */ | /* do its best to deliver a chunk with size */ | ||||
/* below rtp_payload_size, the chunk will start */ | /* below rtp_payload_size, the chunk will start */ | ||||
/* with a start code on some codecs like H.263. */ | /* with a start code on some codecs like H.263. */ | ||||
/* This doesn't take account of any particular */ | /* This doesn't take account of any particular */ | ||||
/* headers inside the transmitted RTP payload. */ | /* headers inside the transmitted RTP payload. */ | ||||
#endif | |||||
#if FF_API_STAT_BITS | #if FF_API_STAT_BITS | ||||
/* statistics, used for 2-pass encoding */ | /* statistics, used for 2-pass encoding */ | ||||
@@ -203,14 +203,9 @@ FF_ENABLE_DEPRECATION_WARNINGS | |||||
param.uiMaxNalSize = s->max_nal_size; | param.uiMaxNalSize = s->max_nal_size; | ||||
param.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceSizeConstraint = s->max_nal_size; | param.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceSizeConstraint = s->max_nal_size; | ||||
} else { | } 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; | |||||
} | } | ||||
} | } | ||||
@@ -465,6 +465,7 @@ typedef struct MpegEncContext { | |||||
/* RTP specific */ | /* RTP specific */ | ||||
int rtp_mode; | int rtp_mode; | ||||
int rtp_payload_size; | |||||
uint8_t *ptr_lastgob; | uint8_t *ptr_lastgob; | ||||
int16_t (*pblocks[12])[64]; | 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 }, \ | {"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 }, \ | {"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 }, \ | {"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[]; | extern const AVOption ff_mpv_generic_options[]; | ||||
@@ -294,6 +294,13 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) | |||||
break; | 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->bit_rate = avctx->bit_rate; | ||||
s->width = avctx->width; | s->width = avctx->width; | ||||
s->height = avctx->height; | s->height = avctx->height; | ||||
@@ -313,7 +320,7 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) | |||||
s->codec_id = avctx->codec->id; | s->codec_id = avctx->codec->id; | ||||
s->strict_std_compliance = avctx->strict_std_compliance; | s->strict_std_compliance = avctx->strict_std_compliance; | ||||
s->quarter_sample = (avctx->flags & AV_CODEC_FLAG_QPEL) != 0; | 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->intra_dc_precision = avctx->intra_dc_precision; | ||||
s->user_specified_pts = AV_NOPTS_VALUE; | 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); | 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; | if(s->start_mb_y == mb_y && mb_y > 0 && mb_x==0) is_gob_start=1; | ||||
@@ -121,8 +121,8 @@ static const AVOption avcodec_options[] = { | |||||
#endif | #endif | ||||
#if FF_API_PRIVATE_OPT | #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}, | {"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}, | {"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 | #if FF_API_STAT_BITS | ||||
{"mv_bits", NULL, OFFSET(mv_bits), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, | {"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}, | {"header_bits", NULL, OFFSET(header_bits), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, | ||||