diff options
| author | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2011-10-01 18:45:02 +0100 |
|---|---|---|
| committer | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2011-10-01 18:45:02 +0100 |
| commit | d7c4d2bd622b1405ff520006dbeaf739e9725a89 (patch) | |
| tree | 104f926890dbd24257e96741a5a065f1c64ec855 /src/demuxers | |
| parent | a15f6b82252b5afb81486e6f0e9e10e5e2e5ece5 (diff) | |
| parent | 8ba50d7512e71ce2fa441f8e738459df21cec2ae (diff) | |
| download | xine-lib-d7c4d2bd622b1405ff520006dbeaf739e9725a89.tar.gz xine-lib-d7c4d2bd622b1405ff520006dbeaf739e9725a89.tar.bz2 | |
Merge from 1.1.
--HG--
rename : src/libdts/xine_dts_decoder.c => src/audio_dec/xine_dts_decoder.c
rename : src/libmusepack/xine_musepack_decoder.c => src/audio_dec/xine_musepack_decoder.c
Diffstat (limited to 'src/demuxers')
| -rw-r--r-- | src/demuxers/demux_ts.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c index 74840885d..ff75c3282 100644 --- a/src/demuxers/demux_ts.c +++ b/src/demuxers/demux_ts.c @@ -1784,11 +1784,14 @@ static unsigned char * demux_synchronise(demux_ts_t* this) { static int64_t demux_ts_adaptation_field_parse(uint8_t *data, uint32_t adaptation_field_length) { +#ifdef TS_LOG uint32_t discontinuity_indicator=0; uint32_t random_access_indicator=0; uint32_t elementary_stream_priority_indicator=0; +#endif uint32_t PCR_flag=0; - int64_t PCR=0; + int64_t PCR=-1; +#ifdef TS_LOG uint32_t EPCR=0; uint32_t OPCR_flag=0; uint32_t OPCR=0; @@ -1796,16 +1799,21 @@ static int64_t demux_ts_adaptation_field_parse(uint8_t *data, uint32_t slicing_point_flag=0; uint32_t transport_private_data_flag=0; uint32_t adaptation_field_extension_flag=0; +#endif uint32_t offset = 1; +#ifdef TS_LOG discontinuity_indicator = ((data[0] >> 7) & 0x01); random_access_indicator = ((data[0] >> 6) & 0x01); elementary_stream_priority_indicator = ((data[0] >> 5) & 0x01); +#endif PCR_flag = ((data[0] >> 4) & 0x01); +#ifdef TS_LOG OPCR_flag = ((data[0] >> 3) & 0x01); slicing_point_flag = ((data[0] >> 2) & 0x01); transport_private_data_flag = ((data[0] >> 1) & 0x01); adaptation_field_extension_flag = (data[0] & 0x01); +#endif #ifdef TS_LOG printf ("demux_ts: ADAPTATION FIELD length: %d (%x)\n", @@ -1823,9 +1831,10 @@ static int64_t demux_ts_adaptation_field_parse(uint8_t *data, elementary_stream_priority_indicator); } #endif + if(PCR_flag) { if (adaptation_field_length < offset + 6) - return 0; + return -1; PCR = (((int64_t) data[offset]) & 0xFF) << 25; PCR += (int64_t) ((data[offset+1] & 0xFF) << 17); @@ -1833,13 +1842,15 @@ static int64_t demux_ts_adaptation_field_parse(uint8_t *data, PCR += (int64_t) ((data[offset+3] & 0xFF) << 1); PCR += (int64_t) ((data[offset+4] & 0x80) >> 7); - EPCR = ((data[offset+4] & 0x1) << 8) | data[offset+5]; #ifdef TS_LOG + EPCR = ((data[offset+4] & 0x1) << 8) | data[offset+5]; printf ("demux_ts: PCR: %lld, EPCR: %u\n", PCR, EPCR); #endif offset+=6; } + +#ifdef TS_LOG if(OPCR_flag) { if (adaptation_field_length < offset + 6) return PCR; @@ -1850,13 +1861,13 @@ static int64_t demux_ts_adaptation_field_parse(uint8_t *data, OPCR |= data[offset+3] << 1; OPCR |= (data[offset+4] >> 7) & 0x01; EOPCR = ((data[offset+4] & 0x1) << 8) | data[offset+5]; -#ifdef TS_LOG + printf ("demux_ts: OPCR: %u, EOPCR: %u\n", OPCR,EOPCR); -#endif + offset+=6; } -#ifdef TS_LOG + if(slicing_point_flag) { printf ("demux_ts: slicing_point_flag: %d\n", slicing_point_flag); @@ -1869,7 +1880,8 @@ static int64_t demux_ts_adaptation_field_parse(uint8_t *data, printf ("demux_ts: adaptation_field_extension_flag: %d\n", adaptation_field_extension_flag); } -#endif +#endif /* TS_LOG */ + return PCR; } |
