Browse Source

Make read_line() do not depend on put_bits.h and speed up it.

Originally committed as revision 18653 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.6
Stefano Sabatini 16 years ago
parent
commit
297b5a3f99
1 changed files with 7 additions and 6 deletions
  1. +7
    -6
      libavcodec/pixdesc.h

+ 7
- 6
libavcodec/pixdesc.h View File

@@ -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 *dst, const uint8_t *data[4], const int li
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 {


Loading…
Cancel
Save