2012-03-12 1 views
2

に()メインint型私はffmpeg.c応じて次のリンクを変更し変更します。さて、私はJNIインタフェースプロトタイプに精通していませんが、JNIに関する記事を読んでそれに応じて変更します。は、JNIインタフェースのプロトタイプ

誰も私のコードを見て見ることができますこれは本当ですか?

JNIEXPORT jint JNICALL Java_com_ffmpegtest_MainActivity_main(JNIEnv *pEnv, int argc, char **argv) { 
int64_t ti; 

av_log_set_flags(AV_LOG_SKIP_REPEATED); 

if(argc>1 && !strcmp(argv[1], "-d")){ 
run_as_daemon=1; 
verbose=-1; 
av_log_set_callback(log_callback_null); 
argc--; 
argv++; 

} 

avcodec_register_all(); 
#if CONFIG_AVDEVICE 
avdevice_register_all(); 
#endif 
#if CONFIG_AVFILTER 
avfilter_register_all(); 
#endif 
av_register_all(); 

#if HAVE_ISATTY 
if(isatty(STDIN_FILENO)) 
avio_set_interrupt_cb(decode_interrupt_cb); 
#endif 

init_opts(); 

if(verbose>=0) 
show_banner(); 

/* parse options */ 
parse_options(argc, argv, options, opt_output_file); 

if(nb_output_files <= 0 && nb_input_files == 0) { 
show_usage(); 
fprintf(stderr, "Use -h to get full help or, even better, run 'man ffmpeg'\n"); 
ffmpeg_exit(1); 
} 

/* file converter/grab */ 
if (nb_output_files <= 0) { 
fprintf(stderr, "At least one output file must be specified\n"); 
ffmpeg_exit(1); 
} 

if (nb_input_files == 0) { 
fprintf(stderr, "At least one input file must be specified\n"); 
ffmpeg_exit(1); 
} 

ti = getutime(); 
if (transcode(output_files, nb_output_files, input_files, nb_input_files, 
stream_maps, nb_stream_maps) < 0) 
ffmpeg_exit(1); 
ti = getutime() - ti; 
if (do_benchmark) { 
int maxrss = getmaxrss()/1024; 
printf("bench: utime=%0.3fs maxrss=%ikB\n", ti/1000000.0, maxrss); 
} 

return ffmpeg_exit(0); 
} 

答えて

1

objこの関数は、メンバー、すなわちあなたMainActivityインスタンスであるオブジェクトである

JNIEXPORT jint JNICALL 
Java_com_ffmpegtest_MainActivity_main(JNIEnv *pEnv, jobject obj) { 

ある必要があります。余分な引数を渡す必要がある場合は、それらをJavaコードのネイティブメソッド宣言に追加する必要があります。

+0

答えをありがとう、私のコードを編集できますか? – iSun

+0

いいえ、具体的な点についてさらに詳しい説明が必要な場合は、より具体的な質問をしてください。 –

+0

さて、私はobjの使用について混乱しています。 – iSun