Ejemplo n.º 1
0
Void TEncEntropy::codeFiltCountBit(ALFParam* pAlfParam, Int64* ruiRate)
{
  resetEntropy();
  resetBits();
  codeFilt(pAlfParam);
  *ruiRate = getNumberOfWrittenBits();
  resetEntropy();
  resetBits();
}
Ejemplo n.º 2
0
int main(int ac, char *av[])
{
  //  int i;
  int bits ;
  int totbits = 0 ;
  int n = readfile(av[1]);
  //  int Ml2 = atoi(av[3]);
  struct BITSTREAM bs ; 

  printf("%d values\n",n);

  resetBits(&bs);
  // encode header

  // NEMC
  writeBits(&bs, 'N',8);writeBits(&bs, 'M',8);writeBits(&bs, 'E',8);writeBits(&bs, 'C',8);
  writeBits(&bs, '0',8); // version 0

  // number of lines
  writeBits(&bs, n,32);

  // encode time

//	bits = timeenc(&bs, n, store);
  bits = colenc(&bs, n, store, 0, 1); // ,1
  printf("%d bits for time/date encoding (%f per line)\n",bits,(float)bits/n);

  bits =  colenc(&bs, n, store, 1, 1E7); // , Ml2);
  bits += colenc(&bs, n, store, 2, 1E7);//, Ml2);
  bits += colenc(&bs, n, store, 3, 1E7);//, Ml2);
  
  printf("%d bits for position encoding (%f per line)\n",bits,(float)bits/n);
  
  bits = colenc(&bs, n, store, 5, 5);//, Ml2);
  printf("%d bits for depth encoding (%f per line)\n",bits,(float)bits/n);
  
  flushBits(&bs);
  
  totbits = (bs.bp - bs.bitstream)*8;
  printf("real  size: %d bytes (%1.1f bits per line)\n",totbits/8,(float)totbits/n);
  
  {
    FILE *f = fopen(av[2],"wb");
    if (!f) {fprintf(stderr,"could not open file %s\n",av[2]);exit(20);}
    
    fwrite(bs.bitstream,bs.bp - bs.bitstream,1,f);
    fclose(f);
  }
  return 0;
}
Ejemplo n.º 3
0
/* a wrapper routine to optimize for the best coding parameter */ 
int colenc(struct BITSTREAM *bs, int n, const double *store, int col, double scale)
{
  int minbits = 1<<30;
  int minMl2 = 0;
  int Ml2;
  for (Ml2 = 1; Ml2 <= 8; Ml2++) {
    int nbits;
    struct BITSTREAM bs0;
    resetBits(&bs0);

    _colenc(&bs0,n,store,col,scale,Ml2);
    nbits = bufferSize(&bs0);
    if (nbits < minbits) {
      minbits = nbits;
      minMl2 = Ml2;
    }
  }
  assert(minMl2 > 0);

  printf("storing col %d at Ml2 = %d\n",col,minMl2);
  _colenc(bs,n,store,col,scale,minMl2);

  return 0;
}
Ejemplo n.º 4
0
BitFieldWidget::BitFieldWidget(QWidget* parent) :
    QWidget(parent)
{
    m_bitWidgets.reserve(NumberOfBits);
    for (int i = 0; i < NumberOfBits; ++i) {
        BitWidget* bitWidget = new BitWidget(i);
        connect(bitWidget, SIGNAL(stateChanged(bool)), this, SLOT(onBitChanged()));
        m_bitWidgets.append(bitWidget);
    }

    QGridLayout* fieldLayout = new QGridLayout;
    int bitOffset = 0;

    for (int column = 0; column < 17; ++column) {
        if ((column % 2) == 0) {
            if ((column % 4) != 0)
                continue;

            QLabel* topNumberLabel = new QLabel;
            QLabel* bottomNumberLabel = new QLabel;

            int topNumber = NumberOfBits - column * 2;
            int bottomNumber = topNumber - NumberOfBits / 2;

            if (column == 0) {
                --topNumber;
                --bottomNumber;
            }

            topNumberLabel->setText(QString("%1").arg(topNumber));
            bottomNumberLabel->setText(QString("%1").arg(bottomNumber));

            fieldLayout->addWidget(topNumberLabel, 0, column);
            fieldLayout->addWidget(bottomNumberLabel, 1, column);

        } else {
            QHBoxLayout* bottomLayout(new QHBoxLayout);
            QHBoxLayout* topLayout(new QHBoxLayout);

            for (int j = 0; j < 4; ++j) {
                const int topIndex = NumberOfBits - 1 - bitOffset * 4 - j;
                topLayout->addWidget(m_bitWidgets.at(topIndex));
                bottomLayout->addWidget(m_bitWidgets.at(topIndex - NumberOfBits / 2));
            }

            ++bitOffset;

            fieldLayout->addLayout(bottomLayout, 1, column, Qt::AlignCenter);
            fieldLayout->addLayout(topLayout, 0, column, Qt::AlignCenter);
        }
    }

    QPushButton* resetButton = new QPushButton("0");
    resetButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    connect(resetButton, SIGNAL(clicked()), this, SLOT(resetBits()));

    QPushButton* invertButton = new QPushButton("~");
    invertButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    connect(invertButton, SIGNAL(clicked()), this, SLOT(invertBits()));

    QPushButton* shiftLeftButton = new QPushButton("<<");
    shiftLeftButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    connect(shiftLeftButton, SIGNAL(clicked()), this, SLOT(shiftBitsLeft()));

    QPushButton* shiftRightButton = new QPushButton(">>");
    shiftRightButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    connect(shiftRightButton, SIGNAL(clicked()), this, SLOT(shiftBitsRight()));

    QVBoxLayout* buttonsLayout = new QVBoxLayout;
    buttonsLayout->addWidget(resetButton);
    buttonsLayout->addWidget(shiftLeftButton);

    QVBoxLayout* buttonsLayout2 = new QVBoxLayout;
    buttonsLayout2->addWidget(invertButton);
    buttonsLayout2->addWidget(shiftRightButton);

    QHBoxLayout* mainLayout = new QHBoxLayout(this);
    mainLayout->addStretch();
    mainLayout->addLayout(fieldLayout);
    mainLayout->addLayout(buttonsLayout);
    mainLayout->addLayout(buttonsLayout2);
    mainLayout->addStretch();
}