Bug #117861

测试 Test-ST #111337: ST测试总票

测试 Test-ST #116840: 中控联调测试-AF

同客户bug IOVDEV-29760【AF】【EVT3】【AUDIO】【媒体播放】本地视频播放中,断电重启副屏,重启再次播放本地视频提示”无法播放“

Added by 物联网测试组_CDTS 唐霞 about 2 years ago. Updated about 2 years ago.

Status:CLOSEDStart date:2023-05-10
Priority:HighDue date:
Assignee:物联网测试组_CDTS 唐霞 % Done:

0%

Category:CD-FW
Target version:-
Need_Info:-- Found Version:FlatBuild_HH_MCE_FSE.M.R.user.01.00.0098.C103(X103)
Resolution:FIXED Degrated:No
Severity:Major Verified Version:
Reproducibility:Every time Fixed Version:
Test Type:Release Test Root cause:对微设定的消息处理速度进行了提升
对于异常下电导致视频数据未完全保存不做处理

Description

【测试步骤】
副屏连接中控,播放本地视频,视频播放中副屏断电重启
【预期结果】
重启完成后,可正常播放本地视频
【测试结果】
重启后播放本地视频提示"文件无法打开"


Related issues

Related to Figure - Bug #118092: 【IOVDEV-27968】【内部】【VC1】【0095】【台架】【EE环境】【副屏】KL15ON副屏开机完成后,... CLOSED 2023-05-18

History

#1 Updated by CD TEST-方永红 about 2 years ago

  • Category changed from CD-FW to AUDIO-FW
  • Assignee changed from CD FW 曹覃刚 to Multimedia组-RD3_TSCD 梁卿山

#2 Updated by Multimedia组-RD3_TSCD 梁卿山 about 2 years ago

Hi 唐霞

从复现的日志来看,该问题发生时,获取焦点超时,导致了不能播放视频。
该问题仅发生在,重启后的三秒内播放视频。

详细分析如下:
05-11 10:47:18.135 1394 1937 D AudioIDCMicroNegotiator: idcm_common:onConnectStateChange: 1
05-11 10:47:18.135 1394 1937 D AudioIDCMicroNegotiator: idcm_volume:syncIDCMicroAudioVolume device fist start
05-11 10:47:18.135 1394 1937 D AudioIDCMicroNegotiator: idcm_volume:getIDCMicroVolume
05-11 10:47:18.135 1394 1937 D AudioIDCMicroNegotiator: idcm_common:requestResult method = getVolume parameters = {"functionInfo":{"IDCM_VolumeValue_Media":"MEDIA"}}
05-11 10:47:45.508 4014 4014 W AudioManager: See the documentation of requestAudioFocus() for what to use instead with android.media.AudioAttributes to qualify your playback use case
05-11 10:47:45.510 1394 3014 I MediaFocusControl: requestAudioFocus() from uid/pid 10071/4014 AA=USAGE_MEDIA/CONTENT_TYPE_MUSIC clientId=$6@189c4fa callingPack=com.android.gallery3d req=1 flags=0x0 sdk=29
05-11 10:47:45.567 1394 2593 D AudioService.PlaybackActivityMonitor: idcm_af:requestAudioFocusToIDCM: event=2(PLAYER_STATE_STARTED)apc =AudioPlaybackConfiguration piid:159 deviceId:0 type:android.media.MediaPlayer u/pid:10071/4014 state:idle attr:AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_MOVIE flags=0x800 tags= bundle=null sessionId:0 ★★★ 申请焦点
05-11 10:47:45.568 1394 2593 D AudioIDCMicroNegotiator: idcm_af:requestIDCMicroAudioFocus, streamtype = 3
05-11 10:47:45.568 1394 2593 D AudioIDCMicroNegotiator: idcm_af:requestIDCMicroAudioFocus: AudioFocus_Media
05-11 10:47:45.568 1394 2593 D AudioIDCMicroNegotiator: idcm_common:requestResult method = requestAudioFocus parameters = {"functionInfo":{"IDCM_AudioFocus":"AudioFocus_Media"}}
05-11 10:47:45.568 1394 2593 I MicroServiceManager: requestResult(requestAudioFocus) parameters is{"functionInfo":{"IDCM_AudioFocus":"AudioFocus_Media"}}.
05-11 10:47:45.568 1394 2593 D AudioIDCMicroNegotiator: idcm_af:updateAudioInfo
05-11 10:47:45.568 1394 2593 D AudioIDCMicroNegotiator: idcm_af:obtainFocusState
05-11 10:47:45.571 1394 1937 D AudioIDCMicroNegotiator: idcm_volume:getIDCMicroAudioMute
05-11 10:47:45.571 1394 1937 D AudioIDCMicroNegotiator: idcm_common:requestResult method = isMute parameters = {"functionInfo":{"IDCM_VolumeMute_Media":"WHOLE_VEHICLE"}}

05-11 10:47:45.611 2124 4071 I MicroService: onResponse(requestAudioFocus): {"functionInfo":{"IDCM_AudioFocus":"AudioFocus_Media","IDCM_AudioFocus_Result":"AUDIOFOCUS_REQUEST_GRANTED"}} ★★★ 中控回复焦点结果
05-11 10:47:46.169 1394 2593 W AudioIDCMicroNegotiator: idcm_warn: timeout for obtainFocusState: RequestInfosToIDCM{mPid=4014, mUid=10071} ★★★ 焦点机制判断焦点获取超时
05-11 10:47:46.169 1394 2593 D AudioIDCMicroNegotiator: idcm_af:notifyFocusState -> notify
05-11 10:47:46.169 1394 2593 D AudioIDCMicroNegotiator: idcm_af:obtainFocusState, return: 0 mIsTimeout= true time= 601
05-11 10:47:46.169 1394 2593 D AudioService.PlaybackActivityMonitor: idcm_af:requestAudioFocusToIDCM -> stopPlayer: 159 ★★★ 停止视频播放
05-11 10:47:46.169 1394 1857 D AudioIDCMicroNegotiator: idcm_af:wait messsage done -> onAudioFocusRemoteChanged
05-11 10:47:46.169 1394 2593 D AudioService.PlaybackActivityMonitor: idcm_af:stopPlayer apc= AudioPlaybackConfiguration piid:159 deviceId:0 type:android.media.MediaPlayer u/pid:10071/4014 state:idle attr:AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_MOVIE flags=0x800 tags= bundle=null sessionId:0 ★★★ 视频停止播放

下一步
超时的原因是微服务没有及时分发消息给焦点控制,所以导致焦点超时

#3 Updated by Multimedia组-RD3_TSCD 梁卿山 about 2 years ago

  • Status changed from New to ASSIGNED
  • Assignee changed from Multimedia组-RD3_TSCD 梁卿山 to CD FW-程天颖

HI 天颖

根据上面的分析,帮忙看看微服务在开机时,是否分发消息及时呢,谢谢!

#4 Updated by IoT scm about 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
199510 general/platform/vendor/thundercomm/apps/VehicleControl Pre_figure_turbox-c2130c-la1.1-qssi12-dev
AF:VehicleDataControl: Fixed do command is so slow
TC-RID: 1201-0206101
IssueID: TS-R-BUG-117861
Change-Id: I65e547443cc596e004a6e91511919e0fa62e90c1

#5 Updated by CD FW-程天颖 about 2 years ago

  • Assignee changed from CD FW-程天颖 to Multimedia组-RD3_TSCD 梁卿山

Hi 卿山,
我对微设定的消息处理速度进行了提升,请继续分析

#6 Updated by Multimedia组-RD3_TSCD 梁卿山 about 2 years ago

  • Status changed from ASSIGNED to RESOLVED
  • Assignee changed from Multimedia组-RD3_TSCD 梁卿山 to 物联网测试组_CDTS 唐霞
  • Resolution changed from -- to FIXED
  • Degrated changed from -- to No
  • Root cause set to 对微设定的消息处理速度进行了提升

HI 唐霞

该问题天颖已经处理,请使用5/12后的版本进行验证。

#7 Updated by 物联网测试组_CDTS 唐霞 about 2 years ago

  • Status changed from RESOLVED to ASSIGNED
  • Assignee changed from 物联网测试组_CDTS 唐霞 to Multimedia组-RD3_TSCD 梁卿山

验证不通过,该问题仍存在
验证版本:FlatBuild_HH_MCE_FSE.M.D.user.01.00.C103.202305171038

#8 Updated by Multimedia组-RD3_TSCD 梁卿山 about 2 years ago

  • Assignee changed from Multimedia组-RD3_TSCD 梁卿山 to CD FW-程天颖

HI 天颖

根据以下日志,该问题由于启动时,audio服务没有联通,导致了播放失败,具体联通慢的原因,麻烦分析一下,谢谢!

05-18 19:42:41.784 1201 1958 D AudioIDCMicroNegotiator: idcm_common:onConnectStateChange: -1

05-18 19:42:57.688 1201 1957 D AudioIDCMicroNegotiator: idcm_common:onConnectStateChange: 1

#9 Updated by CD FW-程天颖 about 2 years ago

05-18 19:42:54.880 1201 1713 I MicroServiceManager: requestResult(requestAudioFocus) parameters is{"functionInfo":{"IDCM_AudioFocus":"AudioFocus_Media"}}.
05-18 19:42:54.880 1201 1713 D AudioIDCMicroNegotiator: idcm_af:updateAudioInfo
05-18 19:42:54.880 1201 1713 D AudioIDCMicroNegotiator: idcm_af:obtainFocusState
05-18 19:42:54.881 1964 2005 E MicroService: Client is not connected.
05-18 19:42:54.881 1964 2005 E MicroService: Client is not connected.
05-18 19:42:54.890 1964 2096 E MicroService: DTC_ETH: BaseMicroSocketClient:createClientSocket()
05-18 19:42:54.890 1964 2096 E MicroService: java.net.NoRouteToHostException: Host unreachable
05-18 19:42:54.890 1964 2096 E MicroService: at libcore.io.IoBridge.connect(IoBridge.java:183)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.Socket.connect(Socket.java:621)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.Socket.connect(Socket.java:570)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.Socket.<init>(Socket.java:450)
05-18 19:42:54.890 1964 2096 E MicroService: at java.net.Socket.<init>(Socket.java:292)
05-18 19:42:54.890 1964 2096 E MicroService: at com.thundercomm.microservice.base.BaseMicroSocketClient.createClientSocket(BaseMicroSocketClient.java:20)
05-18 19:42:54.890 1964 2096 E MicroService: at com.thundercomm.microservice.MicroSocketClient.serialSendMessage(MicroSocketClient.java:79)
05-18 19:42:54.890 1964 2096 E MicroService: at com.thundercomm.microservice.MicroSocketClient.lambda$handShark$1$MicroSocketClient(MicroSocketClient.java:94)
05-18 19:42:54.890 1964 2096 E MicroService: at com.thundercomm.microservice.MicroSocketClient$$ExternalSyntheticLambda0.run(Unknown Source:4)
05-18 19:42:54.890 1964 2096 E MicroService: at java.lang.Thread.run(Thread.java:920)
05-18 19:42:55.480 1201 1713 W AudioIDCMicroNegotiator: idcm_warn: timeout for obtainFocusState: RequestInfosToIDCM{mPid=4953, mUid=10072}
05-18 19:42:55.480 1201 1713 D AudioIDCMicroNegotiator: idcm_af:notifyFocusState -> notify
05-18 19:42:55.481 1201 1713 D AudioIDCMicroNegotiator: idcm_af:obtainFocusState, return: 0 mIsTimeout= tr
根据日志分析,开机刚启动时网络环境未创建完成,无法中控进行通信,导致获取焦点失败

#10 Updated by CDTS-TEST 周婷 about 2 years ago

  • Category changed from AUDIO-FW to CD-FW

#11 Updated by CD FW-程天颖 about 2 years ago

  • Assignee changed from CD FW-程天颖 to CD TPM-王祥林

#12 Updated by CDTS-TEST 周婷 about 2 years ago

  • Subject changed from 【AF】【EVT3】【AUDIO】【媒体播放】本地视频播放中,断电重启副屏,重启再次播放本地视频提示”无法播放“ to 同客户bug IOVDEV-29529【AF】【EVT3】【AUDIO】【媒体播放】本地视频播放中,断电重启副屏,重启再次播放本地视频提示”无法播放“

同客户bug IOVDEV-29529【IOV测试】【VC1】【SORP】【语音】【电话】【实车】语音播报:打开副屏,副屏已打开,偶现TTS播报:副驾屏打开失败

#13 Updated by CDTS-TEST 周婷 about 2 years ago

  • Subject changed from 同客户bug IOVDEV-29529【AF】【EVT3】【AUDIO】【媒体播放】本地视频播放中,断电重启副屏,重启再次播放本地视频提示”无法播放“ to 同客户bug IOVDEV-29760【AF】【EVT3】【AUDIO】【媒体播放】本地视频播放中,断电重启副屏,重启再次播放本地视频提示”无法播放“

IOVDEV-29760
【内部】【VC1】【0095】【实车】【EE环境】【副屏】【display】重启后,播放本地视频,会卡住不动,重新点击播放提示“无法播放此视频”

#14 Updated by CD TPM-王祥林 about 2 years ago

  • Status changed from ASSIGNED to RESOLVED
  • Assignee changed from CD TPM-王祥林 to 物联网测试组_CDTS 唐霞

106版本已修复,开机进入Launcher后就会有网络了,音视频可以正常播放。

#15 Updated by 物联网测试组_CDTS 唐霞 about 2 years ago

  • Status changed from RESOLVED to ASSIGNED
  • Assignee changed from 物联网测试组_CDTS 唐霞 to CD TPM-王祥林
  • Priority changed from Normal to High
  • Severity changed from Normal to Major

验证不通过,该问题仍存在(播放本地视频中断电重启,重启完成后桌面已显示完状态栏图标和音量条后,进入视频播放断电时播放的视频提示“无法播放此视频”)
验证版本:FlatBuild_HH_MCE_FSE.M.R.user.01.00.0107.C104

#16 Updated by CD TPM-王祥林 about 2 years ago

  • Assignee changed from CD TPM-王祥林 to Multimedia组-RD3_TSCD 梁卿山

卿山

看看是不是其他原因导致的。

#17 Updated by Multimedia组-RD3_TSCD 梁卿山 about 2 years ago

HI ALL

该问题由其他原因导致,在开机时创建mediaplayer后,设置数据资源时报错。
根据流程查看,都是在获取根据URI获取fd时报错导致。

26201:06-08 11:10:52.546  1546  4547 I MediaFocusControl: abandonAudioFocus() from uid/pid 10065/5210 clientId=android.media.AudioManager@7c02012
26403:06-08 11:10:53.005  1926  2870 D Avrcp_ext: AudioManager Player: AudioPlaybackConfiguration piid:79 deviceId:0 type:android.media.MediaPlayer u/pid:10065/5210 state:idle attr:AudioAttributes: usage=USAGE_UNKNOWN content=CONTENT_TYPE_UNKNOWN flags=0x800 tags= bundle=null sessionId:41
26411:06-08 11:10:53.014  5210  5210 D MediaPlayer: attemptDataSource exception return false: java.io.IOException: Failed to instantiate extractor.
26413:06-08 11:10:53.015  1206  2703 E MediaPlayerService: Couldn't open fd for content://media/external/video/media/796
26414:06-08 11:10:53.015  5210  5210 E MediaPlayerNative: Unable to create media player
26415:06-08 11:10:53.015  5210  5210 W VideoView: Unable to open content: content://media/external/video/media/796
26416:06-08 11:10:53.015  5210  5210 W VideoView: java.io.IOException: setDataSource failed.: status=0x80000000
26417:06-08 11:10:53.015  5210  5210 W VideoView:     at android.media.MediaPlayer.nativeSetDataSource(Native Method)
26418:06-08 11:10:53.015  5210  5210 W VideoView:     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1210)
26419:06-08 11:10:53.015  5210  5210 W VideoView:     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1197)
26420:06-08 11:10:53.015  5210  5210 W VideoView:     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1102)
26421:06-08 11:10:53.015  5210  5210 W VideoView:     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1123)
26422:06-08 11:10:53.015  5210  5210 W VideoView:     at android.widget.VideoView.openVideo(VideoView.java:412)
26423:06-08 11:10:53.015  5210  5210 W VideoView:     at android.widget.VideoView.access$2200(VideoView.java:83)
26424:06-08 11:10:53.015  5210  5210 W VideoView:     at android.widget.VideoView$7.surfaceCreated(VideoView.java:694)
26425:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.SurfaceView.updateSurface(SurfaceView.java:1204)
26426:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.SurfaceView.setWindowStopped(SurfaceView.java:312)
26427:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.SurfaceView.surfaceCreated(SurfaceView.java:1840)
26428:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.ViewRootImpl.notifySurfaceCreated(ViewRootImpl.java:1935)
26429:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3208)
26430:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2146)
26431:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8676)
26432:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1120)
26433:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.Choreographer.doCallbacks(Choreographer.java:926)
26434:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.Choreographer.doFrame(Choreographer.java:859)
26435:06-08 11:10:53.015  5210  5210 W VideoView:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1105)
26436:06-08 11:10:53.015  5210  5210 W VideoView:     at android.os.Handler.handleCallback(Handler.java:938)
26437:06-08 11:10:53.015  5210  5210 W VideoView:     at android.os.Handler.dispatchMessage(Handler.java:99)
26438:06-08 11:10:53.015  5210  5210 W VideoView:     at android.os.Looper.loopOnce(Looper.java:201)
26439:06-08 11:10:53.015  5210  5210 W VideoView:     at android.os.Looper.loop(Looper.java:288)
26440:06-08 11:10:53.015  5210  5210 W VideoView:     at android.app.ActivityThread.main(ActivityThread.java:7880)
26441:06-08 11:10:53.015  5210  5210 W VideoView:     at java.lang.reflect.Method.invoke(Native Method)
26442:06-08 11:10:53.015  5210  5210 W VideoView:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
26443:06-08 11:10:53.015  5210  5210 W VideoView:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)
26444:06-08 11:10:53.015  5210  5210 D VideoView: Error: 1,0


998          int fd = android::openContentProviderFile(url16); ★★★
999          if (fd < 0)
1000          {
1001              ALOGE("Couldn't open fd for %s", url);
1002              return UNKNOWN_ERROR;
1003          }

27  int openContentProviderFile(const String16& uri)
28  {
29      int fd = -1;
30  
31      sp<IServiceManager> sm = defaultServiceManager();
32      sp<IBinder> binder = sm->getService(String16("activity"));
33      sp<IActivityManager> am = interface_cast<IActivityManager>(binder);
34      if (am != NULL) {
35          fd = am->openContentUri(uri); ★★★
36      }
37  
38      return fd;
39  }

38      virtual int openContentUri(const String16& stringUri)
39      {
40          Parcel data, reply;
41          data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor());
42          data.writeString16(stringUri);
43          status_t ret = remote()->transact(OPEN_CONTENT_URI_TRANSACTION, data, & reply);
44          int fd = -1;
45          if (ret == NO_ERROR) {
46              int32_t exceptionCode = reply.readExceptionCode();
47              if (!exceptionCode) {
48                  // Success is indicated here by a nonzero int followed by the fd;
49                  // failure by a zero int with no data following.
50                  if (reply.readInt32() != 0) {
51                      fd = fcntl(reply.readParcelFileDescriptor(), F_DUPFD_CLOEXEC, 0); ★★★
52                  }
53              } else {
54                  // An exception was thrown back; fall through to return failure
55                  ALOGD("openContentUri(%s) caught exception %d\n",
56                          String8(stringUri).string(), exceptionCode);
57              }
58          }
59          return fd;
60      }

下一步:
需要AF组来调查一下为什么获取文件描述符出错。

#18 Updated by Multimedia组-RD3_TSCD 梁卿山 about 2 years ago

HI ALL

进一步调查发现,当问题复现时,该视频文件已经出现问题,
拿到电脑端也无法播放,
所以该问题可能是关机时导致视频文件出现了问题。

当前复现步骤:
1.录制屏幕一段时间
2.使用图库播放该视频
3.下电
4.重启后使用图库播放该视频。

在视频录制完成后,手动sync后,不会再出现该问题。
该问题是异常下电导致数据未能完全保存到设备导致。

#19 Updated by Multimedia组-RD3_TSCD 梁卿山 about 2 years ago

  • Status changed from ASSIGNED to RESOLVED
  • Assignee changed from Multimedia组-RD3_TSCD 梁卿山 to 物联网测试组_CDTS 唐霞
  • Root cause changed from 对微设定的消息处理速度进行了提升 to 对微设定的消息处理速度进行了提升 对于异常下电导致视频数据未完全保存不做处理

HI ALL

总结:
当前复现步骤:
1.录制屏幕一段时间
2.使用图库播放该视频
3.下电
4.重启后使用图库播放该视频。

根本原因:
该问题是异常下电导致数据未能完全保存到设备导致。

结论:
该问题只在异常下电时发生,该场景实车不会遇到,正常下电不会发生该问题。
所以该问题不做处理。

#20 Updated by SZTS_TEST 邹涛 about 2 years ago

  • Status changed from RESOLVED to VERIFIED

在 FlatBuild_HH_MCE_FSE.M.D.user.01.00.C104.202306100050版本未复现,验证通过

#21 Updated by SZTS_TEST 邹涛 about 2 years ago

  • Status changed from VERIFIED to CLOSED

Also available in: Atom PDF