diff options
author | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2009-04-12 02:32:02 +0000 |
---|---|---|
committer | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2009-04-12 02:32:02 +0000 |
commit | 4f1db48e88aad01139878937916603a68eac596c (patch) | |
tree | 794b01dcfc9907e1e400f0085a1e51671507face | |
parent | a4d2af9b96cc5715b9dc2fecb1c56435de93e49a (diff) | |
download | ffmpeg-4f1db48e88aad01139878937916603a68eac596c.tar.gz |
simplify registration descriptor parsing with bytestream get functions
Originally committed as revision 18456 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/mpegts.c | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 226f5b28cb..50d1ffa57b 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -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 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len 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 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len 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 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len 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; } |