CN112243122B - 一种h.265图像解压缩传输方法 - Google Patents
一种h.265图像解压缩传输方法 Download PDFInfo
- Publication number
- CN112243122B CN112243122B CN202011104078.XA CN202011104078A CN112243122B CN 112243122 B CN112243122 B CN 112243122B CN 202011104078 A CN202011104078 A CN 202011104078A CN 112243122 B CN112243122 B CN 112243122B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- flag
- encoder
- memory
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种H.265图像解压缩传输方法,使用x86处理器和PowerPC处理器通过共享内存进行解压前原始数据以及解压后图像数据的交互传输,PowerPC端使用VxWorks操作系统,X86端使用Linux操作系统,H.265压缩图像数据通过数据链传输到PowerPC端,利用VxWorks的强实时性,将接收到的压缩数据进行拼帧,将一帧完整压缩数据存放到共享内存中,并将发送命令标志置1,Linux端读到这个置位标志后,对图像压缩数据进行解压缩,并将解压缩后的数据存到的内存中,并将接收命令标志置为1;在下一个处理周期,查询对应标志,当接收命令标志值为1时,将内存中数据取出并进行实时显示;传输速率高、准确性高。
Description
技术领域
本发明属于航空航天系统数据通信技术领域,涉及一种TX2下H.265图像解压缩传输方法。
背景技术
H.265压缩图像标准是近年来应用在航空航天领域新的视频编码标准,在有限带宽下能传输更高质量的图像流,与传统的图像传输比较,仅需要原来一半带宽即可播放相同质量的视频。
发明内容
(一)发明目的
在航空航天领域,机载图像数据通常通过数据链传回,由于图像数据量大,使用数据链传输图像数据容易出现延时较长,丢帧、错帧等现象出现,非压缩图像数据中没有任务纠错机制,导致图像数据的传输效果较差,因此在这种使用背景下传输压缩图像成为一种更为可靠的方法,本发明提出了一种适合传输压缩图像数据的方法,通过VxWorks操作系统和Linux操作系统的配合将数据链传过来的图像进行解压,该方法提高了图像传输的质量。
(二)技术方案
为了解决上述技术问题,本发明提供一种H.265图像解压缩传输方法,包括以下步骤:
STEP1:设置文件变量,包括:解压缩前压缩文件变量infile,以及解压后的图像文件变量outfile;定义编码器信息结构体变量AVCodec,定义编码器解析上下文结构体变量AVCodecParserContext,定义编码器上下文结构体指针变量AVCodecContext,码流信息结构体变量AVFrame,定义图像处理缓冲区inbuf,inbuf缓冲区的长度为INBUF_SIZE+AV_INPUT_BUFFER_PADDING_SIZE;其中,INBUF_SIZE为基础缓冲区长度,设置为1024,AV_INPUT_BUFFER_PADDING_SIZE为补丁长度,设置值为256,定义压缩数据变量AVPacket;
STEP2:初始化PCIE总线读写,打开linux系统中/dev/mem文件,使用内存映射函数mmap()将物理内存地址空间映射到虚拟内存地址空间。
STEP3:读取存放RECV_CMD_FLAG内存标记的内存地址recv_flag_virt_addr,连续读取8次,当读取到RECV_CMD_FLAG标记为1的时候,以文件创建方式打开infile文件,使用文件写方法fwrite()将PCIE空间的数据写到infile文件中,同时将RECV_CMD_FLAG标志清零。
STEP4:使用数据包内存分配方法av_packet_alloc()分配长度为一个结构体大小的内存,使用内存设置函数memset将inbuf内存空间清零。使用查找编码器方法avcodec_find_decoder()来查找编码器,查找参数设置为编码器H.265AV_CODEC_ID_H265,在编码器库中查找H265格式编码器,将查找到的编码器信息存储到编码器信息结构体变量AVCodec中,将编码器信息结构体AVCodec成员变量ID传入到解码器初始化方法av_parser_init()中对解码器进行初始化,将AVCodec结构传入到编解码器上下文获取方法avcodec_alloc_context3()中进行编码器上下文内存分配,该方法返回值为编码器上下文信息AVCodecContext,将带有编码器信息的两个结构体AVCodec和AVCodecContext变量传入到编解码器打开方法avcodec_open2()中,此时打开编码器开始工作。
STEP5:将STEP4的编码、解析过程设置死循环while(1),在循环中处理图像解压缩流程。使用文件打开方法fopen打开infle文件,使用解码后视频数据内存分配方法av_frame_alloc()为一帧数据分配内存空间,将申请到空间的首地址值存到解码后视频AVFrame变量中。
STEP6:使用文件接收判断方法feof()方法判断文件是否已经处理到结尾,如果仍未处理到文件结尾,则使用文件读取方法fread将共享内存中长度为INBUF_SIZE字节的数据读取到inbuf中,将读取到的数据实际值存到数据变量data_size中,循环判断data_size值,若data_size大于零则使用解析方法av_parser_parse2(),解析数据循环获得图像处理包AVPaket,返回值为ret,此时将数据值data更新为data+ret,将data_size的值更新为data_size-ret;判断压缩数据AVPacket指针中size成员是否为零,如果不为零,使用解码方法decode,将这一帧图像解压缩到/dev/shm/outfile路径下,其它情况则退出当前循环。
STEP7:读取存放SEND_CMD_FLAG内存标记的内存地址的值send_flag_virt_addr,连续读取8次,当读取到SEND_CMD_FLAG的值若为0,以只读文件的方式打开outfile文件,使用文件读取方法fread将outfile文件中的数据写入到PCIE数据空间。将SEND_CMD_FLAG写上1.此时VxWorks操作系统读出的数据则为解压后的图像。
STEP8:VxWorks端使用图形化显示方法对解压后的图像进行后期显示。
(三)有益效果
上述技术方案所提供的H.265图像解压缩传输方法,通过VxWorks操作系统端对图像数据进行拼帧处理,通过共享内存将处理好的数据传到Linux端,Linux端对H.265图像采用流水线方式进行解压缩,将解压缩完成的图像回传到VxWorks端进行推显;解压并推显一帧1080P的图像过程只需要不到10ms的时间,而且大大提高了图像传输的质量。
附图说明
图1为本发明方法的流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明采用的方法是使用x86处理器和PowerPC处理器通过共享内存进行解压前原始数据以及解压后图像数据的交互传输,PowerPC端使用VxWorks操作系统,X86端使用Linux操作系统,H.265压缩图像数据通过数据链传输到PowerPC端,利用VxWorks的强实时性,将接收到的压缩数据进行拼帧,将一帧完整压缩数据存放到共享内存中,并将发送命令标志SEND_CMD_FLAG置1,Linux端读到这个置位标志后,对图像压缩数据进行解压缩,并将解压缩后的数据存到的内存中,并将接收命令标志RECV_CMD_FLAG置为1。在下一个处理周期,查询对应标志RECV_CMD_FLAG,当RECV_CMD_FLAG值为1时,将内存中数据取出并进行实时显示。
参照图1所示,本实施例H.265图像解压缩传输方法包括以下步骤:
STEP1:设置文件变量,包括:解压缩前压缩文件变量infile,以及解压后的图像文件变量outfile;定义编码器信息结构体变量AVCodec,定义编码器解析上下文结构体变量AVCodecParserContext,定义编码器上下文结构体指针变量AVCodecContext,码流信息结构体变量AVFrame,定义图像处理缓冲区inbuf,inbuf缓冲区的长度为INBUF_SIZE+AV_INPUT_BUFFER_PADDING_SIZE;其中,INBUF_SIZE为基础缓冲区长度,设置为1024,AV_INPUT_BUFFER_PADDING_SIZE为补丁长度,设置值为256,定义压缩数据变量AVPacket;
STEP2:初始化PCIE总线读写,打开linux系统中/dev/mem文件,使用内存映射函数mmap()将物理内存地址空间映射到虚拟内存地址空间。
STEP3:读取存放RECV_CMD_FLAG内存标记的内存地址recv_flag_virt_addr,连续读取8次,当读取到RECV_CMD_FLAG标记为1的时候,以文件创建方式打开infile文件,使用文件写方法fwrite()将PCIE空间的数据写到infile文件中,同时将RECV_CMD_FLAG标志清零。
STEP4:使用数据包内存分配方法av_packet_alloc()分配长度为一个结构体大小的内存,使用内存设置函数memset将inbuf内存空间清零。使用查找编码器方法avcodec_find_decoder()来查找编码器,查找参数设置为编码器H.265AV_CODEC_ID_H265,在编码器库中查找H265格式编码器,将查找到的编码器信息存储到编码器信息结构体变量AVCodec中,将编码器信息结构体AVCodec成员变量ID传入到解码器初始化方法av_parser_init()中对解码器进行初始化,将AVCodec结构传入到编解码器上下文获取方法avcodec_alloc_context3()中进行编码器上下文内存分配,该方法返回值为编码器上下文信息AVCodecContext,将带有编码器信息的两个结构体AVCodec和AVCodecContext变量传入到编解码器打开方法avcodec_open2()中,此时打开编码器开始工作。
STEP5:将STEP4的编码、解析过程设置死循环while(1),在循环中处理图像解压缩流程。使用文件打开方法fopen打开infle文件,使用解码后视频数据内存分配方法av_frame_alloc()为一帧数据分配内存空间,将申请到空间的首地址值存到解码后视频AVFrame变量中。
STEP6:使用文件接收判断方法feof()方法判断文件是否已经处理到结尾,如果仍未处理到文件结尾,则使用文件读取方法fread将共享内存中长度为INBUF_SIZE字节的数据读取到inbuf中,将读取到的数据实际值存到数据变量data_size中,循环判断data_size值,若data_size大于零则使用解析方法av_parser_parse2(),解析数据循环获得图像处理包AVPaket,返回值为ret,此时将数据值data更新为data+ret,将data_size的值更新为data_size-ret;判断压缩数据AVPacket指针中size成员是否为零,如果不为零,使用解码方法decode,将这一帧图像解压缩到/dev/shm/outfile路径下,其它情况则退出当前循环。
STEP7:读取存放SEND_CMD_FLAG内存标记的内存地址的值send_flag_virt_addr,连续读取8次,当读取到SEND_CMD_FLAG的值若为0,以只读文件的方式打开outfile文件,使用文件读取方法fread将outfile文件中的数据写入到PCIE数据空间。将SEND_CMD_FLAG写上1.此时VxWorks操作系统读出的数据则为解压后的图像。
STEP8:VxWorks端使用图形化显示方法对解压后的图像进行后期显示。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.一种H.265图像解压缩传输方法,其特征在于,包括以下步骤:
STEP1:设置文件变量,包括:解压缩前压缩文件变量infile、解压后的图像文件变量outfile;定义编码器信息结构体变量AVCodec,定义编码器解析上下文结构体变量AVCodecParserContext,定义编码器上下文结构体指针变量AVCodecContext,码流信息结构体变量AVFrame,定义图像处理缓冲区inbuf;
STEP2:初始化PCIE总线读写,打开linux系统中/dev/mem文件,使用内存映射函数mmap()将物理内存地址空间映射到虚拟内存地址空间;
STEP3:读取存放RECV_CMD_FLAG内存标记的内存地址recv_flag_virt_addr,连续读取多次,当读取到RECV_CMD_FLAG标记为1的时候,打开infile文件,将PCIE空间的数据写到infile文件中,同时将RECV_CMD_FLAG标志清零;
STEP4:使用数据包内存分配方法av_packet_alloc()分配长度为一个结构体大小的内存,使用内存设置函数memset将inbuf内存空间清零,使用查找编码器方法avcodec_find_decoder()来查找编码器,在编码器库中查找H265格式编码器,将查找到的编码器信息存储到编码器信息结构体变量AVCodec中,将编码器信息结构体AVCodec成员变量ID传入到解码器初始化方法av_parser_init()中对解码器进行初始化,将AVCodec结构传入到编解码器上下文获取方法avcodec_alloc_context3()中进行编码器上下文内存分配,该方法返回值为编码器上下文信息AVCodecContext,将带有编码器信息的两个结构体AVCodec和AVCodecContext变量传入到编解码器打开方法avcodec_open2()中,此时打开编码器开始工作;
STEP5:将步骤STEP4的编码、解析过程设置死循环while(1),在循环中处理图像解压缩流程;
STEP6:使用文件接收判断方法feof()判断文件是否已经处理到结尾,如果仍未处理到文件结尾,则使用文件读取方法fread将共享内存中长度为INBUF_SIZE字节的数据读取到inbuf中,将读取到的数据实际值存到数据变量data_size中,循环判断data_size值,若data_size大于零,则使用解析方法av_parser_parse2(),解析数据循环获得图像处理包AVPaket,返回值为ret,此时将数据值data更新为data+ret,将data_size的值更新为data_size-ret;判断压缩数据AVPacket指针中size成员是否为零,如果不为零,使用解码方法decode,将这一帧图像解压缩到/dev/shm/outfile路径下,其它情况则退出当前循环;
STEP7:读取存放SEND_CMD_FLAG内存标记的内存地址的值send_flag_virt_addr,连续读取多次,当读取到SEND_CMD_FLAG的值若为0,打开outfile文件,将outfile文件中的数据写入到PCIE数据空间,将SEND_CMD_FLAG写上1,此时VxWorks操作系统读出的数据则为解压后的图像;
STEP8:VxWorks端使用图形化显示方法对解压后的图像进行后期显示。
2.如权利要求1所述的H.265图像解压缩传输方法,其特征在于,所述步骤STEP1中,定义缓冲区inbuf的长度为INBUF_SIZE+AV_INPUT_BUFFER_PADDING_SIZE;其中,INBUF_SIZE为基础缓冲区长度,设置为1024,AV_INPUT_BUFFER_PADDING_SIZE为补丁长度,设置值为256,定义压缩数据变量AVPacket。
3.如权利要求2所述的H.265图像解压缩传输方法,其特征在于,所述步骤STEP3中,读取存放RECV_CMD_FLAG内存标记的内存地址recv_flag_virt_addr,连续读取8次。
4.如权利要求3所述的H.265图像解压缩传输方法,其特征在于,所述步骤STEP3中,当读取到RECV_CMD_FLAG标记为1的时候,以文件创建方式打开infile文件,使用文件写方法fwrite()将PCIE空间的数据写到infile文件中。
5.如权利要求4所述的H.265图像解压缩传输方法,其特征在于,所述步骤STEP4中,使用查找编码器方法avcodec_find_decoder()来查找编码器时,查找参数设置为编码器H.265AV_CODEC_ID_H265。
6.如权利要求5所述的H.265图像解压缩传输方法,其特征在于,所述步骤STEP5中,处理图像解压缩流程时,使用文件打开方法fopen打开infle文件,使用解码后视频数据内存分配方法av_frame_alloc()为一帧数据分配内存空间,将申请到空间的首地址值存到解码后视频AVFrame变量中。
7.如权利要求6所述的H.265图像解压缩传输方法,其特征在于,所述步骤STEP7中,读取存放SEND_CMD_FLAG内存标记的内存地址的值send_flag_virt_addr,连续读取8次。
8.如权利要求7所述的H.265图像解压缩传输方法,其特征在于,所述步骤STEP7中,当读取到SEND_CMD_FLAG的值若为0,以只读文件的方式打开outfile文件。
9.如权利要求8所述的H.265图像解压缩传输方法,其特征在于,所述步骤STEP7中,使用文件读取方法fread将outfile文件中的数据写入到PCIE数据空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011104078.XA CN112243122B (zh) | 2020-10-15 | 2020-10-15 | 一种h.265图像解压缩传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011104078.XA CN112243122B (zh) | 2020-10-15 | 2020-10-15 | 一种h.265图像解压缩传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112243122A CN112243122A (zh) | 2021-01-19 |
CN112243122B true CN112243122B (zh) | 2022-04-19 |
Family
ID=74168712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011104078.XA Active CN112243122B (zh) | 2020-10-15 | 2020-10-15 | 一种h.265图像解压缩传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112243122B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113727116B (zh) * | 2021-07-21 | 2024-04-23 | 天津津航计算技术研究所 | 基于过滤机制的视频解码方法 |
CN113835755B (zh) * | 2021-09-24 | 2023-08-22 | 天津津航计算技术研究所 | 一种无操作系统环境下串口控制台实现方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9077991B2 (en) * | 2002-12-10 | 2015-07-07 | Sony Computer Entertainment America Llc | System and method for utilizing forward error correction with video compression |
CN101840306B (zh) * | 2009-03-18 | 2011-12-07 | 研祥智能科技股份有限公司 | VxWorks操作系统中实现驱动SATA设备的方法和系统 |
CN103763560A (zh) * | 2014-02-18 | 2014-04-30 | 深圳市普菲特安迪科技有限公司 | 一种超声图像压缩与解压缩方法及嵌入式超声系统 |
US11288734B2 (en) * | 2017-12-19 | 2022-03-29 | Adroit Worldwide Media, Inc. | Intelligent shelf display system |
US10911514B2 (en) * | 2018-08-23 | 2021-02-02 | Apple Inc. | Synchronized wireless and video operations |
-
2020
- 2020-10-15 CN CN202011104078.XA patent/CN112243122B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112243122A (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112243122B (zh) | 一种h.265图像解压缩传输方法 | |
JP7545406B2 (ja) | エントロピコーディングにおいて等確率シンボルをハンドリングするための方法およびデバイス | |
US8928681B1 (en) | Coalescing to avoid read-modify-write during compressed data operations | |
CN1787641B (zh) | 图像信息解码方法和图像信息编码方法 | |
CN111885346B (zh) | 一种画面码流合成方法、终端、电子设备和存储介质 | |
CN110990358B (zh) | 一种解压缩方法、电子设备及计算机可读存储介质 | |
US20140333641A1 (en) | System and method for forwarding a graphics command stream | |
CN101848214A (zh) | 基于rdp审计数据的任意定位回放方法及系统 | |
CN110620637B (zh) | 一种基于fpga的数据解压装置及方法 | |
CN113727114B (zh) | 一种可转码的视频解码方法 | |
CN110636309B (zh) | 数据处理系统 | |
EP2219117A1 (en) | A processing module, a device, and a method for processing of XML data | |
RU2265879C2 (ru) | Устройство и способ для извлечения данных из буфера и загрузки их в буфер | |
CN113905241A (zh) | 视频编码 | |
US20140333640A1 (en) | System and method for forwarding a graphics command stream | |
CN114579258A (zh) | 虚拟机的音频处理方法、装置、系统以及电子设备 | |
CN114938408A (zh) | 一种云手机的数据传输方法、系统、设备及介质 | |
CN101510175B (zh) | 目标数据更新至存储器中的方法及其装置 | |
US20190251999A1 (en) | Real-time editing system | |
US20140333639A1 (en) | System and method for forwarding a graphics command stream | |
CN113784094B (zh) | 视频数据处理方法、网关、终端设备及存储介质 | |
CN118042135A (zh) | 点云编码方法、点云解码方法、装置及存储介质 | |
CN110213650B (zh) | 一种软件快速搜索视频码流中同步字的方法及装置 | |
CN109246377B (zh) | 视频数据存储、读取方法及视频数据存储设备 | |
CN113747171A (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 |