diff options
author | Mark Thompson <sw@jkqxz.net> | 2017-12-11 00:22:42 +0000 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2018-02-20 22:04:12 +0000 |
commit | 13ca5d34ba5c473211daaae0a101123bcaada3e6 (patch) | |
tree | 1167015e8b25d0559852a3bbbe5edd8e6be9dab1 /libavcodec/cbs_h264_syntax_template.c | |
parent | 0e4c166cdd6446522a085dd9731967d09ac71f72 (diff) | |
download | ffmpeg-streaming-13ca5d34ba5c473211daaae0a101123bcaada3e6.zip ffmpeg-streaming-13ca5d34ba5c473211daaae0a101123bcaada3e6.tar.gz |
cbs_h264: Add hack for pic_timing with no active SPS
If there is exactly one possible SPS but it is not yet active then just
assume that it should be the active one.
Diffstat (limited to 'libavcodec/cbs_h264_syntax_template.c')
-rw-r--r-- | libavcodec/cbs_h264_syntax_template.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libavcodec/cbs_h264_syntax_template.c b/libavcodec/cbs_h264_syntax_template.c index 0fe1844..c2fd546 100644 --- a/libavcodec/cbs_h264_syntax_template.c +++ b/libavcodec/cbs_h264_syntax_template.c @@ -561,6 +561,22 @@ static int FUNC(sei_pic_timing)(CodedBitstreamContext *ctx, RWContext *rw, sps = h264->active_sps; if (!sps) { + // If there is exactly one possible SPS but it is not yet active + // then just assume that it should be the active one. + int i, k = -1; + for (i = 0; i < H264_MAX_SPS_COUNT; i++) { + if (h264->sps[i]) { + if (k >= 0) { + k = -1; + break; + } + k = i; + } + } + if (k >= 0) + sps = h264->sps[k]; + } + if (!sps) { av_log(ctx->log_ctx, AV_LOG_ERROR, "No active SPS for pic_timing.\n"); return AVERROR_INVALIDDATA; |