Re: [FFmpeg-devel] [PATCH] avcodec/encode: add missing assert to avcodec_receive_packet()

2019-11-13 Thread James Almer
On 11/9/2019 8:08 PM, James Almer wrote:
> Encoders must return reference counted packets.
> 
> This was checked only for encoders using the encode2 AVCodec API, while
> blindly accepting whatever encoders using the receive_packet AVCodec API
> were returning.
> 
> Signed-off-by: James Almer 
> ---
>  libavcodec/encode.c | 8 +++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/encode.c b/libavcodec/encode.c
> index d81b32b983..9ed2cf0f59 100644
> --- a/libavcodec/encode.c
> +++ b/libavcodec/encode.c
> @@ -428,9 +428,15 @@ int attribute_align_arg 
> avcodec_receive_packet(AVCodecContext *avctx, AVPacket *
>  return AVERROR(EINVAL);
>  
>  if (avctx->codec->receive_packet) {
> +int ret;
>  if (avctx->internal->draining && !(avctx->codec->capabilities & 
> AV_CODEC_CAP_DELAY))
>  return AVERROR_EOF;
> -return avctx->codec->receive_packet(avctx, avpkt);
> +ret = avctx->codec->receive_packet(avctx, avpkt);
> +if (!ret)
> +// Encoders must always return ref-counted buffers.
> +// Side-data only packets have no data and can be not 
> ref-counted.
> +av_assert0(!avpkt->data || avpkt->buf);
> +return ret;
>  }
>  
>  // Emulation via old API.

Will apply soon.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-devel] [PATCH] avcodec/encode: add missing assert to avcodec_receive_packet()

2019-11-09 Thread James Almer
Encoders must return reference counted packets.

This was checked only for encoders using the encode2 AVCodec API, while
blindly accepting whatever encoders using the receive_packet AVCodec API
were returning.

Signed-off-by: James Almer 
---
 libavcodec/encode.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libavcodec/encode.c b/libavcodec/encode.c
index d81b32b983..9ed2cf0f59 100644
--- a/libavcodec/encode.c
+++ b/libavcodec/encode.c
@@ -428,9 +428,15 @@ int attribute_align_arg 
avcodec_receive_packet(AVCodecContext *avctx, AVPacket *
 return AVERROR(EINVAL);
 
 if (avctx->codec->receive_packet) {
+int ret;
 if (avctx->internal->draining && !(avctx->codec->capabilities & 
AV_CODEC_CAP_DELAY))
 return AVERROR_EOF;
-return avctx->codec->receive_packet(avctx, avpkt);
+ret = avctx->codec->receive_packet(avctx, avpkt);
+if (!ret)
+// Encoders must always return ref-counted buffers.
+// Side-data only packets have no data and can be not ref-counted.
+av_assert0(!avpkt->data || avpkt->buf);
+return ret;
 }
 
 // Emulation via old API.
-- 
2.23.0

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".