summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-02-14 13:58:02 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-02-14 13:58:02 +0100
commit99b12357f47efd7da070e29d888e9e7646824667 (patch)
tree65d7d46c6a976a0d3dabb31f34c2efdfb064151b /libavcodec
parent60b46a00c62db3e366322f99d261480cd213bfa5 (diff)
parent3a0576702825423abecb32627c530dbc4c0f73bc (diff)
Merge commit '3a0576702825423abecb32627c530dbc4c0f73bc'
* commit '3a0576702825423abecb32627c530dbc4c0f73bc': h264: store current_sps_id inside the current sps Conflicts: libavcodec/h264.c libavcodec/h264_ps.c The current_sps_id is not removed as it used in security related code. Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/h264.c5
-rw-r--r--libavcodec/h264.h1
-rw-r--r--libavcodec/h264_ps.c1
3 files changed, 5 insertions, 2 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 9f04174241..37a85889f1 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -3523,10 +3523,11 @@ static int decode_slice_header(H264Context *h, H264Context *h0)
return AVERROR_INVALIDDATA;
}
- if (h->pps.sps_id != h->current_sps_id ||
+ if (h->pps.sps_id != h->sps.sps_id ||
+ h->pps.sps_id != h->current_sps_id ||
h0->sps_buffers[h->pps.sps_id]->new) {
- h->sps = *h0->sps_buffers[h->pps.sps_id];
+ h->sps = *h0->sps_buffers[h->pps.sps_id];
if (h->mb_width != h->sps.mb_width ||
h->mb_height != h->sps.mb_height * (2 - h->sps.frame_mbs_only_flag) ||
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index e749139ef1..eccce5a69b 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -163,6 +163,7 @@ typedef enum {
* Sequence parameter set
*/
typedef struct SPS {
+ unsigned int sps_id;
int profile_idc;
int level_idc;
int chroma_format_idc;
diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c
index ee931e1b54..22ccc52c09 100644
--- a/libavcodec/h264_ps.c
+++ b/libavcodec/h264_ps.c
@@ -347,6 +347,7 @@ int ff_h264_decode_seq_parameter_set(H264Context *h)
if (!sps)
return AVERROR(ENOMEM);
+ sps->sps_id = sps_id;
sps->time_offset_length = 24;
sps->profile_idc = profile_idc;
sps->constraint_set_flags = constraint_set_flags;