CN116781968A - 投屏方法、终端设备及计算机可读存储介质 - Google Patents

投屏方法、终端设备及计算机可读存储介质 Download PDF

Info

Publication number
CN116781968A
CN116781968A CN202210254483.2A CN202210254483A CN116781968A CN 116781968 A CN116781968 A CN 116781968A CN 202210254483 A CN202210254483 A CN 202210254483A CN 116781968 A CN116781968 A CN 116781968A
Authority
CN
China
Prior art keywords
image
terminal device
data
encoded data
interface
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.)
Pending
Application number
CN202210254483.2A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210254483.2A priority Critical patent/CN116781968A/zh
Priority to PCT/CN2023/078992 priority patent/WO2023169276A1/zh
Publication of CN116781968A publication Critical patent/CN116781968A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/265Mixing

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本申请适用于终端技术领域,尤其涉及投屏方法、终端设备及计算机可读存储介质。该方法中,待投屏界面对应的图层数据至少可以包括第一部分和第二部分,第一终端设备可以分别根据第一部分和第二部分进行图像合成、编码和发送等处理,而且根据第二部分进行的图像合成、编码、发送等处理过程与根据第一部分对应的第一图像进行的编码、发送等处理过程可以并行执行,实现投屏时,图像合成、编码和发送三者的并行执行,从而有效降低投屏的时延,提升用户的投屏体验。

Description

投屏方法、终端设备及计算机可读存储介质
技术领域
本申请属于终端技术领域,尤其涉及投屏方法、终端设备及计算机可读存储介质。
背景技术
终端设备之间的投屏分享,已经成为人们日常生活中的常用功能。其中,现有投屏的主要流程是:发送端的投屏应用进行图层绘制,并在绘制完成后,通知SurfaceFlinger组件对绘制得到的图层数据进行合成。SurfaceFlinger组件在合成完成后,通知编码器对合成得到的图像进行编码。编码器在编码完成后,通知投屏应用将编码得到的视频流等编码数据发送给接收端。但现有投屏的投屏过程中,存在时延较大等问题,影响用户体验。
发明内容
本申请实施例提供了一种投屏方法、终端设备及计算机可读存储介质,可以解决现有投屏的时延较大的问题。
第一方面,本申请实施例提供了一种投屏系统,包括第一终端设备和第二终端设备;
所述第一终端设备,用于在检测到投屏指令时,对待投屏界面进行图层绘制,得到所述待投屏界面对应的图层数据;
所述第一终端设备,还用于根据所述图层数据的第一部分进行图像合成,得到第一图像;
所述第一终端设备,还用于根据所述第一图像进行编码,得到第一编码数据,并向所述第二终端设备发送所述第一编码数据;
所述第一终端设备,还用于在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,并根据所述第二图像进行编码,得到第二编码数据;
所述第一终端设备,还用于向所述第二终端设备发送所述第二编码数据;
所述第二终端设备,用于获取所述第一编码数据和所述第二编码数据,并对所述第一编码数据和所述第二编码数据进行解码,得到所述第一图像和所述第二图像;
所述第二终端设备,还用于根据所述第一图像和所述第二图像,得到所述待投屏界面,并对所述待投屏界面进行显示。
通过上述的投屏系统,在检测到投屏指令时,第一终端设备可以对待投屏界面进行图层绘制,得到待投屏界面对应的图层数据,并根据图层数据的第一部分进行图像合成,得到第一图像。第一终端设备可以根据第一图像进行编码,得到第一编码数据,并向第二终端设备发送第一编码数据。在根据第一图像进行编码或在向第二终端设备发送第一编码数据时,第一终端设备还可以继续根据图层数据的第二部分进行图像合成,得到第二图像,根据第二图像进行编码,得到第二编码数据,并向第二终端设备发送第二编码数据。第二终端设备接收到第一终端设备发送的第一编码数据和第二编码数据时,可以对第一编码数据和第二编码数据进行解码,得到第一图像和第二图像,并根据第一图像和第二图像得到待投屏界面。即第一终端设备可以分别根据第一部分和第二部分进行合成、编码和发送等处理,而且根据第二部分进行的合成、编码、发送等处理过程与根据第一部分对应的第一图像进行的编码、发送等处理过程可以并行执行,以实现投屏时,图像合成过程、编码过程和发送过程三者的并行执行,从而可以有效降低投屏的时延,提升用户的投屏体验。
示例性的,所述第一终端设备包括图像合成模块、编码器和第一应用,所述第一应用为所述待投屏界面对应的应用。
所述第一终端设备,用于通过所述图像合成模块根据所述第一部分进行图像合成,得到所述第一图像。
所述第一终端设备,用于通过所述编码器根据所述第一图像进行编码,得到所述第一编码数据。
所述第一终端设备,用于通过所述第一应用向所述第二终端设备发送所述第一编码数据。
在一种可能的实现方式中,所述图像合成模块,具体用于在所述编码器根据所述第一图像进行编码时,根据所述第二部分进行图像合成,得到所述第二图像。
在另一种可能的实现方式中,所述图像合成模块,具体用于在所述第一应用向所述第二终端设备发送所述第一编码数据时,根据所述第二部分进行图像合成,得到所述第二图像。
在另一种可能的实现方式中,所述编码器,具体用于在所述第一应用向所述第二终端设备发送所述第一编码数据时,根据所述第二图像进行编码,得到第二编码数据。
示例性的,所述图像合成模块,还用于响应于所述图层数据,根据所述图层数据的第一部分进行图像合成,得到所述第一图像。
在一种可能的实现方式中,所述第一终端设备,还用于确定所述第一图像对应的第一划分信息,并根据所述第一图像和所述第一划分信息进行编码,得到所述第一编码数据,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数。
在另一种可能的实现方式中,所述第一终端设备,还用于确定所述图层数据对应的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;向所述第二终端设备发送所述第三划分信息。
示例性的,所述第二终端设备包括解码器。所述解码器,具体用于对所述第一编码数据进行解码,得到所述第一图像和所述第一图像对应的第一划分信息,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数;对所述第二编码数据进行解码,得到所述第二图像和所述第二图像对应的第二划分信息,所述第二划分信息包括所述图层数据对应的划分方式、所述第二图像对应的图像序号和所述图层数据对应的图像总数。
在一个示例中,所述第二终端设备,具体用于根据所述第一划分信息和所述第二划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
在另一个示例中,所述第二终端设备,还用于获取所述第一终端设备发送的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;根据所述第三划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
第二方面,本申请实施例提供了一种投屏方法,应用于第一终端设备,所述方法可以包括:
在检测到投屏指令时,对待投屏界面进行图层绘制,得到所述待投屏界面对应的图层数据;
根据所述图层数据的第一部分进行图像合成,得到第一图像;
根据所述第一图像进行编码,得到第一编码数据;
向第二终端设备发送所述第一编码数据;
在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,并根据所述第二图像进行编码,得到第二编码数据;
向所述第二终端设备发送所述第二编码数据。
在上述的投屏方法中,待投屏界面对应的图层数据至少可以包括第一部分和第二部分,第一终端设备可以分别根据第一部分和第二部分进行图像合成、编码和发送等处理,而且根据第二部分进行的图像合成、编码、发送等处理过程与根据第一部分对应的第一图像进行的编码、发送等处理过程可以并行执行,以实现投屏时,图像合成、编码和发送三者的并行执行,从而有效降低投屏的时延,提升用户的投屏体验。
示例性的,所述根据所述图层数据的第一部分进行图像合成,得到第一图像,可以包括:
通过图像合成模块根据所述第一部分进行图像合成,得到所述第一图像;
所述根据所述第一图像进行编码,得到第一编码数据,包括:
通过编码器根据所述第一图像进行编码,得到所述第一编码数据;
所述向第二终端设备发送所述第一编码数据,包括:
通过第一应用向所述第二终端设备发送所述第一编码数据。
在一种可能的实现方式中,所述在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,包括:
在所述编码器根据所述第一图像进行编码时,所述图像合成模块根据所述第二部分进行图像合成,得到所述第二图像。
在该实现方式提供的投屏方法中,第一终端设备可以通过图像合成模块进行图像合成,通过编码器根据合成的第一图像或第二图像进行编码,并通过第一应用将编码得到的第一编码数据或第二编码数据发送给第二终端设备。因此,在编码器根据第一图像进行编码时,图像合成模块可以继续根据图层数据的第二部分进行图像合成,使得编码器根据第一图像进行编码的过程与图像合成模块根据第二部分进行图像合成的过程,可以同时进行,以降低第一终端设备的投屏时延,提升用户体验。
在另一种可能的实现方式中,所述在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,可以包括:
在所述第一应用向所述第二终端设备发送所述第一编码数据时,所述图像合成模块根据所述第二部分进行图像合成,得到所述第二图像。
在该实现方式提供的投屏方法中,在第一应用向第二终端设备发送第一编码数据时,图像合成模块可以继续根据图层数据的第二部分进行图像合成,使得第一应用发送第一编码数据的过程与图像合成模块根据第二部分进行图像合成的过程,可以同时进行,以降低第一终端设备的投屏时延,提升用户体验。
在另一种可能的实现方式中,所述根据所述第二图像进行编码,得到第二编码数据,可以包括:
在所述第一应用向所述第二终端设备发送所述第一编码数据时,所述编码器根据所述第二图像进行编码,得到第二编码数据。
在该实现方式提供的投屏方法中,在第一应用向第二终端设备发送第一编码数据时,编码器可以继续根据第二图像进行编码,使得第一应用发送第一编码数据的过程与编码器根据第二图像进行编码的过程,可以同时进行,以降低第一终端设备的投屏时延。
在一个示例中,所述根据所述图层数据的第一部分进行图像合成,得到第一图像,可以包括:
响应于所述图层数据,通过图像合成模块根据所述图层数据的第一部分进行图像合成,得到所述第一图像。
在该实现方式提供的投屏方法中,在投屏过程时,第一终端设备可以实时获取第一终端设备当前的显示状态。当显示状态为熄屏状态时,表明第一终端设备不需要对待投屏界面进行同步显示,因此,图像合成模块获取图层数据后,可以直接根据图层数据的第一部分进行图像合成,而不需要等待Vsync信号,以有效减少图像合成模块的等待时间,降低投屏的时延。
在一种可能的实现方式中,所述根据所述第一图像进行编码,得到第一编码数据,可以包括:
确定所述第一图像对应的第一划分信息,并根据所述第一图像和所述第一划分信息进行编码,得到所述第一编码数据,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数。
在该实现方式提供的投屏方法中,为使得第二终端设备在解码得到第一图像和第二图像后,可以正确得到待投屏界面,避免待投屏界面在第二终端设备中显示存在乱序问题,第一终端设备在通过编码器根据第一图像或第二图像进行编码时,可以增加对应的划分信息。因此,第二终端设备解码得到第一图像和第二图像时,可以得到第一图像对应的第一划分信息和第二图像对应的第二划分信息,从而可以根据第一划分信息和第二划分信息准确得到待投屏界面。
在另一种可能的实现方式中,所述方法还可以包括:
确定所述图层数据对应的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
向所述第二终端设备发送所述第三划分信息。
在该实现方式提供的投屏方法中,第一终端设备确定划分方式后,可以将划分方式对应的划分信息单独发送给第二终端设备。例如,在进行投屏之前,第一终端设备可以先将划分信息发送给第二终端设备。因此,在对各图像进行编码时,编码器不需要再单独为各图像添加划分信息,以减少编码过程中的信息添加,从而提高编码速度。
第三方面,本申请实施例提供了一种投屏方法,应用于第二终端设备,所述方法可以包括:
获取第一终端设备分别发送的第一编码数据和第二编码数据,所述第一编码数据为图层数据的第一部分对应的编码数据,所述第二编码数据为所述图层数据的第二部分对应的编码数据,所述图层数据为所述第一终端设备的待投屏界面对应的图层数据;
分别对所述第一编码数据和所述第二编码数据进行解码,得到第一图像和第二图像;
根据所述第一图像和所述第二图像,得到所述待投屏界面,并对所述待投屏界面进行显示。
示例性的,所述分别对所述第一编码数据和所述第二编码数据进行解码,得到第一图像和第二图像,可以包括:
对所述第一编码数据进行解码,得到所述第一图像和所述第一图像对应的第一划分信息,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数;
对所述第二编码数据进行解码,得到所述第二图像和所述第二图像对应的第二划分信息,所述第二划分信息包括所述图层数据对应的划分方式、所述第二图像对应的图像序号和所述图层数据对应的图像总数。
在一个示例中,所述根据所述第一图像和所述第二图像,得到所述待投屏界面,可以包括:
根据所述第一划分信息和所述第二划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
在另一个示例中,所述方法还可以包括:
获取所述第一终端设备发送的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
所述根据所述第一图像和所述第二图像,得到所述待投屏界面,包括:
根据所述第三划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
第四方面,本申请实施例提供了一种投屏装置,应用于第一终端设备,所述装置可以包括:
图层绘制模块,用于在检测到投屏指令时,对待投屏界面进行图层绘制,得到所述待投屏界面对应的图层数据;
图像合成模块,用于根据所述图层数据的第一部分进行图像合成,得到第一图像;
编码模块,用于根据所述第一图像进行编码,得到第一编码数据;
发送模块,用于向第二终端设备发送所述第一编码数据;
图像合成模块,还用于在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像;
编码模块,还用于根据所述第二图像进行编码,得到第二编码数据;
发送模块,还用于向所述第二终端设备发送所述第二编码数据。
在一种可能的实现方式中,所述图像合成模块,具体用于在所述编码模块根据所述第一图像进行编码时,根据所述第二部分进行图像合成,得到所述第二图像。
在另一种可能的实现方式中,所述图像合成模块,具体用于在所述发送模块向所述第二终端设备发送所述第一编码数据时,根据所述第二部分进行图像合成,得到所述第二图像。
在另一种可能的实现方式中,所述编码模块,具体用于在所述发送模块向所述第二终端设备发送所述第一编码数据时,根据所述第二图像进行编码,得到第二编码数据。
在一个示例中,所述图像合成模块,还用于响应于所述图层数据,根据所述图层数据的第一部分进行图像合成,得到所述第一图像。
在一种可能的实现方式中,所述编码模块,还用于确定所述第一图像对应的第一划分信息,并根据所述第一图像和所述第一划分信息进行编码,得到所述第一编码数据,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数。
在另一种可能的实现方式中,所述装置还可以包括:
划分信息确定模块,用于确定所述图层数据对应的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
划分信息发送模块,用于向所述第二终端设备发送所述第三划分信息。
第五方面,本申请实施例提供了一种投屏装置,应用于第二终端设备,所述装置可以包括:
编码数据获取模块,用于获取第一终端设备分别发送的第一编码数据和第二编码数据,所述第一编码数据为图层数据的第一部分对应的编码数据,所述第二编码数据为所述图层数据的第二部分对应的编码数据,所述图层数据为所述第一终端设备的待投屏界面对应的图层数据;
解码模块,用于分别对所述第一编码数据和所述第二编码数据进行解码,得到第一图像和第二图像;
界面显示模块,用于根据所述第一图像和所述第二图像,得到所述待投屏界面,并对所述待投屏界面进行显示。
示例性的,所述解码模块,具体用于对所述第一编码数据进行解码,得到所述第一图像和所述第一图像对应的第一划分信息,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数;
对所述第二编码数据进行解码,得到所述第二图像和所述第二图像对应的第二划分信息,所述第二划分信息包括所述图层数据对应的划分方式、所述第二图像对应的图像序号和所述图层数据对应的图像总数。
在一个示例中,所述界面显示模块,具体用于根据所述第一划分信息和所述第二划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
在另一个示例中,所述装置还可以包括:
划分信息获取模块,用于获取所述第一终端设备发送的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
所述界面显示模块,还用于根据所述第三划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
第六方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,使所述终端设备实现上述第二方面中任一项所述的投屏方法,或者实现上述第三方面中任一项所述的投屏方法。
第七方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被计算机执行时,使所述计算机实现上述第二方面中任一项所述的投屏方法,或者实现上述第三方面中任一项的投屏方法。
第八方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第二方面中任一项所述的投屏方法,或者执行上述第三方面中任一项所述的投屏方法。
可以理解的是,上述第三方面至第八方面的有益效果可以参见上述第一方面和第二方面中的相关描述,在此不再赘述。
附图说明
图1是本申请一实施例提供的投屏方法所适用于的终端设备的结构示意图;
图2是本申请一实施例提供的投屏方法所适用于的软件架构示意图;
图3是一种投屏方法的流程框图;
图4是本申请一实施例提供的投屏方法的流程框图;
图5是本申请实施例提供的划分方式的应用场景示意图;
图6是本申请另一实施例提供的投屏方法的流程框图;
图7是本申请另一实施例提供的投屏方法的流程框图;
图8是本申请一实施例提供的一种投屏方法的流程示意图。
具体实施方式
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
此外,本申请实施例中提到的“多个”应当被解释为两个或两个以上。
本申请实施例中提供的投屏方法中所涉及到的步骤仅仅作为示例,并非所有的步骤均是必须执行的步骤,或者并非各个信息或消息中的内容均是必选的,在使用过程中可以根据需要酌情增加或减少。本申请实施例中同一个步骤或者具有相同功能的步骤或者消息在不同实施例之间可以互相参考借鉴。
本申请实施例描述的业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
终端设备之间的投屏分享,已经成为人们日常生活中的常用功能。例如,可以通过无线投屏将手机或平板电脑等小屏终端设备显示的内容或媒体文件(如图库、音乐、视频等)投射到电视机、智慧屏等大屏上进行显示,以提高观看效果。例如,可以通过多屏协同将手机与笔记本电脑或平板电脑连接,或者可以通过多屏协同将平板电脑与笔记本电脑连接,并可以在连接后,将手机中的内容投屏至笔记本电脑或平板电脑,或者将平板电脑中的内容投屏至笔记本电脑进行同步显示,实现跨设备的资源共享及协同操作。
其中,投屏的一般流程是:发送端的投屏应用进行图层绘制,并在绘制完成后,通知SurfaceFlinger组件对绘制得到的图层数据进行合成。SurfaceFlinger组件在合成完成后,通知编码器对合成得到的图像进行编码。编码器在编码完成后,通知投屏应用将编码得到的视频流等编码数据发送给接收端。接收端接收到编码数据时,可以对编码数据进行解码显示。但一般投屏中,图层数据的合成过程、图像的编码过程以及编码数据的发送过程均需耗费较长时间,且这三者之间是顺序执行的,导致投屏的时延较大,影响用户体验。
为了解决上述问题,本申请实施例提供了一种投屏方法、终端设备及计算机可读存储介质,该方法中,在检测到投屏指令时,第一终端设备的第一应用可以对待投屏界面进行图层绘制,得到待投屏界面对应的图层数据,并可以向第一终端设备的图像合成模块发送图层数据。图像合成模块可以将图层数据划分为至少两个部分,该至少两个部分可以包括第一部分和第二部分。随后,图像合成模块可以根据第一部分进行图像合成,得到第一图像,并向第一终端设备的编码器发送第一图像。编码器可以根据第一图像进行编码,得到第一编码数据,并向第一应用发送第一编码数据。第一应用接收到第一编码数据后,可以通过传输模块向第二终端设备发送第一编码数据。
其中,在编码器根据第一图像进行编码或在第一应用对第一编码数据进行发送时,图像合成模块还可以继续根据第二部分进行图像合成,得到第二图像,并可以继续向编码器发送第二图像。编码器也可以继续根据第二图像进行编码,得到第二编码数据,并向第一应用发送第二编码数据。第一应用接收到第二编码数据后,可以通过传输模块向第二终端设备发送第二编码数据。
第二终端设备接收到第一终端设备发送的第一编码数据和第二编码数据时,可以对第一编码数据和第二编码数据进行解码,得到第一图像和第二图像,并对第一图像和第二图像进行拼接后显示。
即本申请实施例中,可以将图层数据至少划分为第一部分和第二部分,并可以分别根据第一部分和第二部分进行图像合成、编码和发送等处理,而且根据第二部分进行的图像合成、编码、发送等处理过程与根据第一部分对应的第一图像进行的编码、发送等处理过程可以并行执行,以实现投屏时,图像合成模块执行的合成过程、编码器执行的编码过程和第一应用执行的发送过程三者的并行执行,从而可以有效降低投屏的时延,提升用户的投屏体验,具有较强的易用性和实用性。
本申请实施例中,第一终端设备和第二终端设备均可以为手机、平板电脑、可穿戴设备、车载设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、桌上型计算机等具有显示屏的终端设备,本申请实施例对终端设备的具体类型不作任何限制。
以下首先介绍本申请实施例涉及的终端设备。请参阅图1,图1示出了终端设备100的一种结构示意图。
终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,天线1,天线2,移动通信模块140,无线通信模块150,传感器模块160,按键170,以及显示屏180等。其中,传感器模块160可以包括压力传感器160A,陀螺仪传感器160B,磁传感器160C,加速度传感器160D,触摸传感器160E等。
可以理解的是,本申请实施例示意的结构并不构成对终端设备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的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口耦合触摸传感器160E等。例如:处理器110可以通过I2C接口耦合触摸传感器160E,使处理器110与触摸传感器160E通过I2C总线接口通信,实现终端设备100的触摸功能。
MIPI接口可以被用于连接处理器110与显示屏180等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(display serialinterface,DSI)等。在一些实施例中,处理器110和显示屏180通过DSI接口通信,实现终端设备100的显示功能。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于终端设备100与外围设备之间传输数据。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备100的结构限定。在本申请另一些实施例中,终端设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
终端设备100的无线通信功能可以通过天线1,天线2,移动通信模块140,无线通信模块150,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块140可以提供应用在终端设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块140可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块140可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块140还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块140的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块140的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过显示屏180显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块140或其他功能模块设置在同一个器件中。
无线通信模块150可以提供应用在终端设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络,或Wi-Fi直连(Wi-Fi peer-to-peer,Wi-Fi p2p)),蓝牙(bluetooth,BT),超宽带(ultra wide band,UWB),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块150可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块150经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块150还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,终端设备100的天线1和移动通信模块140耦合,天线2和无线通信模块150耦合,使得终端设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
终端设备100通过GPU,显示屏180,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏180和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏180用于显示图像,视频等。显示屏180包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),或者可以采用有机发光二极管(organiclight-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED),柔性发光二极管(flexlight-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等材料制成。在一些实施例中,终端设备100可以包括1个或N个显示屏180,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。终端设备100可以支持一种或多种视频编解码器。这样,终端设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现终端设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如图像播放功能等)等。存储数据区可存储终端设备100使用过程中所创建的数据等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备100的各种功能应用以及数据处理。
压力传感器160A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器160A可以设置于显示屏180。压力传感器160A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器160A,电极之间的电容改变。终端设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏180,终端设备100根据压力传感器160A检测所述触摸操作强度。终端设备100也可以根据压力传感器160A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器160B可以用于确定终端设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器160B确定终端设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器160B可以用于导航,体感游戏场景。
磁传感器160C包括霍尔传感器。终端设备100可以利用磁传感器160C检测翻盖皮套的开合。在一些实施例中,当终端设备100是翻盖机时,终端设备100可以根据磁传感器160C检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器160D可检测终端设备100在各个方向上(一般为三轴)加速度的大小。当终端设备100静止时可检测出重力的大小及方向。还可以用于识别终端设备姿态,应用于横竖屏切换,计步器等应用。
触摸传感器160E,也称“触控器件”。触摸传感器160E可以设置于显示屏180,由触摸传感器160E与显示屏180组成触摸屏,也称“触控屏”。触摸传感器160E用于检测作用于其上或附近的触摸操作。触摸传感器160E可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏180提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器160E也可以设置于终端设备100的表面,与显示屏180所处的位置不同。
按键170包括开机键,音量键等。按键170可以是机械按键。也可以是触摸式按键。终端设备100可以接收按键输入,产生与终端设备100的用户设置以及功能控制有关的键信号输入。
终端设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明终端设备100的软件结构。
图2是本申请实施例的终端设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,H.265,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面以Android系统为例对投屏方法的一般流程进行示例性说明。请参阅图3,图3示出了一种投屏方法的流程框图。该投屏方法可以应用于第一终端设备,以将第一终端设备中的待投屏界面投屏至第二终端设备进行同步显示。其中,待投屏界面可以是指第一终端设备的第一应用对应的界面,该界面可以是第一终端设备中正在显示的界面,也可以是即将在第一终端设备中进行显示的界面。
如图3所示,在检测到投屏指令时,第一终端设备的第一应用可以对待投屏界面进行图层绘制,得到待投屏界面对应的图层数据。其中,投屏指令用于指示将第一应用对应的待投屏界面投屏至第二终端设备进行同步显示。随后,第一终端设备的图像合成模块(例如第一终端设备的SurfaceFlinger组件等)可以获取图层数据,并对图层数据进行图像合成,得到图像A(即发送给第二终端设备进行同步显示的图像)和图像B(即第一终端设备自己进行显示的图像)。在得到图像A时,SurfaceFlinger组件可以将图像A发送给第一终端设备的编码器。编码器可以对图像A进行编码,得到视频流等编码数据,例如得到H.264或H.265等格式的视频流。然后,第一应用可以获取编码器编码的视频流等编码数据,并通过第一终端设备的传输模块将视频流等编码数据发送给第二终端设备。第二终端设备可以接收第一终端设备发送的视频流等编码数据,对视频流等编码数据进行解码,得到解码后的图像,并对解码后的图像进行显示。
由图3可知,虽然SurfaceFlinger组件可以先对图层数据进行合成,得到图像A,然后再对图层数据进行合成,得到图像B,以减少合成图像A所需的等待时间,但SurfaceFlinger组件执行的合成过程(即合成图像A的过程)、编码器执行的编码过程(即对图像A进行编码的过程)和第一应用执行的发送过程(即将图像A对应的编码数据发送给第二终端设备的过程)一般是顺序执行的。即先由SurfaceFlinger组件对所有图层数据进行合成,得到完整的图像A。然后,再由编码器对完整的图像A进行编码,得到视频流等编码数据。最后,由第一应用将视频流等编码数据发送给第二终端设备。
其中,SurfaceFlinger组件合成得到图像A的时间、编码器对图像A进行编码的时间以及第一应用对视频流等编码数据进行发送的时间都比较长,例如SurfaceFlinger组件合成得到图像A的时间可以达到8ms,编码器对图像A进行编码的时间可以达到10ms,第一应用对图像A对应的视频流等编码数据进行发送的时间可以达到10ms,因此,在SurfaceFlinger组件执行的合成过程、编码器执行的编码过程和第一应用执行的发送过程顺序执行时,会导致投屏的时延较大,影响用户体验。
另外,为避免造成第一终端设备的显示异常,SurfaceFlinger组件进行图像合成的周期需与第一终端设备的刷新频率保持一样,即SurfaceFlinger组件在对图层数据进行合成时,还需要等待硬件合成模块(Hardware Composer,HWC)触发的Vsync信号,即SurfaceFlinger组件要在接收到Vsync信号时,才开始对图层数据进行合成,并在一个Vsync信号周期内合成图像A和图像B。而HWC一般是周期性触发Vsync信号,如图3所示,在第一终端设备的刷新频率为60Hz时,Vsync信号的触发周期一般为16ms。也就是说,HWC一般间隔16ms触发一次Vsync信号,以通过Vsync信号通知SurfaceFlinger组件执行合成过程,导致SurfaceFlinger组件在对图层数据进行合成时,需要等待较长的时间(例如最长的等待时间可以达到16ms),导致投屏的时延较大,影响用户体验。
由上述描述可知,一般投屏流程的时延较大,无法满足用户的投屏需求,造成用户的投屏体验较差。基于此,本申请实施例提供了一种投屏方法,以有效降低投屏时延,提升用户体验。
下面结合附图和具体应用场景对本申请实施例提供的投屏方法进行详细说明。
请参阅图4,图4示出了本申请一实施例提供的投屏方法的流框程图。其中,该投屏方法可以应用于第一终端设备,以将第一终端设备中的待投屏界面投屏至第二终端设备进行同步显示。
如图4所示,在检测到投屏指令时,第一终端设备的第一应用可以对待投屏界面进行图层绘制,得到待投屏界面对应的图层数据,并可以向第一终端设备的图像合成模块发送图层数据。图像合成模块可以将图层数据划分为至少两个部分,该至少两个部分可以包括第一部分和第二部分。随后,图像合成模块可以根据第一部分进行图像合成,得到第一图像,并向第一终端设备的编码器发送第一图像。编码器可以根据第一图像进行编码,得到第一编码数据,并向第一应用发送第一编码数据。第一应用接收到第一编码数据后,可以通过传输模块向第二终端设备发送第一编码数据。
其中,在编码器根据第一图像进行编码和/或在第一应用对第一编码数据进行发送时,图像合成模块还可以继续根据第二部分进行图像合成,得到第二图像,并可以继续向编码器发送第二图像。编码器接收到第二图像后,可以继续根据第二图像进行编码,得到第二编码数据,并向第一应用发送第二编码数据。第一应用接收到第二编码数据后,可以通过传输模块向第二终端设备发送第二编码数据。
第二终端设备接收到第一终端设备发送的第一编码数据和第二编码数据时,可以对第一编码数据和第二编码数据进行解码,得到第一图像和第二图像,并对第一图像和第二图像进行拼接后显示。
示例性的,图像合成模块根据第一部分进行图像合成,得到第一图像,可以是直接对第一部分的所有图层数据进行图像合成,得到第一图像。或者,可以是对第一部分中的部分图层数据进行图像合成,得到第一图像,例如,可以根据当前帧的第一部分和前一帧的第一部分,确定区别部位,并对区别部位对应的图层数据进行图像合成,得到第一图像。其中,当前帧是指当前待发送给第二终端设备的待投屏界面,前一帧是指在发送当前帧之前,发送给第二终端设备的待投屏界面。因此,第二终端设备解码得到当前帧对应的第一图像时,可以根据前一帧对应的第一图像进行还原处理,得到完整的第一图像。类似的,图像合成模块根据第二部分进行图像合成,得到第二图像,可以是直接对第二部分的所有图层数据进行图像合成,得到第二图像;或者,可以是对第二部分中的部分图层数据进行图像合成,得到第二图像。
示例性的,编码器根据第一图像进行编码,得到第一编码数据,可以是直接对第一图像的所有数据进行编码,得到第一编码数据。或者,可以是对第一图像中的部分数据进行编码,得到第一编码数据,例如,可以根据当前帧对应的第一图像与前一帧对应的第一图像,确定当前帧对应的第一图像与前一帧对应的第一图像之间的区别部分,并对区别部分对应的数据进行编码,得到第一编码数据。因此,第二终端设备得到当前帧对应的第一编码数据(即区别部分对应的第一编码数据)时,可以结合前一帧对应的第一编码数据来进行解码,得到完整的第一编码数据。类似的,编码器根据第二图像进行编码,得到第二编码数据,可以是直接对第二图像的所有数据进行编码,得到第二编码数据;或者,可以是对第二图像中的部分数据进行编码,得到第二编码数据。
需要说明的是,电子设备结合前一帧对应的第一图像来对当前帧对应的第一图像进行还原的方式和结合前一帧对应的第一编码数据来对当前帧对应的第一编码数据进行解码,得到完整的第一编码数据的方式可以由技术人员根据实际场景具体确定,本申请实施例对此不作任何限制。
本申请实施例中,可以将图层数据至少划分为第一部分和第二部分,并可以分别根据第一部分和第二部分进行图像合成、编码和发送等处理,而且根据第二部分进行的图像合成、编码、发送等处理过程与根据第一部分对应的第一图像进行的编码、发送等处理过程可以并行执行,以实现投屏时,图像合成模块执行的合成过程、编码器执行的编码过程和第一应用执行的发送过程三者的并行执行,从而可以有效降低投屏的时延,提升用户的投屏体验。
其中,上述所述的投屏指令可以用于指示第一终端设备将第一应用对应的待投屏界面投屏至第二终端设备进行同步显示。第一应用可以为第一终端设备中的任一应用,即第一终端设备可以将任一应用的界面投屏至第二终端设备进行同步显示。示例性的,投屏指令可以由用户触发生成,也可以由第一终端设备默认生成。
例如,当用户需要将第一终端设备当前显示的界面投屏至第二终端设备进行显示时,用户可以触摸第一终端设备中的投屏按钮。第一终端设备检测到投屏按钮被触摸时,可以生成投屏指令,以指示第一终端设备进行投屏操作。
例如,当用户需要将第一终端设备当前显示的界面投屏至第二终端设备进行显示时,用户可以将第一终端设备的第一预设区域触碰第二终端设备的第二预设区域。第一终端设备检测到该触碰的操作时,可以生成投屏指令,以指示第一终端设备进行投屏操作。应理解,第一预设区域和第二预设区域可以根据实际情况具体设置,例如,可以将第一预设区域设置为第一终端设备中NFC芯片所对应的区域,可以将第二预设区域设置为第二终端设备中NFC芯片所对应的区域。
例如,用户可以在第一终端设备设置一个向第二终端设备自动投屏的时间(如可以将该时间设置为当天的21:00)。当到达该时间时,第一终端设备可以主动生成投屏指令,以指示第一终端设备执行投屏操作。
示例性的,传输模块可以为有线通信模块,或者可以为移动通信模块,或者可以为无线通信模块。即第一应用可以通过USB等有线通信方式,或者可以通过2G/3G/4G/5G/6G等移动通信方式,或者可以通过蓝牙、Wi-Fi、Wi-Fi p2p、UWB等无线通信方式,将第一编码数据和第二编码数据发送给第二终端设备。
示例性的,图像合成模块可以为第一终端设备的SurfaceFlinger组件。以下将以图像合成模块为SurfaceFlinger组件为例进行示例性说明。
示例性的,图层数据是指待投屏界面具有的一个或多个图层对应的数据。将图层数据划分为第一部分和第二部分是指对每一个图层对应的数据进行划分,以将每一个图层对应的数据划分成数据A和数据B,并将所有图层对应的数据A统一确定为第一部分,将所有图层对应的数据B统一确定为第二部分,从而将待投屏界面分割成第一区域(即第一部分对应的图像区域)和第二区域(即第二部分对应的图像区域)。其中,第一部分与第二部分不重叠,即第一区域与第二区域不重叠。
本申请实施例中,可以采用任一划分方式来对图层数据进行划分,具体的划分方式可以由技术人员根据实际场景具体设置。可选的,划分方式可以是等分划分,也可以是非等分划分。等分划分是指第一部分对应的第一区域的图像大小与第二部分对应的第二区域的图像大小相同。非等分划分是指第一部分对应的第一区域的图像大小与第二部分对应的第二区域的图像大小不相同。例如,可以是第一区域的图像大小大于第二区域的图像大小,或者可以是第二区域的图像大小大于第一区域的图像大小。以下将以划分方式为等分划分为例进行示例性说明。
示例性的,请参阅图5,图5示出了本申请实施例提供的划分方式的应用场景示意图。该应用场景中,第一终端设备可以为手机,待投屏界面可以为相册界面。相册界面中可以包括多张图像以及相关的操作按钮(例如照片、相册、时刻和发现)。该应用场景通过对图层数据进行划分,得到的第一部分和第二部分在待投屏界面中所对应的区域来对划分方式进行示例性说明。
如图5中的(a)所述,SurfaceFlinger组件可以通过横向划分方式对图层数据进行划分,即可以将每一个图层对应的数据划分为上侧对应的数据A和下侧对应的数据B,以此将待投屏界面分割成上侧的第一区域501(即虚线上侧的区域)和下侧的第二区域502(即虚线下侧的区域)。
如图5中的(b)所示,SurfaceFlinger组件可以通过纵向划分方式对图层数据进行划分,即可以将每一个图层对应的数据划分为左侧对应的数据A和右侧对应的数据B,以此将待投屏界面分割成左侧的第一区域501(即虚线左侧的区域)和右侧的第二区域502(即虚线右侧的区域)。
如图5中的(c)所示,SurfaceFlinger组件可以通过对角划分方式对图层数据进行划分,即可以将每一个图层对应的数据划分为左上侧对应的数据A和右下侧对应的数据B,以此将待投屏界面分割分成左上侧的第一区域501(即虚线左上侧的区域)和右下侧的第二区域502(即虚线右下侧的区域)。
如图5中的(d)所示,SurfaceFlinger组件可以通过对角划分方式对图层数据进行划分,即可以将每一个图层对应的数据划分为左下侧对应的数据A和右上侧对应的数据B,以此将待投屏界面分割分成左下侧的第一区域501(即虚线左下侧的区域)和右上侧的第二区域502(即虚线右上侧的区域)。
应理解,在以等分划分的方式对图层数据进行划分,得到第一部分和第二部分时,如图4所示,SurfaceFlinger组件根据第一部分进行合成所需的时间和根据第二部分进行合成所需的时间均可以为4ms,编码器根据第一图像进行编码所需的时间和根据第二图像进行编码所需的时间均可以为5ms,第一应用向第二终端设备发送第一编码数据所需的时间和向第二终端设备发送第二编码数据所需的时间均可以为5ms。
由图4可知,SurfaceFlinger组件根据第二部分进行合成的过程与编码器根据第一图像进行编码的过程可以并行执行,另外,编码器根据第二图像进行编码的过程与第一应用通过传输模块向第二终端设备发送第一编码数据的过程也可以并行执行,即本申请实施例,从进行图层数据的合成到完成所有编码数据的发送这一过程,所需的总时间T1为(4+5+5+5)ms。而图3所示的投屏方法完成这一过程,所需的总时间T0为(8+10+10)ms。显然,T1<T0,因此,本申请实施例提供的投屏方法所需的时间比图3所示的投屏方法所需的时间少,例如可以比图3所示的投屏方法所需的时间少9ms,也就是说,本申请实施例提供的投屏方法可以有效降低投屏的时延,提升用户的投屏体验。
需要说明的是,上述所述的SurfaceFlinger组件将图层数据划分为第一部分和第二部分两个部分仅作示例性解释,不应理解为对本申请实施例的限制,本申请实施例中,SurfaceFlinger组件也可以将图层数据划分为三个或三个以上的部分。
应理解,图层数据对应的划分数量可以由技术人员根据实际场景具体设置,本申请实施例对此不作任何限制。示例性的,技术人员可以根据第一终端设备的中央处理器(Central Processing Unit,CPU)性能和/或调度效率等来设置图层数据对应的划分数量。
例如,CPU性能较好的第一终端设备,数据处理能力和传输能力等相对较强,CPU性能较差的第一终端设备,数据处理能力和传输能力等相对较差。因此,对于CPU性能较好的第一终端设备,可以将设置较多的划分数量;对于CPU性能较差的第一终端设备,可以设置较少的划分数量。
例如,调度效率较好的第一终端设备,数据处理能力和传输能力等相对较强,调度效率较差的第一终端设备,数据处理能力和传输能力等相对较差,因此,对于调度效率较好的第一终端设备,可以设置较多的划分数量;对于调度效率较差的第一终端设备,可以设置较少的划分数量。
本申请实施例中,在将图层数据划分为第一部分和第二部分后,SurfaceFlinger组件可以先根据第一部分进行合成,得到第一图像(例如第一区域对应的图像),并可以将第一图像发送给编码器进行编码处理,以得到第一编码数据。在编码器根据第一图像进行编码时,surfaceFlinger组件可以继续根据第二部分进行合成,得到第二图像(例如第二区域对应的图像),并继续将第二图像发送给编码器进行编码处理,以得到第二编码数据。
应理解,SurfaceFlinger组件可以通过任一方式根据第一部分或者第二部分进行合成,编码器也可以采用任一编码方式根据第一图像或者第二图像进行编码,即本申请实施例对SurfaceFlinger组件的合成方式和编码器的编码方式不作任何限制,可以由技术人员根据实际场景具体设置。
示例性的,为方便第二终端设备对待投屏界面进行显示,第一图像的格式与第二图像的格式相同,例如第一图像和第二图像均可以为YUV格式的图像,或者第一图像和第二图像均可以为RGB格式的图像,等等。即SurfaceFlinger组件可以根据第一部分和第二部分分别合成得到YUV格式的图像,或者SurfaceFlinger组件可以根据第一部分和第二部分分别合成得到RGB格式的图像。
类似的,第一编码数据的格式和第二编码数据的格式相同,例如第一编码数据和第二编码数据均可以为H.264格式的视频流,或者第一编码数据和第二编码数据均可以为H.265格式的视频流,等等。
在一种可能的实现方式中,为使得第二终端设备在解码得到第一图像和第二图像后,可以正确拼接第一图像和第二图像,避免待投屏界面在第二终端设备中显示存在乱序问题,第一终端设备在通过编码器根据第一图像或第二图像进行编码时,可以增加对应的划分信息。因此,第二终端设备解码得到第一图像和第二图像后,可以根据划分信息对第一图像和第二图像进行准确拼接。
其中,划分信息用于描述图层数据对应的划分方式(也即待投屏界面对应的分割方式)和该图像(即第一图像或第二图像等)在待投屏界面中的位置信息。
示例性的,划分信息中可以包括划分方式、图像序号和图像总数等。其中,图像序号用于描述各图像在待投屏界面中的位置信息。图像总数用于描述将待投屏界面分割成多少张图像(或者也可以称为区域)。例如,当待投屏界面被分割成两张图像时,图像总数可以为2。例如,当待投屏界面被分割成三张图像时,图像总数可以为3。例如,当待投屏界面没有被分割时,图像总数可以为1。
例如,在通过横向划分方式,将待投屏界面由上至下分割成第一图像、第二图像和第三图像时,在根据第一图像进行编码时,编码器可以增加第一图像对应的划分信息。因此,第一图像对应的第一编码数据中不仅可以包括第一图像,还可以包括划分方式对应的字段内容“横向划分”、图像序号对应的字段内容“1”以及图像总数对应的字段内容“3”。同样的,在根据第二图像进行编码时,编码器可以增加第二图像对应的划分信息。因此,第二图像对应的第二编码数据中不仅可以包括第二图像,还可以包括划分方式对应的字段内容“横向划分”、图像序号对应的字段内容“2”以及图像总数对应的字段内容“3”。在根据第三图像进行编码时,编码器可以增加第三图像对应的划分信息。因此,第三图像对应的第三编码数据中不仅可以包括第三图像,还可以包括划分方式对应的字段内容“横向划分”、图像序号对应的字段内容“3”和图像总数对应的字段内容“3”。
第二终端设备获取第一编码数据后,可以对第一编码数据进行解码,得到第一图像以及划分方式(即横向划分)、第一图像对应的图像序号(即1)以及图像总数(即3)。同样的,第二终端设备获取第二编码数据后,可以对第二编码数据进行解码,得到第二图像以及划分方式(即横向划分)、第二图像对应的图像序号(即2)以及图像总数(即3)。第二终端设备获取第三编码数据后,可以对第三编码数据进行解码,得到第三图像以及划分方式(即横向划分)、第三图像对应的图像序号(即3)以及图像总数(即3)。此时,第二终端设备根据划分方式和各图像序号可以确定第一图像为待投屏界面上侧的图像、第二图像为待投屏界面中间的图像、第三图像为待投屏界面下侧的图像。因此,第二终端设备可以将第一图像、第二图像和第三图像按照从上至下的位置关系进行拼接,并对拼接得到的图像进行显示。
在另一种可能的实现方式,第一终端设备确定划分方式后,可以将划分方式对应的划分信息单独发送给第二终端设备。例如,在进行投屏之前,第一终端设备可以先将划分信息发送给第二终端设备。因此,在根据各图像进行编码时,编码器不需要再单独为各图像添加划分信息,以减少编码过程中的信息添加,从而提高编码速度。此时,划分信息中可以包括划分方式、图像发送方式以及图像总数等。
其中,图像发送方式用于描述第一终端设备发送各图像的顺序,以表征各图像对应的图像序号,从而标识各图像在待投屏界面中的位置信息。
例如,在通过纵向划分方式,将待投屏界面由左至右分割成第一图像和第二图像时,图像发送方式可以为由左至右的顺序,即第一终端设备可以按照从左至右的顺序,先将第一图像对应的第一编码数据发送给第二终端设备,然后再将第二图像对应的第二编码数据发送给第二终端设备。
也就是说,第二终端设备可以依次获取第一编码数据和第二编码数据。此时,第二终端设备根据事先获取的划分信息和编码数据的获取顺序,可以确定第一编码数据对应的第一图像为待显示界面左侧的图像,第二编码数据对应的第二图像为待投屏界面右侧的图像。因此,第二终端设备可以将第一图像和第二图像按照从左至右的位置关系进行拼接,并对拼接得到的图像进行显示。
示例性的,图像发送方式也可以根据划分方式默认设置。此时,第一终端设备事先发送给第二终端设备的划分信息可以仅包括划分方式和图像总数。例如,在通过横向划分方式进行划分时,图像发送方式可以默认设置为由上至下的顺序,即第一终端设备可以默认按照从上至下的顺序,将各图像对应的编码数据发送给第二终端设备。例如,在通过纵向划分方式进行划分时,图像发送方式可以默认设置为由左至右的顺序,即第一终端设备可以默认按照从左至右的顺序,将各图像对应的编码数据发送给第二终端设备。因此,第二终端设备依次获取各图像对应的编码数据后,可以根据划分方式和默认的图像发送方式,确定各图像在待投屏界面中的位置信息,并可以根据位置信息对解码得到的各图像进行拼接,并对拼接得到的图像进行显示。
例如,在通过纵向划分方式,将待投屏界面由左至右分割成第一图像、第二图像和第三图像时,图像发送方式可以默认为由左至右的顺序,即第一终端设备可以默认按照从左至右的顺序,将第一图像对应的第一编码数据、第二图像对应的第二编码数据和第三图像对应的第三编码数据依次发送给第二终端设备。也就是说,第二终端设备可以依次获取第一编码数据、第二编码数据和第三编码数据,此时,第二终端设备可以确定第一编码数据对应的第一图像为待投屏界面左侧的图像,第二编码数据对应的第二图像为待投屏界面中间的图像,第三编码数据对应的第三图像为待投屏界面右侧的图像,并可以基于此对第一图像、第二图像和第三图像进行拼接后显示。
在一种可能的实现方式中,SurfaceFlinger组件可以对图层数据只进行一次合成处理,并可以将合成得到的图像直接用于第一终端设备的显示以及直接用于第二终端设备的显示,以减少SurfaceFlinger组件进行图像合成的次数,降低第一终端设备的CPU、内存和功耗等资源的浪费。
由前述描述以及图3和图4可知,SurfaceFlinger组件进行图像合成的周期需与第一终端设备的刷新频率保持一样,以避免造成第一终端设备的显示异常,即SurfaceFlinger组件获取图层数据后,一般需要等待Vsync信号,即需要在检测到Vsync信号时,才会对图层数据进行合成,使得SurfaceFlinger组件在对图层数据进行合成时,需要等待较长的时间(例如最长的等待时间可以达到16ms),也会导致投屏的时延较大,影响用户体验。
请参阅图6,图6示出了本申请另一实施例提供的投屏方法的流程框图。其中,该投屏方法可以应用于第一终端设备,以将第一终端设备中的待投屏界面投屏至第二终端设备进行同步显示。
如图6所示,在检测到投屏指令时,第一终端设备的第一应用可以对待投屏界面进行图层绘制,得到待投屏界面对应的图层数据,并向第一终端设备的SurfaceFlinger组件发送图层数据。同时,第一终端设备可以确定第一终端设备当前的显示状态。
当第一终端设备当前的显示状态为熄屏状态时,第一终端设备可以指示SurfaceFlinger组件不需要等待Vsync信号。因此,SurfaceFlinger组件获取图层数据后,可以直接根据图层数据进行图像合成,得到图像,而不用等待Vsync信号。随后,SurfaceFlinger组件可以向第一终端设备的编码器发送图像。
编码器获取图像后,可以根据图像进行编码,得到编码数据,并可以向第一应用发送编码数据。第一应用接收到编码数据后,可以通过传输模块向第二终端设备发送编码数据。第二终端设备接收到第一终端设备发送的编码数据时,可以对编码数据进行解码,并对解码得到的图像进行显示。
即该实施例提供的投屏方法中,在投屏过程时,第一终端设备可以实时获取第一终端设备当前的显示状态。显示状态可以包括熄屏状态和亮屏状态。当显示状态为熄屏状态时,表明第一终端设备不需要对待投屏界面进行同步显示,也就是说,SurfaceFlinger组件可以只需要合成在第二终端设备进行显示的图像,而不需要合成在第一终端设备进行显示的图像。此时,SurfaceFlinger组件进行图像合成的周期与第一终端设备的刷新频率是否保持一致,并不会造成第一终端设备的显示异常,也不会对第二终端设备的显示带来影响。因此,当第一终端设备的显示状态为熄屏状态时,SurfaceFlinger组件获取图层数据后,可以直接根据图层数据进行图像合成,而不需要等待Vsync信号,以有效减少SurfaceFlinger组件的等待时间,降低投屏的时延。
在一种可能的实现方式中,在检测到投屏指令时,第一终端设备可以确定待投屏界面对应的第一应用是否为目标应用。其中,目标应用为没有帧率控制的应用,例如某些游戏应用和壁纸类应用。帧率是指以帧为单位的图像连续出现在显示界面上的频率。目标应用可以由技术人员根据实际场景具体设置。
当第一应用不是目标应用时,第一终端设备可以检测第一终端设备当前的显示状态。当第一终端设备当前的显示状态为熄屏状态时,第一终端设备可以指示SurfaceFlinger组件不需要等待Vsync信号,即可以及时根据获取的图层数据进行图像合成。
当第一应用是目标应用时,由于这些没有帧率控制的目标应用进行图层绘制的速度一般较快,若不基于Vsync信号进行图像合成,会导致SurfaceFlinger组件来不及对图层数据进行处理,造成界面显示跳帧等问题。此时,SurfaceFlinger组件需要等待Vsync信号,以在接收到Vsync信号时对图层数据进行图像合成。
请参阅图7,图7示出了本申请另一实施例提供的投屏方法的流程框图。其中,该投屏方法可以应用于第一终端设备,以将第一终端设备中的待投屏界面投屏至第二终端设备进行同步显示。
如图7所示,在检测到投屏指令时,第一终端设备的第一应用可以对待投屏界面进行图层绘制,得到待投屏界面对应的图层数据,并可以向第一终端设备的SurfaceFlinger组件发送图层数据。同时,第一终端设备可以确定第一终端设备当前的显示状态。
当第一终端设备当前的显示状态为熄屏状态时,第一终端设备可以指示SurfaceFlinger组件不需要等待Vsync信号,因此,SurfaceFlinger组件获取图层数据后,可以直接将图层数据至少划分为第一部分和第二部分,并可以直接根据第一部分进行图像合成,得到第一图像,而不用等待Vsync信号,以减少SurfaceFlinger组件的等待时间,降低投屏的时延。随后,SurfaceFlinger组件可以向第一终端设备的编码器发送第一图像。
编码器获取第一图像后,可以根据第一图像进行编码,得到第一编码数据,并向第一应用发送第一编码数据。第一应用接收到第一编码数据后,可以通过传输模块向第二终端设备发送第一编码数据。
其中,在编码器根据第一图像进行编码和/或在第一应用对第一编码数据进行发送时,图像合成模块还可以继续根据第二部分进行图像合成,得到第二图像,并可以继续向编码器发送第二图像。编码器也可以继续根据第二图像进行编码,得到第二编码数据,并可以向第一应用发送第二编码数据。第一应用接收到第二编码数据后,可以通过传输模块向第二终端设备发送第二编码数据。
第二终端设备接收到第一终端设备发送的第一编码数据和第二编码数据时,可以对第一编码数据和第二编码数据进行解码,得到第一图像和第二图像,并对第一图像和第二图像进行拼接后显示。
该实施例中,在第一终端设备当前的显示状态为熄屏状态时,第一终端设备可以通过SurfaceFlinger组件执行的合成过程、编码器执行的编码过程和第一应用执行的发送过程三者的并行执行以及指示SurfaceFlinger组件不需等待Vsync信号,来降低投屏的时延,提升用户的投屏体验。
下面将结合上述的描述对本申请实施例提供的一种投屏方法进行示例性说明。请参阅图8,图8示出了本申请一实施例提供的一种投屏方法的示意性流程图。如图8所示,该方法可以包括:
S801、第一终端设备检测到投屏指令。
其中,投屏指令用于指示第一终端设备将第一应用对应的待投屏界面投屏至第二终端设备进行同步显示。第一应用可以为第一终端设备中的任一应用。
示例性的,投屏指令可以由用户触发生成,也可以由第一终端设备默认生成,具体内容可以参见前述有关生成投屏指令的具体描述,在此不再赘述。
S802、第一终端设备的第一应用向第一终端设备的SurfaceFlinger组件发送待投屏界面对应的图层数据。
可选的,在第一终端设备检测到投屏指令时,第一终端设备的第一应用可以对待投屏界面进行图层绘制,得到待投屏界面对应的图层数据,并向第一终端设备的SurfaceFlinger组件发送图层数据。
其中,待投屏界面可以是指第一应用对应的界面,该界面可以是第一终端设备中正在显示的界面,也可以是即将在第一终端设备中进行显示的界面。
应理解,第一应用可以采用任一方式对待投屏界面进行图层绘制,得到图层数据,本申请实施例对此不作任何限制。
S803、SurfaceFlinger组件根据图层数据中的第一部分进行图像合成,得到第一图像,图层数据至少包括第一部分和第二部分。
示例性的,图层数据是指待投屏界面具有的一个或多个图层对应的数据。在一种可能的实现方式中,SurfaceFlinger组件可以将图层数据至少划分为第一部分和第二部分。其中,将图层数据划分为第一部分和第二部分是指对每一个图层对应的数据进行划分,以将每一个图层对应的数据划分成数据A和数据B,并将所有图层对应的数据A统一确定为第一部分,将所有图层对应的数据B统一确定为第二部分,从而将待投屏界面分割成第一区域(即第一部分对应的图像区域)和第二区域(即第二部分对应的图像区域)。其中,第一部分与第二部分不重叠,即第一区域与第二区域不重叠。
可以理解的是,SurfaceFlinger组件可以采用任一划分方式对图层数据进行划分,具体的划分方式可以由技术人员根据实际场景具体设置。其中,有关划分方式的具体内容可以参照前述划分方式的具体描述,在此不再赘述,例如可以参照图5所示的划分方式对图层数据进行划分。
示例性的,SurfaceFlinger组件根据第一部分进行图像合成的具体内容可以参照前述有关合成第一图像的具体描述,在此不再赘述。例如,SurfaceFlinger组件可以将第一部分合成为YUV格式的图像,或者可以将第一部分合成为RGB格式的图像。
S804、第一终端设备的编码器根据第一图像进行编码,得到第一编码数据。
可选的,SurfaceFlinger组件根据第一部分进行图像合成,得到第一图像后,可以将第一图像发送给第一终端设备的编码器,以使得编码器可以根据第一图像进行编码,得到第一编码数据。
应理解,编码器根据第一图像进行编码的具体内容可以参照前述有关根据第一图像进行编码的具体描述,在此不再赘述。例如,编码器可以将第一图像编码为H.264格式的视频流,或者将第一图像编码为H.265格式的视频流。
S805、第一应用向第二终端设备发送第一编码数据。
可选的,编码器根据第一图像进行编码,得到第一编码数据后,可以将第一编码数据发送给第一应用,以使得第一应用将第一编码数据发送给第二终端设备。
本申请实施例中,第一应用可以通过传输模块将第一编码数据发送给第二终端设备。传输模块可以为有线通信模块,或者可以为移动通信模块,或者可以为无线通信模块。即第一应用可以通过USB等有线通信方式,或者可以通过2G/3G/4G/5G/6G等移动通信方式,或者可以通过蓝牙、Wi-Fi、Wi-Fi p2p、UWB等无线通信方式,将第一编码数据发送给第二终端设备。
S806、SurfaceFlinger组件根据第二部分进行图像合成,得到第二图像。
其中,SurfaceFlinger组件根据第二部分进行图像合成的过程与SurfaceFlinger组件根据第一部分进行图像合成的过程类似,具体可以参照前述根据第一部分进行图像合成的过程,在此不再赘述。示例性的,与第一图像类似,第二图像可以为YUV格式的图像,或者可以为RGB格式的图像。
可选的,SurfaceFlinger组件根据第一部分进行图像合成,得到第一图像后,可以继续根据第二部分进行图像合成,同时SurfaceFlinger组件可以将第一图像发送给编码器进行编码,即SurfaceFlinger组件根据第二部分进行图像合成的过程与编码器根据第一图像进行编码的过程可以并行执行,以降低投屏时延。
S807、编码器根据第二图像进行编码,得到第二编码数据。
可选的,SurfaceFlinger组件根据第二部分进行图像合成,得到第二图像后,可以将第二图像发送给编码器,以使得编码器可以根据第二图像进行编码,得到第二编码数据。
其中,编码器根据第二图像进行编码的过程与编码器根据第一图像进行编码的过程类似,具体可以参照前述根据第一图像进行编码的过程,在此不再赘述。
示例性的,与第一编码数据类似,第二编码数据可以H.264格式的视频流,或者可以为H.265格式的视频流。
S808、第一应用向第二终端设备发送第二编码数据。
可选的,编码器根据第二图像进行编码,得到第二编码数据后,可以将第二编码数据发送给第一应用,以使得第一应用将第二编码数据发送给第二终端设备。
示例性的,与第一编码数据类似,第一应用可以通过传输模块将第二编码数据发送给第二终端设备。传输模块可以为有线通信模块,或者可以为移动通信模块,或者可以为无线通信模块。即第一应用可以通过USB等有线通信方式,或者可以通过2G/3G/4G/5G/6G等移动通信方式,或者可以通过蓝牙、Wi-Fi、Wi-Fi p2p、UWB等无线通信方式,将第二编码数据发送给第二终端设备。
由上述可知,SurfaceFlinger组件可以根据图层数据中的第一部分和第二部分分别进行图像合成,编码器可以根据第一图像和第二图像分别进行编码,第一应用则可以对第一编码数据和第二编码数据分别进行发送,以此实现合成、编码、发送三者的并行执行,从而降低投屏的时延。
其中,SurfaceFlinger组件分别根据第一部分和第二部分进行图像合成的过程,编码器分别根据第一图像和第二图像进行编码的过程,以及第一应用分别对第一编码数据和第二编码数据进行发送的过程可以参照前述描述,在此不再赘述,例如可以参照图4所示的并行方式进行合成、编码与发送等处理。
即本申请实施例中,在编码器根据第一图像进行编码和/或在第一应用对第一编码数据进行发送时,SurfaceFlinger组件还可以继续根据第二部分进行图像合成,得到第二图像,并可以继续向编码器发送第二图像。编码器接收到第二图像后,可以继续根据第二图像进行编码,得到第二编码数据,并可以向第一应用发送第二编码数据。第一应用接收到第二编码数据后,可以通过传输模块向第二终端设备发送第二编码数据。
也就是说,SurfaceFlinger组件根据第二部分进行图像合成的过程与编码器根据第一图像进行编码的过程可以并行执行,或者SurfaceFlinger组件根据第二部分进行图像合成的过程与第一应用对第一编码数据进行发送的过程可以并行执行,或者编码器根据第二图像进行编码的过程可以与第一应用对第一编码数据进行发送的过程可以并行执行,以有效降低投屏的时延,提升用户体验。
S809、第二终端设备对第一编码数据和第二编码数据进行解码,得到第一图像和第二图像,并对第一图像和第二图像进行拼接后显示。
示例性的,在编码器根据第一图像或第二图像进行编码时,可以增加对应的划分信息。因此,第二终端设备解码得到第一图像和第二图像后,可以根据划分信息对第一图像和第二图像进行准确拼接,并对拼接后的图像进行显示。
其中,划分信息用于描述图层数据对应的划分方式和该图像(即第一图像或第二图像等)在待投屏界面中的位置信息。示例性的,划分信息中可以包括划分方式、图像序号和图像总数等。图像序号用于描述各图像在待投屏界面中的位置信息。图像总数用于描述将待投屏界面分割成多少张图像(或者也可以称为区域)。
应理解,划分信息的具体内容和发送方式等可以参照前述有关划分信息的具体描述,在此不再赘述。
在一种可能的实现方式中,在投屏过程中,第一终端设备可以实时获取第一终端设备当前的显示状态。当第一终端设备当前的显示状态为熄屏状态时,第一终端设备可以指示SurfaceFlinger组件不需要等待Vsync信号。因此,SurfaceFlinger组件获取图层数据后,可以直接根据第一部分进行图像合成,并在完成第一部分的图像合成后,直接根据第二部分进行图像合成,而不需要在接收到Vsync信号,才开始对第一部分进行图像合成,以减少SurfaceFlinger组件的等待时间,降低投屏的时延。
也就是说,当第一终端设备当前的显示状态为熄屏状态时,第一终端设备可以按照图7所示的投屏方法来对待投屏界面进行投屏,具体内容可以参照图7对应的实施例,在此不再赘述。
本申请实施例中,可以将图层数据至少划分为第一部分和第二部分,并可以分别根据第一部分和第二部分进行合成、编码和发送处理,且根据第二部分进行的合成、编码、发送等处理过程与根据第一部分对应的第一图像进行的编码、发送等处理过程可以并行执行,以实现投屏时,图像合成模块执行的合成过程、编码器执行的编码过程和第一应用执行的发送过程三者的并行执行,从而有效降低投屏的时延,提升用户的投屏体验。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的投屏方法,本申请实施例还提供了一种投屏装置,该装置的各个模块可以对应实现投屏方法的各个步骤。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种终端设备,所述终端设备包括至少一个存储器、至少一个处理器以及存储在所述至少一个存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时,使所述终端设备实现上述任意各个方法实施例中的步骤。示例性的,所述终端设备的结构可以如图1所示。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被计算机执行时,使所述计算机实现上述任意各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备实现上述任意各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质至少可以包括:能够将计算机程序代码携带到装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(read-only memory,ROM)、随机存取存储器(random accessmemory,RAM)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (18)

1.一种投屏系统,其特征在于,包括第一终端设备和第二终端设备;
所述第一终端设备,用于在检测到投屏指令时,对待投屏界面进行图层绘制,得到所述待投屏界面对应的图层数据;
所述第一终端设备,还用于根据所述图层数据的第一部分进行图像合成,得到第一图像;
所述第一终端设备,还用于根据所述第一图像进行编码,得到第一编码数据,并向所述第二终端设备发送所述第一编码数据;
所述第一终端设备,还用于在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,并根据所述第二图像进行编码,得到第二编码数据;
所述第一终端设备,还用于向所述第二终端设备发送所述第二编码数据;
所述第二终端设备,用于获取所述第一编码数据和所述第二编码数据,并对所述第一编码数据和所述第二编码数据进行解码,得到所述第一图像和所述第二图像;
所述第二终端设备,还用于根据所述第一图像和所述第二图像,得到所述待投屏界面,并对所述待投屏界面进行显示。
2.根据权利要求1所述的系统,其特征在于,所述第一终端设备,还用于响应于所述图层数据,根据所述图层数据的第一部分进行图像合成,得到所述第一图像。
3.根据权利要求1或2所述的系统,其特征在于,所述第一终端设备,还用于确定所述第一图像对应的第一划分信息,并根据所述第一图像和所述第一划分信息进行编码,得到所述第一编码数据,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数。
4.根据权利要求3所述的系统,其特征在于,所述第二终端设备,还用于根据所述第一图像对应的第一划分信息和所述第二图像对应的第二划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
5.一种投屏方法,其特征在于,应用于第一终端设备,所述方法包括:
在检测到投屏指令时,对待投屏界面进行图层绘制,得到所述待投屏界面对应的图层数据;
根据所述图层数据的第一部分进行图像合成,得到第一图像;
根据所述第一图像进行编码,得到第一编码数据;
向第二终端设备发送所述第一编码数据;
在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,并根据所述第二图像进行编码,得到第二编码数据;
向所述第二终端设备发送所述第二编码数据。
6.根据权利要求5所述的方法,其特征在于,所述根据所述图层数据的第一部分进行图像合成,得到第一图像,包括:
通过图像合成模块根据所述第一部分进行图像合成,得到所述第一图像;
所述根据所述第一图像进行编码,得到第一编码数据,包括:
通过编码器根据所述第一图像进行编码,得到所述第一编码数据;
所述向第二终端设备发送所述第一编码数据,包括:
通过第一应用向所述第二终端设备发送所述第一编码数据。
7.根据权利要求6所述的方法,其特征在于,所述在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,包括:
在所述编码器根据所述第一图像进行编码时,所述图像合成模块根据所述第二部分进行图像合成,得到所述第二图像。
8.根据权利要求6或7所述的方法,其特征在于,所述在根据所述第一图像进行编码时,或者在向所述第二终端设备发送所述第一编码数据时,根据所述图层数据的第二部分进行图像合成,得到第二图像,包括:
在所述第一应用向所述第二终端设备发送所述第一编码数据时,所述图像合成模块根据所述第二部分进行图像合成,得到所述第二图像。
9.根据权利要求6至8中任一项所述的方法,其特征在于,所述根据所述第二图像进行编码,得到第二编码数据,包括:
在所述第一应用向所述第二终端设备发送所述第一编码数据时,所述编码器根据所述第二图像进行编码,得到所述第二编码数据。
10.根据权利要求5至9中任一项所述的方法,其特征在于,所述根据所述图层数据的第一部分进行图像合成,得到第一图像,包括:
响应于所述图层数据,通过图像合成模块根据所述图层数据的第一部分进行图像合成,得到所述第一图像。
11.根据权利要求5至10中任一项所述的方法,其特征在于,所述根据所述第一图像进行编码,得到第一编码数据,包括:
确定所述第一图像对应的第一划分信息,并根据所述第一图像和所述第一划分信息进行编码,得到所述第一编码数据,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数。
12.根据权利要求5至10中任一项所述的方法,其特征在于,所述方法还包括:
确定所述图层数据对应的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
向所述第二终端设备发送所述第三划分信息。
13.一种投屏方法,其特征在于,应用于第二终端设备,所述方法包括:
获取第一终端设备分别发送的第一编码数据和第二编码数据,所述第一编码数据为图层数据的第一部分对应的编码数据,所述第二编码数据为所述图层数据的第二部分对应的编码数据,所述图层数据为所述第一终端设备的待投屏界面对应的图层数据;
分别对所述第一编码数据和所述第二编码数据进行解码,得到第一图像和第二图像;
根据所述第一图像和所述第二图像,得到所述待投屏界面,并对所述待投屏界面进行显示。
14.根据权利要求13所述的方法,其特征在于,所述分别对所述第一编码数据和所述第二编码数据进行解码,得到第一图像和第二图像,包括:
对所述第一编码数据进行解码,得到所述第一图像和所述第一图像对应的第一划分信息,所述第一划分信息包括所述图层数据对应的划分方式、所述第一图像对应的图像序号和所述图层数据对应的图像总数;
对所述第二编码数据进行解码,得到所述第二图像和所述第二图像对应的第二划分信息,所述第二划分信息包括所述图层数据对应的划分方式、所述第二图像对应的图像序号和所述图层数据对应的图像总数。
15.根据权利要求14所述的方法,其特征在于,所述根据所述第一图像和所述第二图像,得到所述待投屏界面,包括:
根据所述第一划分信息和所述第二划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
16.根据权利要求13所述的方法,其特征在于,所述方法还包括:
获取所述第一终端设备发送的第三划分信息,所述第三划分信息包括所述图层数据对应的划分方式、图像总数和图像发送方式;
所述根据所述第一图像和所述第二图像,得到所述待投屏界面,包括:
根据所述第三划分信息对所述第一图像和所述第二图像进行拼接,得到所述待投屏界面。
17.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,使所述终端设备实现如权利要求5至12中任一项所述的投屏方法,或者实现如权利要求13至16中任一项所述的投屏方法。
18.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被计算机执行时,使所述计算机实现如权利要求5至12中任一项所述的投屏方法,或者实现如权利要求13至16中任一项的投屏方法。
CN202210254483.2A 2022-03-11 2022-03-11 投屏方法、终端设备及计算机可读存储介质 Pending CN116781968A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210254483.2A CN116781968A (zh) 2022-03-11 2022-03-11 投屏方法、终端设备及计算机可读存储介质
PCT/CN2023/078992 WO2023169276A1 (zh) 2022-03-11 2023-03-01 投屏方法、终端设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210254483.2A CN116781968A (zh) 2022-03-11 2022-03-11 投屏方法、终端设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN116781968A true CN116781968A (zh) 2023-09-19

Family

ID=87937206

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210254483.2A Pending CN116781968A (zh) 2022-03-11 2022-03-11 投屏方法、终端设备及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN116781968A (zh)
WO (1) WO2023169276A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2585760B (en) * 2018-06-06 2022-04-20 Canon Kk Method, device, and computer program for transmitting media content
CN108833932B (zh) * 2018-07-19 2021-01-05 湖南君瀚信息技术有限公司 一种实现高清视频超低延迟编解码及传输的方法及系统
CN111831242A (zh) * 2019-04-23 2020-10-27 阿里巴巴集团控股有限公司 信息显示方法、投屏端、显示端、存储介质及系统
CN110865782B (zh) * 2019-09-29 2024-01-30 华为终端有限公司 数据传输方法、装置及设备
CN113316028B (zh) * 2020-02-27 2022-03-08 华为技术有限公司 投屏方法、投屏设备及存储介质
CN113687803A (zh) * 2020-05-19 2021-11-23 华为技术有限公司 投屏方法、投屏源端、投屏目的端、投屏系统及存储介质

Also Published As

Publication number Publication date
WO2023169276A1 (zh) 2023-09-14

Similar Documents

Publication Publication Date Title
CN113726950B (zh) 一种图像处理方法和电子设备
CN113556598A (zh) 多窗口投屏方法及电子设备
WO2023279820A1 (zh) 一种触摸屏采样率的调整方法及电子设备
CN114461051B (zh) 帧率切换方法、装置及存储介质
CN113254120A (zh) 数据处理方法和相关装置
CN116055773A (zh) 一种多屏协同方法、系统及电子设备
CN117711356B (zh) 一种屏幕刷新率切换方法及电子设备
CN115480833A (zh) 显示方法及电子设备
CN115119048B (zh) 一种视频流处理方法及电子设备
CN116414337A (zh) 帧率切换方法及装置
CN116781968A (zh) 投屏方法、终端设备及计算机可读存储介质
CN116257235A (zh) 绘制方法及电子设备
CN115734021A (zh) 一种录屏方法、电子设备及计算机可读存储介质
CN116684521B (zh) 音频处理方法、设备及存储介质
CN116700578B (zh) 图层合成方法、电子设备以及存储介质
CN116204093B (zh) 一种页面显示方法及电子设备
CN116185245B (zh) 一种页面显示方法及电子设备
CN116737097B (zh) 一种投屏图像处理方法及电子设备
CN116055613B (zh) 一种投屏方法和设备
CN116743908B (zh) 壁纸显示方法及相关装置
CN116700660B (zh) 音频播放方法和电子设备
CN116668764B (zh) 处理视频的方法及装置
CN115794413B (zh) 一种内存处理方法及相关装置
WO2023124227A1 (zh) 帧率切换方法及装置
CN117707242A (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