# HG changeset patch # User bcoudurier # Date 1239503522 0 # Node ID d14d1f5f4eb4c8e75813e64444f409d9a00e7de6 # Parent 0929b70d44072c773a9380bfcde3578e79f9ea91 simplify registration descriptor parsing with bytestream get functions diff -r 0929b70d4407 -r d14d1f5f4eb4 mpegts.c --- a/mpegts.c Sun Apr 12 02:19:40 2009 +0000 +++ b/mpegts.c Sun Apr 12 02:32:02 2009 +0000 @@ -21,6 +21,7 @@ #include "libavutil/crc.h" #include "libavutil/intreadwrite.h" +#include "libavcodec/bytestream.h" #include "avformat.h" #include "mpegts.h" #include "internal.h" @@ -491,6 +492,7 @@ char language[4] = {0}; /* initialize to kill warnings */ int has_hdmv_descr = 0; int has_dirac_descr = 0; + uint32_t reg_desc = 0; /* registration descriptor */ #ifdef DEBUG_SI av_log(ts->stream, AV_LOG_DEBUG, "PMT: len %i\n", section_len); @@ -527,14 +529,9 @@ break; program_info_length -= len + 2; if(tag == REGISTRATION_DESCRIPTOR && len >= 4) { - uint8_t bytes[4]; - bytes[0] = get8(&p, p_end); - bytes[1] = get8(&p, p_end); - bytes[2] = get8(&p, p_end); - bytes[3] = get8(&p, p_end); + reg_desc = bytestream_get_le32(&p); len -= 4; - if(bytes[0] == 'H' && bytes[1] == 'D' && - bytes[2] == 'M' && bytes[3] == 'V') + if(reg_desc == AV_RL32("HDMV")) has_hdmv_descr = 1; } p += len; @@ -601,17 +598,10 @@ language[3] = 0; break; case REGISTRATION_DESCRIPTOR: /*MPEG-2 Registration descriptor */ - { - uint8_t bytes[4]; - bytes[0] = get8(&p, desc_end); - bytes[1] = get8(&p, desc_end); - bytes[2] = get8(&p, desc_end); - bytes[3] = get8(&p, desc_end); - if(bytes[0] == 'd' && bytes[1] == 'r' && - bytes[2] == 'a' && bytes[3] == 'c') - has_dirac_descr = 1; - break; - } + reg_desc = bytestream_get_le32(&p); + if(reg_desc == AV_RL32("drac")) + has_dirac_descr = 1; + break; default: break; }