diff options
author | Mike Lampard <mlampard@users.sourceforge.net> | 2004-12-07 12:21:34 +0000 |
---|---|---|
committer | Mike Lampard <mlampard@users.sourceforge.net> | 2004-12-07 12:21:34 +0000 |
commit | f9062816b1ff3bae4384d28989914269e1b0ddc0 (patch) | |
tree | 61957612d561733ded5c5d8a686a261fd7ba363d | |
parent | f6c4774eca9dda5a48e5a98da4aea2f868007835 (diff) | |
download | xine-lib-f9062816b1ff3bae4384d28989914269e1b0ddc0.tar.gz xine-lib-f9062816b1ff3bae4384d28989914269e1b0ddc0.tar.bz2 |
verify pageID
CVS patchset: 7200
CVS date: 2004/12/07 12:21:34
-rw-r--r-- | src/libspudvb/xine_decoder.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/libspudvb/xine_decoder.c b/src/libspudvb/xine_decoder.c index 725d9552e..69a32e2b7 100644 --- a/src/libspudvb/xine_decoder.c +++ b/src/libspudvb/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.9 2004/12/07 10:52:23 mlampard Exp $ + * $Id: xine_decoder.c,v 1.10 2004/12/07 12:21:34 mlampard Exp $ * * DVB Subtitle decoder (ETS 300 743) * (c) 2004 Mike Lampard <mlampard@users.sourceforge.net> @@ -650,25 +650,27 @@ static void spudec_decode_data (spu_decoder_t * this_gen, buf_element_t * buf) this->dvbsub->page.page_id = (this->dvbsub->buf[this->dvbsub->i] << 8) | this->dvbsub->buf[this->dvbsub->i + 1]; segment_length = (this->dvbsub->buf[this->dvbsub->i + 2] << 8) | this->dvbsub->buf[this->dvbsub->i + 3]; new_i = this->dvbsub->i + segment_length + 4; - - /* SEGMENT_DATA_FIELD */ - switch (segment_type & 0xff) { - case 0x10: - process_page_composition_segment (this); - break; - case 0x11: - process_region_composition_segment (this); - break; - case 0x12: - process_CLUT_definition_segment(this); - break; - case 0x13: - process_object_data_segment (this); - break; - case 0x80: /* we have enough data to decode */ - break; - default: - break; + /* verify we've the right segment */ + if(this->dvbsub->page.page_id==this->spu_descriptor->comp_page_id){ + /* SEGMENT_DATA_FIELD */ + switch (segment_type & 0xff) { + case 0x10: + process_page_composition_segment (this); + break; + case 0x11: + process_region_composition_segment (this); + break; + case 0x12: + process_CLUT_definition_segment(this); + break; + case 0x13: + process_object_data_segment (this); + break; + case 0x80: /* we have enough data to decode */ + break; + default: + break; + } } this->dvbsub->i = new_i; } |