aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2014-02-13 00:43:17 +0100
committerVittorio Giovara <vittorio.giovara@gmail.com>2014-02-14 05:05:46 +0100
commit3a0576702825423abecb32627c530dbc4c0f73bc (patch)
tree54773607d51e7045dc8b11a93a5aa8937be5fdc9
parent73e8fab31dc19c4371499e612856accbc00b2820 (diff)
downloadffmpeg-3a0576702825423abecb32627c530dbc4c0f73bc.tar.gz
h264: store current_sps_id inside the current sps
In preparation for MVC support.
-rw-r--r--libavcodec/h264.c5
-rw-r--r--libavcodec/h264.h2
-rw-r--r--libavcodec/h264_ps.c2
3 files changed, 4 insertions, 5 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index c193630086..dfabcf5ae2 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -3414,12 +3414,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 ||
h0->sps_buffers[h->pps.sps_id]->new) {
h0->sps_buffers[h->pps.sps_id]->new = 0;
- h->current_sps_id = h->pps.sps_id;
- h->sps = *h0->sps_buffers[h->pps.sps_id];
+ h->sps = *h0->sps_buffers[h->pps.sps_id];
if (h->bit_depth_luma != h->sps.bit_depth_luma ||
h->chroma_format_idc != h->sps.chroma_format_idc) {
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 6aa30b9185..ef814630ab 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -146,6 +146,7 @@ typedef enum {
* Sequence parameter set
*/
typedef struct SPS {
+ unsigned int sps_id;
int profile_idc;
int level_idc;
int chroma_format_idc;
@@ -353,7 +354,6 @@ typedef struct H264Context {
ptrdiff_t mb_linesize; ///< may be equal to s->linesize or s->linesize * 2, for mbaff
ptrdiff_t mb_uvlinesize;
- unsigned current_sps_id; ///< id of the current SPS
SPS sps; ///< current sps
/**
diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c
index 88b973a783..932c27ab06 100644
--- a/libavcodec/h264_ps.c
+++ b/libavcodec/h264_ps.c
@@ -318,6 +318,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;
@@ -504,7 +505,6 @@ int ff_h264_decode_seq_parameter_set(H264Context *h)
av_free(h->sps_buffers[sps_id]);
h->sps_buffers[sps_id] = sps;
h->sps = *sps;
- h->current_sps_id = sps_id;
return 0;