Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2021-02-13 01:47:46 +0300
committerJan Ekström <jeebjp@gmail.com>2021-02-14 14:38:46 +0300
commit6f80953554b07635d3b52f76b03807d198a5e9d0 (patch)
tree54760be4d68cb0c5152ed81e4260715d8acafcc7 /libavcodec/mediacodecdec.c
parentd5d6751a5505463824bf37e86a3a79010ba31d0b (diff)
avcodec/mediacodecdec: do not abort when H264/HEVC extradata extraction fails
Although rare, extradata can be present but empty and extraction will fail. However Android also supports passing codec-specific data inline and will likely play such a stream anyway. So there's no reason to abort initialization before we know for sure.
Diffstat (limited to 'libavcodec/mediacodecdec.c')
-rw-r--r--libavcodec/mediacodecdec.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c
index ac1725e466..ad592d14a3 100644
--- a/libavcodec/mediacodecdec.c
+++ b/libavcodec/mediacodecdec.c
@@ -167,8 +167,11 @@ static int h264_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format)
ff_AMediaFormat_setBuffer(format, "csd-1", (void*)data, data_size);
av_freep(&data);
} else {
- av_log(avctx, AV_LOG_ERROR, "Could not extract PPS/SPS from extradata");
- ret = AVERROR_INVALIDDATA;
+ const int warn = is_avc && (avctx->codec_tag == MKTAG('a','v','c','1') ||
+ avctx->codec_tag == MKTAG('a','v','c','2'));
+ av_log(avctx, warn ? AV_LOG_WARNING : AV_LOG_DEBUG,
+ "Could not extract PPS/SPS from extradata\n");
+ ret = 0;
}
done:
@@ -254,8 +257,10 @@ static int hevc_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format)
av_freep(&data);
} else {
- av_log(avctx, AV_LOG_ERROR, "Could not extract VPS/PPS/SPS from extradata");
- ret = AVERROR_INVALIDDATA;
+ const int warn = is_nalff && avctx->codec_tag == MKTAG('h','v','c','1');
+ av_log(avctx, warn ? AV_LOG_WARNING : AV_LOG_DEBUG,
+ "Could not extract VPS/PPS/SPS from extradata\n");
+ ret = 0;
}
done: