diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2001-08-12 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2001-08-12 18:00:00 +0200 |
commit | efea0f64d08052b0189d962101e1a3634d4adfc8 (patch) | |
tree | a3feff7ccf6874da549b25ea3b671d15a65d0e3d /ac3dec/bitstream.c | |
parent | f1d1c9849c8e27cccb46cf9c0d0ccb59da3f91f9 (diff) | |
download | vdr-patch-lnbsharing-efea0f64d08052b0189d962101e1a3634d4adfc8.tar.gz vdr-patch-lnbsharing-efea0f64d08052b0189d962101e1a3634d4adfc8.tar.bz2 |
Version 0.91vdr-0.91
- Fixed displaying colored button texts that are too long.
- Suppressing replay progress display when replaying a DVD.
- Updated channels.conf.cable (thanks to Uwe Scheffler).
- Updated French OSD texts (thanks to Jean-Claude Repetto).
- Improved AC3 decoding when replaying DVDs (thanks to Matjaz Thaler).
- Fixed handling DVB card indexes when using only one card in a multi-card
system.
- Changed the 'Eject DVD' button text to a simple 'Eject' (the German text
was too long...).
- Made the font file generation more stable (thanks to Artur Skawina).
- Changed the default value for the "DiSEqC" setup parameter to "off".
- The new command line option '-E' can be used to define where the EPG data
shall be written to. This is especially useful if VDR runs in a system
that turns off the video disk when it is not used, and therefore needs
to write the EPG file to a ramdisk (or turn off writing it alltogether).
See 'vdr --help' for details.
- Making sure the disk is up and running before starting recording (this
is important for systems that turn off the video disk when it is not used).
- Added the "Jump" function in replay mode (thanks to Stefan Huelswitt).
See the description of the "Red" key in MANUAL under "Replay Control" for
details.
- Fixed displaying editing marks when toggling a mark in "pause" mode.
- If there is no free DVB device to record, the log message will now be given
only once.
- Made I/O more robust by handling EINTR (thanks to Werner Fink).
Diffstat (limited to 'ac3dec/bitstream.c')
-rw-r--r-- | ac3dec/bitstream.c | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/ac3dec/bitstream.c b/ac3dec/bitstream.c index 296d5ee..f48d240 100644 --- a/ac3dec/bitstream.c +++ b/ac3dec/bitstream.c @@ -23,54 +23,57 @@ #include <stdlib.h> #include <stdio.h> +#include <inttypes.h> + +#include <bswap.h> +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "ac3.h" #include "ac3_internal.h" #include "bitstream.h" -uint_8 *buffer_start = 0; -uint_32 bits_left = 0; -uint_32 current_word; +uint32_t bits_left = 0; +uint64_t current_word; +uint64_t *buffer_start = 0; + + +static inline uint64_t getdword (void) +{ + return be2me_64 (*buffer_start++); +} + -static inline void -bitstream_fill_current() +static inline void bitstream_fill_current (void) { - current_word = *((uint_32*)buffer_start)++; - current_word = swab32(current_word); + //current_word = bswap_64 (*buffer_start++); + current_word = getdword (); } -// -// The fast paths for _get is in the -// bitstream.h header file so it can be inlined. -// -// The "bottom half" of this routine is suffixed _bh -// -// -ah -// - -uint_32 -bitstream_get_bh(uint_32 num_bits) + +uint32_t bitstream_get_bh (uint32_t num_bits) { - uint_32 result; + uint32_t result; num_bits -= bits_left; - result = (current_word << (32 - bits_left)) >> (32 - bits_left); + result = (current_word << (64 - bits_left)) >> (64 - bits_left); bitstream_fill_current(); if(num_bits != 0) - result = (result << num_bits) | (current_word >> (32 - num_bits)); + result = (result << num_bits) | (current_word >> (64 - num_bits)); - bits_left = 32 - num_bits; + bits_left = 64 - num_bits; return result; } -void -bitstream_init(uint_8 *start) + +void bitstream_init (uint8_t *start) { //initialize the start of the buffer - buffer_start = start; + buffer_start = (uint64_t *) start; bits_left = 0; } |