Ejemplo n.º 1
0
bool StrangeNNGene::createNeuron( Neuron& neuron, std::string const& str )
{
    // Extract all dendrites
    std::vector<std::string> values = splitToken( str, GENEFILE_TOKEN_DENDRITE );
    std::vector<std::string>::iterator valueIt = values.begin();
    // For every dendrite
    for ( ; valueIt != values.end(); ++valueIt )
    {
        // Extract the index and the bias
        std::vector<std::string> dendriteData = splitToken( *valueIt, GENEFILE_TOKEN_COMMA );
        // Some sanity
        if ( dendriteData.size() != 2 )
        {
            assert( false );
            return false;
        }
        // Insert this dendrite.
        neuron.insert( std::make_pair(
            atoi( dendriteData[0].c_str() ),
            atoi( dendriteData[1].c_str() ) ) );
    }
    return true;
}
Ejemplo n.º 2
0
FskErr lpcmPacketParserNew(RTPPacketParser parser)
{
	LPCMPacketParser lpcmPacketParser;
	SDPMediaDescription mediaDescription;
	FskErr err;

	err = FskMemPtrNewClear(sizeof(LPCMPacketParserRecord), &lpcmPacketParser);
	BAIL_IF_ERR(err);
	parser->handlerRefCon = lpcmPacketParser;

	// Tuck away the sample size, sample rate, and bits per sample
	mediaDescription = parser->mediaDescription;
	if (NULL != mediaDescription) {
		SDPAttribute attribute;
		attribute = SDPFindMediaAttribute(mediaDescription, "rtpmap");
		if (NULL != attribute) {
			char *value, *parts[3];
			UInt16 nParts = 2;
			value = FskStrDoCopy(attribute->value);
			splitToken(value, &nParts, ' ', &parts[0]);
			if (*parts[1] == 'L') {
				nParts = 3;
				splitToken(parts[1]+1, &nParts, '/', &parts[0]);
				lpcmPacketParser->bitsPerSample = (UInt16)FskStrToNum(parts[0]);
				lpcmPacketParser->sampleRate = FskStrToNum(parts[1]);
				lpcmPacketParser->nChannels = (UInt16)FskStrToNum(parts[2]);
				parser->mediaFormat = (16 == lpcmPacketParser->bitsPerSample ? kRTPAudioFormatPCM16BitBigEndian : kRTPAudioFormatPCM8BitOffsetBinary);
				lpcmPacketParser->mediaFormat = parser->mediaFormat;
			}
			FskMemPtrDispose(value);
		}
	}

bail:
	return err;
}
Ejemplo n.º 3
0
bool StrangeNNGene::createGeneData( std::string const& str )
{
    // Extract all the neurons
    std::vector<std::string> values = splitToken( str, GENEFILE_TOKEN_NEURON );
    if ( values.empty() )
        return false;
    std::vector<std::string>::iterator valueIt = values.begin();
    // Read the generation count
    geneGeneration_ = atoi( valueIt->c_str() );
    // The rest are neuron data sets.
    ++valueIt;
    data_.resize( values.size() - 1 );
    GeneData::iterator neuronIt = data_.begin();
    // For every neuron
    for ( ; valueIt != values.end(); ++valueIt, ++neuronIt )
    {
        if ( ! createNeuron( *neuronIt, *valueIt ) )
            return false;
    }
    return true;
}
Ejemplo n.º 4
0
FskErr h263PacketParserNew(RTPPacketParser parser)
{
	FskErr err;
	H263PacketParser h263PacketParser;
	SDPMediaDescription mediaDescription;
	SDPAttribute attribute;

	err = FskMemPtrNew(sizeof(H263PacketParserRecord), &h263PacketParser);
	if (0 != err) goto bail;
	
	parser->handlerRefCon = h263PacketParser;
	h263PacketParser->frames = NULL;

	h263PacketParser->mediaFormat = kRTPVideoFormatH263;
	h263PacketParser->width = 0;
	h263PacketParser->height = 0;
	h263PacketParser->lastTimeStamp = 0;
	
	// look for the "a=framesize" attribute in the SDP for width and height
	// referenced in 3GPP TS 26.234 version 6.3.0 Release 6
	if (0 == h263PacketParser->width) {
		char *tmp = NULL, *p[3] = {0};
		UInt16 nParts;
		attribute = SDPFindMediaAttribute(parser->mediaDescription, "framesize");
		if (attribute) {
			SDPMediaFormat mediaFormat = parser->mediaDescription->formatList->head;
			tmp = FskStrDoCopy(attribute->value);
			splitToken(tmp, &nParts, ' ', &p[0]);
			if ((UInt32)FskStrToNum(p[0]) == mediaFormat->payloadType) {
				splitToken(p[1], &nParts, '-', &p[0]);
				h263PacketParser->width = FskStrToNum(p[0]);
				h263PacketParser->height = FskStrToNum(p[1]);
			}
			FskMemPtrDispose(tmp);
		}
	}
	
	// look for the "a=Width" and "a=Height" attributes (TMI server)
	// a=Width:integer;176
	// a=Height:integer;144
	if (0 == h263PacketParser->width) {
		char *p[3] = {0};
		UInt16 nParts;
		attribute = SDPFindMediaAttribute(parser->mediaDescription, "Width");
		if (attribute) {
			char *value;
			value = FskStrDoCopy(attribute->value);
			splitToken(value, &nParts, ';', &p[0]);
			h263PacketParser->width = FskStrToNum(p[1]);
			FskMemPtrDispose(value);
		}
	}
	
	if (0 == h263PacketParser->height) {
		char *p[3] = {0};
		UInt16 nParts;
		attribute = SDPFindMediaAttribute(parser->mediaDescription, "Height");
		if (attribute) {
			char *value;
			value = FskStrDoCopy(attribute->value);
			splitToken(value, &nParts, ';', &p[0]);
			h263PacketParser->height = FskStrToNum(p[1]);
			FskMemPtrDispose(value);
		}
	}

	// Next try the cliprect attribute
	if (0 == h263PacketParser->width) {
		attribute = SDPFindMediaAttribute(parser->mediaDescription, "cliprect");
		if (NULL != attribute) {
			char *value, *parts[5];
			UInt16 nParts;
			value = FskStrDoCopy(attribute->value);
			splitToken(value, &nParts, ',', &parts[0]);
			if (4 == nParts) {
				h263PacketParser->width  = FskStrToNum(parts[3]);
				h263PacketParser->height  = FskStrToNum(parts[2]);
			}
			FskMemPtrDispose(value);
		}
	}
		
	// Next try the framesize in the fmtp attribute
	if (0 == h263PacketParser->width) {
		attribute = SDPFindMediaAttribute(parser->mediaDescription, "fmtp");
		if (NULL != attribute) {
			char *attr;

			if (NULL != copyAttributeValue(attribute->value, "framesize", &attr)) {
				char *value, *parts[5];
				UInt16 nParts;
				value = FskStrDoCopy(attr);
				splitToken(value, &nParts, '-', &parts[0]);
				if (2 == nParts) {
					h263PacketParser->width  = FskStrToNum(parts[0]);
					h263PacketParser->height  = FskStrToNum(parts[1]);
				}
				FskMemPtrDispose(attr);
				FskMemPtrDispose(value);
			}
		}
	}
	
	// Grab the timescale - should always be 90000
	h263PacketParser->timeScale = 90000;
	
	mediaDescription = parser->mediaDescription;
	if (NULL != mediaDescription) {
		SDPAttribute attribute;
		attribute = SDPFindMediaAttribute(mediaDescription, "rtpmap");
		if (NULL != attribute) {
			char *value, *parts[4];
			UInt16 nParts = 2;
			value = FskStrDoCopy(attribute->value);
			splitToken(value, &nParts, '/', &parts[0]);
			h263PacketParser->timeScale = FskStrToNum(parts[1]);
			FskMemPtrDispose(value);
		}
	}
	
bail:
	return err;
}