Browse Source

moving utf8 reading function to libavutil

Originally committed as revision 5664 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 19 years ago
parent
commit
9d82b0dda1
2 changed files with 17 additions and 44 deletions
  1. +3
    -44
      libavcodec/flac.c
  2. +14
    -0
      libavutil/common.h

+ 3
- 44
libavcodec/flac.c View File

@@ -85,53 +85,12 @@ static int blocksize_table[] = {
256<<0, 256<<1, 256<<2, 256<<3, 256<<4, 256<<5, 256<<6, 256<<7
};

static int64_t get_utf8(GetBitContext *gb)
{
uint64_t val;
int ones=0, bytes;

while(get_bits1(gb))
ones++;

if (ones==0) bytes=0;
else if(ones==1) return -1;
else bytes= ones - 1;

val= get_bits(gb, 7-ones);
while(bytes--){
const int tmp = get_bits(gb, 8);

if((tmp>>6) != 2)
return -1;
val<<=6;
val|= tmp&0x3F;
}
static int64_t get_utf8(GetBitContext *gb){
int64_t val;
GET_UTF8(val, get_bits(gb, 8), return -1;)
return val;
}

#if 0
static int skip_utf8(GetBitContext *gb)
{
int ones=0, bytes;

while(get_bits1(gb))
ones++;

if (ones==0) bytes=0;
else if(ones==1) return -1;
else bytes= ones - 1;

skip_bits(gb, 7-ones);
while(bytes--){
const int tmp = get_bits(gb, 8);

if((tmp>>6) != 2)
return -1;
}
return 0;
}
#endif

static void metadata_streaminfo(FLACContext *s);
static void dump_headers(FLACContext *s);



+ 14
- 0
libavutil/common.h View File

@@ -503,6 +503,20 @@ static inline int ff_get_fourcc(const char *s){
level= (level^mask)-mask;
#endif

#define GET_UTF8(val, GET_BYTE, ERROR)\
val= GET_BYTE;\
{\
int ones= 7 - av_log2(val ^ 255);\
if(ones==1)\
ERROR\
val&= 127>>ones;\
while(--ones > 0){\
int tmp= GET_BYTE - 128;\
if(tmp>>6)\
ERROR\
val= (val<<6) + tmp;\
}\
}

#if __CPU__ >= 686 && !defined(RUNTIME_CPUDETECT)
#define COPY3_IF_LT(x,y,a,b,c,d)\


Loading…
Cancel
Save