00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef AVCODEC_AMR_H
00024 #define AVCODEC_AMR_H
00025
00026 #include "avcodec.h"
00027
00028 #ifdef AMR_USE_16BIT_TABLES
00029 #define R_TABLE_TYPE uint16_t
00030 #else
00031 #define R_TABLE_TYPE uint8_t
00032 #endif
00033
00049 static inline void ff_amr_bit_reorder(uint16_t *out, int size,
00050 const uint8_t *data,
00051 const R_TABLE_TYPE *ord_table)
00052 {
00053 int field_size;
00054
00055 memset(out, 0, size);
00056 while ((field_size = *ord_table++)) {
00057 int field = 0;
00058 int field_offset = *ord_table++;
00059 while (field_size--) {
00060 int bit = *ord_table++;
00061 field <<= 1;
00062 field |= data[bit >> 3] >> (bit & 7) & 1;
00063 }
00064 out[field_offset] = field;
00065 }
00066 }
00067
00068 #endif