Beispiel #1
0
void EncoderAudioSource::doGetNextFrame()
{
	// Copy an encoded audio frame into buffer `fTo'
	// Read a new frame into fBuffer, YUV420 format is assumed
	unsigned char frame[100];
	int size = fFrameLength;
	int audioType;
	Debug(ckite_log_message, "EncoderAudioSource::doGetNextFrame.\n");
	computeAudioPresentationTime(); 
	if (strcmp(mediaType, "store") == 0)
	{
//		getFileAudioFrame( fp, 0, (unsigned char*)fBuffer, &size, &audioType);
	}
	else
	{
		audioGetFrameInfo(fp, mediaType,(char *)fBuffer, &size, &audioType);
	}
	if (size <= 0)
		return ;
	// Encode the frame
	int ret = 0; 
	if(audioType == AUDIO_AMRNB || audioType == AUDIO_AMRWB) 
	{
		fFrameSize = size;
	} 
	else if(audioType == AUDIO_RAW)
	{
		if (fAudioCodec != NULL)
		{
#ifndef __WIN32__
			ret = Encoder_Interface_Encode(fAudioCodec, MR122, (const short int*)fBuffer, frame, 0);
#endif
		}
		if (ret > 0)
		{
			fLastFrameHeader = frame[0];
			fFrameSize = ret-1;
			memcpy(fTo, frame+1, ret-1);
		}
	}
	afterGetting(this);
}
void EncoderAudioSource::doGetNextFrame()
{
	// Copy an encoded audio frame into buffer `fTo'
	// Read a new frame into fBuffer, YUV420 format is assumed
	unsigned char frame[100];
	int size = fFrameLength;
	int audioType;
	Debug(ckite_log_message, "EncoderAudioSource::doGetNextFrame.\n");
	computeAudioPresentationTime(); 
	if (strcmp(mediaType, "store") == 0)
	{
		getStoreAudioFrame( fp, 0, (unsigned char*)fBuffer, &size, &audioType);
	}
	else
	{
		getRealAudioFrame(fp, mediaType,(char *)fBuffer, &size, &audioType);
	}
	if (size <= 0)
		size = 0;
	// Encode the frame
	
#ifdef ENC_SOURCE
	int ret = 0; 
	if (fAudioCodec != NULL)
	{
		ret = Encoder_Interface_Encode(fAudioCodec, MR122, (const short int*)fBuffer, frame, 0);
	}
	if (ret > 0)
	{
		fLastFrameHeader = frame[0];
		fFrameSize = ret-1;
		memcpy(fTo, frame+1, ret-1);
	}
#else
	if (size != 0)
		memcpy(fTo, fBuffer, size);
	fFrameSize = size;
#endif
	afterGetting(this);
}