WO2018049761A1 - 一种gif文件的播放方法及*** - Google Patents

一种gif文件的播放方法及*** Download PDF

Info

Publication number
WO2018049761A1
WO2018049761A1 PCT/CN2016/113362 CN2016113362W WO2018049761A1 WO 2018049761 A1 WO2018049761 A1 WO 2018049761A1 CN 2016113362 W CN2016113362 W CN 2016113362W WO 2018049761 A1 WO2018049761 A1 WO 2018049761A1
Authority
WO
WIPO (PCT)
Prior art keywords
image
gif file
information
file
gif
Prior art date
Application number
PCT/CN2016/113362
Other languages
English (en)
French (fr)
Inventor
王东杰
Original Assignee
广州视睿电子科技有限公司
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 广州视睿电子科技有限公司 filed Critical 广州视睿电子科技有限公司
Publication of WO2018049761A1 publication Critical patent/WO2018049761A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/438Presentation of query results
    • G06F16/4387Presentation of query results by the use of playlists
    • G06F16/4393Multimedia presentations, e.g. slide shows, multimedia albums

Definitions

  • the present invention relates to the field of playing software technologies, and in particular, to a method and system for playing a GIF file.
  • GIF Graphics Interchange Format
  • a GIF file is a file generated in this file format.
  • the GIF file can store a plurality of color images, and when a plurality of image data stored in one file are read out one by one and displayed on the screen, the simplest animation can be constructed, so the GIF file is It is widely used because of its strong visibility.
  • the existing software for playing GIF needs to first parse all the information of the entire GIF file in the process of playing, and then display the image parsed by the GIF file one by one according to the parsed information, thereby forming an animated GIF.
  • This method of playing GIF needs to read the entire GIF file and parse all the information during each playback, so it occupies more memory resources and consumes a lot of CPU resources, especially when playing multiple GIF files.
  • the memory is full, which causes the system to crash; and because the memory is insufficient and the CPU consumption is too high, the GIF file will not play smoothly.
  • an object of the present invention is to provide a method and system for playing a GIF file that consumes less memory resources, consumes less CPU resources, and plays smoothly.
  • an aspect of the present invention provides a method for playing a GIF file, including the following steps: S11: Acquire basic information and control information of each frame of the byte data of the read GIF file;
  • the basic information includes location information and size information of the image, the control information includes delay time information and processing method information of the image;
  • S12 parsing each frame image of the GIF file;
  • S13 according to The basic information of each frame image is set in a superimposed manner in a preset image container;
  • S14 controlling an image in the image container according to the control information of each frame image on a display screen Display on the to form a dynamic image of the GIF.
  • step S12 is specifically: parsing each frame image of the GIF file using GifBitmapDecoder.
  • the method further includes: storing file stream information of the GIF file read by the file stream Putting it into the memory stream, and acquiring the byte data in the file stream information by means of a memory stream.
  • the step S12 includes: detecting whether the GIF file that has been parsed exists in the preset cache path; if not, parsing the GIF file to obtain each frame image and buffering the image in the The cache path is described; if yes, step S13 is performed.
  • the “detecting whether the GIF file has been parsed in the preset cache path” is specifically: determining whether there is a parsed path in the cache path by detecting the preset MD5 value.
  • Another aspect of the present invention provides a playback system for a GIF file, including: an information acquisition module, configured to acquire basic information and control information of each frame of the byte data of the read GIF file;
  • the basic information includes location information and size information of the image, the control information includes delay time information and processing method information of the image, and an image parsing module configured to parse each frame image of the GIF file;
  • a setting module configured to set each frame image in a preset image container in a superimposed manner according to the basic information of each frame image;
  • display control module configured to perform, according to the control of each frame image
  • the information controls the display of the image in the image container on the display to form a dynamic image of the GIF.
  • the image parsing module comprises: an image parsing unit, configured to parse each frame image of the GIF file by using a GifBitmapDecoder.
  • the playing system of the GIF file further includes: a file reading module, configured to store the file stream information of the GIF file read by the file stream into the memory stream, and obtain the file stream through the memory stream The byte data in the file stream information.
  • a file reading module configured to store the file stream information of the GIF file read by the file stream into the memory stream, and obtain the file stream through the memory stream The byte data in the file stream information.
  • the image parsing module specifically includes: a detecting unit, configured to detect whether the GIF file that has been parsed exists in a preset cache path; and an analyzing unit, configured to parse the GIF file if not Obtaining each frame of image and buffering the image in the cache path; and executing an element, if yes, notifying the image setting module.
  • the detecting unit specifically includes: a determining subunit, configured to determine, by detecting the preset MD5 value, whether the GIF file that has been parsed exists in the cache path; wherein the MD5 value It is obtained by the MD5 algorithm based on the calculation of the GIF file.
  • a determining subunit configured to determine, by detecting the preset MD5 value, whether the GIF file that has been parsed exists in the cache path; wherein the MD5 value It is obtained by the MD5 algorithm based on the calculation of the GIF file.
  • the method and system for playing a GIF file provided by the present invention can obtain only the basic information and the control information of each frame image in the byte data of the GIF file when parsing the GIF file according to the GIF format, thereby eliminating the need for All the information of the GIF file is parsed according to the GIF format, thereby reducing the memory occupied by the GIF file information after the GIF file is parsed, and also reducing the CPU resource consumption of the GIF file during the parsing process, thereby making the GIF The playback of the file is smoother.
  • FIG. 1 is a flowchart of a method for playing a GIF file according to an embodiment of the present invention
  • FIG. 2 is a schematic structural diagram of a GIF file playing system according to an embodiment of the present invention.
  • FIG. 3 is a schematic structural diagram of the image parsing module according to an embodiment of the present invention.
  • FIG. 4 is a schematic structural diagram of another GIF file playing system according to an embodiment of the present invention.
  • FIG. 5 is a schematic structural diagram of another image parsing module according to an embodiment of the present disclosure.
  • FIG. 6 is a schematic structural diagram of the detecting unit according to an embodiment of the present invention.
  • An aspect of the present invention provides a method for playing a GIF file.
  • the method specifically includes steps S11 to S14:
  • the basic information and the control information of the image in each frame are obtained by parsing from the byte data of the GIF file according to the GIF file format.
  • GIF file formats are complex, including file headers, logical screen description blocks, global color tables, image description blocks, local color tables, table-based image data, graphics control extension blocks, annotation extension blocks, and application extension blocks. If all the file formats of the GIF file are parsed, then a certain amount of CPU resources are consumed, and since the parsed information is stored in the memory, the information parsed by the GIF file also takes up a considerable amount of information. Memory resources.
  • the delay time information and the processing method information of each frame image are acquired in the control extension block,
  • the basic information and the control information are more efficiently acquired, and since it is not necessary to parse all the information of the GIF file according to the GIF format, the memory occupied by the GIF file information after the GIF file parsing is reduced, and the memory is also reduced.
  • the GIF file consumes CPU resources during the parsing process, thereby making the playback of the GIF file more Plus smooth.
  • the basic information may further include text background color index information or text foreground color index information of the image of each frame
  • the control information may further include each frame image.
  • the extended block identification information or the block size information and the like are all within the protection scope of the present invention as long as it is not necessary to parse all the information of the GIF file to reduce the occupation of the memory and reduce the consumption of CPU resources. This will not be repeated here.
  • each frame of the GIF file is parsed using a GifBitmapDecoder.
  • GifBitmapDecoder is a decoding method provided by "Windows Presentation Foundation (WPF)" software.
  • WPF Windows Presentation Foundation
  • the GifBitmapDecoder decoding method does not need to re-parse the GIF file and does not need to re-render each frame image parsed by the GIF file.
  • the GIF file can be directly read and parsed.
  • Each frame of the image greatly facilitates the parsing of the GIF file and improves the parsing efficiency of the GIF file.
  • the GIF file may be parsed by other means, for example, by an Animated GifEncoder decoding method, an LZWEncoder decoding method, a NeuQuant decoding method, or the like, to parse the GIF file into a corresponding image, and no specific limited.
  • the parsed image is firstly parsed into the image according to the parsing order of the image (because the GIF file is parsed into the image in a certain order when parsing the image, so
  • the image container is superimposed according to the parsing order of the GIF file, it is placed in the image container in a superimposed manner, and then adjusted according to the position information and the size information of the image during the insertion process.
  • the image position and image size of the image in the image container is a Canvas container in WPF software.
  • the control information is used to control the length of the display time of the image in each frame in the image container and the playback order of the image in each frame.
  • the image in the image container is a length that controls a display time of the image of each frame according to delay time information of the image, the image in the image container being according to the image Method information is processed to control the order in which the images are played. Therefore, the display of the image on the display screen for each frame can be controlled according to the control information to form a dynamic image of the GIF.
  • the processing method information includes 0, 1, 2, and 3 flag bits, and the 0 flag bit indicates that no processing is specified; 1 flag bit indicates that the image is not processed, and the image is removed from the current position; The 2 flag indicates that the area in which the image is displayed is restored to the background color; and the 3 flag indicates the restoration to the previously displayed image.
  • the embodiment of the present invention by extracting only the basic information and the control information of each frame image in the byte data of the GIF file when parsing the GIF file according to the GIF format, All the information of the GIF file is parsed according to the GIF format, thereby reducing the memory occupied by the GIF file information after the GIF file is parsed, and also reducing the CPU resource consumption of the GIF file during the parsing process. , so that the playback of the GIF file is smoother.
  • the method before step S11, the method further includes:
  • the file stream information of the GIF file read by the file stream is stored in the memory stream, and the byte data in the file stream information is obtained by using a memory stream.
  • the process of obtaining the byte data is specifically: first, the GIF file is read into the file stream by using the file stream that has been initialized, and then the GIF file in the file stream is passed through the data.
  • the storage mode such as the call or the data copy is stored in the memory stream that has been initialized, and then the byte data in the file stream information of the GIF file is obtained by means of a memory stream.
  • the manner of the memory stream is preferably a GetBuffer method of a memory stream, and the byte data can be read by calling the GetBuffer method.
  • Var memoryStream new MemoryStream();//Initialize a memory stream
  • gidData memoryStream.GetBuffer();//call the GetBuffer method of the memory stream to get the byte data
  • the file stream information of the GIF file read by the file stream is stored in the memory stream, and the file stream information is obtained by means of a memory stream.
  • the parsed GIF file information will be automatically garbage collected, which can further reduce the memory occupation.
  • step S12 specifically includes:
  • the meaning of buffering the GIF file that has been parsed in the cache path is: by caching the GIF file that has been parsed in a corresponding folder under a preset cache path (ie, the The GIF file is parsed into a corresponding image and cached in the folder under the cache path.
  • the parsed GIF file needs to be read, the corresponding correspondence directly from the cache path is obtained.
  • the folder reads the image parsed by the GIF file, so that the GIF file is not re-parsed, which can reduce CPU consumption and memory usage, thereby improving the GIF file. Play fluency.
  • the step S121 is specifically: determining whether the GIF file that has been parsed exists in the cache path by detecting the preset MD5 value; wherein the MD5 value is determined by the MD5 algorithm according to the GIF The file is calculated.
  • MD5 algorithm can be simply described as: MD5 algorithm is a hash function widely used in the field of computer security to provide message integrity protection; MD5 algorithm processes input information in 512-bit group, and each A packet is further divided into 16 32-bit sub-packets. After a series of processing, the output of the MD5 algorithm consists of four 32-bit packets. After cascading the four 32-bit packets, a 128-bit hash value is generated. .
  • the GIF file buffered in the cache path is input to the MD5 algorithm, and then the MD5 algorithm outputs a corresponding one for uniquely identifying the cache in the cache path. A string of GIF files.
  • the process of checking the image of the parsed GIF file in the cache path is: after the GIF file is parsed into an image, a message digest algorithm fifth version (Message Digest Algorithm 5) is used in the cache path. , MD5) a string to uniquely identify the corresponding folder under the cache path, and save the parsed image in the folder; when the GIF file needs to be parsed into an image, the judgment Whether the GIF file has been parsed before, if the MD5 string is detected, it indicates that the GIF file has been parsed and the parsed image has been cached in the corresponding folder under the path, which The image is directly read from the corresponding folder under the cache path, so that the GIF file is not re-parsed, which can reduce CPU consumption and memory usage, thereby making the GIF file play more. Smooth and more efficient.
  • a message digest algorithm fifth version Message Digest Algorithm 5
  • the method for detecting whether the GIF file has been parsed in the preset cache path may also be a RACE Integrity Primitives Evaluation Message Digest (RIPEMD) algorithm or a secure hash.
  • the algorithm (Secure Hash Algorithm, SHA) and the like are not specifically limited herein.
  • the GIF file that has been parsed is not detected in the preset cache path, the GIF file is parsed into a corresponding image and the image is cached in the cache path, so that when the file is loaded again
  • the image of the GIF file is described, it is not necessary to re-parse the GIF file, which can reduce CPU consumption and memory usage, thereby making the playback of the GIF file smoother and more efficient.
  • each frame of the GIF file is parsed using a GifBitmapDecoder, and then the image is cached under the cache path.
  • each frame image is set in a preset image container in a superimposed manner according to the basic information of each frame image.
  • the GIF file is parsed to obtain each frame image and is cached in the cache path, so that when the image of the GIF file is loaded again, there is no need to re-parse the GIF file, which can further reduce the CPU. Consume and reduce memory usage, making GIF files play more smoothly and efficiently.
  • the method further includes: an information acquisition module 11 configured to acquire a basic image of each frame in the byte data of the read GIF file. Information and control information; wherein the basic information includes location information and size information of the image, the control information includes delay time information and processing method information of the image; and the image parsing module 12 is configured to parse the information
  • the image setting module 13 is configured to set each frame image in a preset image container according to the basic information of each frame image
  • the display control module 14 is configured to Displaying an image of the image in the image container on a display screen according to the control information of the image of each frame to form a dynamic image of the GIF.
  • the image parsing module 12 specifically includes an image parsing unit 120 for parsing each frame image of the GIF file using a GifBitmapDecoder.
  • the information acquiring module 11 obtains only the basic information and the control information of each frame image in the byte data of the GIF file when parsing the GIF file according to the GIF format, so that no basis is needed.
  • the GIF format parses all the information of the GIF file, thereby reducing the memory occupied by the GIF file information after the GIF file is parsed, and also reducing the CPU resource consumption of the GIF file during the parsing process. Thereby making the playback of the GIF file smoother.
  • the playback system of the GIF file further includes: a file reading module 10, configured to store the file stream information of the GIF file read by the file stream into the memory stream, and pass the memory stream. Obtaining the byte data in the file stream information.
  • the file reading module 10 stores the file stream information of the GIF file read by the file stream into the memory stream, and acquires the method by using a memory stream.
  • the byte data in the file stream information because there is no unmanaged resource in the memory stream, the parsed GIF file information is automatically garbage collected, thereby reducing memory usage.
  • the image parsing module 12 specifically includes: a detecting unit 121, configured to detect whether the GIF file that has been parsed exists in a preset cache path, and a parsing unit 122, if not, The GIF file is parsed to obtain each frame of image and the image is cached in the cache path; and the execution unit 123 is configured to notify the image setting module 13 if so.
  • the detecting unit 121 specifically includes: a determining subunit 1210, configured to determine, by detecting the preset MD5 value, whether the GIF file that has been parsed exists in the cache path; The MD5 value is obtained by the MD5 algorithm based on the GIF file.
  • the detecting unit 121 detects whether the GIF file that has been parsed exists in the preset cache path, and does not detect the GIF file that has been parsed under the preset cache path.
  • the GIF file is parsed by the parsing unit 122 to obtain each frame image and cached in the cache path, so that when the image of the GIF file is loaded again, there is no need to re-pair the GIF.
  • the file is parsed, which can further reduce the CPU consumption and reduce the memory usage, so that the GIF file is played more smoothly and more efficiently.
  • the storage medium may be a magnetic disk, an optical disk, a read-only memory (ROM), or a random access memory (RAM).

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Television Signal Processing For Recording (AREA)
  • Television Systems (AREA)

Abstract

一种GIF文件的播放方法和***,所述方法包括以下步骤:获取读取到的GIF文件的字节数据中的每一帧图像的基本信息及控制信息;其中,所述基本信息包括所述图像的位置信息及大小信息,所述控制信息包括所述图像的延迟时间信息及处理方法信息(S11);解析得到所述GIF文件的每一帧图像(S12);根据每一帧图像的所述基本信息将每一帧图像以叠加的方式设置于预设的图像容器中(S13);根据每一帧图像的所述控制信息控制所述图像容器中的图像在显示屏上的显示,以形成GIF的动态图像(S14)。所述方法和***在播放GIF文件的过程中占用内存资源少、CPU资源消耗低且播放流畅。

Description

一种GIF文件的播放方法及*** 技术领域
本发明涉及播放软件技术领域,尤其涉及一种GIF文件的播放方法及***。
背景技术
随着图像软件技术的发展,出现了图像互换格式(Graphics Interchange Format,GIF)这一种图像文件格式,而GIF文件就是以这种文件格式所生成的文件。其中,GIF文件因为可以存储多幅彩色图像,并且当把存储于一个文件中的多幅图像数据逐幅读出并显示到屏幕上时,就可构成一种最简单的动画,因此GIF文件因为其可视性强的特点而被广泛应用。
但是现有的播放GIF的软件因为在播放的过程中都需要首先对整个GIF文件的全部信息进行解析,然后根据解析出来的信息将GIF文件所解析出来的图像逐幅显示,从而形成GIF动画,这种播放GIF的方法因为在每次进行播放时都需要读取整个GIF文件并对其全部信息进行解析,所以占用的内存资源较多且会消耗大量CPU资源,尤其是在播放多个GIF文件时更面临内存爆满的现象,从而导致***崩溃;并且因为内存不足和CPU消耗过高时也会使得GIF文件出现播放不流畅的现象。
发明内容
针对上述问题,本发明的目的在于提供一种占用内存资源少、CPU资源消耗低且播放流畅的GIF文件的播放方法及***。
为了实现上述目的,本发明一方面提供了一种GIF文件的播放方法,包括以下步骤:S11,获取读取到的GIF文件的字节数据中的每一帧图像的基本信息及控制信息;其中,所述基本信息包括所述图像的位置信息及大小信息,所述控制信息包括所述图像的延迟时间信息及处理方法信息;S12,解析得到所述GIF文件的每一帧图像;S13,根据每一帧图像的所述基本信息将每一帧图像以叠加的方式设置于预设的图像容器中;S14,根据每一帧图像的所述控制信息控制所述图像容器中的图像在显示屏上的显示,以形成GIF的动态图像。
优选地,步骤S12具体为:使用GifBitmapDecoder来解析得到所述GIF文件的每一帧图像。
优选地,在步骤S11前还包括:将通过文件流的方式读取到的GIF文件的文件流信息存 放到内存流中,并通过内存流的方式获取所述文件流信息中的所述字节数据。
优选地,步骤S12具体包括:检测在预设缓存路径下是否存在已被解析的所述GIF文件;若否,则对所述GIF文件进行解析得到每一帧图像并将所述图像缓存在所述缓存路径下;若是,则执行步骤S13。
优选地,所述“检测在预设缓存路径下是否存在已被解析的所述GIF文件”具体为:通过对预设的MD5值的检测来判断在所述缓存路径下是否存在已被解析的所述GIF文件;其中,所述MD5值是由MD5算法根据所述GIF文件进行计算而得到的。
本发明另一方面提供了一种GIF文件的播放***,包括:信息获取模块,用于获取读取到的GIF文件的字节数据中的每一帧图像的基本信息及控制信息;其中,所述基本信息包括所述图像的位置信息及大小信息,所述控制信息包括所述图像的延迟时间信息及处理方法信息;图像解析模块,用于解析得到所述GIF文件的每一帧图像;图像设置模块,用于根据每一帧图像的所述基本信息将每一帧图像以叠加的方式设置于预设的图像容器中;显示控制模块,用于根据所述每一帧图像的所述控制信息控制所述图像容器中的图像在显示屏上的显示,以形成GIF的动态图像。
优选地,图像解析模块具体包括:图像解析单元,用于使用GifBitmapDecoder来解析得到所述GIF文件的每一帧图像。
优选地,所述的GIF文件的播放***还包括:文件读取模块,用于将通过文件流的方式读取到的GIF文件的文件流信息存放到内存流中,并通过内存流的方式获取所述文件流信息中的所述字节数据。
优选地,所述图像解析模块具体包括:检测单元,用于检测在预设缓存路径下是否存在已被解析的所述GIF文件;解析单元,用于若否,则对所述GIF文件进行解析得到每一帧图像并将所述图像缓存在所述缓存路径下;执行单元,用于若是,则通知所述图像设置模块。
优选地,所述检测单元具体包括:判断子单元,用于通过对预设的MD5值的检测来判断在所述缓存路径下是否存在已被解析的所述GIF文件;其中,所述MD5值是由MD5算法根据所述GIF文件进行计算而得到的。
本发明提供的一种GIF文件的播放方法及***,通过在根据GIF格式解析GIF文件时只获取GIF文件的字节数据中的每一帧图像的所述基本信息及所述控制信息,从而无需根据GIF格式对所述GIF文件的全部信息进行解析,因此降低了GIF文件解析后GIF文件信息所占用的内存,同时也降低了GIF文件在解析过程中对CPU资源的消耗,从而使得所述GIF文件的播放更加流畅。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的GIF文件播放方法的流程图;
图2是本发明实施例提供的一种GIF文件播放***的结构示意图;
图3是本发明实施例提供的一种所述图像解析模块的结构示意图;
图4是本发明实施例提供的另一种GIF文件播放***的结构示意图;
图5是本发明实施例提供的另一种所述图像解析模块的结构示意图;
图6是本发明实施例提供的所述检测单元的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一方面提供了一种GIF文件的播放方法,请参见图1,其具体包括步骤S11至步骤S14:
S11,获取读取到的GIF文件的字节数据中的每一帧图像的基本信息及控制信息;其中,所述基本信息包括所述图像的位置信息及大小信息,所述控制信息包括所述图像的延迟时间信息及处理方法信息。
其中,每一帧所述图像的基本信息和控制信息是根据GIF文件格式来从GIF文件的所述字节数据中进行解析获取的。一般而言,GIF文件格式都比较复杂,包括文件头、逻辑屏幕描述块、全局色表、图像描述块、局部彩色表、表基图像数据、图形控制扩展块、注释扩展块以及应用扩展块等,如果对所述GIF文件的文件格式都进行全部解析的话,那么就会消耗一定的CPU资源,并且因为解析后的信息存放在内存中,所以GIF文件全部解析出来的信息也会占用相当多的内存资源。因此在本发明实施例中,只要在图像描述块中获取每一帧图像的位置信息及大小信息,在控制扩展块中获取每一帧图像的延时时间信息及处理方法信息,那么就使得所述基本信息和所述控制信息的获取效率更高,而且因为无需根据GIF格式对所述GIF文件的全部信息进行解析,因此降低了GIF文件解析后GIF文件信息所占用的内存,同时也降低了GIF文件在解析过程中对CPU资源的消耗,从而使得所述GIF文件的播放更 加流畅。需要说明的是,在本发明实施例中,所述基本信息还可以包括每一帧所述图像的文本背景色索引信息或文本前景色索引信息等,所述控制信息还可以包括每一帧图像的扩展块标识信息或者块大小信息等,只要无需对所述GIF文件的全部信息进行解析从而减少对内存的占用和降低对CPU资源的消耗,那么就均在本发明的保护范围之内,在此不再赘述。
S12,解析得到所述GIF文件的每一帧图像。
优选地,使用GifBitmapDecoder来解析得到所述GIF文件的每一帧图像。其中,GifBitmapDecoder是“Windows呈现基础(Windows Presentation Foundation,WPF)”软件提供的一种解码方法。所述GifBitmapDecoder解码方法不用对所述GIF文件进行重新解析并不需要重新渲染所述GIF文件解析好的每一帧图像,所述GifBitmapDecoder解码方法初始化完成后就可以直接读取所述GIF文件解析好的每一帧图像,从而极大地方便了所述GIF文件的解析工作和提高了所述GIF文件的解析效率。
需要说明的是,还可以通过其他方式来对所述GIF文件进行解析,例如通过AnimatedGifEncoder解码方式、LZWEncoder解码方式或者NeuQuant解码方式等来将所述GIF文件解析成相应的图像,在此不做具体限定。
S13,根据每一帧图像的所述基本信息将每一帧图像以叠加的方式设置于预设的图像容器中。
其中,首先将解析出来的所述图像按照所述所述图像的解析顺序(因为所述GIF文件在解析为所述图像时是按照一定顺序依次解析成所述图像的,所以在叠加进入所述图像容器中时也是按照所述GIF文件的解析顺序来进行叠加的)以叠加的方式放入到所述图像容器中,然后在放入的过程中根据所述图像的位置信息和大小信息调整所述图像在所述图像容器中的图像位置和图像大小。优选地,所述图像容器为WPF软件中的Canvas容器。
S14,根据每一帧图像的所述控制信息控制所述图像容器中的图像在显示屏上的显示,以形成GIF的动态图像。
其中,所述控制信息是用来控制所述图像容器中的每一帧所述图像的显示时间的长度以及每一帧所述图像的播放顺序。具体地,所述图像容器中的所述图像是根据所述图像的延迟时间信息来控制每一帧所述图像的显示时间的长度,所述图像容器中的所述图像是根据所述图像的处理方法信息来控制所述图像的播放顺序。因此,根据所述控制信息可以控制每一帧所述图像在所述显示屏上的显示,以形成GIF的动态图像。其中,所述处理方法信息包括0、1、2与3标志位,0标志位表示没有指定要做的任何处理;1标志位表示不处理所述图像,把所述图像从当前位置移去;2标志位表示显示图像的区域恢复成背景颜色;3标志位表示恢复成之前显示的所述图像。
综上所述,在本发明实施例中,通过在根据GIF格式解析所述GIF文件时只获取GIF文件的字节数据中的每一帧图像的所述基本信息及所述控制信息,从而无需根据GIF格式对所述GIF文件的全部信息进行解析,因此降低了所述GIF文件解析后所述GIF文件信息所占用的内存,同时也降低了所述GIF文件在解析过程中对CPU资源的消耗,从而使得所述GIF文件的播放更加流畅。
为了便于对本发明的理解,下面将对本发明的一些优选实施例作进一步描述:
第一种优选实施例:
作为本发明的其中一个优选实施例,在步骤S11前还包括:
S10,将通过文件流的方式读取到的GIF文件的文件流信息存放到内存流中,并通过内存流的方式获取所述文件流信息中的所述字节数据。
其中,所述字节数据的获取过程具体为:首先通过已经初始化的所述文件流将所述GIF文件读取进所述文件流中,接着将所述文件流中的所述GIF文件通过数据调用或者数据复制等存放方式存放到已经初始化的所述内存流中,然后通过内存流的方式获取所述GIF文件的文件流信息中的所述字节数据。需要说明的是,所述内存流的方式优选为内存流的GetBuffer方法,通过调用所述GetBuffer方法就可以读取出所述字节数据。
在此,提供一个程序段来对上述获取过程进行描述:
var memoryStream=new MemoryStream();//初始化一个内存流
using(var fileStream=new FileStream(filePath,FileMode.Open,FileAccess.Read));//通过文件流来读取文件内容
fileStream.CopyTo(memoryStream);fileStream.Close();//将文件流拷贝到内存流中
gidData=memoryStream.GetBuffer();//调用内存流的GetBuffer方法来获取所述字节数据
可以理解的是,上述程序段只是一个优选的程序段而已,还可以通过其他的编程方式来得出不同于上述程序段的程序,只要所述程序能够通过文件流的方式和内存流的方式来获取所述字节数据那么就均在本发明的保护范围之内,在此不再赘述。
在本优选实施例中,通过将以文件流的方式读取到的所述GIF文件的文件流信息存放到所述内存流中,并通过内存流的方式获取所述文件流信息中的所述字节数据,因为所述内存流中没有任何非托管资源,所以解析出来的所述GIF文件信息会被自动垃圾回收,从而可以进一步减少对内存的占用。
第二种优选实施例:
作为本发明的其中一个优选实施例,步骤S12具体包括:
S121,检测在预设缓存路径下是否存在已被解析的所述GIF文件。
其中,将已被解析的所述GIF文件缓存在所述缓存路径下的意义在于:通过将已被解析的所述GIF文件缓存在预设的缓存路径下的对应的文件夹内(即所述GIF文件被解析成相应的图像并被缓存在所述缓存路径下的所述文件夹内),当需要对解析过的所述GIF文件进行读取时,就直接从所述缓存路径下的对应的文件夹读取由所述GIF文件所解析成的所述图像,从而不用对所述GIF文件重新进行解析,这样可以减少对CPU的消耗和对内存的占用,从而提高了所述GIF文件的播放流畅性。而通过检测在预设缓存路径下是否存在已被解析的所述GIF文件可以判断出所述GIF文件是否已经解析过,如果检测到所述缓存路径下存在解析过的所述GIF文件,那么就无需对所述GIF文件重新进行解析。
优选地,步骤S121具体为:通过对预设的MD5值的检测来判断在所述缓存路径下是否存在已被解析的所述GIF文件;其中,所述MD5值是由MD5算法根据所述GIF文件进行计算而得到的。需要说明的是,MD5算法可以简单描述为:MD5算法为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护;MD5算法以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,MD5算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。在本技术方案中,通过向所述MD5算法输入缓存在所述缓存路径下的所述GIF文件,然后所述MD5算法就会相应输出一个用于唯一标识缓存在所述缓存路径下的所述GIF文件的一个字符串。
其中,在所述缓存路径下检查解析过的所述GIF文件的图像的过程为:所述GIF文件解析成图像后会在所述缓存路径下以一个消息摘要算法第五版(Message Digest Algorithm 5,MD5)的字符串来唯一标识所述缓存路径下的对应的文件夹,并将解析后的所述图像保存在所述文件夹里;当需要将所述GIF文件解析成图像时,判断所述GIF文件之前是否已经解析过的,如果检测到所述MD5字符串,那么说明已经解析过所述GIF文件且解析好的所述图像已经缓存在所述路径下的对应的文件夹内,这时就直接从所述缓存路径下的对应的文件夹读取所述图像,从而不用对所述GIF文件重新进行解析,这样可以减少对CPU的消耗和内存的占用,从而使得GIF文件的播放更加流畅且更具有效率。
需要说明的是,检测在预设缓存路径下是否存在已被解析的所述GIF文件的方式还可以为RACE原始完整性校验消息摘要(RACE Integrity Primitives Evaluation Message Digest,RIPEMD)算法或者安全散列算法(Secure Hash Algorithm,SHA)等,在此不做具体限定。
S122,若否,则对所述GIF文件进行解析得到每一帧图像并将所述图像缓存在所述缓存路径下。
即,当在预设缓存路径下没有检测到已被解析的所述GIF文件时,将所述GIF文件解析成相应的图像并将所述图像缓存在所述缓存路径下,这样当再次加载所述GIF文件的所述图像时,就无需重新对所述GIF文件进行解析,这样可以减少对CPU的消耗和内存的占用,从而使得GIF文件的播放更加流畅且更具有效率。
优选地,使用GifBitmapDecoder来解析得到所述GIF文件的每一帧图像,然后将所述图像缓存在所述缓存路径下。
S123,若是,则执行步骤S13。
即,当在预设缓存路径下检测到已被解析的所述GIF文件时,则根据每一帧图像的所述基本信息将每一帧图像以叠加的方式设置于预设的图像容器中。
在本优选实施例中,通过检测在预设缓存路径下是否存在已被解析的所述GIF文件,并当在预设缓存路径下没有检测到已被解析的所述GIF文件时,对所述GIF文件进行解析得到每一帧图像并缓存在所述缓存路径下,这样当再次加载所述GIF文件的所述图像时,就无需重新对所述GIF文件进行解析,这样可以进一步降低对CPU的消耗和减少内存的占用,从而使得GIF文件的播放更加流畅且更具有效率。
本发明另一方面还提供了一种GIF文件的播放***,参见图2,其具体包括:信息获取模块11,用于获取读取到的GIF文件的字节数据中的每一帧图像的基本信息及控制信息;其中,所述基本信息包括所述图像的位置信息及大小信息,所述控制信息包括所述图像的延迟时间信息及处理方法信息;图像解析模块12,用于解析得到所述GIF文件的每一帧图像;图像设置模块13,用于根据每一帧图像的所述基本信息将每一帧图像以叠加的方式设置于预设的图像容器中;显示控制模块14,用于根据所述每一帧图像的所述控制信息控制所述图像容器中的图像在显示屏上的显示,以形成GIF的动态图像。
优选地,参见图3,所述图像解析模块12具体包括:图像解析单元120,用于使用GifBitmapDecoder来解析得到所述GIF文件的每一帧图像。
在本发明实施例中,通过所述信息获取模块11在根据GIF格式解析GIF文件时只获取GIF文件的字节数据中的每一帧图像的所述基本信息及所述控制信息,从而无需根据GIF格式对所述GIF文件的全部信息进行解析,因此降低了所述GIF文件解析后所述GIF文件信息所占用的内存,同时也降低了所述GIF文件在解析过程中对CPU资源的消耗,从而使得所述GIF文件的播放更加流畅。
为了便于对本发明的理解,下面将对本发明的一些优选实施例作进一步描述:
第一种优选实施例:
参见4,所述的GIF文件的播放***还包括:文件读取模块10,用于将通过文件流的方式读取到的GIF文件的文件流信息存放到内存流中,并通过内存流的方式获取所述文件流信息中的所述字节数据。
在本优选实施例中,所述文件读取模块10通过将以文件流的方式读取到的所述GIF文件的文件流信息存放到所述内存流中,并通过内存流的方式获取所述文件流信息中的所述字节数据,因为所述内存流中没有任何非托管资源,所以解析出来的GIF文件信息会被自动垃圾回收,从而可以减少对内存的占用。
第二种优选实施例:
参见图5,所述图像解析模块12具体包括:检测单元121,用于检测在预设缓存路径下是否存在已被解析的所述GIF文件;解析单元122,用于若否,则对所述GIF文件进行解析得到每一帧图像并将所述图像缓存在所述缓存路径下;执行单元123,用于若是,则通知所述图像设置模块13。
优选地,参见图6,所述检测单元121具体包括:判断子单元1210,用于通过对预设的MD5值的检测来判断在所述缓存路径下是否存在已被解析的所述GIF文件;其中,所述MD5值是由MD5算法根据所述GIF文件进行计算而得到的。
在本优选实施例中,通过所述检测单元121检测在预设缓存路径下是否存在已被解析的所述GIF文件,并当在预设缓存路径下没有检测到已被解析的所述GIF文件时,通过所述解析单元122对所述GIF文件进行解析得到每一帧图像并缓存在所述缓存路径下,这样当再次加载所述GIF文件的所述图像时,就无需重新对所述GIF文件进行解析,这样可以进一步降低对CPU的消耗和减少内存的占用,从而使得GIF文件的播放更加流畅且更具有效率。
以上所揭露的仅为本发明一些较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

Claims (10)

  1. 一种GIF文件的播放方法,其特征在于,包括以下步骤:
    S11,获取读取到的GIF文件的字节数据中的每一帧图像的基本信息及控制信息;其中,所述基本信息包括所述图像的位置信息及大小信息,所述控制信息包括所述图像的延迟时间信息及处理方法信息;
    S12,解析得到所述GIF文件的每一帧图像;
    S13,根据每一帧图像的所述基本信息将每一帧图像以叠加的方式设置于预设的图像容器中;
    S14,根据每一帧图像的所述控制信息控制所述图像容器中的图像在显示屏上的显示,以形成GIF的动态图像。
  2. 根据权利要求1所述的GIF文件的播放方法,其特征在于,步骤S12具体为:
    使用GifBitmapDecoder来解析得到所述GIF文件的每一帧图像。
  3. 根据权利要求1所述的GIF文件的播放方法,其特征在于,在步骤S11前还包括:
    将通过文件流的方式读取到的GIF文件的文件流信息存放到内存流中,并通过内存流的方式获取所述文件流信息中的所述字节数据。
  4. 根据权利要求1或2所述的GIF文件的播放方法,其特征在于,步骤S12具体包括:
    检测在预设缓存路径下是否存在已被解析的所述GIF文件;
    若否,则对所述GIF文件进行解析得到每一帧图像并将所述图像缓存在所述缓存路径下;
    若是,则执行步骤S13。
  5. 根据权利要求4所述的GIF文件的播放方法,其特征在于,所述“检测在预设缓存路径下是否存在已被解析的所述GIF文件”具体为:
    通过对预设的MD5值的检测来判断在所述缓存路径下是否存在已被解析的所述GIF文件;其中,所述MD5值是由MD5算法根据所述GIF文件进行计算而得到的。
  6. 一种GIF文件的播放***,其特征在于,包括:
    信息获取模块,用于获取读取到的GIF文件的字节数据中的每一帧图像的基本信息及控制信息;其中,所述基本信息包括所述图像的位置信息及大小信息,所述控制信息包括所述 图像的延迟时间信息及处理方法信息;
    图像解析模块,用于解析得到所述GIF文件的每一帧图像;
    图像设置模块,用于根据每一帧图像的所述基本信息将每一帧图像以叠加的方式设置于预设的图像容器中;
    显示控制模块,用于根据所述每一帧图像的所述控制信息控制所述图像容器中的图像在显示屏上的显示,以形成GIF的动态图像。
  7. 根据权利要求6所述的GIF文件的播放***,其特征在于,所述图像解析模块具体包括:
    图像解析单元,用于使用GifBitmapDecoder来解析得到所述GIF文件的每一帧图像。
  8. 根据权利要求6所述的GIF文件的播放***,其特征在于,还包括:
    文件读取模块,用于将通过文件流的方式读取到的GIF文件的文件流信息存放到内存流中,并通过内存流的方式获取所述文件流信息中的所述字节数据。
  9. 根据权利要求6或7所述的GIF文件的播放***,其特征在于,所述图像解析模块具体包括:
    检测单元,用于检测在预设缓存路径下是否存在已被解析的所述GIF文件;
    解析单元,用于若否,则对所述GIF文件进行解析得到每一帧图像并将所述图像缓存在所述缓存路径下;
    执行单元,用于若是,则通知所述图像设置模块。
  10. 根据权利要求9所述的GIF文件的播放***,其特征在于,所述检测单元具体包括:
    判断子单元,用于通过对预设的MD5值的检测来判断在所述缓存路径下是否存在已被解析的所述GIF文件;其中,所述MD5值是由MD5算法根据所述GIF文件进行计算而得到的。
PCT/CN2016/113362 2016-09-13 2016-12-30 一种gif文件的播放方法及*** WO2018049761A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610821457.8 2016-09-13
CN201610821457.8A CN106383880B (zh) 2016-09-13 2016-09-13 一种gif文件的播放方法及***

Publications (1)

Publication Number Publication Date
WO2018049761A1 true WO2018049761A1 (zh) 2018-03-22

Family

ID=57936564

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/113362 WO2018049761A1 (zh) 2016-09-13 2016-12-30 一种gif文件的播放方法及***

Country Status (2)

Country Link
CN (1) CN106383880B (zh)
WO (1) WO2018049761A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109068165A (zh) * 2018-07-23 2018-12-21 北京奇艺世纪科技有限公司 一种动态图显示方法及装置
CN110363701A (zh) * 2019-07-18 2019-10-22 腾讯科技(深圳)有限公司 一种gif文件显示方法、装置、终端设备及存储介质
CN110377853A (zh) * 2019-07-04 2019-10-25 北京奇艺世纪科技有限公司 动图播放方法、设备及存储介质
CN113326086A (zh) * 2021-05-18 2021-08-31 翱捷科技股份有限公司 基于lvgl的gif图片显示方法及装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109151503B (zh) * 2017-04-08 2022-03-15 腾讯科技(深圳)有限公司 一种图片文件处理方法及其设备
CN107247676A (zh) * 2017-05-18 2017-10-13 深圳市小牛在线互联网信息咨询有限公司 动态图播放方法、装置、存储介质和计算机设备
CN107943417A (zh) * 2017-11-21 2018-04-20 广州市百果园网络科技有限公司 图像处理方法、终端、计算机存储介质及计算机程序
CN110223221B (zh) * 2018-02-28 2023-10-03 腾讯科技(深圳)有限公司 一种动态图像播放的方法及终端设备
CN108769806B (zh) * 2018-06-19 2020-05-05 聚好看科技股份有限公司 媒体内容的展示方法和装置
CN109285197B (zh) * 2018-08-14 2023-05-12 四川虹美智能科技有限公司 一种gif图像处理方法和移动终端
CN113209629B (zh) * 2021-05-14 2024-02-09 苏州仙峰网络科技股份有限公司 一种序列帧转gif的方法及装置
CN113674246B (zh) * 2021-08-20 2023-09-01 百度在线网络技术(北京)有限公司 审核图片文件的方法、装置、电子设备和存储介质
CN115348463A (zh) * 2022-07-11 2022-11-15 西安诺瓦星云科技股份有限公司 显示屏监控方法、***、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060012490A (ko) * 2004-08-03 2006-02-08 엘지전자 주식회사 이동단말기에서 애니메이션 디스플레이 방법
CN102842142A (zh) * 2011-06-23 2012-12-26 汉王科技股份有限公司 文档中动态图片的显示方法及装置
CN103176788A (zh) * 2011-12-26 2013-06-26 ***通信集团福建有限公司 一种手机桌面动画内容平滑过渡的方法和装置
CN103810738A (zh) * 2012-11-14 2014-05-21 腾讯科技(深圳)有限公司 Gif文件渲染方法及装置
CN103986933A (zh) * 2014-04-24 2014-08-13 小米科技有限责任公司 动态图片显示方法及装置
CN104519404A (zh) * 2013-09-29 2015-04-15 北京新媒传信科技有限公司 图像互换格式文件的播放方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979886B2 (en) * 2003-10-17 2011-07-12 Telefonaktiebolaget Lm Ericsson (Publ) Container format for multimedia presentations
CN102314701A (zh) * 2011-06-28 2012-01-11 北京新媒传信科技有限公司 移动设备中实时播放gif动画的方法及装置
CN102663796B (zh) * 2012-04-16 2014-06-25 广东威创视讯科技股份有限公司 一种开放图形库的动画处理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060012490A (ko) * 2004-08-03 2006-02-08 엘지전자 주식회사 이동단말기에서 애니메이션 디스플레이 방법
CN102842142A (zh) * 2011-06-23 2012-12-26 汉王科技股份有限公司 文档中动态图片的显示方法及装置
CN103176788A (zh) * 2011-12-26 2013-06-26 ***通信集团福建有限公司 一种手机桌面动画内容平滑过渡的方法和装置
CN103810738A (zh) * 2012-11-14 2014-05-21 腾讯科技(深圳)有限公司 Gif文件渲染方法及装置
CN104519404A (zh) * 2013-09-29 2015-04-15 北京新媒传信科技有限公司 图像互换格式文件的播放方法及装置
CN103986933A (zh) * 2014-04-24 2014-08-13 小米科技有限责任公司 动态图片显示方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109068165A (zh) * 2018-07-23 2018-12-21 北京奇艺世纪科技有限公司 一种动态图显示方法及装置
CN110377853A (zh) * 2019-07-04 2019-10-25 北京奇艺世纪科技有限公司 动图播放方法、设备及存储介质
CN110363701A (zh) * 2019-07-18 2019-10-22 腾讯科技(深圳)有限公司 一种gif文件显示方法、装置、终端设备及存储介质
CN113326086A (zh) * 2021-05-18 2021-08-31 翱捷科技股份有限公司 基于lvgl的gif图片显示方法及装置

Also Published As

Publication number Publication date
CN106383880B (zh) 2020-01-24
CN106383880A (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
WO2018049761A1 (zh) 一种gif文件的播放方法及***
US8922575B2 (en) Tile cache
US9087030B2 (en) Handling excessive input characters in a field
US20080036763A1 (en) Method and system for computer graphics with out-of-band (oob) background
US7558806B2 (en) Method and apparatus for buffering streaming media
US20080028333A1 (en) Method and system for portable data aggregation
KR20160003682A (ko) 플레이스홀더에 의한 하이드레이션 및 디하이드레이션 기법
CN102831111B (zh) 一种图片显示方法和装置
US20160277544A1 (en) Protocol data unit interface
CN107025230B (zh) 网络爬虫的处理方法及装置
CN113423010B (zh) 基于文档的视频转换方法、装置、设备及存储介质
WO2022033137A1 (zh) 一种基于手绘视频的gif文件生成方法
CN104601535B (zh) 视频处理方法和***
US8719690B2 (en) Method and system for automatic data aggregation
CN105786997A (zh) 基于iOS***的图片缓存与压缩方法
CN112256993B (zh) 一种图片加速显示方法、***、设备和介质
US11176634B2 (en) Methods and devices of picture processing based on external storage device and user interface display
US6697563B1 (en) Information recording medium, motion-picture voice recording/reproducing apparatus, and motion-picture voice recording/reproducing method
WO2022127913A1 (zh) 游程解码电路、控制方法、电子装置及可读存储介质
CN115277553A (zh) 一种流表存储方法、装置、设备和计算机可读存储介质
WO2022141115A1 (zh) 视频处理方法、装置、片上***以及存储介质
CN108170567A (zh) 基于写时复制特性的虚拟机中存储区域完整性检测方法
TW201515454A (zh) 緩存資料管理系統及方法
CN110929478A (zh) 一种匿名网页压缩的方法、装置及***
CN103618722B (zh) 基于vfs扫描网络传输数据的方法及***

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16916139

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 01/08/2019)

122 Ep: pct application non-entry in european phase

Ref document number: 16916139

Country of ref document: EP

Kind code of ref document: A1