[FFmpeg-devel,v4,05/14] avcodec/h264, videotoolbox: return AVERROR_INVALIDDATA when no frames are produced

Submitted by Aman Gupta on Nov. 10, 2017, 9:40 p.m.

Details

Message ID 20171110214059.84891-5-ffmpeg@tmm1.net
State New
Headers show

Commit Message

Aman Gupta Nov. 10, 2017, 9:40 p.m.
From: Aman Gupta <aman@tmm1.net>

The only reason videotoolbox wouldn't produce frames is if the data fed
to it was invalid, so returning AVERROR_INVALIDDATA makes sense here.

Further, it means AVERROR_EXTERNAL can be used in further commits to signal
fatal VideoToolbox errors, letting the user know that they need to fallback to
another decoder.
---
 libavcodec/h264dec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Michael Niedermayer Nov. 11, 2017, 11:54 a.m.
On Fri, Nov 10, 2017 at 01:40:50PM -0800, Aman Gupta wrote:
> From: Aman Gupta <aman@tmm1.net>
> 
> The only reason videotoolbox wouldn't produce frames is if the data fed
> to it was invalid, so returning AVERROR_INVALIDDATA makes sense here.
> 
> Further, it means AVERROR_EXTERNAL can be used in further commits to signal
> fatal VideoToolbox errors, letting the user know that they need to fallback to
> another decoder.
> ---
>  libavcodec/h264dec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
> index aed23c4fba..517f6acc13 100644
> --- a/libavcodec/h264dec.c
> +++ b/libavcodec/h264dec.c
> @@ -824,7 +824,7 @@ static int output_frame(H264Context *h, AVFrame *dst, H264Picture *srcp)
>      int ret;
>  
>      if (src->format == AV_PIX_FMT_VIDEOTOOLBOX && src->buf[0]->size == 1)
> -        return AVERROR_EXTERNAL;
> +        return AVERROR_INVALIDDATA;

should be ok

[...]

Patch hide | download patch | download mbox

diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index aed23c4fba..517f6acc13 100644
--- a/libavcodec/h264dec.c
+++ b/libavcodec/h264dec.c
@@ -824,7 +824,7 @@  static int output_frame(H264Context *h, AVFrame *dst, H264Picture *srcp)
     int ret;
 
     if (src->format == AV_PIX_FMT_VIDEOTOOLBOX && src->buf[0]->size == 1)
-        return AVERROR_EXTERNAL;
+        return AVERROR_INVALIDDATA;
 
     ret = av_frame_ref(dst, src);
     if (ret < 0)