Commit 4d7d1f03 authored by Thomas Guillem's avatar Thomas Guillem

mediacodec: add mediacodec-tunneled-playback boolean option

Can be used if the surface given to mediacodec has a punch hole. Configuring a
punch hole depends of the hardware, therefore, this option is only for
developers that use libvlc with a known hardware.
parent 76a84e0d
......@@ -179,6 +179,8 @@ static void RemoveInflightPictures(decoder_t *);
#define MEDIACODEC_AUDIO_TEXT "Use MediaCodec for audio decoding"
#define MEDIACODEC_AUDIO_LONGTEXT "Still experimental."
#define MEDIACODEC_TUNNELEDPLAYBACK_TEXT "Use a tunneled surface for playback"
#define CFG_PREFIX "mediacodec-"
vlc_module_begin ()
......@@ -191,6 +193,8 @@ vlc_module_begin ()
DIRECTRENDERING_TEXT, DIRECTRENDERING_LONGTEXT, true)
add_bool(CFG_PREFIX "audio", false,
MEDIACODEC_AUDIO_TEXT, MEDIACODEC_AUDIO_LONGTEXT, true)
add_bool(CFG_PREFIX "tunneled-playback", false,
MEDIACODEC_TUNNELEDPLAYBACK_TEXT, NULL, true)
set_callbacks( OpenDecoderNdk, CloseDecoder )
add_shortcut( "mediacodec_ndk" )
add_submodule ()
......@@ -469,6 +473,8 @@ static int StartMediaCodec(decoder_t *p_dec)
}
}
args.video.p_awh = p_sys->u.video.p_awh;
args.video.b_tunneled_playback = args.video.p_awh ?
var_InheritBool(p_dec, CFG_PREFIX "tunneled-playback") : false;
}
else
{
......
......@@ -86,6 +86,7 @@ union mc_api_args
int i_width;
int i_height;
int i_angle;
bool b_tunneled_playback;
} video;
struct
{
......
......@@ -545,6 +545,11 @@ static int Start(mc_api *api, union mc_api_args *p_args)
if (b_direct_rendering && p_args->video.i_angle != 0)
SET_INTEGER(jformat, "rotation-degrees", p_args->video.i_angle);
/* feature-tunneled-playback available since API 21 */
if (b_direct_rendering && jfields.get_input_buffer)
SET_INTEGER(jformat, "feature-tunneled-playback",
p_args->video.b_tunneled_playback);
}
else
{
......
......@@ -328,8 +328,14 @@ static int Start(mc_api *api, union mc_api_args *p_args)
syms.AMediaFormat.setInt32(p_sys->p_format, "height", p_args->video.i_height);
syms.AMediaFormat.setInt32(p_sys->p_format, "rotation-degrees", p_args->video.i_angle);
if (p_args->video.p_awh)
{
p_anw = AWindowHandler_getANativeWindow(p_args->video.p_awh,
AWindow_Video);
if( p_anw )
syms.AMediaFormat.setInt32(p_sys->p_format,
"feature-tunneled-playback",
p_args->video.b_tunneled_playback);
}
}
else
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment