masterluke wrote:Would be very interested to hear if anyone has got a working solution for hardware decode under vlc or gstreamer. Got any links?
This one, the guy has an error :
Code: Select all
[0x444004d8] omxil decoder debug: COMPARISON: OMX.broadcom.write_still == OMX.broadcom.video_decode (25)
[0x444004d8] omxil decoder debug: - no roles for the component!
[0x444004d8] omxil decoder debug: found 1 matching components for role OMX.broadcom.video_decode
[0x444004d8] omxil decoder debug: - OMX.broadcom.video_decode
[0x444004d8] omxil decoder debug: loaded component OMX.broadcom.video_decode
[0x444004d8] omxil decoder debug: couldn't find an input and output port
[0x444004d8] omxil decoder debug: no component could be initialised
I think he focuses on "[0x444004d8] omxil decoder debug: couldn't find an input and output port " but if we look at VLC code :
Code: Select all
omx_error = OMX_ComponentRoleEnum(omx_handle, psz_role, 0);
[b]if(omx_error == OMX_ErrorNone)
msg_Dbg(p_dec, "loaded component %s of role %s", psz_component, psz_role);
else
msg_Dbg(p_dec, "loaded component %s", psz_component);
PrintOmx(p_dec, omx_handle, OMX_ALL);[/b]
/* Set component role */
OMX_INIT_STRUCTURE(role);
strcpy((char*)role.cRole,
GetOmxRole(p_sys->b_enc ? p_dec->fmt_out.i_codec : p_dec->fmt_in.i_codec,
p_dec->fmt_in.i_cat, p_sys->b_enc));
omx_error = OMX_SetParameter(omx_handle, OMX_IndexParamStandardComponentRole,
&role);
omx_error = OMX_GetParameter(omx_handle, OMX_IndexParamStandardComponentRole,
&role);
if(omx_error == OMX_ErrorNone)
msg_Dbg(p_dec, "component standard role set to %s", role.cRole);
/* Find the input / output ports */
OMX_INIT_STRUCTURE(param);
OMX_INIT_STRUCTURE(definition);
omx_error = OMX_GetParameter(omx_handle, p_dec->fmt_in.i_cat == VIDEO_ES ?
OMX_IndexParamVideoInit : OMX_IndexParamAudioInit, ¶m);
if(omx_error != OMX_ErrorNone) param.nPorts = 0;
for(i = 0; i < param.nPorts; i++)
{
OmxPort *p_port;
/* Get port definition */
definition.nPortIndex = param.nStartPortNumber + i;
omx_error = OMX_GetParameter(omx_handle, OMX_IndexParamPortDefinition,
&definition);
if(omx_error != OMX_ErrorNone) continue;
if(definition.eDir == OMX_DirInput) p_port = &p_sys->in;
else p_port = &p_sys->out;
p_port->b_valid = true;
p_port->i_port_index = definition.nPortIndex;
p_port->definition = definition;
p_port->omx_handle = omx_handle;
}
if(!p_sys->in.b_valid || !p_sys->out.b_valid)
{
omx_error = OMX_ErrorInvalidComponent;
CHECK_ERROR(omx_error, "couldn't find an input and output port");
}
there is an error earlier because the debbug log is "omxil decoder debug: loaded component OMX.broadcom.video_decode", and this is generated by the first part of the code. So the return of "omx_error = OMX_ComponentRoleEnum(omx_handle, psz_role, 0);" has an error, we need to find which. More over, there is no debbug for "component standard role set to %s", so component role is not set too. I think I will not have the time to test it today, maybe tomorrow.
masterluke wrote:I think most people use hdmi audio one way or another, be it through the tv's speakers, an av amp, or an hdmi splitter. It does seem a bit bonkers to have high quality 1080p video and (worse that normal) analogue audio.
Oh, av amp has HDMI know... I feel dumb, I forgot this case !