コード例 #1
0
ファイル: Encoder.cpp プロジェクト: 10045125/xuggle-xuggler
int CEncoder::GetFrame(const unsigned char ** pframe)
{
    if (!pgf || !m_outFrameBuf || !pframe)
        return -1;

	while ((m_outOffset - m_outReadOffset) > 4)
    {
        int frame_length = getFrameLength(m_outFrameBuf + m_outReadOffset);

        if (frame_length < 0)
        {
            m_outReadOffset++;
        }
        else if (frame_length <= (m_outOffset - m_outReadOffset))
        {
            *pframe = m_outFrameBuf + m_outReadOffset;
            m_outReadOffset += frame_length;

            m_frameCount++;

            // don't deliver the first and the last frames
            if (m_frameCount != 1 && !(m_bFinished && (m_outOffset - m_outReadOffset) < 5))
                return frame_length;
        }
        else
            break;
    }

    return 0;
}
コード例 #2
0
ファイル: timelinecells.cpp プロジェクト: linganesan/pencil
void TimeLineCells::resizeEvent( QResizeEvent* event )
{
    clearCache();
    updateContent();
    event->accept();
    emit lengthChanged( getFrameLength() );
}
コード例 #3
0
 void ClientMessage::append(const ClientMessage *msg) {
     // no need to double check if correlation ids match here,
     // since we make sure that this is guaranteed at the caller that they are matching !
     int32_t dataSize = msg->getDataSize();
     int32_t existingFrameLen = getFrameLength();
     int32_t newFrameLen = existingFrameLen + dataSize;
     ensureBufferSize(newFrameLen);
     memcpy(buffer + existingFrameLen, msg->buffer, (size_t) dataSize);
     setFrameLength(newFrameLen);
 }
コード例 #4
0
ファイル: CamUeye.cpp プロジェクト: ankit5311/mavwork
cvg_bool CamUeye::captureFrame(void *frameBuffer, cvg_ulong *timestamp) {
#ifdef CAMUEYE_TEST_MODE
	memcpy(frameBuffer, im->imageData, getFrameLength());
	usleep(1e6 / 30);
	return true;
#else
//	static cvgTimer camUeye_timer;
//	if (timestamp != NULL) (*timestamp) = 1e6 * camUeye_timer.getElapsedSeconds();
	return driver->GetImage((char *)frameBuffer, timestamp);
#endif
}
コード例 #5
0
ファイル: timeline.cpp プロジェクト: 4423Q/pencil
void TimeLine::forceUpdateLength(QString newLength)
{
    bool ok;
    int dec = newLength.toInt(&ok, 10);

    if ( dec > getFrameLength())
    {
        updateLength(dec);
        updateContent();
        QSettings settings("Pencil","Pencil");
        settings.setValue("length", dec);
    }
}
コード例 #6
0
PacketMaker::PacketMaker(int frameId, 
			 int eventNumber,
			 PHDWORD partitionVector,
			 PacketMakerTableList* pmtl)
{

  packetMakerTableList = pmtl;
  
  PHDWORD addr_arr[100000];
  
  // Estimate total length
  
  PHDWORD estimatedLength = 
    currentFrameHdrLength +
    packetMakerTableList->getTotalLength() +
    packetMakerTableList->getNumberOfTables() * currentPacketHdrLength;

  PHDWORD extraLength = (PHDWORD) ((float) estimatedLength * 1.1);

  estimatedLength += extraLength;  // give 10% more space for now...

  PHDWORD totalFrameSize = 0;
  
  frameBuffer = new PHDWORD[estimatedLength];
  dwordClear(frameBuffer,estimatedLength);

  PHDWORD numberOfPackets = packetMakerTableList->getMaxNumberOfTables();

  FRAME_ptr frame_ptr = frameBuffer;

  PHDWORD maxFrameLen = estimatedLength;
  ALIGNBLK alignBlk;
  
  alignBlk.atp.globalEventNum = eventNumber;
  alignBlk.atp.partitionVec = partitionVector;

  PHDWORD err = makeFrameHdr(frame_ptr,maxFrameLen,normalData,atpFrame,0x1);

  setAlignBlock(frame_ptr,(PHDWORD*) &alignBlk, 2);
  
  if (err != 0) {
    printf("PacketMaker: makeFrameHdr failed!\n");
    //		throw frameHdrFailed();
  }

  PHDWORD bufferSize = estimatedLength * sizeof(PHDWORD);
  PHDWORD* write_ptr;
  PHDWORD packetLength;

  for (PHDWORD i = 0;i<numberOfPackets;i++)
    {
      write_ptr = findFrameEnd(frame_ptr)+1;
      PHDWORD remainingSpace = bufferSize - (int) (write_ptr - (PHDWORD*) frame_ptr);

      makeUnstructPacket(
			 write_ptr,
			 remainingSpace,
			 packetMakerTableList->getPacketId(i), //packetId
			 4, //wordSize
			 packetMakerTableList->getPacketFormat(i) //hit format
			 );

      packetLength = storePacketHits(
				     write_ptr,
				     remainingSpace,
				     (UINT*) &addr_arr,
				     (BYTE*) packetMakerTableList->getPacketLocation(i),
				     packetMakerTableList->getPacketLength(i),
				     0
				     );
      printf("PacketMaker: packetLength =%d\n",packetLength);
      extendFrameDataNopad(frame_ptr,bufferSize,packetLength);
      totalFrameSize = getFrameLength(frame_ptr);

    }

  if (totalFrameSize > estimatedLength)
    {
      printf("PacketMaker: Frame too large. %d > %d\n",
	     totalFrameSize,estimatedLength);
      frameLength = 0;
    }
  frameLength = totalFrameSize;
}
コード例 #7
0
ファイル: Extractor.cpp プロジェクト: Jingzhe88/aquila
 /**
  * Checks whether the two extractor objects are compatible with each other.
  *
  * @param other another Extractor object
  * @return true, if two extractors are compatible
  */
 bool Extractor::isCompatible(Extractor* other) const
 {
     return getType() == other->getType() &&
            getParamsPerFrame() == other->getParamsPerFrame() &&
            getFrameLength() == other->getFrameLength();
 }
コード例 #8
0
ファイル: timeline.cpp プロジェクト: 4423Q/pencil
void TimeLine::initUI()
{
    Q_ASSERT( editor() != nullptr );

    setWindowTitle( "Timeline" );

    QWidget* timeLineContent = new QWidget( this );

    connect( editor(), &Editor::currentFrameChanged, this, &TimeLine::updateFrame );

    mLayerList = new TimeLineCells( this, editor(), TIMELINE_CELL_TYPE::Layers );
    mTracks = new TimeLineCells( this, editor(), TIMELINE_CELL_TYPE::Tracks );

    connect( mLayerList, &TimeLineCells::mouseMovedY, mLayerList, &TimeLineCells::setMouseMoveY );
    connect( mLayerList, &TimeLineCells::mouseMovedY, mTracks,    &TimeLineCells::setMouseMoveY );

    mHScrollbar = new QScrollBar( Qt::Horizontal );
    mVScrollbar = new QScrollBar( Qt::Vertical );
    mVScrollbar->setMinimum( 0 );
    mVScrollbar->setMaximum( 1 );
    mVScrollbar->setPageStep( 1 );
    updateLength( getFrameLength() );

    QWidget* leftWidget = new QWidget();
    leftWidget->setMinimumWidth( 120 );
    QWidget* rightWidget = new QWidget();

    QWidget* leftToolBar = new QWidget();
    leftToolBar->setFixedHeight( 31 );
    QWidget* rightToolBar = new QWidget();
    rightToolBar->setFixedHeight( 31 );

    // --- left widget ---
    // --------- layer buttons ---------
    QToolBar* layerButtons = new QToolBar( this );
    QLabel* layerLabel = new QLabel( tr( "Layers:" ) );
    layerLabel->setIndent( 5 );
    layerLabel->setFont( QFont( "Helvetica", 10 ) );

    QToolButton* addLayerButton = new QToolButton( this );
    addLayerButton->setIcon( QIcon( ":icons/add.png" ) );
    addLayerButton->setToolTip( "Add Layer" );
    addLayerButton->setFixedSize( 24, 24 );

    QToolButton* removeLayerButton = new QToolButton( this );
    removeLayerButton->setIcon( QIcon( ":icons/remove.png" ) );
    removeLayerButton->setToolTip( "Remove Layer" );
    removeLayerButton->setFixedSize( 24, 24 );

    layerButtons->addWidget( layerLabel );
    layerButtons->addWidget( addLayerButton );
    layerButtons->addWidget( removeLayerButton );

    QHBoxLayout* leftToolBarLayout = new QHBoxLayout();
    leftToolBarLayout->setAlignment( Qt::AlignLeft );
    leftToolBarLayout->setMargin( 0 );
    leftToolBarLayout->addWidget( layerButtons );
    leftToolBar->setLayout( leftToolBarLayout );

    QAction* newBitmapLayerAct = new QAction( QIcon( ":icons/layer-bitmap.png" ), tr( "New Bitmap Layer" ), this );
    QAction* newVectorLayerAct = new QAction( QIcon( ":icons/layer-vector.png" ), tr( "New Vector Layer" ), this );
    QAction* newSoundLayerAct = new QAction( QIcon( ":icons/layer-sound.png" ), tr( "New Sound Layer" ), this );
    QAction* newCameraLayerAct = new QAction( QIcon( ":icons/layer-camera.png" ), tr( "New Camera Layer" ), this );

    QMenu* layerMenu = new QMenu( tr( "&Layer" ), this );
    layerMenu->addAction( newBitmapLayerAct );
    layerMenu->addAction( newVectorLayerAct );
    layerMenu->addAction( newSoundLayerAct );
    layerMenu->addAction( newCameraLayerAct );
    addLayerButton->setMenu( layerMenu );
    addLayerButton->setPopupMode( QToolButton::InstantPopup );

    QGridLayout* leftLayout = new QGridLayout();
    leftLayout->addWidget( leftToolBar, 0, 0 );
    leftLayout->addWidget( mLayerList, 1, 0 );
    leftLayout->setMargin( 0 );
    leftLayout->setSpacing( 0 );
    leftWidget->setLayout( leftLayout );

    // --- right widget ---
    // --------- key buttons ---------
    QToolBar* keyButtons = new QToolBar( this );
    QLabel* keyLabel = new QLabel( tr( "Keys:" ) );
    keyLabel->setFont( QFont( "Helvetica", 10 ) );
    keyLabel->setIndent( 5 );

    QToolButton* addKeyButton = new QToolButton( this );
    addKeyButton->setIcon( QIcon( ":icons/add.png" ) );
    addKeyButton->setToolTip( "Add Frame" );
    addKeyButton->setFixedSize( 24, 24 );

    QToolButton* removeKeyButton = new QToolButton( this );
    removeKeyButton->setIcon( QIcon( ":icons/remove.png" ) );
    removeKeyButton->setToolTip( "Remove Frame" );
    removeKeyButton->setFixedSize( 24, 24 );

    QToolButton* duplicateKeyButton = new QToolButton( this );
    duplicateKeyButton->setIcon( QIcon( ":icons/controls/duplicate.png" ) );
    duplicateKeyButton->setToolTip( "Duplicate Frame" );
    duplicateKeyButton->setFixedSize( 24, 24 );

    keyButtons->addWidget( keyLabel );
    keyButtons->addWidget( addKeyButton );
    keyButtons->addWidget( removeKeyButton );
    keyButtons->addWidget( duplicateKeyButton );



    QToolBar* onionButtons = new QToolBar( this );

    QLabel* onionLabel = new QLabel( tr( "Onion skin:" ) );
    onionLabel->setFont( QFont( "Helvetica", 10 ) );
    onionLabel->setIndent( 5 );


    QToolButton* onionTypeButton = new QToolButton( this );
    onionTypeButton->setIcon( QIcon( ":icons/onion_type.png" ) );
    onionTypeButton->setToolTip( "Toggle match keyframes" );
    onionTypeButton->setFixedSize( 24, 24 );

    onionButtons->addWidget( onionLabel );
    onionButtons->addWidget( onionTypeButton );

    // --------- Time controls ---------
    mTimeControls = new TimeControls( this );
    mTimeControls->setCore( editor() );
    mTimeControls->initUI();
    
    QHBoxLayout* rightToolBarLayout = new QHBoxLayout();
    rightToolBarLayout->addWidget( keyButtons );
    rightToolBarLayout->addStretch( 1 );
    rightToolBarLayout->addWidget( onionButtons );
    rightToolBarLayout->addStretch( 1 );
    rightToolBarLayout->addWidget( mTimeControls );
    rightToolBarLayout->setMargin( 0 );
    rightToolBarLayout->setSpacing( 0 );
    rightToolBar->setLayout( rightToolBarLayout );

    QGridLayout* rightLayout = new QGridLayout();
    rightLayout->addWidget( rightToolBar, 0, 0 );
    rightLayout->addWidget( mTracks, 1, 0 );
    rightLayout->setMargin( 0 );
    rightLayout->setSpacing( 0 );
    rightWidget->setLayout( rightLayout );

    // --- Splitter ---
    QSplitter* splitter = new QSplitter( this );
    splitter->addWidget( leftWidget );
    splitter->addWidget( rightWidget );
    splitter->setSizes( QList<int>() << 100 << 600 );


    QGridLayout* lay = new QGridLayout();
    lay->addWidget( splitter, 0, 0 );
    lay->addWidget( mVScrollbar, 0, 1 );
    lay->addWidget( mHScrollbar, 1, 0 );
    lay->setMargin( 0 );
    lay->setSpacing( 0 );
    timeLineContent->setLayout( lay );
    setWidget( timeLineContent );

    setWindowFlags( Qt::WindowStaysOnTopHint );

    connect( mHScrollbar, &QScrollBar::valueChanged, mTracks, &TimeLineCells::hScrollChange );
    connect( mVScrollbar, &QScrollBar::valueChanged, mTracks, &TimeLineCells::vScrollChange );
    connect( mVScrollbar, &QScrollBar::valueChanged, mLayerList, &TimeLineCells::vScrollChange );

    connect( addKeyButton,    &QToolButton::clicked, this, &TimeLine::addKeyClick );
    connect( removeKeyButton, &QToolButton::clicked, this, &TimeLine::removeKeyClick );
    connect( duplicateKeyButton, &QToolButton::clicked, this, &TimeLine::duplicateKeyClick );
    connect( onionTypeButton, &QToolButton::clicked, this, &TimeLine::toogleAbsoluteOnionClick );

    connect( mTimeControls, &TimeControls::loopStartClick, this, &TimeLine::loopStartClick );
    connect( mTimeControls, &TimeControls::loopEndClick, this, &TimeLine::loopEndClick );

    connect( mTimeControls, &TimeControls::soundClick, this, &TimeLine::soundClick );
    connect( mTimeControls, &TimeControls::fpsClick, this, &TimeLine::fpsClick );

    connect( newBitmapLayerAct, &QAction::triggered, this, &TimeLine::newBitmapLayer );
    connect( newVectorLayerAct, &QAction::triggered, this, &TimeLine::newVectorLayer );
    connect( newSoundLayerAct, &QAction::triggered, this, &TimeLine::newSoundLayer );
    connect( newCameraLayerAct, &QAction::triggered, this, &TimeLine::newCameraLayer );
    connect( removeLayerButton, &QPushButton::clicked, this, &TimeLine::deleteCurrentLayer );
    
    LayerManager* layer = editor()->layers();
    connect( layer, &LayerManager::layerCountChanged, this, &TimeLine::updateLayerNumber );

    scrubbing = false;
}