[FFmpeg-cvslog] prores: use natural integer type for the codebook index

Christophe GISQUET git at videolan.org
Thu Feb 23 05:03:02 CET 2012


ffmpeg | branch: master | Christophe GISQUET <christophe.gisquet at gmail.com> | Tue Feb 21 22:36:15 2012 +0100| [b5696ff2b872b3556a71fe3591c245b4caff08b5] | committer: Diego Biurrun

prores: use natural integer type for the codebook index

The operations that use it require it to be promoted to a larger (natural)
type and thus perform sign extension on it.

While an optimal compiler may account for this, gcc 4.6 (for x86 Windows)
fails. Using the natural integer type provides a 2% speedup for Win64
and 1% for Win32.

Signed-off-by: Diego Biurrun <diego at biurrun.de>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b5696ff2b872b3556a71fe3591c245b4caff08b5
---

 libavcodec/proresdec.c |    2 +-
 libavcodec/proresenc.c |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/proresdec.c b/libavcodec/proresdec.c
index 207fd97..8ca5f3d 100644
--- a/libavcodec/proresdec.c
+++ b/libavcodec/proresdec.c
@@ -289,7 +289,7 @@ static int decode_picture_header(ProresContext *ctx, const uint8_t *buf,
 /**
  * Read an unsigned rice/exp golomb codeword.
  */
-static inline int decode_vlc_codeword(GetBitContext *gb, uint8_t codebook)
+static inline int decode_vlc_codeword(GetBitContext *gb, unsigned codebook)
 {
     unsigned int rice_order, exp_order, switch_bits;
     unsigned int buf, code;
diff --git a/libavcodec/proresenc.c b/libavcodec/proresenc.c
index 7e3e066..aa96b35 100644
--- a/libavcodec/proresenc.c
+++ b/libavcodec/proresenc.c
@@ -229,7 +229,7 @@ static void get_slice_data(ProresContext *ctx, const uint16_t *src,
 /**
  * Write an unsigned rice/exp golomb codeword.
  */
-static inline void encode_vlc_codeword(PutBitContext *pb, uint8_t codebook, int val)
+static inline void encode_vlc_codeword(PutBitContext *pb, unsigned codebook, int val)
 {
     unsigned int rice_order, exp_order, switch_bits, switch_val;
     int exponent;
@@ -393,7 +393,7 @@ static int encode_slice(AVCodecContext *avctx, const AVFrame *pic,
     return total_size;
 }
 
-static inline int estimate_vlc(uint8_t codebook, int val)
+static inline int estimate_vlc(unsigned codebook, int val)
 {
     unsigned int rice_order, exp_order, switch_bits, switch_val;
     int exponent;



More information about the ffmpeg-cvslog mailing list