同样的硬件,在Android 5.0的load上,无法播放YouTube网站的视频,在Android 4.2的load上,可以播放
Hi Weidong,
这个问题还是你在跟吗?有进展吗?
Cloudy
Hi Weidong,
这个问题有没有新的进展?
Cloudy
我们测试方法是直接在Browser中打开youtube网站,播放任何视频
由于走得是https protocol,会启用StagefrightPlayer
Hi Cloudy,
我请其他客户测试了一下,在国内上youtube网站,会遇到不少的问题,所有人遇到的是上不去的问题。这个会与上网限制有关。如果你播放搜狐视频和腾讯视频,那么就不是解码器不完整的问题。
因此,用4.2.2BSP还是用5.0 BSP,登录都无法成功。你们测试的时候,确认能上youtube网站么?
Weidong
国内上YouTube网站,当然是走VPN上去的
Hi Cloudy,
please capture android 5.0 log when playing youtube wideo, then paste it here, let us check it !
Regards,
weidong
02-26 09:43:18.770 167 1504 E OMXCodec: before getParameter
02-26 09:43:18.770 167 1504 E OMX : getParameter(42 0x2000001 0xb0103af8 96)
02-26 09:43:18.770 167 1504 E OMXNodeInstance: OMXNodeInstance::getParameter, index: 0x2000001
02-26 09:43:18.770 167 1504 E : FSLOMXWrapper::GetParameter, nParamIndex: 0x2000001
02-26 09:43:18.770 167 1504 E : before ConvertOMXToAndroidColorFormat, pPortDef->format.video.eColorFormat: 19
02-26 09:43:18.770 167 1504 E : after ConvertOMXToAndroidColorFormat, pPortDef->format.video.eColorFormat: 257
02-26 09:43:18.770 167 1504 E : FSLOMXWrapper::GetParameter, ret: 0
02-26 09:43:18.770 167 1504 E OMXCodec: after getParameter, color format: 257, err: 0
02-26 09:43:18.770 167 1504 E OMXCodec: Not supported color format 257 by surface!
02-26 09:43:18.770 167 1504 E AwesomePlayer: failed to start video source
OMXFSLPlugin_new.cpp (external\fsl_imx_omx\stagefright\src)
OMX_ERRORTYPE FSLOMXWrapper::GetParameter(
OMX_INDEXTYPE nParamIndex,
OMX_PTR pStructure)
//when enable native buffer, the color format required in ACodec.cpp is pixel format. | |
//so need to convert OMX format to androd pixel format. | |
//once got the pixel format, it will report OMX color format when calling the function again. | |
if(bEnableNativeBuffers && bGotPixelFormat && OMX_IndexParamPortDefinition == nParamIndex){ | |
OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = (OMX_PARAM_PORTDEFINITIONTYPE*)pStructure; | |
if(pPortDef->nPortIndex == 1 && OMX_PortDomainVideo == pPortDef->eDomain){ | |
LOGE("before ConvertOMXToAndroidColorFormat, pPortDef->format.video.eColorFormat: %d", pPortDef->format.video.eColorFormat); | |
pPortDef->format.video.eColorFormat = (OMX_COLOR_FORMATTYPE)ConvertOMXToAndroidColorFormat(pPortDef->format.video.eColorFormat); | |
LOGE("after ConvertOMXToAndroidColorFormat, pPortDef->format.video.eColorFormat: %d", pPortDef->format.video.eColorFormat); | |
bGotPixelFormat = OMX_FALSE; | |
} | |
} |
上面这段如果注释掉,就不会有问题了
OMXCodec.cpp (frameworks\av\media\libstagefright)
status_t OMXCodec::allocateOutputBuffersFromNativeWindow() {
int color_fmt = HAL_PIXEL_FORMAT_YCbCr_420_SP; | ||
switch(def.format.video.eColorFormat) { | ||
case OMX_COLOR_FormatYUV420SemiPlanar: | ||
color_fmt = HAL_PIXEL_FORMAT_YCbCr_420_SP; | ||
break; | ||
case OMX_COLOR_FormatYUV420Planar: | ||
color_fmt = HAL_PIXEL_FORMAT_YCbCr_420_P; | ||
break; | ||
case OMX_COLOR_Format16bitRGB565: | ||
color_fmt = HAL_PIXEL_FORMAT_RGB_565; | ||
break; | ||
case OMX_COLOR_FormatYUV422Planar: | ||
color_fmt = HAL_PIXEL_FORMAT_YCbCr_422_P; | ||
break; | ||
default: | ||
ALOGE("Not supported color format %d by surface!", def.format.video.eColorFormat); | ||
return UNKNOWN_ERROR; | ||
} |
上面这段已经做了color format转换,fsl_imx_omx下的code多做了一次这样的动作,造成了问题
但是,我担心直接这样修改,会造成其他问题,要确认一下,贵司是否已经有official patch for such issue
Hi Cloudy,
Would you please send a short video you can't play to me ? let me try !
Regards,
Weidong