Пример #1
0
void vdt_move_to_value( void* dst, const p_dump_src src, const uint32_t n_bits )
{
    char *src_ptr = (char*)src->buf + BYTE_OFFSET(src->offset_in_bits);
    if ( BIT_OFFSET(src->offset_in_bits) == 0 )
    {
        memmove( dst, src_ptr, vdt_bitlength_2_bytes( n_bits ) );
    }
    else
    {
        bitcpy ( dst, 0, src_ptr, BIT_OFFSET(src->offset_in_bits), n_bits );
    }
}
Пример #2
0
static
void cut_bits(const struct self_t *self, void *dst, const void *src, size_t elem_count) {
    int i;
    int j;
    int doff;
    int soff;
    const int sz = self->type_size;
    const int di = sz * self->n;
    const int si = sz * self->dim;
    
    for (doff = soff = i = 0; i != elem_count; ++i, doff += di, soff += si) {
        for (j = 0; j != self->n; ++j) {
            bitcpy(dst, doff + j * sz, src, soff + self->idx[j] * sz, sz);
        }
    }
}
Пример #3
0
static int TransposeNBitsImage(
    uint8_t       *p_dst_buffer,
    int            dst_stride,
    const uint8_t *p_src_buffer,
    int            src_stride,
    int            src_width,
    int            src_heigth,
    int            element_bit_size) {
  for (int src_y = 0; src_y < src_heigth; ++src_y) {
    int dst_bit_x = src_y * element_bit_size;
    uint8_t *p_dst_col = p_dst_buffer + dst_bit_x / 8;
    uint8_t dst_shift = dst_bit_x & 7;
    const uint8_t *p_src_row = p_src_buffer + src_y * src_stride;
    for (int src_x = 0; src_x < src_width; ++src_x) {
      int src_bit_x = src_x * element_bit_size;
      bitcpy(p_dst_col + src_x * dst_stride, dst_shift,
             p_src_row + src_bit_x / 8, src_bit_x & 7, element_bit_size);
    }
  }

  return NO_ERRORS;
}