CN116048744A - 一种图像获取方法及相关电子设备 - Google Patents

一种图像获取方法及相关电子设备 Download PDF

Info

Publication number
CN116048744A
CN116048744A CN202211001571.8A CN202211001571A CN116048744A CN 116048744 A CN116048744 A CN 116048744A CN 202211001571 A CN202211001571 A CN 202211001571A CN 116048744 A CN116048744 A CN 116048744A
Authority
CN
China
Prior art keywords
media service
image analysis
service process
image
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211001571.8A
Other languages
English (en)
Other versions
CN116048744B (zh
Inventor
高鑫宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211001571.8A priority Critical patent/CN116048744B/zh
Publication of CN116048744A publication Critical patent/CN116048744A/zh
Application granted granted Critical
Publication of CN116048744B publication Critical patent/CN116048744B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/74Browsing; Visualisation therefor
    • G06F16/743Browsing; Visualisation therefor a collection of video files or sequences
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请提供一种图像获取方法及相关电子设备,该方法包括:第一应用进程向媒体服务进程发送第一图像解析指令,第一图像解析指令为第一应用进程待发送的N条图像解析指令中的任意一条指令,N为该电子设备存储的视频数量;在媒体服务进程确定响应该第一图像解析指令的情况下,媒体服务进程建立目标Binder;媒体服务进程基于该第一图像解析指令获取第一视频中的目标图像;媒体服务进程通过该目标Binder将目标图像发送给第一应用进程;媒体服务进程释放目标Binder的资源;在第一应用进程接收到目标图像后,还有待发送的图像解析指令的情况下,第一应用进程执行向媒体服务进程发送第一图像解析指令的步骤。

Description

一种图像获取方法及相关电子设备
技术领域
本申请涉及图像数据发送领域,尤其涉及一种图像获取方法及相关电子设备。
背景技术
一个进程空间分为用户空间和内核空间(Kernel)。在不同进程间,用户空间的数据不可共享,内核空间的数据可共享,且所有进程共用1个内核空间。在进程内,用户空间和内核空间进行交互需通过系统调用,主要通过函数copy_from_user将用户空间的数据拷贝到内核空间,通过函数copy_to_user将内核空间的数据拷贝到用户空间。
为了保证进程的安全性和独立性,一个进程不能直接操作或者访问另一个进程,即Android的进程是相互独立、隔离的。因此,要进行跨进程的通信,就必须建立两个进程间的班得(Binder)连接。其中,该班得为Binder的英译名词。Binder的作用是连接两个进程,实现mmap系统调用,从而创建数据接收的缓存空间以及管理数据接收缓存。
发明内容
本申请实施例提供了一种图像获取方法及相关电子设备,解决了应用在解析视频的缩略图过程中,因为占用了媒体服务模块大量的Binder,致使媒体服务模块不能与其它进程通信,从而影响电子设备工作性能的问题。
第一方面,本申请实施例提供了一种图像获取方法,应用于电子设备,该电子设备包括第一应用进程和媒体服务进程,该方法包括:第一应用进程向媒体服务进程发送第一图像解析指令,第一图像解析指令为第一应用进程待发送的N条图像解析指令中的任意一条指令,N为该电子设备存储的视频数量;在媒体服务进程确定响应该第一图像解析指令的情况下,媒体服务进程建立目标Binder,目标Binder与第一图像解析指令对应;媒体服务进程基于该第一图像解析指令获取第一视频中的目标图像;媒体服务进程通过该目标Binder将目标图像发送给第一应用进程;媒体服务进程释放目标Binder的资源;在第一应用进程接收到目标图像后,还有待发送的图像解析指令的情况下,第一应用进程执行向媒体服务进程发送第一图像解析指令的步骤。
在上述实施例中,第一应用进程每次只向媒体服务进程发送一条图像解析指令,在媒体服务进程返回该图像解析指令对应视频的目标图像后,才会发送下一条图像解析指令。通过这种方式,媒体服务进程每次只需要与第一应用进程建立一条Binder进行通信,节约了媒体服务进程大量的Binder资源,解决了媒体服务模块大量的Binder被第一应用进程占用,致使媒体服务模块不能与其它进程通信,从而影响电子设备工作性能的问题。
结合第一方面,在一种可能实现的方式中,第一图像解析指令包括第一视频的标识信息、第一视频的存储地址以及时间戳,媒体服务进程基于第一图像解析指令获取第一视频中的目标图像,具体包括:媒体服务进程基于第一视频的标识信息和第一视频的存储地址获取第一视频;媒体服务进程解析第一视频,得到第一视频的每帧视频图像;每帧视频图像包括时间戳;媒体服务进程将时间戳与第一图像解析指令中时间戳相同的视频图像确定为目标图像。这样,媒体服务进程能够根据获取的图像解析指令获取目标图像,并将目标图像返回给第一应用进程,从而使得第一应用进程可以将该目标图像作为视频的缩略图显示在用户界面上,用户可以通过缩略图确定要预览的视频,大大节约了用户的时间,提高了用户体验。
结合第一方面,在一种可能实现的方式中,第一应用进程向媒体服务进程发送第一图像解析指令之前,还包括:第一应用进程向媒体服务进程发送注册信息;该注册信息用于指示媒体服务进程基于图像解析指令获取目标图像;在确定响应注册信息的情况下,媒体服务进程建立第一Binder,第一Binder与该注册信息对应;媒体服务进程生成第一响应消息,并将第一响应消息通过第一Binder发送给第一应用进程,第一响应消息用于指示第一应用进程发送图像解析指令;媒体服务进程释放第一Binder的资源。这样,在第一应用进程向媒体服务进程发送注册信息后,媒体服务进程可以留出资源为第一应用进程解析视频文件,得到目标图像。同时,在媒体服务进程向第一应用进程发送第一响应消息后,由于媒体服务进程会释放第一Binder资源,从而使得媒体服务进程可以节约一条Binder资源,令媒体服务进程可以与其它进程进行通信,从而提高电子设备的工作性能。
第二方面,本申请实施例提供了一种图像获取方法,应用于电子设备,该电子设备包括第一应用进程和媒体服务进程,该方法包括:在判断媒体服务进程当前连接的Binder数量L小于第一阈值R的情况下,第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给媒体服务进程;N为电子设备存储的视频数量,M是基于所述R、L以及N得到的;媒体服务进程对接收的图像解析指令进行检验;在K条图像解析指令检验通过的情况下,媒体服务进程建立K条目标Binder;K小于或等于所述M;媒体服务进程基于K条图像解析指令依次对应获取K个第一视频中的目标图像;媒体服务进程通过目标Binder将目标图像发送给第一应用进程;在第一应用进程接收到目标图像后,还有待发送的图像解析指令的情况下,第一应用进程向媒体服务进程发送待发送的图像解析指令中的任意一条指令;媒体服务进程执行对接收的图像解析指令进行检验的步骤。
在上述实施例中,第一应用进程预先判断媒体服务进程当前连接的Binder数量是否达到第一阈值。若小于第一阈值,第一应用进程再向媒体服务进程发送一条或多条图像解析指令。媒体服务进程在接收到第一应用进程发送的图像解析指令后,会逐条对图像解析指令进行检验,只有检验通过的图像解析指令,媒体服务进程才会为其建立用于通信的Binder。通过上述方式,媒体服务进程可以在不超过其建立Binder上限值的基础上对第一应用进程的全部或部分图像解析指令建立Binder。解决了媒体服务模块大量的Binder被第一应用进程占用,致使媒体服务模块不能与其它进程通信,从而影响电子设备工作性能的问题。
结合第二方面,在一种可能实现的方式中,在K条图像解析指令检验通过的情况下,媒体服务进程建立K条目标Binder,包括:媒体服务进程在确定第j条图像解析指令通过的情况下,建立该条图像解析指令的目标Binder;j的取值为1到K。例如,媒体服务进程检测到其接收的第1条图像解析指令通过检验,媒体服务进程建立第1条图像解析指令的目标Binder。然后,媒体服务进程检验其接收的第2条图像解析指令。若第2条图像解析指令通过检验,媒体服务进程建立第2条图像解析指令的目标Binder。然后,媒体服务进程检验其接收的第3条图像解析指令。若第3条图像解析指令通过检验,媒体服务进程建立第3条图像解析指令的目标Binder。以此类推,直到媒体服务进程检测到一条未通过检验的图像解析指令。这样,媒体服务进程可以在不超过其建立Binder上限值的基础上对第一应用进程的全部或部分图像解析指令建立Binder。解决了媒体服务模块大量的Binder被第一应用进程占用,致使媒体服务模块不能与其它进程通信,从而影响电子设备工作性能的问题。
结合第二方面,在一种可能实现的方式中,在K条图像解析指令检验通过的情况下,媒体服务进程建立K条目标Binder,包括:媒体服务进程在确定K条图像解析指令全部检验通过后,建立K条目标Binder。例如,媒体服务进程对其接收的图像解析指令进行检验,其中第1条图像解析指令~第5条图像解析指令通过检验,媒体服务进程一次性建立这5条图像解析指令的Binder。
结合第二方面,在一种可能实现的方式中,在存在图像解析指令未通过的情况下,媒体服务进程向第一模块发送第二提示消息;第二提示消息用于提示媒体服务进程当前Binder连接数量达到上限值(第二阈值);媒体服务进程在第二时长内暂停对其接收的、未检验的图像解析指令进行检验;在第二时长后,媒体服务进程对其接收的、未检验的、以及上一次检验未通过的图像解析指令进行检验;其中,第二时长T2=v*L,v为预设时间间隔,L为媒体服务进程当前连接的Binder数量。这样,媒体服务进程在第二时长后再次检验图像解析指令,使得媒体服务进程在Binder资源充足的情况下可以为图像解析指令建立Binder,从而加快获取视频缩略图的效率。
结合第二方面,在一种可能实现的方式中,在存在图像解析指令未通过的情况下,媒体服务进程向第一模块发送第二提示消息;第二提示消息用于提示媒体服务进程当前Binder连接数量达到上限值(第二阈值);媒体服务进程在接收第一服务进程发送的下一条目标图像之前,暂停未检验的图像解析指令以及检验未通过的图像解析指令进行检验。
结合第二方面,在一种可能实现的方式中,第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给媒体服务进程之前,还包括:第一应用进程判断媒体服务进程当前连接的Binder数量L是否小于第一阈值;若为否,第一应用进程在第一时长T内暂停发送图像解析指令;在第一时长后,第一应用进程执行判断媒体服务进程当前连接的Binder数量L是否小于第一阈值的步骤;其中,第一时长T根据T=v*L得到,v为预设时间间隔。这样,第一应用进程在第一时长后再次判断媒体服务模块建立的Binder数量,再决定是否发送图像解析指令,在一定程度上可以加快第一应用进程获取视频缩略图的效率。
结合第二方面,在一种可能实现的方式中,媒体服务进程对接收的图像解析指令进行检验,具体包括:根据Mount=L+1计算媒体服务进程响应接收的第j条图像解析指令后,连接的Binder数量Mount,L为媒体服务进程当前连接的Binder数量;j的取值依次从1到K;判断Mount是否大于或等于第二阈值;若为是,媒体服务进程确定第j条图像解析指令未通过检验;若为否,媒体服务进程确定第j条图像解析指令通过检验。这样,媒体服务进程可以在小于或不超过其建立Binder上限值的基础上对第一应用进程的全部或部分图像解析指令建立Binder。解决了媒体服务模块大量的Binder被第一应用进程占用,致使媒体服务模块不能与其它进程通信,从而影响电子设备工作性能的问题。
结合第二方面,在一种可能实现的方式中,媒体服务进程通过目标Binder将目标图像发送给第一应用进程之后,还包括:媒体服务进程释放目标Binder的资源。这样,媒体服务进程可以节约一条Binder资源,令媒体服务进程可以与其它进程进行通信,从而提高电子设备的工作性能。
结合第二方面,在一种可能实现的方式中,第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给媒体服务进程之前,还包括:第一应用进程向媒体服务进程发送注册信息;注册信息用于指示媒体服务进程基于图像解析指令获取目标图像;在确定响应注册信息的情况下,媒体服务进程建立第一Binder,第一Binder与注册信息对应;媒体服务进程生成第一响应消息,并将第一响应消息通过第一Binder发送给第一应用进程,第一响应消息用于指示第一应用进程发送图像解析指令;媒体服务进程释放第一Binder的资源。这样,在第一应用进程向媒体服务进程发送注册信息后,媒体服务进程可以留出资源为第一应用进程解析视频文件,得到目标图像。同时,在媒体服务进程向第一应用进程发送第一响应消息后,由于媒体服务进程会释放第一Binder资源,从而使得媒体服务进程可以节约一条Binder资源,令媒体服务进程可以与其它进程进行通信,从而提高电子设备的工作性能。
第三方面,本申请实施例提供了一种图像获取方法,应用于电子设备,该电子设备包括第一应用进程和媒体服务进程第一应用进程包括第一应用和第一模块,媒体服务进程包括第二模块和图像解析模块,该方法包括:第一应用向第一模块发送N条图像解析指令;N为电子设备存储的视频数量;第一模块向第二模块发送第一图像解析指令,第一图像解析指令为第一应用进程待发送的N条图像解析指令中的任意一条指令;在第二模块确定响应该第一图像解析指令的情况下,第二模块建立目标Binder,目标Binder与第一图像解析指令对应;第二模块将第一图像解析指令发送给图像解析模块;图像解析模块基于该第一图像解析指令获取第一视频中的目标图像;图像解析模块将该目标图像发送给第二模块;第二模块通过该目标Binder将目标图像发送给第一模块;第二模块释放目标Binder的资源;在第一模块接收到目标图像后,还有待发送的图像解析指令的情况下,第一模块执行向媒体服务进程发送第一图像解析指令的步骤;第一模块将该目标图像发送给第一应用。
结合第三方面,在一种可能实现的方式中,第一图像解析指令包括第一视频的标识信息、第一视频的存储地址以及时间戳,图像解析模块基于第一图像解析指令获取第一视频中的目标图像,具体包括:图像解析指令基于第一视频的标识信息和第一视频的存储地址获取第一视频;图像解析模块解析第一视频,得到第一视频的每帧视频图像;每帧视频图像包括时间戳;图像解析模块将时间戳与第一图像解析指令中时间戳相同的视频图像确定为目标图像。
结合第三方面,在一种可能实现的方式中,第一应用向第一模块发送N条图像解析指令之前,还包括:第一应用向第一模块发送注册信息;第一模块向第二模块发送注册信息;该注册信息用于指示图像解析模块基于图像解析指令获取目标图像;在确定响应注册信息的情况下,第二模块建立第一Binder,第一Binder与该注册信息对应;第二模块将该注册信息发送给图像解析模块;图像解析模块生成第一响应消息;图像解析模块将第一响应消息发送给第二模块;第二模块将第一响应消息通过第一Binder发送给第一模块,第一响应消息用于指示第一应用发送图像解析指令;第二模块释放第一Binder的资源。
第四方面,本申请实施例提供了一种图像获取方法,应用于电子设备,该电子设备包括第一应用进程和媒体服务进程,第一应用进程包括第一应用、第一模块,媒体服务进程包括第二模块、图像解析指令,该方法包括:第一应用向第一模块发送N条图像解析指令;在判断媒体服务进程当前连接的Binder数量L小于第一阈值R的情况下,第一模块将待发送的N条图像解析指令中的任意M条图像解析指令发送给第二模块;N为电子设备存储的视频数量,M是基于R、L以及N得到的;第二模块对接收的图像解析指令进行检验;在K条图像解析指令检验通过的情况下,第二模块进程建立K条目标Binder;K小于或等于M;第二模块将通过检验的图像解析指令发送给图像解析模块;图像解析模块基于K条图像解析指令依次对应获取K个第一视频中的目标图像;图像解析模块将目标图像发送给第二模块;第二模块通过目标Binder将目标图像发送给第一模块;在第一模块接收到目标图像后,还有待发送的图像解析指令的情况下,第一模块向媒体服务进程发送待发送的图像解析指令中的任意一条指令;第二模块执行对接收的图像解析指令进行检验的步骤。
结合第四方面,在一种可能实现的方式中,在K条图像解析指令检验通过的情况下,第二模块建立K条目标Binder,包括:第二模块在确定第j条图像解析指令通过的情况下,建立该条图像解析指令的目标Binder;j的取值为1到K。例如,第二模块检测到其接收的第1条图像解析指令通过检验,第二模块建立第1条图像解析指令的目标Binder。然后,第二模块检验其接收的第2条图像解析指令。若第2条图像解析指令通过检验,第二模块建立第2条图像解析指令的目标Binder。然后,第二模块检验其接收的第3条图像解析指令。若第3条图像解析指令通过检验,第二模块建立第3条图像解析指令的目标Binder。以此类推,直到第二模块检测到一条未通过检验的图像解析指令。
结合第四方面,在一种可能实现的方式中,在K条图像解析指令检验通过的情况下,第二模块建立K条目标Binder,包括:第二模块在确定K条图像解析指令全部检验通过后,建立K条目标Binder。例如,第二模块对其接收的图像解析指令进行检验,其中第1条图像解析指令~第5条图像解析指令通过检验,第二模块一次性建立这5条图像解析指令的Binder。
结合第四方面,在一种可能实现的方式中,在存在图像解析指令未通过的情况下,第二模块向第一模块发送第二提示消息;第二提示消息用于提示媒体服务进程当前Binder连接数量达到上限值(第二阈值);第二模块在第二时长内暂停对其接收的、未检验的图像解析指令进行检验;在第二时长后,第二模块对其接收的、未检验的、以及上一次检验未通过的图像解析指令进行检验;其中,第二时长T2=v*L,v为预设时间间隔,L为媒体服务进程当前连接的Binder数量。
结合第四方面,在一种可能实现的方式中,第一模块将待发送的N条图像解析指令中的任意M条图像解析指令发送给第二模块之前,还包括:第一模块判断媒体服务进程当前连接的Binder数量L是否小于第一阈值;若为否,第一模块在第一时长T内暂停发送图像解析指令;在第一时长后,第一模块执行判断媒体服务进程当前连接的Binder数量L是否小于第一阈值的步骤;其中,第一时长T根据T=v*L得到,v为预设时间间隔。
结合第四方面,在一种可能实现的方式中,第二模块对接收的图像解析指令进行检验,具体包括:第二模块根据Mount=L+1计算第二模块响应接收的第j条图像解析指令后,连接的Binder数量Mount,L为媒体服务进程当前连接的Binder数量;j的取值依次从1到K;判断Mount是否大于或等于第二阈值;若为是,第二模块确定第j条图像解析指令未通过检验;若为否,第二模块确定第j条图像解析指令通过检验。
结合第四方面,在一种可能实现的方式中,第二模块通过目标Binder将目标图像发送给第一模块之后,还包括:第二模块释放目标Binder的资源。
结合第四方面,在一种可能实现的方式中,第一应用将N条图像解析指令发送给第一模块之前,还包括:第一应用向第一模块发送注册信息;第一模块向第二模块发送注册信息;注册信息用于指示图像解析模块基于图像解析指令获取目标图像;在确定响应注册信息的情况下,第二模块建立第一Binder,第一Binder与注册信息对应;第二模块将注册信息发送给图像解析模块;图像解析模块生成第一响应消息,并将第一响应消息发送给第二模块;第二模块通过第一Binder发送给第一模块,第一响应消息用于指示第一应用发送图像解析指令;第二模块释放第一Binder的资源;第一模块将第一响应消息发送给第一应用。
第五方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行:通过第一应用进程向媒体服务进程发送第一图像解析指令,第一图像解析指令为第一应用进程待发送的N条图像解析指令中的任意一条指令,N为该电子设备存储的视频数量;通过在媒体服务进程确定响应该第一图像解析指令的情况下,通过媒体服务进程建立目标Binder,目标Binder与第一图像解析指令对应;通过媒体服务进程基于该第一图像解析指令获取第一视频中的目标图像;通过媒体服务进程通过该目标Binder将目标图像发送给第一应用进程;媒体服务进程释放目标Binder的资源;在通过第一应用进程接收到目标图像后,还有待发送的图像解析指令的情况下,通过第一应用进程执行向媒体服务进程发送第一图像解析指令的步骤。
结合第五方面,在一种可能实现的方式中,第一图像解析指令包括第一视频的标识信息、第一视频的存储地址以及时间戳,该一个或多个处理器调用该计算机指令以使得该电子设备执行:通过媒体服务进程基于第一图像解析指令获取第一视频中的目标图像,具体包括:通过媒体服务进程基于第一视频的标识信息和第一视频的存储地址获取第一视频;通过媒体服务进程解析第一视频,得到第一视频的每帧视频图像;每帧视频图像包括时间戳;通过媒体服务进程将时间戳与第一图像解析指令中时间戳相同的视频图像确定为目标图像。
结合第五方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:通过第一应用进程向媒体服务进程发送第一图像解析指令之前,还包括:第一应用进程向媒体服务进程发送注册信息;该注册信息用于指示媒体服务进程基于图像解析指令获取目标图像;在确定响应注册信息的情况下,媒体服务进程建立第一Binder,第一Binder与该注册信息对应;媒体服务进程生成第一响应消息,并将第一响应消息通过第一Binder发送给第一应用进程,第一响应消息用于指示第一应用进程发送图像解析指令;媒体服务进程释放第一Binder的资源
结合第五方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:通过第一应用进程向媒体服务进程发送第一图像解析指令之前,还包括:通过第一应用进程向媒体服务进程发送注册信息;该注册信息用于指示媒体服务进程基于图像解析指令获取目标图像;在确定响应注册信息的情况下,通过媒体服务进程建立第一Binder,第一Binder与该注册信息对应;通过媒体服务进程生成第一响应消息,并将第一响应消息通过第一Binder发送给第一应用进程,第一响应消息用于指示第一应用进程发送图像解析指令;通过媒体服务进程释放第一Binder的资源。
第六方面,本申请实施例提供了一种电子设备,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行:
结合第六方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:在判断媒体服务进程当前连接的Binder数量L小于第一阈值R的情况下,通过第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给媒体服务进程;N为电子设备存储的视频数量,M是基于所述R、L以及N得到的;通过媒体服务进程对接收的图像解析指令进行检验;在K条图像解析指令检验通过的情况下,通过媒体服务进程建立K条目标Binder;K小于或等于所述M;通过媒体服务进程基于K条图像解析指令依次对应获取K个第一视频中的目标图像;通过媒体服务进程通过目标Binder将目标图像发送给第一应用进程;在第一应用进程接收到目标图像后,还有待发送的图像解析指令的情况下,通过第一应用进程向媒体服务进程发送待发送的图像解析指令中的任意一条指令;通过媒体服务进程执行对接收的图像解析指令进行检验的步骤。
结合第六方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:在K条图像解析指令检验通过的情况下,通过媒体服务进程建立K条目标Binder,包括:通过媒体服务进程在确定第j条图像解析指令通过的情况下,建立该条图像解析指令的目标Binder;j的取值为1到K。
结合第六方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:在K条图像解析指令检验通过的情况下,通过媒体服务进程建立K条目标Binder,包括:通过媒体服务进程在确定K条图像解析指令全部检验通过后,建立K条目标Binder。
结合第六方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:在存在图像解析指令未通过的情况下,通过媒体服务进程向第一模块发送第二提示消息;第二提示消息用于提示媒体服务进程当前Binder连接数量达到上限值(第二阈值);通过媒体服务进程在第二时长内暂停对其接收的、未检验的图像解析指令进行检验;在第二时长后,通过媒体服务进程对其接收的、未检验的、以及上一次检验未通过的图像解析指令进行检验;其中,第二时长T2=v*L,v为预设时间间隔,L为媒体服务进程当前连接的Binder数量。
结合第六方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:通过第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给媒体服务进程之前,还包括:通过第一应用进程判断媒体服务进程当前连接的Binder数量L是否小于第一阈值;若为否,通过第一应用进程在第一时长T内暂停发送图像解析指令;在第一时长后,通过第一应用进程执行判断媒体服务进程当前连接的Binder数量L是否小于第一阈值的步骤;其中,第一时长T根据T=v*L得到,v为预设时间间隔
结合第六方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:通过媒体服务进程对接收的图像解析指令进行检验,具体包括:根据Mount=L+1计算媒体服务进程响应接收的第j条图像解析指令后,连接的Binder数量Mount,L为媒体服务进程当前连接的Binder数量;j的取值依次从1到K;判断Mount是否大于或等于第二阈值;若为是,通过媒体服务进程确定第j条图像解析指令未通过检验;若为否,通过媒体服务进程确定第j条图像解析指令通过检验。
结合第六方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:通过媒体服务进程通过目标Binder将目标图像发送给第一应用进程之后,还包括:通过媒体服务进程释放目标Binder的资源。
结合第六方面,在一种可能实现的方式中,该一个或多个处理器调用该计算机指令以使得该电子设备执行:通过第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给媒体服务进程之前,还包括:通过第一应用进程向媒体服务进程发送注册信息;注册信息用于指示媒体服务进程基于图像解析指令获取目标图像;在确定响应注册信息的情况下,通过媒体服务进程建立第一Binder,第一Binder与注册信息对应;通过媒体服务进程生成第一响应消息,并将第一响应消息通过第一Binder发送给第一应用进程,第一响应消息用于指示第一应用进程发送图像解析指令;通过媒体服务进程释放第一Binder的资源。
第七方面,本申请实施例提供了一种电子设备,包括:触控屏、摄像头、一个或多个处理器和一个或多个存储器;所述一个或多个处理器与所述触控屏、所述摄像头、所述一个或多个存储器耦合,所述一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如第一方面或第一方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第二方面或第三方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第三方面或第三方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第四方面或第四方面的任意一种可能实现的方式所述的方法。
第八方面,本申请实施例提供了一种芯片系统,该芯片系统应用于电子设备,该芯片系统包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面或第一方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第二方面或第三方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第三方面或第三方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第四方面或第四方面的任意一种可能实现的方式所述的方法。
第九方面,本申请实施例提供了一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行如第一方面或第一方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第二方面或第三方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第三方面或第三方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第四方面或第四方面的任意一种可能实现的方式所述的方法。
第十方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当该指令在电子设备上运行时,使得该电子设备执行如第一方面或第一方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第二方面或第三方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第三方面或第三方面的任意一种可能实现的方式所述的方法,使得所述电子设备执行如第四方面或第四方面的任意一种可能实现的方式所述的方法。
附图说明
图1是本申请实施例提供的一种操作系统示例图;
图2A-图2B是本申请实施例提供的一组用户界面示例图;
图3A为本申请实施例提供的一种图像获取方法的系统架构图;
图3B为本申请实施例提供的另一种图像获取方法的系统架构图;
图4A是本申请实施例提供的一种图像获取方法的流程图;
图4B是本申请实施例提供的另一种图像获取方法的流程图;
图5是本申请实施例提供的一种电子设备100的硬件结构示意图;
图6是本申请实施例提供的一种电子设备100的软件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或者特性可以包含在本实施例申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是相同的实施例,也不是与其它实施例互斥的独立的或是备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中术语“第一”、“第二”、“第三”等是区别于不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元,或者可选地,还包括没有列出的步骤或单元,或者可选地还包括这些过程、方法、产品或设备固有的其它步骤或单元。
附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前,应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在本说明书中使用的术语“部件”、“模块”、“系统”、“单元”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,单元可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或分布在两个或多个计算机之间。此外,这些单元可从在上面存储有各种数据结构的各种计算机可读介质执行。单元可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一单元交互的第二单元数据。例如,通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
首先对本申请实施例涉及的名词进行示例性而非限定性的说明。
1、进程:进程就是正在运行的程序,它会占用对应的内存区域,由CPU进行执行与计算。进程具有以下三个特点:
(1)独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间
(2)动态性:进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。程序加入了时间的概念以后,称为进程,具有自己的生命周期和各种不同的状态,这些概念都是程序所不具备的。
(3)并发性:多个进程可以在单个处理器CPU上并发执行,多个进程之间不会互相影响。
2、线程:线程是操作系统OS能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以开启多个线程,其中有一个主线程来调用本进程中的其他线程。
因此,进程的切换,实际上就是不同进程之间的主线程切换。多线程可以让同一个进程同时并发处理多个任务,相当于扩展了进程的功能。
如图1所示,一个操作系统中可以有多个进程,在图1中仅列举了A进程、B进程和C进程。一个进程中可以包含一个线程(单线程程序),也可以包含多个线程(多线程程序)。例如,在图1中,每个进程均包括3个线程。每个线程在共享同一个进程中的内存的同时,又有自己独立的内存空间。
随着移动终端的相机技术不断发展,相机的拍摄能力有了大幅提高,用户越来越喜欢使用电子设备进行拍摄,在电子设备中保存的视频数量越来越多。特别的,由于短视频的兴起,许多用户喜欢拍摄短视频记录下生活的点点滴滴,这就可能造成在电子设备中存储有大量的视频。
用户可以访问专门的应用程序来浏览存储在电子设备中的所有视频,所述应用程序可以为图库应用。为了便于说明,本申请实施例以电子设备中,访问、浏览视频的应用程序为图库应用为例,进行说明。
电子设备在检测到针对启动图库应用的指令后,图库应用会获取所有视频文件的缩略图,并将视频文件的缩略图加载到图库应用的界面上。这样,在进入图库界面后,用户可以通过浏览视频的缩略图来确定待预览的视频,从而避免用户在大量的视频文件中寻找待要观看的视频,在一定程度上节省用户查找视频的时间,提升了用户的使用体验。
下面,结合图2A-图2B对电子设备中的应用程序解析、加载视频的缩略图,并将视频缩略图显示在用户界面上的应用场景进行介绍。
如图2A所示,为电子设备100的用户界面10,用户界面10为电子设备100的主界面。在该主界面中包括相机图标101、图库图标102以及其它应用图标。当电子设备100检测到针对主界面上任意一个图标的单击操作时,响应该操作,电子设备可以启动该图标对应的应用程序,并显示该应用程序对应的界面。
示例性的,当检测到针对图库图标102的单击操作后,响应该操作,电子设备100显示如图2B中的用户界面11。
如图2B所示,用户界面11为电子设备100的图库界面。在该图库界面中显示多张视频文件的缩略图。例如,缩略图111、缩略图112、缩略图113、缩略图114、缩略图115、缩略图116、缩略图117。
在电子设备100检测到针对图库图标102的单击操作后,电子设备100会启动图库应用。图库应用需要获取图库中视频文件对应的缩略图后,才能在图库界面中完整地显示视频的缩略图,以便让用户可以基于该缩略图对图库中的视频进行辨别。其中,所述视频可以为动态图片。
下面,结合附图对本申请实施例提供的一种图像获取方法进行说明。本申请实施例以图库应用获取并显示图库中视频的缩略图为例,进行说明。
请参见图3A,图3A为本申请实施例提供的一种图像获取方法的系统架构图。在该系统架构图中包括第一应用进程和媒体服务进程。
第一应用进程包括:第一应用(加载并显示视频缩略图的应用程序)和mediametadataretriever.cpp。媒体服务进程包括:MetadataRetrieverClient.cpp、StagefrightMetadataRetriever。第一应用用于获取并加载视频的缩略图,并将视频的缩略图显示在用户界面上。示例性的,第一应用可以为上述图2A-图2B实施例中的图库应用。为了便于说明,本申请实施例以mediametadataretriever.cpp为第一模块,MetadataRetrieverClient.cpp为第二模块,StagefrightMetadataRetriever为图像解析模块为例,进行说明。
下面,结合图3A,对电子设备100在解析第一应用中单个视频(第一视频)的缩略图的流程进行说明,流程如下:
步骤301A:第一应用向第一模块发送图像解析指令getFrameTime。
其中,getFrameTime用于指示图像解析模块获取第一视频中的目标图像,并将该目标图像传回,以便第一应用可以将该目标图像作为第一视频的缩略图显示在用户界面上。getFrameTime包括第一视频的标识信息、第一视频的存储地址以及目标图像在第一视频中对应的时间戳。
步骤302A:第一模块将getFrameTime发送给第二模块。
步骤303A:第二模块将getFrameTime发送给图像解析模块。
步骤304A:图像解析模块基于getFrameTime中的第一视频标识信息以及第一视频的存储地址,在存储空间找到第一视频,并根据getFrameTime中的时间戳获取目标图像。
步骤305A:图像解析模块将目标图像通过第二模块发送给第一模块。
步骤306A:第一模块将目标图像发送给第一应用。
步骤307A:第一应用将目标图像作为第一视频的缩略图,显示在用户界面上。
上述步骤301A-步骤307A叙述了电子设备在解析单个视频的缩略图时,各功能模块所执行的流程。
事实上,在存在多个视频文件的情况下,第一应用为了尽快加载所有视频的缩略图,并将所有视频的缩略图显示在用户界面上,第一应用通常会使用多个线程同时获取多个视频的缩略图,即:第一应用会通过第一模块同时发送多条getFrameTime给第二模块。其中,每个线程仅发送一条getFrameTime。下面,结合图3B,对电子设备100在解析第一应用中多个视频(假设,有100个视频)的缩略图的流程进行说明,流程如下:
步骤301B:第一应用向第一模块发送100条图像解析指令getFrameTime。
步骤302B:第一模块向第二模块发送16条图像解析指令。
步骤303B:第二模块向图像解析模块发送图像解析指令1。
步骤304B:图像解析模块基于图像解析指令1中的第一视频标识信息以及第一视频的存储地址在存储空间中找到该第一视频,并根据图像解析指令1中的时间戳获取目标图像。
步骤305B:图像解析模块通过第二模块将目标图像发送给第一模块。
步骤306B:第一模块将目标图像发送给第一应用。
步骤307B:第一应用将目标图像作为第一视频的缩略图,显示在用户界面上。
如图3B所示,假设在电子设备中存在100个视频,第一应用启动后,为了尽快在用户界面上获取并显示这100个视频的缩略图,会同时使用100个线程向第一模块发送100条getFrameTime(分别为getFrameTime1~getFrameTime100)。但是,由于第一应用、第一模块与第二模块不属于同一个进程,两个不同进程之间不能直接通信。
因此,第一模块只有与第二模块之间建立Binder连接第二模块才会将第一模块发送的getFrameTime发送给图像解析模块。即:第一模块向第二模块发送一条getFrameTime,第二模块必须要建立一条Binder才会将getFrameTime发送给图像解析模块。然后,第二模块通过先前建立的Binder将图像解析模块返回的目标图像发送给第一模块。实际上,两个进程之间能够建立的Binder数量是有限的,当进程之间建立的Binder数量超过了进程的上限值时,该进程就不能与其它进程再建立Binder,从而不能与其它进程进行通信。
示例性的,假设媒体服务进程能够建立的Binder数量的最大值为16。在第二模块接收到第一应用进程发送的16条图像解析指令(getFrameTime1~getFrameTime16)后,若第二模块全部响应这16条图像解析指令,并与第一模块建立16个Binder,分别为Binder1~Binder16。此时,第二模块将这16条图像解析指令发送给图像解析模块。
假设,图像解析模块在接收到getFrameTime1后,根据getFrameTime1中视频的存储地址和视频标识信息在对应的存储空间中找到该视频的视频文件。然后,对该视频进行解析,得到该视频每一帧图像。其中,每一帧图像都包括一个时间戳。图像解析模块将时间戳与getFrameTime1中时间戳相同的图像确定为目标图像。在确定目标图像之后,图像解析模块会将目标图像发送给第二模块。第二模块会根据建立的Binder1将该目标图像发送给第一模块,再由第一模块将该目标图像发送给第一应用。
同样的,图像解析模块在接收到其它getFrameTime后,图像解析模块会根据图像解析指令获取到对应视频的目标图像,将目标图像返回给第二模块。然后,再由第二模块基于先前建立的Binder将目标图像通过第一模块发送给第一应用。在第二模块将目标图像返回给第一模块后,第二模块可以释放之前建立的Binder的资源。这样,第二模块可以响应第一模块发送的其它getFrameTime,或者与其它进程进行通信。
由上述实施例可知,在第一应用进程和媒体服务进程进行通信的过程中,若媒体服务进程的Binder被第一应用进程耗尽。那么,媒体服务进程无法与其它进程进行通信。
此外,虽然第一应用进程可以通过并行的方式将getFrameTime发送给媒体服务进程(第一应用进程可以同时发送16条getFrameTime给媒体服务进程)。但是,由于有全局锁的原因,图像解析模块的工作方式是串行的,即:图像解析模块在接收第二模块发送的一条getFrameTime后,会对该条getFrameTime对应视频进行解析,得到该视频的目标图像。图像解析模块将目标图像通过第二模块发送给第一模块后,图像解析模块才会对下一条getFrameTime对应视频进行解析,从而得到该视频的目标图像。
若在图像解析模块获取视频的目标图像过程中,发生了卡顿,就会造成getFrameTime发生拥堵。例如,第一应用进程向媒体服务进程发送了16条getFrameTime,在图像解析模块获getFrameTime1对应视频的目标图像过程中发生了卡顿。此时,getFrameTime2~getFrameTime16需要排队等候。由于getFrameTime1~getFrameTime16占用媒体服务进程所有的Binder。因此,在图像解析模块卡顿的情况下,媒体服务进程不能与其它的进程进行通信,从而造成电子设备中与媒体服务进程相关的其它进程也会受到影响。
例如,电子设备播放图库应用中存在的视频需要通过本地的视频播放器(MediaPlayer)指示视频编解码器对视频进行编解码才能播放视频。MediaPlayer与视频编解码之间的通信的信息需要媒体服务进程进行响应和转发。由于在解析视频缩略图的过程中,媒体服务进程(包括媒体服务进程)的所有Binder被占用。因此,MediaPlayer无法与媒体服务进程建立Binder连接,MediaPlayer自然也不能与视频编解码器进行通信,从而无法播放视频。
此外,对于一些需要与媒体服务进程进行通信或者协同工作的系统组件,在媒体服务进程的Binder长时间被占用导致这些系统组件不能与媒体服务进程通行时,也会导致这些系统组件不能正常工作,从而可能造成电子设备死机的问题。
为了解决在应用获取视频缩略图的过程中,由于占用媒体服务进程太多Binder,从而使得媒体服务进程不能与其它进程进行通信,进而降低电子设备工作性能的问题。本申请实施例提出了另外一种Binder连接的方法,该方法包括:给第一模块设置全局锁,使得第一模块通过串行的方式与媒体服务进程中的第二模块进行通信。这样,在第一应用(例如,图库应用)启动后,第一应用并行向第一模块发送多条图像解析指令后,第一模块每次只向第二模块发送一条图像解析指令。当且仅当媒体服务进程返回该图像解析指令对应的视频目标图像后,第一模块才会发送下一条图像解析指令。通过上述方式,第一应用进程每次与媒体服务进程之间仅需建立一条Binder连接,从而不会影响媒体服务进程与其它进程进行通信,从而降低电子设备的工作性能。
下面,结合附图对本申请实施例提供的另一种图像获取方法的流程进行说明。
在本申请实施例所述的图像获取方法中包括两个进程,分别为第一应用进程和媒体服务进程。其中,第一应用进程包括:第一应用、android_media_MediaMetadataRetriever.cpp、mediametadataretriever.cpp以及MediaMetadataRetriever.java。媒体服务进程包括:MetadataRetrieverClient.cpp和StagefrightMetadataRetriever。
第一应用位于安卓软件架构中的应用程序层,第一应用用于加载电子设备存储的视频文件的缩略图,并将缩略图显示在用户界面上。
MediaMetadataRetriever.java位于安卓软件框架中的java层,用于将第一应用的图像解析指令透传给android_media_MediaMetadataRetriever.cpp。此外,MediaMetadataRetriever.java还用于将android_media_MediaMetadataRetriever.cpp传回的目标图像发送给第一应用。
mediametadataretriever.cpp位于安卓软件框架中的本地层(native层),用于与服务进程建立Binder连接,从而实现媒体服务进程与第一应用进程之间的跨进程通信。
为了便于叙述,本申请实施例以第一应用为图库应用、mediametadataretriever.cpp为第一模块、MetadataRetrieverClient.cpp为第二模块、StagefrightMetadataRetriever为图像解析模块、MediaMetadataRetriever.java为第三模块、android_media_MediaMetadataRetriever.cpp为第四模块为例,进行举例说明。
请参见图4A,图4A是本申请实施例提供的一种图像获取方法的流程图。在图4A的实施例中,通过给第一应用进程中的第一模块设置全局锁,从而使得第一应用进程和媒体服务进程之间的跨进程通信为单Binder通信。解决了第一应用在获取视频缩略图时,由于并行发送多条图像解析指令,而占用媒体服务进程过多的Binder,令媒体服务进程不能与其它进程进行通信。进而,造成与媒体服务进程相关的其它进程不能正常运行,影响电子设备工作性能的问题。电子设备中各功能模块进行Binder连接的具体流程如下:
步骤401A:响应第一操作,第一应用启动。
示例性的,第一应用可以为上述图2A是实施例中的图库应用。第一操作可以为上述图2A实施例中,针对图库坐标102的单击操作。
电子设备在检测到第一操作后,响应该操作,电子设备启动第一应用。此时,电子设备开始启动解析电子设备所存储的视频缩略图的流程。
步骤402A:第一应用向第二模块发送注册信息。
具体地,该注册信息用于指示图像解析模块在接收第一应用发送的图像解析指令后,解析对应视频,并获得该视频中的目标图像。然后,将目标图像返回给第一应用,以便第一应用可以在浏览界面中加载显示对应视频的缩略图。
示例性的,第一应用可以将注册信息依次通过第三模块和第四模块透传给第一模块。然后,再由第一模块将该注册信息发送给第二模块。
步骤403A:若第二模块确定响应所述注册信息,所述第二模块建立第一Binder。
具体的,第一模块在将注册信息发送给第二模块之后,第二模块接收该注册信息。若第二模块确定响应该注册信息,第二模块可以建立一条与第一模块用于通信的第一Binder。在第一Binder建立完成后,第二模块可以将该注册信息发送给图像解析模块。本申请实施例以第二模块确定响应该注册信息为例,进行说明。
步骤404A:所述第二模块将所述注册信息发送给图像解析模块。
步骤405A:图像解析模块生成第一响应消息,并将所述第一响应消息发送给所述第二模块。
具体的,图像解析模块在接收到注册信息后,会根据该注册信息生成第一响应消息。其中,第一响应消息用于指示第一应用已完成注册,可以获取视频的缩略图。
步骤406A:所述第二模块通过所述第一Binder将所述第一响应消息发送给第一模块。
具体的,第二模块在接收图像解析模块发送的第一响应消息后,可以通过已建立的第一Binder将第一响应消息发送给第一模块。从而实现第一应用进程与媒体服务进程之间的通信。
可选地,在第二模块将第一响应消息发送给第一模块之后,第二模块可以释放第一Binder的资源。这样,可以为媒体服务进程节约一条Binder,以便媒体服务进程可以与其它进程建立Binder进行通信,从而提高电子设备的工作性能。
步骤407A:所述第一模块将所述第一响应消息发送给所述第一应用。
在一种可能实现的方式中,在第一模块接收到第一响应消息后,第一模块可以将第一响应消息发送给第四模块,再由第四模块将第一响应消息发送给第三模块。最后,第三模块再将第一响应消息发送给第一应用。
在一种可能实现的方式中,在第一模块接收到第一响应消息后,第一模块可以直接把第一响应消息发送给所述第一应用。
步骤408A:第一应用向第一模块发送N条图像解析指令。
具体地,第一应用在接收到图像解析模块发送的第一响应消息之后,可以向第一模块发送N条图像解析指令。示例性的,第一应用可以向第一模块并行发送N条指令。其中,所述N为电子设备中存储的视频数量,每一条图像解析指令对应一个视频文件。在每一条图像解析指令中包括视频的标识信息、视频地址以及目标图像在视频中对应的时间戳。
可选地,第一应用可以先将该N条图像解析指令发送给第三模块,再由第三模块将该N条图像解析指令发送给第四模块。最后,再由第四模块将该第N条图像解析指令发送给第一模块。
步骤409A:第一模块将第一图像解析指令发送给第二模块。
具体的,由于第一模块设置了全局锁,当第一模块接收到第一应用发送的N条图像解析指令后,第一模块可以对这N条图像解析指令进行编号。然后,根据编号依次将图像解析指令发送给第二模块。所述第i条图像解析指令为第一图像解析指令。
可选的,在第一模块将第i条图像解析指令发送给图像解析模块后,第一模块可以根据公式i=i+1更新i。其中,i的初始值可以为1。
在一种可能实现的方式中,第一模块可以将待发送的图像解析指令中任意一条图像解析指令发送给第二模块,发送的图像解析指令为第一图像解析指令。
步骤410A:在第二模块确定响应所述第一图像解析指令的情况下,所述第二模块建立目标Binder。
具体的,目标Binder与第一图像解析指令对应,用于第二模块与第一模块之间的通信。在第二模块接收到第一图像指令后,第二模块判断是否响应该图像指令。在第二模块确定响应所述第一图像解析指令的情况下,所述第二模块建立目标Binder。
若第二模块不响应该条图像解析指令,第二模块不会建立与该条图像解析指令相关的目标Binder,也不会将该条解析指令发送给图像解析模块。
步骤411A:第二模块将所述第一图像解析指令发送给图像解析模块。
步骤412A:图像解析模块基于所述第一图像解析指令解析第一视频,并得到所述第一视频中的目标图像。
具体地,第一视频为所述第一图像解析指令对应的视频。图像解析模块在接收到第一图像解析指令后,解析该图像解析指令,并获取视频的标识信息、存储地址信息以及时间戳。然后,图像解析模块根据第一视频的存储地址信息以及第一视频的标识信息在对应的存储空间中解析第一视频中的每一帧图像,获取图像的时间戳。然后,图像解析模块将时间戳与该条图像解析指令中时间戳相同的图像确定为目标图像。该目标图像为第一视频的缩略图。
步骤413A:图像解析模块将所述目标图像发送给第二模块。
具体地,图像解析模块在获取到目标图像后,将目标图像发送给第二模块,以便第二模块将该目标图像发送给第一应用。其中,在目标图像中可以包括第一视频的标识信息。
步骤414A:所述第二模块将所述目标图像通过所述目标Binder发送给所述第一模块。
在第二模块接收到目标图像后,第二模块将目标图像通过目标Binder发送给第一模块。
可选的,第二模块将目标图像发送给第一模块后,第二模块可以释放目标Binder的资源。这样,可以节约媒体服务进程的Binder数量,以便媒体服务进程可以与其它进程建立Binder进行通信,从而提高电子设备的工作性能。
步骤415A:所述第一模块将所述目标图像发送给第一应用。
具体地,第一模块在接收到图像解析模块发送的目标图像后,会将该目标图像发送给第一应用,使得第一应用可以将该目标图像显示在第一界面上。示例性的,第一界面可以为上述图2B中的用户界面11,目标图像可以为缩略图111。
可选的,第一模块可以先将目标图像发送给第四模块,再由第四模块将目标图像发送给第三模块,再由第三模块将目标图像发送给第一应用。
步骤416A:第一应用在第一界面上显示所述目标图像的缩略图。
具体地,第一应用在接收到图像解析模块发送的目标图像后,第一应用将该目标图像显示在第一界面上。示例性的,第一界面可以为上述图2B中的用户界面11,目标图像可以为缩略图111。
步骤417A:在第一模块存在待发送的图像解析指令的情况下,第一模块执行步骤409A。
本申请实施例提供的一种图像获取方法中,通过在第一应用进程的第一模块中设置全局锁,从而令第一模块串行向媒体服务进程发送缩略图的图像解析指令,即:每次进行媒体服务进程发送一条图像解析指令,等到媒体服务进程发送该条指令对应的目标图像后,第一模块再向媒体服务进程发送下一条图像解析指令。通过这种方法,在保证第一应用进程能够正常加载显示视频缩略图的基础上,解决了第一应用进程向媒体服务进程并行发送图像解析指令,而占用媒体服务进程大量的Binder,从而使得媒体服务进程没有多余的Binder与其它进程进行通信,进而影响电子设备的系统工作的问题。
在上述图4A所述的实施例中,叙述了通过在第一应用进程中设置全局锁的方法来减少媒体服务进程与第一应用进程之间连接的Binder数量。下面,结合图4B,对本申请实施例提供的另一种图像获取方法进行叙述。请参见图4B,图4B是本申请实施例提供的另一种图像获取方法的流程图,具体流程如下:
步骤401B:响应第一操作,第一应用启动。
示例性的,第一应用可以为上述图2A是实施例中的图库应用。第一操作可以为上述图2A实施例中,针对图库坐标102的单击操作。
电子设备在检测到第一操作后,响应该操作,电子设备启动第一应用。此时,电子设备开始启动解析电子设备所存储的视频缩略图的流程。
步骤402B:第一应用向第二模块发送注册信息。
具体地,该注册信息用于指示图像解析模块在接收第一应用发送的图像解析指令后,解析对应视频,并获得该视频中的目标图像。然后,将目标图像返回给第一应用,以便第一应用可以在浏览界面中加载显示对应视频的缩略图。
示例性的,第一应用可以将注册信息依次通过上述图4A中的第三模块和第四模块透传给第一模块。然后,再由第一模块将该注册信息发送给第二模块。
步骤403B:若第二模块确定响应所述注册信息,所述第二模块建立第一Binder。
具体的,第一模块在将注册信息发送给第二模块之后,若第二模块确定响应该注册信息,第二模块可以建立一条与第一模块用于通信的第一Binder。在第一Binder建立完成后,第二模块可以将该注册信息发送给图像解析模块。本申请实施例以第二模块确定响应该注册信息为例,进行说明。
步骤404B:所述第二模块将所述注册信息发送给图像解析模块。
步骤405B:图像解析模块生成第一响应消息,并将所述第一响应消息发送给所述第二模块。
具体的,图像解析模块在接收到注册信息后,会根据该注册信息生成第一响应消息。其中,第一响应消息用于指示第一应用已完成注册,可以获取视频的缩略图。
步骤406B:所述第二模块通过所述第一Binder将所述第一响应消息发送给第一模块。
具体的,第二模块在接收图像解析模块发送的第一响应消息后,可以通过已建立的第一Binder将第一响应消息发送给第一模块。从而实现第一应用进程与媒体服务进程之间的通信。
可选地,在第二模块将第一响应消息发送给第一模块之后,第二模块可以释放第一Binder的资源。这样,可以为媒体服务进程节约一条Binder,以便媒体服务进程可以与其它进程建立Binder进行通信,从而提高电子设备的工作性能。
步骤407B:所述第一模块将所述第一响应消息发送给所述第一应用。
可选的,第一模块可以将第一响应消息发送给上述图4A中的第四模块,再由第四模块将第一响应消息发送给上述图4A中的第三模块。最后,第三模块再将第一响应消息发送给第一应用。
在一种可能实现的方式中,第一模块可以直接把第一响应消息发送给所述第一应用。
步骤408B:第一应用向第一模块发送N条图像解析指令。
具体地,第一应用在接收到图像解析模块发送的第一响应消息之后,可以向第一模块发送N条图像解析指令。示例性的,第一应用可以向第一模块并行发送N条指令。其中,所述N为电子设备中存储的视频数量,每一条图像解析指令对应一个视频文件。在每一条图像解析指令中包括视频的标识信息、视频地址以及目标图像在视频中对应的时间戳。
可选地,第一应用可以先将该N条图像解析指令发送给上述图4A中的第三模块,再由第三模块将该N条图像解析指令发送给上述图4A中的第四模块。最后,再由第四模块将该第N条图像解析指令发送给第一模块。
步骤409B:第一模块判断媒体服务进程当前连接的Binder数量L是否小于第一阈值。
具体地,第一模块在向第二模块发送图像解析指令之前,首先判断媒体服务进程当前已连接的Binder数量是否小于第一阈值。
其中,第一阈值可以基于历史数据得到,也可以基于实验数据得到,还可以基于经验值得到,本申请实施例对此不做限制。
步骤410B:在判断媒体服务进程当前连接的Binder数量大于或等于第一阈值的情况下,第一模块在第一时长T内暂停向第二模块发送图像解析指令。
具体地,在第一模块判断媒体服务进程当前连接的Binder数量大于或等于第一阈值的情况下,第一模块可以确定媒体服务进程当前所连接的Binder数量较多。
因此,第一模块在判断出媒体服务进程当前连接的Binder数量大于或等于第一阈值的情况下,第一模块会在接下来的第一时长T内暂停向第二模块发送图像解析指令。在等待第一时长之后,第一模块会再判断第二模块连接的Binder数量,即:第一模块再次执行步骤409B。
示例性的,第一模块可以通过如下公式计算第一时长T:
T=v*L
其中,v为预设的时间间隔,L为媒体服务进程当前连接的Binder的数量。示例性的,v可以为200微秒。
步骤411B:在判断媒体服务进程当前连接的Binder数量小于第一阈值的情况下,计算待发送的图像解析指令的数量M。
具体地,第一模块判断媒体服务进程当前连接的Binder数量小于第一阈值的情况下,第一模块计算当前可以发送的图像解析指令的数量M。
示例性的,第一模块可以通过计算第一阈值与第二模块当前连接的Binder数量的差值Q来计算待发送的图像解析指令的数量M。
其中,若第一模块接收的图像解析指令的数量N大于Q时,待发送的图像解析指令的数量M为Q。若第一模块接收的图像解析指令的数量N小于或等于Q时,待发送的图像解析指令的数量M为N。
步骤412B:第一模块向第二模块发送M条图像解析指令。
步骤413B:所述第二模块对接收的图像解析指令进行检验。
步骤414B:在K条图像解析指令检验通过的情况下,第二模块建立K条目标Binder。
具体地,K小于或等于M。第一模块向第二模块发送图像解析指令后,第二模块会对其接收的每条图像解析指令进行检验。在图像解析指令通过后,第二模块会建立与通过检验的图像解析指令相关的目标Binder。其中,若存在多条图像解析指令检验通过,则第二模块就建立与通过检验的图像解析指令对应的多条目标Binder用于与第一模块通信。其中,通过检验的图像解析指令为第一目标图像解析指令。例如,由4条图像解析指令(图像解析指令1~图像解析指令4)通过第二模块的检验,则第二模块建立4条Binder(Binder1~Binder4)。
其中,Binder1与图像解析指令1对应,Binder2与图像解析指令2对应,Binder3与图像解析指令3对应,Binder4与图像解析指令4对应。第二模块建立目标Binder的方式有两种:
第一种:第二模块检验一条图像解析指令,检验通过后,为该图像解析指令建立目标Binder。然后,再检验下一条图像解析指令。
第二种:第二模块逐条检验图像解析指令,对检验通过的图像解析指令统一建立目标Binder。例如,第二模块检验图像解析指令1,检验通过后,第二模块检验图像解析指令2。检验通过后,第二模块检验图像解析指令3。检验通过后,第二模块检验图像解析指令4,检验通过后,第二模块检验图像解析指令5,图像解析指令5检验不通过,第二模块本轮不再检验其余的图像解析指令。然后,第二模块分别为图像解析指令1~图像解析指令4建立Binder1~Binder4。
下面,对第二模块对其接收的图像解析指令检验,进行说明:
第二模块在对其中一条图像解析指令进行检验时,第二模块可以根据公式Mount=L+1来计算媒体服务进程连接的Binder数量Mount。其中,L为媒体服务进程当前连接的Binder数量,Mount为响应该条图像解析指令后,媒体服务进程连接的Binder数量。
然后,第二模块判断Mount是否大于或等于第二阈值。其中,第二阈值大于或等于第一阈值。第二阈值可以基于经验值得到,也可以基于实验数据得到,还可以基于历史数据得到,本申请实施例不做限制。
在Mount小于第二阈值的情况下,第二模块确定当前检验的该条图像解析指令通过检验,确定为第一图像解析指令,并建立与该条图像解析指令对应的目标Binder,用于与第一模块通信。
在Mount小于第二阈值的情况下,第二模块确定当前检验的这条图像解析指令检验不通过。
可选地,在存在图像解析指令未通过检验的情况下,第二模块不会建立与该条图像解析指令相关的目标Binder,在预设时长T1内且未接收到第一模块发送的下一条图像解析指令时,不会再检验其它的图像解析指令,在经过预设时长T1后,第二模块在对其接收的、非第一图像解析指令进行检验。T1可以由经验值得到,也可以由历史数据得到,还可以由实验数据得到,本申请实施例不做限制。优选地,预设时长T1可以为第一时长T。
例如,第二模块接收图像解析指令1~图像解析指令6,图像解析指令1~图像解析指令4为通过检验的图像解析指令。第二模块为这4条图像解析指令建立4条目标Binder。第二模块在确定图像解析指令5检验未通过时,第二模块在第二时长T2内(例如,T2为200毫秒)不再对图像解析指令5和图像解析指令6进行检验。在200毫秒后,才会对图像解析指令5和图像解析指令6进行检验。或者,在第二模块接收新的图像解析指令(例如,图像解析指令7),此时,第二模块会对图像解析指令5~图像解析指令7进行逐条检验。
可选的,在存在图像解析指令检验不通过的情况下,第二模块可以向第一模块发送第二提示消息,所述第二提示消息用于提示当前媒体服务进程连接的Binder数量超过其上限值。
步骤415B:第二模块向图像解析模块发送通过检验的图像解析指令。
具体地,第二模块可以通过并行的方式向图像解析模块发送通过检验的图像解析指令,即:第二模块每次向图像解析模块发送多条通过检验的图像解析指令。第二模块也可以通过串行的方式向图像解析模块发送通过检验的图像解析指令,即:第二模块每次向图像解析模块发送一条通过检验的图像解析指令,当图像解析模块返回一帧目标图像时,才会触发第二模块向图像解析模块发送下一条通过检验的图像解析指令。
步骤416B:图像解析模块根据接收的图像解析指令对所述图像解析指令对应的第一视频进行解析,得到目标图像。
具体地,图像解析模块的工作模式是串行工作模式,即:不论第二模块是将过检验的图像解析指令通过串行的方式发送给图像解析模块,还是通过并行的方式将过检验的图像解析指令发送给图像解析模块,图像解析模块每次只会解析一条通过检验的图像解析指令对应的视频,并获取该视频对应的目标图像。只有完成当前通过检验的图像解析指令对应视频的解析工作后,图像解析模块才会对下一条图像解析指令对应的视频进行解析。
步骤417B:图像解析模块将所述目标图像发送给第二模块。
步骤418B:第二模块将所述目标图像通过目标Binder发送给所述第一模块。
具体的,目标Binder为该目标图像对应的通过检验的图像解析指令的Binder,目标图像可以包括对应视频的标识信息。
可选的,在第二模块将所述目标图像通过目标Binder发送给所述第一模块之后,第二模块可以释放目标Binder的资源,以便媒体服务进程可以与其它进程进行通信,从而提高电子设备的工作性能。
步骤419B:所述第一模块将所述目标图像发送给第一应用。
可选的,第一模块可以将所述目标图像发送给上述图4A中的第四模块,再由第四模块将所述目标图像发送给上述图4A中的第三模块,再由第三模块发送给所述第一应用。
在一种可能实现的方式中,第一模块可以直接将所述目标图像发送给第一应用。
步骤420B:第一应用在第一界面上显示所述目标图像的缩略图。
具体地,第一应用在接收到目标图像后,对该目标图像进行解析,将该目标图像与第一视频进行对应,并在第一界面上显示该目标图像。示例性的,第一界面可以为上述图2B中的用户界面11。
步骤421B:在存在未发送的图像解析指令的情况下,所述第一模块向所述第二模块发送第二图像解析指令,所述第二图像解析指令为第一模块中待发送的图像解析指令中,任意一条图像解析指令。
应当理解的是,步骤421B可以在步骤419B之前执行,也可以在步骤419B之后执行,还可以和步骤419B同时执行,本申请实施例不做限制。
步骤422B:所述第二模块接收所述第二图像解析指令,并执行步骤413B。
上述图4B中提供的图像获取方法,在第一模块会判断媒体服务进程当前连接的Binder数量是否超过设定的第一阈值。若超过,第一模块会等待一段时长T再对媒体服务进程的Binder连接数量进行判断,再决定是否发送图像解析指令。在未超过的情况下,第一模块根据预先计算的发送数量向第二模块发送对应数量的图像解析指令。第二模块在接收到图像解析指令后,根据当前媒体服务进程已连接的Binder数量确定是否接收该图像解析指令。通过上述方式,解决了在解析视频缩略图的过程中,由于第一应用进程占用了媒体服务进程过多的Binder,使得媒体服务进程无法与其它进程进行通信,从而影响电子设备的系统的工作性能的问题。
下面,对电子设备的硬件结构进行介绍,该电子设备可以为上述电子设备100、电子设备200以及电子设备300中的任意一种电子设备。本申请实施例以电子设备100为例,进行说明。
电子设备100可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digitalassistant,PDA)、增强现实(augmentedreality,AR)\虚拟现实(virtual reality,VR)设备等。本申请实施例对该电子设备100的具体类型不作特殊限制。
请参见图5,图5是本申请实施例提供的一种电子设备100的硬件结构示意图。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别终端设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图6是本申请实施例提供的一种电子设备100的软件结构框图。该分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。如图6所示,应用程序包可以包括相机,日历,地图,WLAN,音乐,短信息,第一应用等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图6所示,应用程序框架层包括JAVA层、JNI层、Native层。其中,JAVA层包括MediaMetadataRetriever.java,JNI层包括android_media_MediaMetadataRetriever.cpp,Native层包括mediametadataretriev er.cpp、MetadataRetrieverClient.cpp和StagefrightMetadataRetriever。MediaMetadataRetriever.java、android_media_MediaMetadataRetriever.cpp和mediametadataretriever.cpp属于第一应用进程,MetadataRetrieverClient.cpp和StagefrightMetadataRetriever属于媒体服务进程。
MediaMetadataRetriever.java用于接收第一应用发送的注册信息和图像解析指令,并将该注册信息和图像解析指令透传给android_media_MediaMetadataRetriever.cpp。
MediaMetadataRetriever.java还用于接收android_media_MediaMetadataRetriever.cpp发送的目标图像,并向该目标图像发送给第一应用。
android_media_MediaMetadataRetriever.cpp用于接收MediaMetadataRetriever.java发送的注册信息和图像解析指令,并将该注册信息和图像解析指令透传给mediametadataretriever.cpp。
android_media_MediaMetadataRetriever.cpp还用于接收mediametadataretriever.cpp发送的目标图像,并向该目标图像发送给MediaMetadataRetriever.java。mediametadataretriever.cpp用于接收android_media_MediaMetadataRetriever.cpp发送的注册信息和图像解析指令,并将该注册信息和图像解析指令透传给MetadataRetrieverClient.cpp。
mediametadataretriever.cpp还用于接收MetadataRetrieverClient.cpp发送的目标图像,并向该目标图像发送给android_media_MediaMetadataRetriever.cpp。
MetadataRetrieverClient.cpp用于接收mediametadataretriever.cpp发送的注册信息和图像解析指令,并将该注册信息和图像解析指令透传给StagefrightMetadataRetriever。
MetadataRetrieverClient.cpp还用于接收StagefrightMetadataRetriever发送的目标图像,并向该目标图像发送给mediametadataretriever.cpp。
StagefrightMetadataRetriever用于接收MetadataRetrieverClient.cpp发送的注册信息,并将基于该注册信息生成响应消息。然后,将该响应消息发送给MetadataRetrieverClient.cpp。
StagefrightMetadataRetriever还用于接收MetadataRetrieverClient.cpp发送的图像解析指令,基于该图像解析指令解析对应视频,得到该视频的目标图像。然后,将目标图像发送给MetadataRetrie verClient.cpp。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid StateDisk)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
总之,以上所述仅为本发明技术方案的实施例,并非用于限定本发明的保护范围。凡根据本发明的揭露,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种图像获取方法,其特征在于,应用于电子设备,所述电子设备包括第一应用进程和媒体服务进程,所述方法包括:
所述第一应用进程向所述媒体服务进程发送第一图像解析指令,所述第一图像解析指令为所述第一应用进程待发送的N条图像解析指令中的任意一条指令,所述N为所述电子设备存储的视频数量;
在所述媒体服务进程确定响应所述第一图像解析指令的情况下,所述媒体服务进程建立目标Binder,所述目标Binder与所述第一图像解析指令对应;
所述媒体服务进程基于所述第一图像解析指令获取第一视频中的目标图像;
所述媒体服务进程通过所述目标Binder将所述目标图像发送给所述第一应用进程;
所述媒体服务进程释放所述目标Binder的资源;
在所述第一应用进程接收到所述目标图像后,还有待发送的图像解析指令的情况下,所述第一应用进程执行向所述媒体服务进程发送第一图像解析指令的步骤。
2.如权利要求1所述的方法,其特征在于,所述第一图像解析指令包括所述第一视频的标识信息、所述第一视频的存储地址以及时间戳,所述媒体服务进程基于所述第一图像解析指令获取第一视频中的目标图像,具体包括:
所述媒体服务进程基于所述第一视频的标识信息和所述第一视频的存储地址获取所述第一视频;
所述媒体服务进程解析所述第一视频,得到所述第一视频的每帧视频图像;所述每帧视频图像包括时间戳;
所述媒体服务进程将时间戳与所述第一图像解析指令中时间戳相同的视频图像确定为目标图像。
3.如权利要求1-2任一项所述的方法,其特征在于,所述第一应用进程向所述媒体服务进程发送第一图像解析指令之前,还包括:
所述第一应用进程向所述媒体服务进程发送注册信息;所述注册信息用于指示所述媒体服务进程基于图像解析指令获取目标图像;
在确定响应所述注册信息的情况下,所述媒体服务进程建立第一Binder,所述第一Binder与所述注册信息对应;
所述媒体服务进程生成第一响应消息,并将所述第一响应消息通过所述第一Binder发送给所述第一应用进程,所述第一响应消息用于指示所述第一应用进程发送图像解析指令;
所述媒体服务进程释放所述第一Binder的资源。
4.一种图像获取方法,其特征在于,应用于电子设备,所述电子设备包括第一应用进程和媒体服务进程,所述方法包括:
在判断所述媒体服务进程当前连接的Binder数量L小于第一阈值R的情况下,所述第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给所述媒体服务进程;所述N为所述电子设备存储的视频数量,所述M是基于所述R、所述L以及所述N得到的;
所述媒体服务进程对接收的图像解析指令进行检验;
在K条图像解析指令检验通过的情况下,所述媒体服务进程建立K条目标Binder;所述K小于或等于所述M;
所述媒体服务进程基于所述K条图像解析指令依次对应获取K个第一视频中的目标图像;
所述媒体服务进程通过所述目标Binder将所述目标图像发送给所述第一应用进程;
在所述第一应用进程接收到所述目标图像后,还有待发送的图像解析指令的情况下,所述第一应用进程向所述媒体服务进程发送待发送的图像解析指令中的任意一条指令;
所述媒体服务进程执行所述对接收的图像解析指令进行检验的步骤。
5.如权利要求4所述的方法,其特征在于,所述第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给所述媒体服务进程之前,还包括:
所述第一应用进程判断所述媒体服务进程当前连接的Binder数量L是否小于第一阈值;
若为否,所述第一应用进程在第一时长T内暂停发送图像解析指令;
在所述第一时长后,所述第一应用进程执行所述判断所述媒体服务进程当前连接的Binder数量L是否小于第一阈值的步骤;
其中,所述第一时长T根据T=v*L得到,所述v为预设时间间隔。
6.如权利要求4-5任一项所述的方法,其特征在于,所述媒体服务进程对接收的图像解析指令进行检验,具体包括:
根据Mount=L+1计算所述媒体服务进程响应接收的第j条图像解析指令后,连接的Binder数量Mount,所述L为所述媒体服务进程当前连接的Binder数量;所述j的取值依次从1到所述K;
判断所述Mount是否大于或等于第二阈值;
若为是,所述媒体服务进程确定所述第j条图像解析指令未通过检验;
若为否,所述媒体服务进程确定所述第j条图像解析指令通过检验。
7.如权利要求4-6任一项所述的方法,其特征在于,所述媒体服务进程通过所述目标Binder将所述目标图像发送给所述第一应用进程之后,还包括:
所述媒体服务进程释放所述目标Binder的资源。
8.如权利要求4-7任一项所述的方法,其特征在于,所述第一应用进程将待发送的N条图像解析指令中的任意M条图像解析指令发送给所述媒体服务进程之前,还包括:
所述第一应用进程向所述媒体服务进程发送注册信息;所述注册信息用于指示所述媒体服务进程基于图像解析指令获取目标图像;
在确定响应所述注册信息的情况下,所述媒体服务进程建立第一Binder,所述第一Binder与所述注册信息对应;
所述媒体服务进程生成第一响应消息,并将所述第一响应消息通过所述第一Binder发送给所述第一应用进程,所述第一响应消息用于指示所述第一应用进程发送图像解析指令;
所述媒体服务进程释放所述第一Binder的资源。
9.一种电子设备,其特征在于,包括:存储器、处理器和触控屏;其中:
所述触控屏用于显示内容;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器用于调用所述程序指令,使得所述电子设备执行如权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现如权利要求1-8任意一项所述的方法。
CN202211001571.8A 2022-08-19 2022-08-19 一种图像获取方法及相关电子设备 Active CN116048744B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211001571.8A CN116048744B (zh) 2022-08-19 2022-08-19 一种图像获取方法及相关电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211001571.8A CN116048744B (zh) 2022-08-19 2022-08-19 一种图像获取方法及相关电子设备

Publications (2)

Publication Number Publication Date
CN116048744A true CN116048744A (zh) 2023-05-02
CN116048744B CN116048744B (zh) 2023-09-12

Family

ID=86112038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211001571.8A Active CN116048744B (zh) 2022-08-19 2022-08-19 一种图像获取方法及相关电子设备

Country Status (1)

Country Link
CN (1) CN116048744B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120208592A1 (en) * 2010-11-04 2012-08-16 Davis Bruce L Smartphone-Based Methods and Systems
KR20180023326A (ko) * 2016-08-25 2018-03-07 삼성전자주식회사 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법
CN110275790A (zh) * 2019-06-26 2019-09-24 北京金山安全软件有限公司 应用程序中的进程间通信同步回调方法、系统及相关设备
CN111628916A (zh) * 2019-02-27 2020-09-04 华为技术有限公司 一种智能音箱与电子设备协作的方法及电子设备
US20210097487A1 (en) * 2019-09-30 2021-04-01 Ricoh Company, Ltd. Approach for Cloud EMR Communication Via a Content Parsing Engine and a Storage Service
CN112596931A (zh) * 2020-12-31 2021-04-02 五八有限公司 一种跨进程通信方法、装置、电子设备及存储介质
WO2021190469A1 (zh) * 2020-03-24 2021-09-30 广州华多网络科技有限公司 终端设备及其应用程序接口调用控制方法
WO2021208627A1 (zh) * 2020-04-13 2021-10-21 荣耀终端有限公司 一种任务调度方法、装置及电子设备
CN113590365A (zh) * 2021-10-08 2021-11-02 北京海誉动想科技股份有限公司 跨进程通信方法与Binder驱动
CN113918766A (zh) * 2021-08-12 2022-01-11 荣耀终端有限公司 视频缩略图的显示方法、设备和存储介质
CN114067084A (zh) * 2020-07-31 2022-02-18 阿里巴巴集团控股有限公司 图像展示方法及装置
WO2022037725A1 (zh) * 2020-08-21 2022-02-24 荣耀终端有限公司 一种系统服务恢复方法、装置和电子设备
CN114443894A (zh) * 2022-01-05 2022-05-06 荣耀终端有限公司 数据处理方法、装置、电子设备和存储介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120208592A1 (en) * 2010-11-04 2012-08-16 Davis Bruce L Smartphone-Based Methods and Systems
KR20180023326A (ko) * 2016-08-25 2018-03-07 삼성전자주식회사 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법
CN111628916A (zh) * 2019-02-27 2020-09-04 华为技术有限公司 一种智能音箱与电子设备协作的方法及电子设备
CN110275790A (zh) * 2019-06-26 2019-09-24 北京金山安全软件有限公司 应用程序中的进程间通信同步回调方法、系统及相关设备
US20210097487A1 (en) * 2019-09-30 2021-04-01 Ricoh Company, Ltd. Approach for Cloud EMR Communication Via a Content Parsing Engine and a Storage Service
WO2021190469A1 (zh) * 2020-03-24 2021-09-30 广州华多网络科技有限公司 终端设备及其应用程序接口调用控制方法
WO2021208627A1 (zh) * 2020-04-13 2021-10-21 荣耀终端有限公司 一种任务调度方法、装置及电子设备
CN114067084A (zh) * 2020-07-31 2022-02-18 阿里巴巴集团控股有限公司 图像展示方法及装置
WO2022037725A1 (zh) * 2020-08-21 2022-02-24 荣耀终端有限公司 一种系统服务恢复方法、装置和电子设备
CN112596931A (zh) * 2020-12-31 2021-04-02 五八有限公司 一种跨进程通信方法、装置、电子设备及存储介质
CN113918766A (zh) * 2021-08-12 2022-01-11 荣耀终端有限公司 视频缩略图的显示方法、设备和存储介质
CN113590365A (zh) * 2021-10-08 2021-11-02 北京海誉动想科技股份有限公司 跨进程通信方法与Binder驱动
CN114443894A (zh) * 2022-01-05 2022-05-06 荣耀终端有限公司 数据处理方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN116048744B (zh) 2023-09-12

Similar Documents

Publication Publication Date Title
WO2022199509A1 (zh) 应用执行绘制操作的方法及电子设备
CN113994317A (zh) 一种用户界面布局方法及电子设备
WO2024016564A1 (zh) 二维码识别方法、电子设备以及存储介质
WO2022160991A1 (zh) 权限控制方法和电子设备
WO2022161386A1 (zh) 一种位姿确定方法以及相关设备
CN116048744B (zh) 一种图像获取方法及相关电子设备
CN115032640B (zh) 手势识别方法和终端设备
CN116048771A (zh) 一种资源调度方法及相关设备
WO2021052489A1 (zh) 一种确定多核处理器中故障计算核的方法及电子设备
CN115994006A (zh) 动画效果显示方法及电子设备
CN113970965A (zh) 消息显示方法和电子设备
CN116700463B (zh) 一种活动识别方法及相关设备
CN116382896B (zh) 图像处理算法的调用方法、终端设备、介质及产品
CN115016921B (zh) 资源调度方法、装置及存储介质
CN116661584B (zh) 一种资源调度方法及相关设备
CN114816311B (zh) 一种屏幕移动的方法和装置
CN115016666B (zh) 触控处理方法、终端设备以及存储介质
WO2022206709A1 (zh) 应用程序的组件加载方法及相关装置
CN116755748B (zh) 卡片更新方法、电子设备以及计算机可读存储介质
CN116688494B (zh) 生成游戏预测帧的方法和电子设备
CN116672707B (zh) 生成游戏预测帧的方法和电子设备
CN115623318B (zh) 对焦方法及相关装置
WO2022089276A1 (zh) 一种收藏处理的方法及相关装置
CN116301362B (zh) 图像处理方法、电子设备及存储介质
WO2023072113A1 (zh) 显示方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant