Esempio n. 1
0
UrlDialog::~UrlDialog()
{

    delete m_pUrlList;
    UrlDlgList * tmpitem = findFrame();
    tmpitem->dlg = nullptr;
}
static void reportUnsafeJavaScriptAccess(v8::Local<v8::Object> host, v8::AccessType type, v8::Local<v8::Value> data)
{
    Frame* target = findFrame(host, data);
    if (!target)
        return;
    DOMWindow* targetWindow = target->document()->domWindow();
    targetWindow->printErrorMessage(targetWindow->crossDomainAccessErrorMessage(activeDOMWindow(BindingState::instance())));
}
static void failedAccessCheckCallbackInMainThread(v8::Local<v8::Object> host, v8::AccessType type, v8::Local<v8::Value> data)
{
    Frame* target = findFrame(host, data, v8::Isolate::GetCurrent());
    if (!target)
        return;
    DOMWindow* targetWindow = target->domWindow();

    setDOMException(SecurityError, targetWindow->crossDomainAccessErrorMessage(activeDOMWindow()), v8::Isolate::GetCurrent());
}
Esempio n. 4
0
void FramestackWidget::slotSelectFrame(int frameNo, int threadNo)
{
    FrameStackItem * frame = findFrame(frameNo, threadNo);
	
	if (frame != 0) {
		setSelected(frame, true);
    	emit selectFrame(frameNo, threadNo, frame->frameName());
	} else {
    	emit selectFrame(frameNo, threadNo, QString());
	}
}
Esempio n. 5
0
static void failedAccessCheckCallbackInMainThread(v8::Local<v8::Object> host, v8::AccessType type, v8::Local<v8::Value> data)
{
    v8::Isolate* isolate = v8::Isolate::GetCurrent();
    LocalFrame* target = findFrame(host, data, isolate);
    if (!target)
        return;

    // FIXME: We should modify V8 to pass in more contextual information (context, property, and object).
    ExceptionState exceptionState(ExceptionState::UnknownContext, 0, 0, isolate->GetCurrentContext()->Global(), isolate);
    exceptionState.throwSecurityError("failedAccessCheckCallbackInMainThread", "failedAccessCheckCallbackInMainThread");
    exceptionState.throwIfNeeded();
}
static void failedAccessCheckCallbackInMainThread(v8::Local<v8::Object> host, v8::AccessType type, v8::Local<v8::Value> data)
{
    v8::Isolate* isolate = v8::Isolate::GetCurrent();
    Frame* target = findFrame(isolate, host, data);
    if (!target)
        return;
    DOMWindow* targetWindow = target->domWindow();

    // FIXME: We should modify V8 to pass in more contextual information (context, property, and object).
    ExceptionState exceptionState(ExceptionState::UnknownContext, 0, 0, isolate->GetCurrentContext()->Global(), isolate);
    exceptionState.throwSecurityError(targetWindow->sanitizedCrossDomainAccessErrorMessage(currentDOMWindow(isolate)), targetWindow->crossDomainAccessErrorMessage(currentDOMWindow(isolate)));
    exceptionState.throwIfNeeded();
}
Esempio n. 7
0
static bool url_kvs_cmd_list(KviKvsModuleCommandCall *)
{
	UrlDlgList *tmpitem = findFrame();
	if (tmpitem->dlg) return false;

	tmpitem->dlg = new UrlDialog(g_pList);
	g_pMainWindow->addWindow(tmpitem->dlg);

	for(KviUrl *tmp=g_pList->first();tmp;tmp=g_pList->next())
	{
		QString tmpCount;
		tmpCount.setNum(tmp->count);
		tmpitem->dlg->addUrl(QString(tmp->url), QString(tmp->window), tmpCount, QString(tmp->timestamp));
	}
	return true;
}
Esempio n. 8
0
APETAG::Iterator::Iterator(const APETAG &parent, const char *id, uint16_t len)
    : mParent(parent),
      mID(NULL),
      ///mOffset(mParent.mFirstFrameOffset),
      mOffset(0),
      mFrameData(NULL),
      mFrameSize(0)
{
    if (id)
    {
        mID = strdup(id);
    }

    mIDLen = len;
    findFrame();
}
Esempio n. 9
0
// VarFrameRoot frames in the Variable Tree from the previous program pause, 
// are set active here. Notified by the Frame Stack widget when it parses the 
// backtrace from the 'where' command after a pause.
//
// After that, any frames which aren't marked as active must have gone
// out of scope and will end up pruned.
void VariableTree::slotFrameActive(int frameNo, int threadNo, const QString& frameName)
{
	VarFrameRoot * frame = findFrame(frameNo, threadNo);
	if (frameNo == 1) {
		// If the current frame 1 doesn't exist, create it
		if (frame == 0) {
			frame = new VarFrameRoot(this, frameNo, threadNo);
		}
		
		frame->setFrameName(frameName);
	}
	
	if (frame != 0 && frame->text(VAR_NAME_COLUMN) == frameName) {
		frame->setActivationId();
	}
}
Esempio n. 10
0
static bool url_kvs_cmd_list(KviKvsModuleCommandCall *)
{
	UrlDlgList * tmpitem = findFrame();
	if(tmpitem->dlg) {
		tmpitem->dlg->delayedAutoRaise();
		return false;
	}

	tmpitem->dlg = new UrlDialog(g_List);
	g_pMainWindow->addWindow(tmpitem->dlg);

	for(auto tmp : g_List)
	{
		QString tmpCount;
		tmpCount.setNum(tmp->count);
		tmpitem->dlg->addUrl(QString(tmp->url), QString(tmp->window), tmpCount, QString(tmp->timestamp));
	}
	return true;
}
Esempio n. 11
0
UrlDialog::~UrlDialog()
{
	/*
	KviConfigurationFile cfg(szConfigPath,KviConfigurationFile::Write);
	cfg.setGroup("ConfigDialog");
	if (cfg.readBoolEntry("SaveColumnWidthOnClose",false)) {
		cfg.setGroup("ColsWidth");
		cfg.writeEntry("Url",m_pUrlList->columnWidth(0));
		cfg.writeEntry("Window",m_pUrlList->columnWidth(1));
		cfg.writeEntry("Count",m_pUrlList->columnWidth(2));
		cfg.writeEntry("Timestamp",m_pUrlList->columnWidth(3));
	}
*/
	delete m_pUrlList;
/*	if (m_pListPopup) delete m_pListPopup;
	m_pListPopup = 0;
	if (m_pMenuBar) delete m_pMenuBar;
	m_pMenuBar = 0;*/
	UrlDlgList *tmpitem = findFrame();
	tmpitem->dlg = 0;
}
Esempio n. 12
0
static pj_bool_t first_packet_in_frame(Jitter_Buffer *jitter_buffer, JTPacket *packet) {
    //find prev frame
    Frame_Buffer *prev_frame = findFrame(&jitter_buffer->frameList, packet->ts, '<');
    //check
    if(prev_frame != NULL) {
        if(prev_frame->session_info.packetList.next == &prev_frame->session_info.packetList) //empty
            return PJ_FALSE;
        else {
            int lastHighSeq = frame_buffer_getHighSeq(prev_frame);
            if(lastHighSeq == -1) {
                pj_assert(PJ_FALSE); //bad frame
                return PJ_FALSE;
            } 
            if(InSequence(lastHighSeq, packet->seq))
                return PJ_TRUE;
        }
    } else {
        if(InSequence(jitter_buffer->decode_state.seq, packet->seq))
            return PJ_TRUE;
    }
    return PJ_FALSE;
}
Esempio n. 13
0
        bool addData(double **data, double **pos_data) { 
        //double data[JOINT_NUM][JOINT_DATA_NUM], double pos_data[POS_JOINT_NUM][POS_JOINT_DATA_NUM]) {
        
        // advance one frame
        currentFramePointer=findFrame(1);
        
        // store current data
        for (int i=0;i<JOINT_NUM;i++) {
            for (int j=0;j<JOINT_DATA_NUM;j++) {
                prevFrame[currentFramePointer][i][j] = data[i][j];
            }
        }

        for (int i=0;i<POS_JOINT_NUM;i++) {        
            for (int j=0;j<POS_JOINT_DATA_NUM;j++) {
                prevFrame_posOnly[currentFramePointer][i][j] = pos_data[i][j];
            }
        }
        if (currentFramePointer >= (frameStoreNum-1)) {
            frameComparable = true;
        }
    }
Esempio n. 14
0
bool VariableTree::schedule()
{
    QListViewItem *	child = firstChild();
	VarFrameRoot * frame = 0;

    while (child != 0) {
        if (child->rtti() == RTTI_VAR_FRAME_ROOT) {
			frame = (VarFrameRoot *) child;
			Q_ASSERT( !frame->isWaitingForData() );
			
			if (frame->needsVariables()) {
				if (QApplication::overrideCursor() == 0) {
					QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
				}
				
				// Tell the controller to fetch the variable values
				emit selectFrame(frame->frameNo(), frame->threadNo());
				return true;
			}
		}
		
        child = child->nextSibling();
    }
	
	frame = findFrame(1, currentThread_);
	Q_ASSERT( frame != 0 );
	Q_ASSERT( !frame->needsVariables() );
		
	// All over, nothing left to fetch. 
	// Return to frame 1, and prune the inactive items
	// from the variable tree..
	QApplication::restoreOverrideCursor();
	emit selectFrame(1, currentThread_);
	prune();
	
	return false;
}
Esempio n. 15
0
    int computeHandPosition(double **data, double **pos_data, int variableNum) {
        //double data[JOINT_NUM][JOINT_DATA_NUM], double pos_data[POS_JOINT_NUM][POS_JOINT_DATA_NUM], int variableNum) {
        
        // compute hand loc
        double left_hand_pos[3];
        double right_hand_pos[3];
        double head_ori[9];
        double head_pos[3];
        double torso_ori[9];
        double torso_pos[3];

        for (int i = 0;i<9;i++) {
            head_ori[i]=data[HEAD_JOINT_NUM][i];
        }
        for (int i=0;i<3;i++) {
            head_pos[i]=data[HEAD_JOINT_NUM][i+9];
        }
        for (int i = 0;i<9;i++) {
            torso_ori[i]=data[TORSO_JOINT_NUM][i];
        }
        for (int i=0;i<3;i++) {
            torso_pos[i]=data[TORSO_JOINT_NUM][i+9];
        }
        for (int i=0;i<3;i++) {
            left_hand_pos[i]=pos_data[POS_LEFT_HAND_NUM][i];
        }
        for (int i=0;i<3;i++) {
            right_hand_pos[i]=pos_data[POS_RIGHT_HAND_NUM][i];
        }
        
        
        double* left_hand = computeLocalHandLoc(head_ori, head_pos, left_hand_pos);
        for (int i=0;i<3;i++) {
           // fprintf(pRecFile, "%.7f,",left_hand[i]);
            featureValues.push_back(left_hand[i]);
            variableNum++;
        }
        left_hand = computeLocalHandLoc(torso_ori, torso_pos, left_hand_pos);
        for (int i=0;i<3;i++) {
          //  fprintf(pRecFile, "%.7f,", left_hand[i]);
            featureValues.push_back(left_hand[i]);
            variableNum++;
        } 

        double* right_hand = computeLocalHandLoc(head_ori, head_pos, right_hand_pos);
        for (int i=0;i<3;i++) {
         //   fprintf(pRecFile, "%.7f,", right_hand[i]);
            featureValues.push_back(right_hand[i]);
            variableNum++;
        }
        right_hand = computeLocalHandLoc(torso_ori, torso_pos, right_hand_pos);
        for (int i=0;i<3;i++) {
          //  fprintf(pRecFile, "%.7f,", right_hand[i]);
            featureValues.push_back(right_hand[i]);
            variableNum++;
        }
        if (DEBUG_numFeature) printf("hand: %d\n", variableNum);
           
        // Maybe try collecting hand motion.
        if (USE_HAND_MOTION) {
            double left_hand_pos_prev[3];
            double right_hand_pos_prev[3];
            double diff_left[3];
            double diff_right[3];
            for (int i=0; i<compareFrameNum; i++) {
                int frameCompareTo = findFrame(compareFrame[i]);
                for (int j=0;j<3;j++) {
                    left_hand_pos_prev[j] = prevFrame_posOnly[frameCompareTo][POS_LEFT_HAND_NUM][j];
                    right_hand_pos_prev[j] = prevFrame_posOnly[frameCompareTo][POS_RIGHT_HAND_NUM][j];

                    diff_left[j] = left_hand_pos[j] - left_hand_pos_prev[j];
                    diff_right[j] = right_hand_pos[j] - right_hand_pos_prev[j];
                }
              //  fprintf(pRecFile, "%.7f,%.7f,%.7f,", diff_left[0], diff_left[1], diff_left[2]);
              //  fprintf(pRecFile, "%.7f,%.7f,%.7f,", diff_right[0], diff_right[1], diff_right[2]);
                for(int num=0; num<3; num++)
                {
                    featureValues.push_back(diff_left[num]);
                }
                for(int num=0; num<3; num++)
                {
                    featureValues.push_back(diff_right[num]);
                }
                variableNum+=6;
            }
            if (DEBUG_numFeature) printf("hand motion: %d\n", variableNum);
        }

        return variableNum;
    } // end computeHandPosition
Esempio n. 16
0
    int computeBodyPoseAndMotionInfo(double **data, double **pos_data, int variableNum) { 
        //double data[JOINT_NUM][JOINT_DATA_NUM], double pos_data[POS_JOINT_NUM][POS_JOINT_DATA_NUM], int variableNum) {
        for (int i=0; i<compareFrameNum; i++) {
            for (int j=0; j<JOINT_NUM; j++) {

                int frameCompareTo = findFrame(compareFrame[i]);
                
                if (currentFramePointer == frameCompareTo) {
                    if (j != TORSO_JOINT_NUM) {
                        // rot mat
                        double m[3][3];
                       
                        for (int k =0;k<3;k++) {
                            m[0][k]=  prevFrame[currentFramePointer][TORSO_JOINT_NUM][0]*prevFrame[currentFramePointer][j][0+k]
                                    + prevFrame[currentFramePointer][TORSO_JOINT_NUM][3]*prevFrame[currentFramePointer][j][3+k]
                                    + prevFrame[currentFramePointer][TORSO_JOINT_NUM][6]*prevFrame[currentFramePointer][j][6+k];
                            m[1][k]=  prevFrame[currentFramePointer][TORSO_JOINT_NUM][1]*prevFrame[currentFramePointer][j][0+k]
                                    + prevFrame[currentFramePointer][TORSO_JOINT_NUM][4]*prevFrame[currentFramePointer][j][3+k]
                                    + prevFrame[currentFramePointer][TORSO_JOINT_NUM][7]*prevFrame[currentFramePointer][j][6+k];
                            m[2][k]=  prevFrame[currentFramePointer][TORSO_JOINT_NUM][2]*prevFrame[currentFramePointer][j][0+k]
                                    + prevFrame[currentFramePointer][TORSO_JOINT_NUM][5]*prevFrame[currentFramePointer][j][3+k]
                                    + prevFrame[currentFramePointer][TORSO_JOINT_NUM][8]*prevFrame[currentFramePointer][j][6+k];
                                    
                            /*printf("%.10f %.10f %.10f %.10f\n",  prevFrame[currentFramePointer][TORSO_JOINT_NUM][0]*prevFrame[currentFramePointer][j][0+k]
                                    , prevFrame[currentFramePointer][TORSO_JOINT_NUM][3]*prevFrame[currentFramePointer][j][3+k]
                                    , prevFrame[currentFramePointer][TORSO_JOINT_NUM][6]*prevFrame[currentFramePointer][j][6+k], m[0][k]);*/
                        }
                        /*for (int ii = 0;ii<3;ii++) 
                            for(int jj=0;jj<3;jj++) 
                                printf("%d %d %d %.10f\n",frameCompareTo, ii,jj,m[ii][jj]); */
                        // quat
                        double q1 = 1.0/2.0 * sqrt(1 + m[0][0] - m[1][1] - m[2][2]);
                        double q2 = 1.0/(4.0*q1) * (m[0][1] + m[1][0]);
                        double q3 = 1.0/(4.0*q1) * (m[0][2] + m[2][0]);
                        double q4 = 1.0/(4.0*q1) * (m[2][1] - m[1][2]);
                        
                        if (!isnan(q1) && !isnan(q2) && !isnan(q3) && !isnan(q4) 
                                && !isinf(q1) && !isinf(q2) && !isinf(q3) && !isinf(q4)) {
                        //    fprintf(pRecFile, "%.7f,%.7f,%.7f,%.7f,",q1,q2,q3,q4);
                            featureValues.push_back(q1);
                            featureValues.push_back(q2);
                            featureValues.push_back(q3);
                            featureValues.push_back(q4);
                        } else {
                            double zero = 0.0;
                      //      fprintf(pRecFile, "%.1f,%.1f,%.1f,%.1f,",zero,zero,zero,zero);;
                            for(int num =0; num<4; num++)
                                featureValues.push_back(zero);
                        }
                        variableNum+=4;
                        if(DEBUG_numFeature) printf("current frame : %d\n", variableNum);
                    }
                } else {
                    // rot mat
                    double m[3][3];
                    for (int k =0;k<3;k++) {
                        m[0][k]=  prevFrame[frameCompareTo][j][0]*prevFrame[currentFramePointer][j][0+k]
                                + prevFrame[frameCompareTo][j][3]*prevFrame[currentFramePointer][j][3+k]
                                + prevFrame[frameCompareTo][j][6]*prevFrame[currentFramePointer][j][6+k];
                        m[1][k]=  prevFrame[frameCompareTo][j][1]*prevFrame[currentFramePointer][j][0+k]
                                + prevFrame[frameCompareTo][j][4]*prevFrame[currentFramePointer][j][3+k]
                                + prevFrame[frameCompareTo][j][7]*prevFrame[currentFramePointer][j][6+k];
                        m[2][k]=  prevFrame[frameCompareTo][j][2]*prevFrame[currentFramePointer][j][0+k]
                                + prevFrame[frameCompareTo][j][5]*prevFrame[currentFramePointer][j][3+k]
                                + prevFrame[frameCompareTo][j][8]*prevFrame[currentFramePointer][j][6+k];
                    }
                    
                   /*for (int ii = 0;ii<3;ii++) 
                        for(int jj=0;jj<3;jj++) 
                            printf("%d %d %d %.10f\n",frameCompareTo, ii,jj,m[ii][jj]); */
                    
                    // quat
                    double q1 = 1.0/2.0 * sqrt(1 + m[0][0] - m[1][1] - m[2][2]);
                    double q2 = 1.0/(4.0*q1) * (m[0][1] + m[1][0]);
                    double q3 = 1.0/(4.0*q1) * (m[0][2] + m[2][0]);
                    double q4 = 1.0/(4.0*q1) * (m[2][1] - m[1][2]);
                    
                        if (!isnan(q1) && !isnan(q2) && !isnan(q3) && !isnan(q4) 
                                &&!isinf(q1) && !isinf(q2) && !isinf(q3) && !isinf(q4)) {
                       // fprintf(pRecFile, "%.7f,%.7f,%.7f,%.7f,",q1,q2,q3,q4);
                        featureValues.push_back(q1);
                        featureValues.push_back(q2);
                        featureValues.push_back(q3);
                        featureValues.push_back(q4);
                    } else {
                        double zero = 0.0;
                      //  fprintf(pRecFile, "%.1f,%.1f,%.1f,%.1f,",zero,zero,zero,zero);;
                        for(int num = 0; num < 4; num++)
                                featureValues.push_back(zero);
                    }
                            
                            
                    variableNum+=4;
                    if(DEBUG_numFeature) printf("comparing against frame : %d (against:%d)\n", variableNum, compareFrame[i]);   
                }
                
            } // end j
        } // end i
        
        return variableNum;
    } // end computeBodyPoseAndMotionInfo
Esempio n. 17
0
    int computeHead(int variableNum) {
        //double data[JOINT_NUM][JOINT_DATA_NUM], double pos_data[POS_JOINT_NUM][POS_JOINT_DATA_NUM], int variableNum) {

        int curFrame = findFrame(0);
        
        // compute hand loc
        double heap_pos[3];
        double head_pos[3];
        double head_up[3];

        double he_fs = 0; // head from sensor
        double hp_fs = 0; // heap from sensor

        //double head_ori[9];
        /*for (int i=0;i<9;i++) {
            head_ori[i] = prevFrame[curFrame][HEAD_JOINT_NUM][i];
        }*/
        for (int i=0;i<3;i++) {
            double ltemp = prevFrame[curFrame][7][i+9];
            double rtemp = prevFrame[curFrame][9][i+9];
            heap_pos[i] = (ltemp+rtemp)/2;

            head_pos[i] = prevFrame[curFrame][HEAD_JOINT_NUM][i+9];

            head_up[i] = heap_pos[i];
            if (i==1) { // y val
                head_up[i] = head_pos[i];
            }
            
            if (i!=1) { // except y val
                he_fs += (head_pos[i]*head_pos[i]);
                hp_fs += (heap_pos[i]*heap_pos[i]);
            }
            //printf("%d: head: %.1f heap: %.1f up: %.1f\n", i+1, head_pos[i], heap_pos[i], head_up[i]);
        }
        
        double v1[3]; // heap to head
        double v2[3]; // heap to up
        double v1_det = 0;
        double v2_det = 0;
        double dot = 0;

        for (int i=0;i<3;i++) {
            v1[i] = head_pos[i] - heap_pos[i];
            v2[i] = head_up[i] - heap_pos[i];

            dot += (v1[i]*v2[i]);
            v1_det += (v1[i]*v1[i]);
            v2_det += (v2[i]*v2[i]);
        }
        v1_det = sqrt(v1_det);
        v2_det = sqrt(v2_det);

        double ang = acos(dot / (v1_det * v2_det));

        ang = ang * 180 / 3.14159265; // to degree
        
        if (he_fs > hp_fs) { // if heap is closer
            ang = -ang;
        }
        
        if (ang>80) {
        //    printf("computeHead angle not right.. %.1f \n", ang); exit(1);
        }
        
      //  fprintf(pRecFile, "%.1f,", ang);
        featureValues.push_back(ang);
        variableNum++;
        

        /*double* headLoc = computeLocalHandLoc(head_ori, head_pos, heap_pos);
        for (int i=0;i<3;i++) {
            fprintf(pRecFile, "%.7f,", headLoc[i]);
            variableNum++;
        }*/
        
        if (DEBUG_numFeature) printf("HEAD angle feature: %d\n", variableNum);
        return variableNum;
    } // end computeHead
Esempio n. 18
0
    bool processData(double **data, double **pos_data) { 
        //double data[JOINT_NUM][JOINT_DATA_NUM], double pos_data[POS_JOINT_NUM][POS_JOINT_DATA_NUM]) {
        featureValues.clear();
        // advance one frame
        currentFramePointer=findFrame(1);
        
        // store current data
        for (int i=0;i<JOINT_NUM;i++) {
            for (int j=0;j<JOINT_DATA_NUM;j++) {
                prevFrame[currentFramePointer][i][j] = data[i][j];
            }
        }

        for (int i=0;i<POS_JOINT_NUM;i++) {        
            for (int j=0;j<POS_JOINT_DATA_NUM;j++) {
                prevFrame_posOnly[currentFramePointer][i][j] = pos_data[i][j];
            }
        }
        
        // compute diff
        if (currentFramePointer >= (frameStoreNum-1)) {
            frameComparable = true;
        }
        if (!frameComparable) {
            cout << "current frame pointer " << currentFramePointer << endl;
            if (currentFramePointer >= (frameStoreNum-1)) {
                frameComparable = true;
            }
        } else {
            int variableNum = 0;

            // each row starts with fileName            
            // add L or M at the beginning to tell it is label (helps reading from matlab)
           /* if (!mirrored) {
                fprintf(pRecFile, "L%s,", curFileName);
            } else {
                fprintf(pRecFile, "M%s,", curFileName);
            }*/
            //fprintf(pRecFile, "%d,", currentFramePointer);
            
            // feature 1 & 3 of AAAI paper
            variableNum = computeBodyPoseAndMotionInfo(data,pos_data,variableNum);
            
            // feature 2 of AAAI paper + some extra Hand motion (hand motion fails)
            variableNum = computeHandPosition(data,pos_data,variableNum);

            // foot location
            variableNum = computeFootPosition(data,pos_data,variableNum);

            // hand percentile
            variableNum = computeMoreHandFeatures(variableNum);

            if (HEAD_AGAINST_MID_HEAP) {
                variableNum = computeHead(variableNum);
            }

            if(DEBUG_numFeature) {
                printf("\t\tfeatures: %d\n", variableNum);
            }
            return true;            
        }
        return false;
    }
Esempio n. 19
0
void Frame::updateFrames(CRI * boss)
{
	// Todo: Need to interpolate rotation aswell!!!
	
	bool found;
	vector<string> listFromTF;
	vector<string>::iterator listIt;
	vector<Frame>::iterator frameIt;
	
	tf::StampedTransform transform;
	GFrame * tframe;
	
	tfListener->getFrameStrings(listFromTF);
	
	// Check for the appearance of any new frames...
	for (listIt = listFromTF.begin(); listIt != listFromTF.end(); listIt++)
	{
		found = false;
		for (frameIt = availableFrames.begin(); frameIt != availableFrames.end(); frameIt++)
		{
			if ((*frameIt).name == *listIt)
			{
				found = true;
				break;
			}
		}
		
		if (!found)
		{
			Frame newFrame = Frame(*listIt);
			
			// We assume the frame is valid
			newFrame.valid = true;
			
			availableFrames.push_back(newFrame);
			
			// Add a representative frame
			tframe = new GFrame((char *)(*listIt).c_str());
			boss->addGadget(tframe);
			tframe->applyProperties();
			tframe->show(true);
			tframe->sourceFrame = availableFrames.size() - 1;
		}
	}

	double timeDiff, timeFut;
	ros::Time tTime;
	tf::StampedTransform tTran;
	int framePosition = -1;

	// Update frame locations by extrapolating
	// Todo: second order extrapolation, please
	for (frameIt = availableFrames.begin(); frameIt != availableFrames.end(); frameIt++)
	{
		Frame & tFr = (*frameIt);
		framePosition++;
		
		if (tfListener->canTransform(fixedFrame, tFr.name, ros::Time(0), NULL))
		{
			// Check if the frame has become valid
			if (!tFr.valid)
			{
				tFr.valid = true;
				
				// Add a renewed representative frame
				tframe = new GFrame((char *)tFr.name.c_str());
				boss->addGadget(tframe);
				tframe->applyProperties();
				tframe->show(true);
				tframe->sourceFrame = framePosition;
			}
			
			tfListener->lookupTransform(fixedFrame, tFr.name, ros::Time(0), tTran);
		}
		else
		{
			// TODO: error msg
			
			// The frame is not connected to the fixed frame, or we're extrapolating, either way,
			// the frame is useless.
			tFr.valid = false;
			
			continue;
		}
		
		//cout << "Beer: " << ros::Time::now() << "\n";
		//cout << tTran.stamp_ << "\n";
		
		if (tFr.gotLast == false)
		{
			tFr.curTransform = tTran;
			tFr.curTime = tTime;
			tFr.extrapTransform = tTran;
			tFr.gotLast = true;
		}
		else
		{
			// Do we have a new sample?  If so, update the pair of samples
			if (tTran.stamp_ > tFr.curTime)
			{
				tFr.lastTransform = tFr.curTransform;
				tFr.lastTime = tFr.curTime;
				
				tFr.curTransform = tTran;
				tFr.curTime = tTran.stamp_;
			}
			
			// Calculate the extrapolated position
			timeDiff = (tFr.curTime - tFr.lastTime).toSec();
			timeFut = (ros::Time::now() - tFr.curTime).toSec();
			
			tf::Vector3 & lPos = tFr.lastTransform.getOrigin();
			tf::Quaternion lRot = tFr.lastTransform.getRotation();
			tf::Vector3 & cPos = tFr.curTransform.getOrigin();
			tf::Quaternion cRot = tFr.curTransform.getRotation();
			
			// Todo: No magic numbers
			if (timeDiff > 0.001 && timeFut < 0.5)
			{
				tFr.extrapTransform.setOrigin(tf::Vector3((cPos.x() - lPos.x()) / timeDiff * timeFut + cPos.x(), 
					(cPos.y() - lPos.y()) / timeDiff * timeFut + cPos.y(), 
					(cPos.z() - lPos.z()) / timeDiff * timeFut + cPos.z()));
				tFr.extrapTransform.setRotation(tFr.curTransform.getRotation());
			}
			else
			{
				tFr.extrapTransform.setOrigin(tFr.curTransform.getOrigin());
				tFr.extrapTransform.setRotation(tFr.curTransform.getRotation());
			}
			
		}
		
	}
	
	// If we need to draw the frame tree, do so
	
	if (drawFrameTree)
	{
		tf::StampedTransform endPoint;
		tf::StampedTransform startPoint;
		string startFrameName;
		
		if (treeNode && !treeWasVisible)
		{
			boss->rootSceneNode->addChild(treeNode);
		}
		else if (treeNode == NULL)
		{
			treeNode = boss->rootSceneNode->createChildSceneNode();
		}
		
		if (!treeManual)
		{
			treeManual = boss->scene->createManualObject("TreeManual");
			treeNode->attachObject(treeManual);
			
			treeManual->setDynamic(true);
			treeManual->estimateVertexCount(1000);
			treeManual->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_LIST);
			
		}
		else
		{
			treeManual->beginUpdate(0);
		}
		
		treeManual->colour(Ogre::ColourValue(1, 1, 0, 1));
		
		for (frameIt = availableFrames.begin(); frameIt != availableFrames.end(); frameIt++)
		{
			if ((*frameIt).valid)
			{
				//tfListener->lookupTransform(fixedFrame, tFr.name, ros::Time(0), endPoint);
				tf::Vector3 startPos = (*frameIt).extrapTransform.getOrigin();
				
				tfListener->getParent((*frameIt).name, ros::Time(), startFrameName);
				int fNum = findFrame(startFrameName);
				
				if (fNum >= 0)
				{
					tf::Vector3 endPos = availableFrames[fNum].extrapTransform.getOrigin();
					
					treeManual->position(startPos.x(), startPos.y(), startPos.z());
					treeManual->position(endPos.x(), endPos.y(), endPos.z());
				}
			}
		}
		
		// A dummy to keep things sane, can't have zero length manual object
		treeManual->position(0, 0, 0);
		treeManual->position(0, 0, 0);
		
		treeManual->end();
		
		treeWasVisible = 1;
	}
	else
	{
		if (treeWasVisible)
		{
			boss->rootSceneNode->removeChild(treeNode);
		}
		treeWasVisible = 0;
	}
}
Esempio n. 20
0
/**
  * @isFirstPacket first packet in a frame
  * @isMarketPacket last packet in a frame
  */
PJ_DEF(int) jitter_buffer_insert_packet(Jitter_Buffer *jitter_buffer, 
pj_uint16_t seq, pj_uint32_t ts, pjmedia_frame_type frame_type, 
char *payload, int size, 
pj_bool_t isFirstPacket, pj_bool_t isMarketPacket) {
    int ret = 0;
    if(pj_mutex_lock(jitter_buffer->jb_mutex) != PJ_SUCCESS) {
        return -1;
    }
    pj_ssize_t current;
    JTPacket *packet = NULL;
    Frame_Buffer *frame;
    // is running
    if(!jitter_buffer->running) {
        ret = -2;
        goto ON_RET;
    }
    // sanity check
    if(ts == 0 || (frame_type != PJMEDIA_FRAME_TYPE_EMPTY && size == 0)) {
        ret = -3;
        goto ON_RET;
    }
    if(!jitter_buffer->first_packet) {
        isFirstPacket = PJ_TRUE;
        jitter_buffer->first_packet = PJ_TRUE;
    }
    //clean old frames
    //CleanOldFrames(jitter_buffer);
    //update jitter
    current = GetCurrentTimeMs();
    if(frame_type != PJMEDIA_FRAME_TYPE_EMPTY && frame_type != PJMEDIA_FRAME_TYPE_NONE) {
        if(jitter_buffer->waiting_for_completed_frame.timestamp == ts) {
            jitter_buffer->waiting_for_completed_frame.frame_size += size;
            jitter_buffer->waiting_for_completed_frame.latest_packet_timestamp = current;
        } else if(jitter_buffer->waiting_for_completed_frame.latest_packet_timestamp > 0 && 
            current - jitter_buffer->waiting_for_completed_frame.latest_packet_timestamp  > 2000) {
                //too old
                UpdateJitterEstimatorForWaitingFrame(jitter_buffer, &jitter_buffer->waiting_for_completed_frame);
                jitter_buffer->waiting_for_completed_frame.frame_size = 0;
                jitter_buffer->waiting_for_completed_frame.latest_packet_timestamp = -1;
                jitter_buffer->waiting_for_completed_frame.timestamp = 0;
        }
    }
    //create packet
    packet = NULL;
    if(jt_packet_create(&packet, &jitter_buffer->packet_alloc, seq, ts, frame_type, 
                    isFirstPacket, isMarketPacket, payload, size) != 0) {
        if(packet)
            list_alloc_insert(packet, &jitter_buffer->packet_alloc);
        ret = -1;
        goto ON_RET;
    }
    //GetCurrentTimeInLocal(packet->time_in_jb, 60);
    if(!isFirstPacket) {
        //is first packet in frame
        isFirstPacket = first_packet_in_frame(jitter_buffer, packet);
        packet->isFirst = isFirstPacket;
    }
    if(isMarketPacket) {
        //check if next packet is first packet
        Frame_Buffer *next_frame = findFrame(&jitter_buffer->frameList, packet->ts, '>');
        if(next_frame != NULL) {
            JTPacket * first_packet = next_frame->session_info.packetList.next;
            if(packet != &next_frame->session_info.packetList) {
                if(InSequence(packet->seq, first_packet->seq)) {
                    first_packet->isFirst = PJ_TRUE;
                }
            }
        }
    }
    //clean old frames
    CleanOldFrames(jitter_buffer);   
    // is old packet 
    if(decode_state_isOldPacket(packet, &jitter_buffer->decode_state)) {
            decode_state_updateOldPacket(packet, &jitter_buffer->decode_state);
            list_alloc_insert(packet, &jitter_buffer->packet_alloc);
            ret = -1;
            goto ON_RET;
    }
    
    // find or alloc a frame
    frame = findFrame(&jitter_buffer->frameList, packet->ts, '=');
    if(frame == NULL) { //alloc one
        //if(jitter_buffer->number_of_frames > jitter_buffer->max_number_of_frames) {
        if(jitter_buffer->number_of_frames > jitter_buffer->max_number_of_frames) {
            //clean old frames at least one
            Frame_Buffer *oldestFrame = jitter_buffer->frameList.next;
            if(oldestFrame != &jitter_buffer->frameList)
                RealseFrame(jitter_buffer, oldestFrame);
        }
        list_alloc_alloc(Frame_Buffer, &frame, &jitter_buffer->frame_alloc);
        //init
        frame_buffer_init(frame, &jitter_buffer->packet_alloc);
    }
    //insert packet into the frame
    ret = frame_buffer_insert_packet(frame, packet);
    if(ret > 0) {
        list_alloc_insert(packet, &jitter_buffer->packet_alloc);
        frame_buffer_reset(frame);
        list_alloc_insert(frame, &jitter_buffer->frame_alloc);
        ret = -1;
        goto ON_RET;
    } else if (ret < 0) {
        frame_buffer_reset(frame);
        list_alloc_insert(frame, &jitter_buffer->frame_alloc);
        ret = -1;
        goto ON_RET;
    } else {
        event_set(jitter_buffer->packet_event);
        if(packet->isRetrans)
            frame_buffer_IncrementNackCount(frame);
    }
    
    //insert frame to frame list
    if(findFrame(&jitter_buffer->frameList, frame->ts, '=') == NULL) {
        Frame_Buffer *prev_frame = findFrame(&jitter_buffer->frameList, frame->ts, '<');
        prev_frame = (prev_frame == NULL ? &jitter_buffer->frameList : prev_frame);
        pj_list_insert_after(prev_frame, frame);
        event_set(jitter_buffer->frame_event);
        jitter_buffer->number_of_frames++;
    }
    ON_RET:
    pj_mutex_unlock(jitter_buffer->jb_mutex);
    return ret;
    
}
Esempio n. 21
0
static Frame_Buffer* findFrameByTs(Jitter_Buffer *jitter_buffer, pj_uint32_t ts) {
    return findFrame(&jitter_buffer->frameList, ts, '=');
}
Esempio n. 22
0
    int computeMoreHandFeatures(int variableNum) {
        //double data[JOINT_NUM][JOINT_DATA_NUM], double pos_data[POS_JOINT_NUM][POS_JOINT_DATA_NUM], int variableNum) {
        
        // compute hand loc
        double left_hand_pos[3];
        double right_hand_pos[3];
        double head_ori[9];
        double head_pos[3];

        int latest = compareFrame[compareFrameNum-1];
        vector<double> lhand(30);
        vector<double> rhand(30);
        int vCount=0;
        for (int last=-2;last>latest;last--) {
            int frameN = findFrame(last);

            double ltemp = prevFrame_posOnly[frameN][POS_LEFT_HAND_NUM][1]-prevFrame[frameN][HEAD_JOINT_NUM][9+1]; // y value
            double rtemp = prevFrame_posOnly[frameN][POS_RIGHT_HAND_NUM][1]-prevFrame[frameN][HEAD_JOINT_NUM][9+1]; // y value
            lhand.push_back(ltemp);
            rhand.push_back(rtemp);
            vCount++;
            //cout << "l " << ltemp << " " << rtemp << endl;
            /*for (int i = 0;i<9;i++) {
                head_ori[i]=prevFrame[frameN][HEAD_JOINT_NUM][i];
            }
            for (int i=0;i<3;i++) {
                head_pos[i]=prevFrame[frameN][HEAD_JOINT_NUM][i+9];
            }
            for (int i=0;i<3;i++) {
                left_hand_pos[i]=prevFrame_posOnly[frameN][POS_LEFT_HAND_NUM][i];
            }
            for (int i=0;i<3;i++) {
                right_hand_pos[i]=prevFrame_posOnly[frameN][POS_RIGHT_HAND_NUM][i];
            }
            
            double* left_hand = computeLocalHandLoc(head_ori, head_pos, left_hand_pos);
            lhand.push_back(left_hand[2]);

            double* right_hand = computeLocalHandLoc(head_ori, head_pos, right_hand_pos);
            rhand.push_back(right_hand[2]);

            for (int j=0;j<3;j++) {
                cout << right_hand[j] << " ";
            }
            cout << endl;*/
        }
        
        sort(lhand.begin(), lhand.end());
        sort(rhand.begin(), rhand.end());

        int numValue = vCount;

        for (int i=0;i<sizeof(percentile)/sizeof(percentile[0]);i++) {
            int temp = numValue * percentile[i] / 100;
           // fprintf(pRecFile, "%.1f,%.1f,", lhand[temp], rhand[temp]);
            
            featureValues.push_back(lhand[temp]);
            featureValues.push_back(rhand[temp]);
            
            variableNum += 2;
            //cout << i << " " << temp << " "  << numValue << " " << latest <<  " " << lhand[temp] << " " << rhand[temp] << endl;
            if (DEBUG_numFeature) printf("hand location (percentile: %d): %d\n", percentile[i], variableNum);            
        }

        if (USE_BIGGEST_UPDOWN_HAND_MOVE) {
            int temp1 = numValue * 5 / 100;
            int temp2 = numValue * 95 / 100;
            double moveL = lhand[temp2]-lhand[temp1];
            double moveR = rhand[temp2]-rhand[temp1];
           // fprintf(pRecFile, "%.1f,%.1f,", moveL, moveR);
            featureValues.push_back(moveL);
            featureValues.push_back(moveR);
            variableNum += 2;
            if (DEBUG_numFeature) printf("hand biggest move (up/down): %d\n", variableNum);            
        }
        
        if (DEBUG_numFeature) printf("extra hand features (percentile+move): %d\n", variableNum);
        return variableNum;
    } // end computeMoreHandFeatures