コード例 #1
0
status_t
MP3Encoder::Flush()
{
	if (m_cookie == 0) return B_OK;
	if (m_bufAvail > 0) 
	{
		memset(m_buffer+m_bufAvail, 0, m_chunkSize-m_bufAvail);
		status_t err = EncodeBuffer(m_buffer, m_chunkSize);
		if (err < B_OK) return err;	
	}
	
	return WriteChunk(m_buffer, mp3_encode(m_cookie, NULL, 0, m_buffer), m_LastEncodeInfo);
}
コード例 #2
0
status_t MP3Encoder::EncodeBuffer( const char *src, int32 src_length)
{
	assert(src_length == 1152*m_format.channel_count*2);

	char * output = (char *)alloca(src_length);	/*	assume each packet will shrink, which is safe for the blade codec	*/
	int outputSize = mp3_encode(m_cookie, src, src_length, output);

	if (outputSize > 0) 
	{
		m_LastEncodeInfo->flags |= B_MEDIA_KEY_FRAME;
		return WriteChunk(output, outputSize, m_LastEncodeInfo);
	}
	return B_OK;
}
コード例 #3
0
ファイル: voix_enc.c プロジェクト: redstock/rvoix
int convert_to_mp3(JNIEnv* env, jobject obj, jstring ifile, jstring ofile) {

    const char *fi = 0, *fo = 0;
    int fd, fd_out;
			
	if(!ifile || !ofile) {
	     log_err("convert_to_mp3: invalid arguments");
	     return 0;
	}

	fi = (*env)->GetStringUTFChars(env,ifile,NULL);
	fo = (*env)->GetStringUTFChars(env,ofile,NULL);

	if(!fi || !fo || !*fi || !*fo) {
	    (*env)->ReleaseStringUTFChars(env,ifile,fi);
	    (*env)->ReleaseStringUTFChars(env,ofile,fo);
	     log_err("convert_to_mp3: invalid arguments");
	    return 0; 	
	}

        fd = open(fi, O_RDONLY);
        fd_out = open(fo,O_CREAT|O_TRUNC|O_WRONLY);
	
	if(fd < 0 || fd_out < 0) {
	     if(fd >= 0) {
		log_err("cannot open output file");
		close(fd);
	     }		
	     if(fd_out >= 0) {
		log_err("cannot open input file");
		close(fd_out);	
		unlink(fo);
	     }	
	     (*env)->ReleaseStringUTFChars(env,ifile,fi);
	     (*env)->ReleaseStringUTFChars(env,ofile,fo);
	     return 0;	

	}
	(*env)->ReleaseStringUTFChars(env,ifile,fi);
	(*env)->ReleaseStringUTFChars(env,ofile,fo);

        lseek(fd,sizeof(wavhdr),SEEK_SET);

     return mp3_encode(fd,fd_out);
}