[FFmpeg-devel] [PATCH] avcodec/libopusenc: reload packet loss at encode
Philip-Dylan Gleonec
philip-dylan.gleonec at savoirfairelinux.com
Wed Mar 3 17:50:25 EET 2021
Le 16/02/2021 à 15:04, Philip-Dylan Gleonec a écrit :
> An estimation of packet loss is required by libopus to compute its FEC
> data. Currently, this estimation is constant, and can not be changed
> after configuration. This means an application using libopus through
> ffmpeg can not adapt the packet loss estimation when the network
> quality degrades.
>
> This patch makes the encoder reload the packet_loss AVOption before
> encoding samples, if fec is enabled. This way an application can modify
> the packet loss estimation by changing the AVOption. Typical use-case
> is a RTP stream, where packet loss can be estimated from RTCP packets.
>
> Signed-off-by: Philip-Dylan Gleonec <philip-dylan.gleonec at savoirfairelinux.com>
> ---
> libavcodec/libopusenc.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/libavcodec/libopusenc.c b/libavcodec/libopusenc.c
> index 70d17f802b..c18e8ae7fa 100644
> --- a/libavcodec/libopusenc.c
> +++ b/libavcodec/libopusenc.c
> @@ -460,6 +460,15 @@ static int libopus_encode(AVCodecContext *avctx, AVPacket *avpkt,
> int ret;
> int discard_padding;
>
> + if (opus->opts.fec) {
> + ret = opus_multistream_encoder_ctl(opus->enc,
> + OPUS_SET_PACKET_LOSS_PERC(opus->opts.packet_loss));
> + if (ret != OPUS_OK)
> + av_log(avctx, AV_LOG_WARNING,
> + "Unable to set expected packet loss percentage: %s\n",
> + opus_strerror(ret));
> + }
> +
> if (frame) {
> ret = ff_af_queue_add(&opus->afq, frame);
> if (ret < 0)
>
Hello,
Is someone interested in picking this up, or is there some correction I
should make to this patch ?
Regards,
Philip-Dylan Gleonec
More information about the ffmpeg-devel
mailing list