Skip to content

Commit

Permalink
android/options: simplify option api
Browse files Browse the repository at this point in the history
  • Loading branch information
bbcallen committed Jul 2, 2015
1 parent 34adc53 commit 26d6d1d
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 106 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,18 @@ public final class IjkMediaPlayer extends SimpleMediaPlayer {

protected static final int MEDIA_SET_VIDEO_SAR = 10001;

//----------------------------------------
// options
public static final int OPT_CATEGORY_FORMAT = 1;
public static final int OPT_CATEGORY_CODEC = 2;
public static final int OPT_CATEGORY_SWS = 3;
public static final int OPT_CATEGORY_PLAYER = 4;

public static final int SDL_FCC_YV12 = 0x32315659; // YV12
public static final int SDL_FCC_RV16 = 0x36315652; // RGB565
public static final int SDL_FCC_RV32 = 0x32335652; // RGBX8888
//----------------------------------------

@AccessedByNative
private long mNativeMediaPlayer;

Expand Down Expand Up @@ -465,20 +477,34 @@ public MediaInfo getMediaInfo() {
private native String _getVideoCodecInfo();
private native String _getAudioCodecInfo();

public void setOption(int category, String name, String value)
{
_setOption(category, name, value);
}

public void setOptionLong(int category, String name, long value)
{
_setOptionLong(category, name, value);
}

@Deprecated
public void setAvOption(AvFormatOption option) {
setAvFormatOption(option.getName(), option.getValue());
}

@Deprecated
public void setAvFormatOption(String name, String value) {
_setAvFormatOption(name, value);
setOption(OPT_CATEGORY_FORMAT, name, value);
}

@Deprecated
public void setAvCodecOption(String name, String value) {
_setAvCodecOption(name, value);
setOption(OPT_CATEGORY_CODEC, name, value);
}

@Deprecated
public void setSwScaleOption(String name, String value) {
_setSwScaleOption(name, value);
setOption(OPT_CATEGORY_SWS, name, value);
}

/**
Expand All @@ -491,14 +517,9 @@ public void setOverlayFormat(int chromaFourCC) {
_setOverlayFormat(chromaFourCC);
}

/**
* @param frameDrop
* =0 do not drop any frame
* +n drop as many frames as possible
* -1 display 1 frame per `frameDrop` continuous dropped frames,
*/
@Deprecated
public void setFrameDrop(int frameDrop) {
_setFrameDrop(frameDrop);
setOptionLong(OPT_CATEGORY_PLAYER, "framedrop", frameDrop);
}

public void setMediaCodecEnabled(boolean enabled) {
Expand All @@ -515,11 +536,7 @@ public void setAutoPlayOnPrepared(boolean enabled) {

private native void _setOption(int category, String name, String value);
private native void _setOptionLong(int category, String name, long value);
private native void _setAvFormatOption(String name, String value);
private native void _setAvCodecOption(String name, String value);
private native void _setSwScaleOption(String name, String value);
private native void _setOverlayFormat(int chromaFourCC);
private native void _setFrameDrop(int frameDrop);
private native void _setMediaCodecEnabled(boolean enabled);
private native void _setOpenSLESEnabled(boolean enabled);
private native void _setAutoPlayOnPrepared(boolean enabled);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package tv.danmaku.ijk.media.player.option;

@Deprecated
public interface AvFormatOption {
public abstract String getName();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package tv.danmaku.ijk.media.player.option;

@Deprecated
public class AvFourCC {
public static int SDL_FCC_YV12 = 0x32315659; // YV12
public static int SDL_FCC_RV16 = 0x36315652; // RGB565
Expand Down
92 changes: 0 additions & 92 deletions ijkmedia/ijkplayer/android/ijkplayer_jni.c
Original file line number Diff line number Diff line change
Expand Up @@ -340,81 +340,6 @@ IjkMediaPlayer_setOptionLong(JNIEnv *env, jobject thiz, jint category, jobject n
ijkmp_dec_ref_p(&mp);
}

static void
IjkMediaPlayer_setAvFormatOption(JNIEnv *env, jobject thiz, jobject name, jobject value)
{
MPTRACE("%s\n", __func__);
IjkMediaPlayer *mp = jni_get_media_player(env, thiz);
const char *c_name = NULL;
const char *c_value = NULL;
JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: setAvFormatOption: null mp", LABEL_RETURN);

c_name = (*env)->GetStringUTFChars(env, name, NULL );
JNI_CHECK_GOTO(c_name, env, "java/lang/OutOfMemoryError", "mpjni: setAvFormatOption: name.string oom", LABEL_RETURN);

c_value = (*env)->GetStringUTFChars(env, value, NULL );
JNI_CHECK_GOTO(c_name, env, "java/lang/OutOfMemoryError", "mpjni: setAvFormatOption: name.string oom", LABEL_RETURN);

ijkmp_set_format_option(mp, c_name, c_value);

LABEL_RETURN:
if (c_name)
(*env)->ReleaseStringUTFChars(env, name, c_name);
if (c_value)
(*env)->ReleaseStringUTFChars(env, value, c_value);
ijkmp_dec_ref_p(&mp);
}

static void
IjkMediaPlayer_setAvCodecOption(JNIEnv *env, jobject thiz, jobject name, jobject value)
{
MPTRACE("%s\n", __func__);
IjkMediaPlayer *mp = jni_get_media_player(env, thiz);
const char *c_name = NULL;
const char *c_value = NULL;
JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: setAvCodecOption: null mp", LABEL_RETURN);

c_name = (*env)->GetStringUTFChars(env, name, NULL );
JNI_CHECK_GOTO(c_name, env, "java/lang/OutOfMemoryError", "mpjni: setAvCodecOption: name.string oom", LABEL_RETURN);

c_value = (*env)->GetStringUTFChars(env, value, NULL );
JNI_CHECK_GOTO(c_name, env, "java/lang/OutOfMemoryError", "mpjni: setAvCodecOption: name.string oom", LABEL_RETURN);

ijkmp_set_codec_option(mp, c_name, c_value);

LABEL_RETURN:
if (c_name)
(*env)->ReleaseStringUTFChars(env, name, c_name);
if (c_value)
(*env)->ReleaseStringUTFChars(env, value, c_value);
ijkmp_dec_ref_p(&mp);
}

static void
IjkMediaPlayer_setSwScaleOption(JNIEnv *env, jobject thiz, jobject name, jobject value)
{
MPTRACE("%s\n", __func__);
IjkMediaPlayer *mp = jni_get_media_player(env, thiz);
const char *c_name = NULL;
const char *c_value = NULL;
JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: setSwScaleOption: null mp", LABEL_RETURN);

c_name = (*env)->GetStringUTFChars(env, name, NULL );
JNI_CHECK_GOTO(c_name, env, "java/lang/OutOfMemoryError", "mpjni: setSwScaleOption: name.string oom", LABEL_RETURN);

c_value = (*env)->GetStringUTFChars(env, value, NULL );
JNI_CHECK_GOTO(c_name, env, "java/lang/OutOfMemoryError", "mpjni: setSwScaleOption: name.string oom", LABEL_RETURN);

ijkmp_set_sws_option(mp, c_name, c_value);

LABEL_RETURN:
if (c_name)
(*env)->ReleaseStringUTFChars(env, name, c_name);
if (c_value)
(*env)->ReleaseStringUTFChars(env, value, c_value);
ijkmp_dec_ref_p(&mp);
}

static void
IjkMediaPlayer_setOverlayFormat(JNIEnv *env, jobject thiz, jint chromaFourCC)
{
Expand All @@ -428,19 +353,6 @@ IjkMediaPlayer_setOverlayFormat(JNIEnv *env, jobject thiz, jint chromaFourCC)
ijkmp_dec_ref_p(&mp);
}

static void
IjkMediaPlayer_setFrameDrop(JNIEnv *env, jobject thiz, jint frameDrop)
{
MPTRACE("%s\n", __func__);
IjkMediaPlayer *mp = jni_get_media_player(env, thiz);
JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: setFrameDrop: null mp", LABEL_RETURN);

ijkmp_set_framedrop(mp, frameDrop);

LABEL_RETURN:
ijkmp_dec_ref_p(&mp);
}

static void
IjkMediaPlayer_setMediaCodecEnabled(JNIEnv *env, jobject thiz, jboolean enabled)
{
Expand Down Expand Up @@ -987,11 +899,7 @@ static JNINativeMethod g_methods[] = {

{ "_setOption", "(ILjava/lang/String;Ljava/lang/String;)V", (void *) IjkMediaPlayer_setOption },
{ "_setOptionLong", "(ILjava/lang/String;J)V", (void *) IjkMediaPlayer_setOptionLong },
{ "_setAvFormatOption", "(Ljava/lang/String;Ljava/lang/String;)V", (void *) IjkMediaPlayer_setAvFormatOption },
{ "_setAvCodecOption", "(Ljava/lang/String;Ljava/lang/String;)V", (void *) IjkMediaPlayer_setAvCodecOption },
{ "_setSwScaleOption", "(Ljava/lang/String;Ljava/lang/String;)V", (void *) IjkMediaPlayer_setSwScaleOption },
{ "_setOverlayFormat", "(I)V", (void *) IjkMediaPlayer_setOverlayFormat },
{ "_setFrameDrop", "(I)V", (void *) IjkMediaPlayer_setFrameDrop },
{ "_setMediaCodecEnabled", "(Z)V", (void *) IjkMediaPlayer_setMediaCodecEnabled },
{ "_setOpenSLESEnabled", "(Z)V", (void *) IjkMediaPlayer_setOpenSLESEnabled },
{ "_setAutoPlayOnPrepared", "(Z)V", (void *) IjkMediaPlayer_setAutoPlayOnPrepared },
Expand Down

0 comments on commit 26d6d1d

Please sign in to comment.