[FFmpeg-cvslog] r18653 - trunk/libavcodec/pixdesc.h
stefano
subversion
Wed Apr 22 02:04:17 CEST 2009
Author: stefano
Date: Wed Apr 22 02:04:17 2009
New Revision: 18653
Log:
Make read_line() do not depend on put_bits.h and speed up it.
Modified:
trunk/libavcodec/pixdesc.h
Modified: trunk/libavcodec/pixdesc.h
==============================================================================
--- trunk/libavcodec/pixdesc.h Wed Apr 22 01:23:15 2009 (r18652)
+++ trunk/libavcodec/pixdesc.h Wed Apr 22 02:04:17 2009 (r18653)
@@ -25,7 +25,6 @@
#include <inttypes.h>
#include "libavutil/intreadwrite.h"
-#include "get_bits.h"
typedef struct AVComponentDescriptor{
uint16_t plane :2; ///< which of the 4 planes contains the component
@@ -114,15 +113,17 @@ static inline void read_line(uint16_t *d
int flags= desc->flags;
if (flags & PIX_FMT_BITSTREAM){
- GetBitContext gb;
- init_get_bits(&gb, data[plane] + y*linesize[plane], linesize[plane]*8);
- skip_bits_long(&gb, x*step + comp.offset_plus1-1);
+ int skip = x*step + comp.offset_plus1-1;
+ const uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);
+ int shift = 8 - depth - (skip&7);
while(w--){
- int val = show_bits(&gb, depth);
+ int val = (*p >> shift) & mask;
if(read_pal_component)
val= data[1][4*val + c];
- skip_bits(&gb, step);
+ shift -= step;
+ p -= shift>>3;
+ shift &= 7;
*dst++= val;
}
} else {
More information about the ffmpeg-cvslog
mailing list