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; }
void TimeLineCells::resizeEvent( QResizeEvent* event ) { clearCache(); updateContent(); event->accept(); emit lengthChanged( getFrameLength() ); }
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); }
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 }
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); } }
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; }
/** * 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(); }
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; }