Commit 3a057670 authored by Vittorio Giovara's avatar Vittorio Giovara

h264: store current_sps_id inside the current sps

In preparation for MVC support.
parent 73e8fab3
...@@ -3414,12 +3414,11 @@ static int decode_slice_header(H264Context *h, H264Context *h0) ...@@ -3414,12 +3414,11 @@ static int decode_slice_header(H264Context *h, H264Context *h0)
return AVERROR_INVALIDDATA; 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) {
h0->sps_buffers[h->pps.sps_id]->new = 0; 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 || if (h->bit_depth_luma != h->sps.bit_depth_luma ||
h->chroma_format_idc != h->sps.chroma_format_idc) { h->chroma_format_idc != h->sps.chroma_format_idc) {
......
...@@ -146,6 +146,7 @@ typedef enum { ...@@ -146,6 +146,7 @@ typedef enum {
* Sequence parameter set * Sequence parameter set
*/ */
typedef struct SPS { typedef struct SPS {
unsigned int sps_id;
int profile_idc; int profile_idc;
int level_idc; int level_idc;
int chroma_format_idc; int chroma_format_idc;
...@@ -353,7 +354,6 @@ typedef struct H264Context { ...@@ -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_linesize; ///< may be equal to s->linesize or s->linesize * 2, for mbaff
ptrdiff_t mb_uvlinesize; ptrdiff_t mb_uvlinesize;
unsigned current_sps_id; ///< id of the current SPS
SPS sps; ///< current sps SPS sps; ///< current sps
/** /**
......
...@@ -318,6 +318,7 @@ int ff_h264_decode_seq_parameter_set(H264Context *h) ...@@ -318,6 +318,7 @@ int ff_h264_decode_seq_parameter_set(H264Context *h)
if (!sps) if (!sps)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
sps->sps_id = sps_id;
sps->time_offset_length = 24; sps->time_offset_length = 24;
sps->profile_idc = profile_idc; sps->profile_idc = profile_idc;
sps->constraint_set_flags = constraint_set_flags; sps->constraint_set_flags = constraint_set_flags;
...@@ -504,7 +505,6 @@ int ff_h264_decode_seq_parameter_set(H264Context *h) ...@@ -504,7 +505,6 @@ int ff_h264_decode_seq_parameter_set(H264Context *h)
av_free(h->sps_buffers[sps_id]); av_free(h->sps_buffers[sps_id]);
h->sps_buffers[sps_id] = sps; h->sps_buffers[sps_id] = sps;
h->sps = *sps; h->sps = *sps;
h->current_sps_id = sps_id;
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment