/*
* SmartPlayerJni.java
* SmartPlayerJni
*
* Github: https://github.com/daniulive/SmarterStreaming
*
* Created by DaniuLive on 2015/09/26.
* Copyright © 2014~2016 DaniuLive. All rights reserved.
*/
package com.daniulive.smartplayer;
import com.eventhandle.SmartEventCallback;
public class SmartPlayerJni {
/**
* Initialize Player.
*
* @param ctx: get by this.getApplicationContext()
*
* <pre>This function must be called firstly.</pre>
*
* @return player handle if successful, if return 0, which means init failed.
*/
public native long SmartPlayerInit(Object ctx);
/**
* Set callback event
*
* @param callback function
*
* @return {0} if successful
*/
public native int SetSmartPlayerEventCallback(long handle, SmartEventCallback callback);
/**
* Set Video HW decoder, if support HW decoder, it will return 0
*
* @param isHWDecoder: 0: software decoder; 1: hardware decoder.
*
* @return {0} if successful
*/
public native int SetSmartPlayerVideoHWDecoder(long handle, int isHWDecoder);
/**
* Set Surface view.
*
* @param handle: return value from SmartPlayerInit()
*
* @param glSurface: surface view
*
* <pre> NOTE: if not set or set surface with null, it will playback audio only. </pre>
*
* @return {0} if successful
*/
public native int SmartPlayerSetSurface(long handle, Object surface);
/**
* Set External Render.
*
* @param handle: return value from SmartPlayerInit()
*
* @param external_render: External Render
*
* @return {0} if successful
*/
public native int SmartPlayerSetExternalRender(long handle, Object external_render);
/**
* Set AudioOutput Type
*
* @param handle: return value from SmartPlayerInit()
*
* @param use_audiotrack:
*
* <pre> NOTE: if use_audiotrack with 0: it will use auto-select output devices; if with 1: will use audiotrack mode. </pre>
*
* @return {0} if successful
*/
public native int SmartPlayerSetAudioOutputType(long handle, int use_audiotrack);
/**
* Set buffer
*
* @param handle: return value from SmartPlayerInit()
*
* @param buffer:
*
* <pre> NOTE: Unit is millisecond, range is 200-5000 ms </pre>
*
* @return {0} if successful
*/
public native int SmartPlayerSetBuffer(long handle, int buffer);
/**
* Set mute or not
*
* @param is_mute: if with 1:mute, if with 0: does not mute
*
* @return {0} if successful
*/
public native int SmartPlayerSetMute(long handle, int is_mute);
/**
* It's only used when playback RTSP stream
*
* Default with UDP mode
*
* @param isUsingTCP: if with 1, it will via TCP mode, while 0 with UDP mode
*
* @return {0} if successful
*/
public native int SmartPlayerSetRTSPTcpMode(long handle, int is_using_tcp);
/**
* Set fast startup
*
* @param is_fast_startup: if with 1, it will second play back, if with 0: does not it
*
* @return {0} if successful
*/
public native int SmartPlayerSetFastStartup(long handle, int is_fast_startup);
/**
* Set playback orientation.
*
* @param handle: return value from SmartPlayerInit()
*
* @param surOrg: current orientation, PORTRAIT 1, LANDSCAPE with 2
*
* @return {0} if successful
*/
public native int SmartPlayerSetOrientation(long handle, int surOrg);
/**
* Start playback stream
*
* @param handle: return value from SmartPlayerInit()
*
* @param uri: playback uri
*
* @return {0} if successful
*/
public native int SmartPlayerStartPlayback(long handle, String uri);
/**
* Switch playback url
*
* @param handle: return value from SmartPlayerInit()
*
* @param uri: the new playback uri
*
* @return {0} if successful
*/
public native int SmartPlayerSwitchPlaybackUrl(long handle, String uri);
/**
* Close player instance.
*
* @param handle: return value from SmartPlayerInit()
*
* <pre> NOTE: it could not use player handle after call this function. </pre>
*
* @return {0} if successful
*/
public native int SmartPlayerClose(long handle);
}