Exemplo n.º 1
0
/* --------------------------------------------------------------------- */
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;
		}
	}
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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);
    }
Exemplo n.º 5
0
/* --------------------------------------------------------------------- */
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;       
		}
        }
}
Exemplo n.º 6
0
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();
}
Exemplo n.º 7
0
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;
}
Exemplo n.º 8
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;
}
Exemplo n.º 9
0
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);
    }
  }
}