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:
authorMark Thompson <sw@jkqxz.net>2017-12-11 03:22:42 +0300
committerMark Thompson <sw@jkqxz.net>2018-02-21 01:04:12 +0300
commit13ca5d34ba5c473211daaae0a101123bcaada3e6 (patch)
tree1167015e8b25d0559852a3bbbe5edd8e6be9dab1 /libavcodec/cbs_h264_syntax_template.c
parent0e4c166cdd6446522a085dd9731967d09ac71f72 (diff)
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.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libavcodec/cbs_h264_syntax_template.c b/libavcodec/cbs_h264_syntax_template.c
index 0fe18441c0..c2fd546822 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;