Image data transmission method and device, computer device and storage medium

By monitoring the write address information of the central processing unit to determine the update coordinate range of image data, and only transmitting and compressing data within this range, the problem of network bandwidth occupation in traditional image data transmission is solved, thereby improving transmission efficiency and BMC performance.

CN119865614BActive Publication Date: 2026-05-01SHANDONG YUNHAI GUOCHUANG CLOUD COMPUTING EQUIP IND INNOVATION CENT CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
SHANDONG YUNHAI GUOCHUANG CLOUD COMPUTING EQUIP IND INNOVATION CENT CO LTD
Filing Date
2025-01-09
Publication Date
2026-05-01

AI Technical Summary

Technical Problem

In the field of server technology, traditional image data transmission methods result in repetitive image data consuming a large amount of network bandwidth, which reduces the overall performance of BMC.

Method used

By monitoring the write address information from the central processing unit to memory, the first coordinate range of the updated pixel is determined, and only image data within this range is acquired and compressed for transmission, reducing the amount of data transmitted and the complexity of analysis.

Benefits of technology

It improves the efficiency of image data transmission, reduces network bandwidth usage, and enhances the overall performance of BMC.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119865614B_ABST
    Figure CN119865614B_ABST
Patent Text Reader

Abstract

The application relates to the technical field of servers and discloses an image data transmission method and device, computer equipment and a storage medium, which comprises the following steps: in a processing period of a current frame, at least one write address information is acquired; according to each write address information in the at least one write address information, a first preset storage space size and a second preset storage space size, a first coordinate range of updated pixels is determined, the first preset storage space size is a storage space size occupied by image data of one row of pixels in an image, and the second preset storage space size is a storage space size occupied by image data of one pixel in the image; according to the first coordinate range, image data in the first coordinate range is acquired; the image data in the first coordinate range is compressed to obtain compressed image data in the first coordinate range; and the compressed image data in the first coordinate range is transmitted to a remote terminal. The application can improve the transmission efficiency of image data.
Need to check novelty before this filing date? Find Prior Art

Description

Image data transmission methods, devices, computer equipment, and storage media Technical Field

[0001] This invention relates to the field of server technology, and more specifically to image data transmission methods, apparatus, computer equipment, and storage media. Background Technology

[0002] In the server technology field, Board Management Controllers (BMCs) are generally used to monitor and manage servers. Users can log in to the BMC's web service from their own terminals to operate the BMC. The BMC can acquire image data from the local server and send it to a remote terminal via the network, allowing administrators to view the relevant display interface on the remote terminal. Simultaneously, user control actions such as mouse and keyboard operations on the terminal are also transmitted back to the BMC server via the network, where the BMC parses and executes them, thus achieving remote control.

[0003] During the transmission of image data over a network, the content of the displayed screen may not change much, and there may even be many consecutive frames with the same image. Traditional capture and compression methods compress and transmit each frame of data, which may result in a lot of wasted computation. The repeated transmission of image data occupies a lot of network bandwidth, resulting in low transmission efficiency of image data. Summary of the Invention

[0004] In view of this, the present invention provides an image data transmission method, apparatus, computer equipment, storage medium, and program product to solve the problem that repetitive image data transmission occupies a large amount of storage space and network bandwidth, reducing the overall performance of BMC.

[0005] In a first aspect, the present invention provides an image data transmission method, the method comprising:

[0006] During the processing cycle of the current frame, at least one write address information is obtained, wherein the write address information is the starting address information for the central processing unit to write image data of updated pixels into memory;

[0007] Based on each of the at least one write address information, the first preset storage space size, and the second preset storage space size, a first coordinate range of the updated pixel is determined, wherein the first preset storage space size is the storage space size occupied by the image data of a row of pixels in the image, and the second preset storage space size is the storage space size occupied by the image data of a pixel in the image.

[0008] Based on the first coordinate range, obtain the image data within the first coordinate range;

[0009] The image data within the first coordinate range is compressed to obtain compressed image data within the first coordinate range;

[0010] The compressed image data within the first coordinate range is transmitted to a remote terminal.

[0011] The image data transmission method provided by this invention has the following advantages:

[0012] When updating image data for each frame, since the current frame and the previous frame generally only differ in a portion of pixel data, the CPU typically only writes the image data of the changed pixels into memory. Therefore, this solution monitors the write address information of the bus from the CPU to memory during the processing cycle of the current frame. Furthermore, based on the write address information, the first preset storage space size, and the second preset storage space size, the first coordinate range of the updated pixels can be determined. Finally, only the image data of the pixels within the first coordinate range needs to be acquired, compressed, and transmitted to the remote terminal. This significantly reduces the amount of compressed and transmitted image data (from complete image data to image data within the first coordinate range), reducing network bandwidth usage and improving image data transmission efficiency.

[0013] In one optional implementation, determining the first coordinate range of the updated pixel based on each of the at least one write address information, a first preset storage space size, and a second preset storage space size includes:

[0014] Based on the target write address information and the first preset storage space size, determine the ordinate value corresponding to the target write address information, wherein the target write address information is any one of the write address information;

[0015] Based on the target write address information, the first preset storage space size, and the second preset storage space size, determine the horizontal coordinate value corresponding to the target write address information;

[0016] The first coordinate range is determined based on the ordinate and abscissa values ​​corresponding to each write address information.

[0017] Specifically, since the image data compression process needs to consider the image data of adjacent pixels, to minimize the data size, a detailed analysis of the write address information can be performed to determine one or more pixel blocks (composed of multiple consecutive pixels), facilitating subsequent compression of each pixel block separately. This approach makes the analysis and compression processes more complex and inefficient. Our proposed solution, however, determines a first coordinate range based on the vertical and horizontal coordinate values ​​of the write address information, treating pixels within this range as a single pixel block. This reduces the complexity of the analysis and compression processes, improves image data processing efficiency, and consequently, enhances data transmission efficiency.

[0018] In one optional implementation, determining the first coordinate range based on the ordinate and abscissa values ​​corresponding to each write address information includes:

[0019] Based on the ordinate value corresponding to each write address information, determine the largest first ordinate value and the smallest second ordinate value;

[0020] Based on the x-coordinate value corresponding to each write address information, determine the largest first x-coordinate value and the smallest second x-coordinate value;

[0021] The first coordinate range is determined based on the first ordinate value, the second ordinate value, the first abscissa value, and the second abscissa value.

[0022] Specifically, by finding the maximum and minimum coordinate values, the boundaries of the dataset can be quickly determined, resulting in a rectangular box. The calculation process is simple.

[0023] In one optional implementation, obtaining image data within the first coordinate range according to the first coordinate range includes:

[0024] The target address range is determined based on the first coordinate range, the first preset storage space size, and the second preset storage space size;

[0025] Based on the target address range, image data within the first coordinate range is read from the memory at the storage location corresponding to the target address range.

[0026] Specifically, the target address range where the corresponding image data is located can be determined based on the first coordinate range. By reading the image data within the target address range, it is not necessary to read the image data in various scattered storage locations, which can improve the reading efficiency of image data and thus improve the transmission efficiency of image data.

[0027] In one optional implementation, obtaining image data within the first coordinate range according to the first coordinate range includes:

[0028] During the process of the video graphics array controller starting to transmit the image data of the current frame to the local terminal, each time a horizontal synchronization signal is detected, the count value of the pre-built first counter is increased by a first preset value, and the count value of the pre-built second counter is cleared to zero. The horizontal synchronization signal is used to indicate the start of the transmission of image data of a new row of pixels.

[0029] When image data of a pixel in the image is detected to arrive at the monitoring position, the count value of the second counter is increased by a second preset value;

[0030] Obtain the current first count value of the first counter and the current second count value of the pre-constructed second counter;

[0031] The first count value is determined as the target ordinate value, and the second count value is determined as the target abscissa value;

[0032] The target coordinates are determined based on the target's ordinate and abscissa values.

[0033] Determine whether the target coordinates are within the range of the first coordinates;

[0034] When the target coordinates are determined to be within the first coordinate range, image data of the target updated pixel corresponding to the target coordinates is captured from the target data transmission channel, wherein the target data transmission channel is the image data transmission channel from the video graphics array controller to the local terminal;

[0035] When it is determined that the first count value is equal to the first vertical coordinate value and the second count value is equal to the first horizontal coordinate value, the image data capture operation within the first coordinate range is determined to be complete.

[0036] Specifically, during each update of image data to the local terminal, the video graphics array controller reads the image data of each pixel from memory and transmits it to the local terminal. This solution monitors the pixels transmitted in the target data transmission channel using a first counter and a second counter; specifically, the first counter obtains the pixel's ordinate value, and the second counter obtains the pixel's abscissa value. Further, based on the pixel's ordinate and abscissa values, the pixel's coordinates are obtained. It is then determined whether the pixel's coordinates fall within a first coordinate range. If so, the pixel is identified as the one that needs to be transmitted to the remote terminal, and its image data can be captured. This method of capturing image data directly during local image data transmission reduces the number of memory accesses, lowers memory bandwidth usage, and minimizes the impact on other services.

[0037] In one optional implementation, the step of determining the ordinate value corresponding to the target write address information based on the target write address information and the first preset storage space size is expressed by the following expression:

[0038] Y=write_addr / k1

[0039] Where Y is the vertical coordinate value, write_addr is the target write address information, and k1 is the size of the first preset storage space.

[0040] In one optional implementation, the step of determining the horizontal coordinate value corresponding to the target write address information based on the target write address information, the first preset storage space size, and the second preset storage space size uses the following expression:

[0041] X=write_addr%k1 / k2

[0042] Where X is the horizontal coordinate value, write_addr is the target write address information, k1 is the first preset storage space size, and k2 is the second preset storage space size.

[0043] In a second aspect, the present invention provides an image data transmission apparatus, the apparatus comprising:

[0044] The acquisition module is used to acquire at least one write address information during the processing cycle of the current frame, wherein the write address information is the starting address information of the central processing unit writing image data of updated pixels into memory;

[0045] The determining module is used to determine a first coordinate range of the updated pixel based on each of the write address information in at least one of the write address information, a first preset storage space size, and a second preset storage space size, wherein the first preset storage space size is the storage space size occupied by the image data of a row of pixels in the image, and the second preset storage space size is the storage space size occupied by the image data of a pixel in the image.

[0046] The acquisition module is further configured to acquire image data within the first coordinate range based on the first coordinate range;

[0047] The compression module is used to compress the image data within the first coordinate range to obtain compressed image data within the first coordinate range;

[0048] The transmission module is used to transmit the compressed image data within the first coordinate range to a remote terminal.

[0049] Thirdly, the present invention provides a computer device, comprising: a memory and a processor, the memory and the processor being communicatively connected to each other, the memory storing computer instructions, and the processor executing the computer instructions to perform the image data transmission method described in the first aspect or any corresponding embodiment thereof.

[0050] Fourthly, the present invention provides a computer-readable storage medium storing computer instructions for causing a computer to perform the image data transmission method described in the first aspect or any corresponding embodiment thereof.

[0051] Fifthly, the present invention provides a computer program product, including computer instructions for causing a computer to execute the image data transmission method described in the first aspect or any corresponding embodiment thereof. Attached Figure Description

[0052] To more clearly illustrate the technical solutions in the specific embodiments or related technologies of the present invention, the drawings used in the description of the specific embodiments or related technologies will be briefly introduced below. Obviously, the drawings described below are some embodiments of the present invention. For those skilled in the art, other drawings can be obtained from these drawings without creative effort.

[0053] Figure 1 is a schematic diagram of the architecture of an image data transmission system according to an embodiment of the present invention;

[0054] Figure 2 is a flowchart illustrating an image data transmission method according to an embodiment of the present invention;

[0055] Figure 3 is a schematic diagram of the correspondence between pixel coordinates and address information according to an embodiment of the present invention;

[0056] Figure 4 is a schematic diagram of the compression process according to an embodiment of the present invention;

[0057] Figure 5 is a schematic diagram of the updated display image according to an embodiment of the present invention;

[0058] Figure 6 is a structural block diagram of an image data transmission device according to an embodiment of the present invention;

[0059] Figure 7 is a schematic diagram of the hardware structure of a computer device according to an embodiment of the present invention. Detailed Implementation

[0060] To make the objectives, technical solutions, and advantages of the embodiments of the present invention clearer, the technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present invention, not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.

[0061] The following is an explanation of the technical terms involved in the embodiments of the present invention.

[0062] RGB: A color model that stands for Red-Green-Blue. The RGB model creates a wide range of colors by combining different intensities of three basic colors: red, green, and blue.

[0063] YUV: Y represents luminance, and U and V represent chrominance. Y (luminance) represents the brightness information in an image, that is, the black and white information. The Y component reflects the sensitivity of the human eye to brightness, because the human eye is more sensitive to changes in brightness. U (chrominance): also known as BY (blue component minus luminance component), represents the difference in blue information relative to luminance. V (chrominance): also known as RY (red component minus luminance component), represents the difference in red information relative to luminance.

[0064] 32bpp mode: "bpp" is an abbreviation for "bits per pixel". 32bpp (32 bits per pixel) mode refers to an image format in which each pixel uses 32 bits to represent color information. Among them, the R, G, and B color components each occupy 8 bits, and the higher 8 bits are unused.

[0065] Entropy encoding is a lossless data compression technique used to reduce the number of bits required to represent data without losing any information. Because entropy encoding works on the principle that the probability of different symbols or patterns appearing in data is usually uneven, by assigning shorter codes to high-frequency symbols and longer codes to low-frequency symbols, entropy encoding can effectively reduce the total number of bits required to represent the data. Examples of entropy encoding include Huffman coding.

[0066] This invention provides an image data transmission system, as shown in Figure 1. The architecture of the image data transmission system may include a local terminal, a remote terminal, a central processing unit (CPU), a baseboard management controller, and memory.

[0067] Local terminals are those located within a preset distance from the baseboard management controller. Within this preset distance, the baseboard management controller can interact with local terminals without any network infrastructure. Remote terminals are those that require a network connection to interact with the baseboard management controller.

[0068] The baseboard management controller can include a Peripheral Component Interconnect Express (PCIe) interface, a Video Graphics Array (VGA) controller, an address information resolver, an image data compression engine, an Ethernet Media Access Controller (EMAC), a memory controller, and a Digital Visual Interface (DVI). The PCIe interface can be electrically connected to the VGA controller. The VGA can be electrically connected to the address information resolver. The address information resolver can be electrically connected to both the memory controller and the image data compression engine. The image data compression engine can be connected to both the memory controller and the EMAC.

[0069] Accordingly, the baseboard management controller can be connected to the central processing unit via the PCIe interface, to the local terminal via the DVI interface, to the remote terminal via the EMAC interface, and to the memory via the memory controller.

[0070] The memory can be Double Data Rate (DDR) Synchronous Dynamic Random Access Memory (SDRAM). A frame buffer can be set up in the memory to store image data.

[0071] In the image data transmission system architecture described above, the central processing unit (CPU) can write the image data of all updated pixels in each frame into the frame buffer in memory via the PCIe interface and memory controller. The VGA can then read the image data (including all pixels except the updated ones) from memory and transmit it to the local terminal. The EMAC can also read the image data from memory and transmit it to a remote terminal; the specific transmission process will be described later.

[0072] This invention provides an image data transmission method that reduces the amount of image data transmitted and improves the efficiency of image data transmission by transmitting image data within a first coordinate range.

[0073] According to an embodiment of the present invention, an embodiment of an image data transmission method is provided. It should be noted that the steps shown in the flowchart in the accompanying drawings can be executed in a computer system such as a set of computer-executable instructions. Furthermore, although a logical order is shown in the flowchart, in some cases, the steps shown or described may be executed in a different order than that shown here.

[0074] This embodiment provides an image data transmission method that can be executed by a computer device, such as the aforementioned baseboard management controller. The baseboard management controller can interact with its various components to complete the image data transmission process. The following detailed description uses the baseboard management controller shown in Figure 1 as the execution entity.

[0075] Figure 2 is a flowchart of an image data transmission method according to an embodiment of the present invention. As shown in Figure 2, the process includes the following steps:

[0076] Step S201: During the processing cycle of the current frame, at least one write address information is obtained.

[0077] The write address information can be the starting address information for the central processing unit to write image data for updated pixels into memory.

[0078] Specifically, whenever the address information resolver detects a Vertical Synchronization (VSync) signal, it indicates the start of a new frame image processing cycle. During the processing of a new frame image, the central processing unit writes the image data of the updated pixels into memory via the bus. Therefore, the address information resolver in the baseboard management controller can obtain write address information from the bus in each processing cycle. At this time, the image data written into memory can be in RGB format.

[0079] Step S202: Determine the first coordinate range of the updated pixel based on each write address information in at least one write address information, the first preset storage space size, and the second preset storage space size.

[0080] The first preset storage space size is the storage space occupied by the image data of one row of pixels in the image, and the second preset storage space size is the storage space occupied by the image data of one pixel in the image. For example, the first preset storage space size can be 1000H (hexadecimal value), and the second preset storage space size can be 4 bytes.

[0081] Specifically, the address information parser can convert each write address information collected in the processing cycle of the current frame according to the first preset storage space size and the second preset storage space size to obtain the coordinates corresponding to each write address information, and then determine the first coordinate range of the updated pixel according to the coordinates corresponding to each write address information.

[0082] Taking a 1024×768 resolution image in 32bpp mode as an example, one frame of a 1024×768 image occupies 1024×768×32=3145728 bytes in video memory. Converted to hexadecimal, this corresponds to a range of 00H to 300000H in memory, with each row occupying 1000H of address space. The corresponding relationship between pixel coordinates and write address information can be shown in Figure 3.

[0083] The specific process of determining the first coordinate range of the updated pixel based on the coordinates corresponding to each write address information can be as follows:

[0084] Step 1: Determine the ordinate value corresponding to the target write address information based on the target write address information and the first preset storage space size.

[0085] The target write address information is any one of at least one write address information.

[0086] Step 2: Determine the x-coordinate value corresponding to the target write address information based on the target write address information, the first preset storage space size, and the second preset storage space size.

[0087] Specifically, the address information parser can determine the row number of the pixel corresponding to the target write address information in the image, i.e., the vertical coordinate value of the pixel corresponding to the target write address information, based on the target write address information and the first preset storage space size. Furthermore, it can determine the row number of the pixel corresponding to the target write address information in the image, i.e., the horizontal coordinate value of the pixel corresponding to the target write address information, based on the target write address information, the first preset storage space size, and the second preset storage space size.

[0088] For example, step one can be expressed as follows:

[0089] Y=write_addr / k1 (Formula 1)

[0090] Where Y is the vertical coordinate value, write_addr is the target write address information, and k1 is the first preset storage space size.

[0091] For example, step two can be expressed as follows:

[0092] X=write_addr%k1 / k2 (Formula 2)

[0093] Where X is the horizontal coordinate value, write_addr is the target write address information, k1 is the first preset storage space size, and k2 is the second preset storage space size.

[0094] For example, if the target write address information is 04H, k1 is 1000H, and k2 is 4, the calculated vertical coordinate value is 0, and the calculated horizontal coordinate value is 1.

[0095] Step 3: Determine the first coordinate range based on the vertical and horizontal coordinate values ​​corresponding to each write address information.

[0096] Specifically, the address information parser can determine the maximum first ordinate value and the minimum second ordinate value based on the ordinate value corresponding to each write address information, and determine the maximum first abscissa value and the minimum second abscissa value based on the abscissa value corresponding to each write address information. Furthermore, it can determine a first coordinate range based on the first ordinate value, the second ordinate value, the first abscissa value, and the second abscissa value. Specifically, it can determine the abscissa range based on the first abscissa value and the second abscissa value, and determine the ordinate range based on the first ordinate value and the second ordinate value; the abscissa range and the ordinate range constitute the first coordinate range.

[0097] For example, the first coordinate range could be {x:256-263, y:256-271}.

[0098] Step S203: Obtain image data within the first coordinate range according to the first coordinate range.

[0099] Specifically, the address information parser can send the first coordinate range to the image data compression engine, which then obtains the image data within the first coordinate range according to any of the following methods.

[0100] In method one, the image data compression engine can determine the target address range based on the first coordinate range, the first preset storage space size, and the second preset storage space size. Then, it can read the image data within the first coordinate range from the storage location in memory corresponding to the target address range, based on the target address range.

[0101] Specifically, the image data compression engine can use the above formulas (1) and (2) to convert the first coordinate range into the target address range. Furthermore, the image data compression engine can then read the image data within the target address range from memory, i.e., read the image data within the first coordinate range.

[0102] Method 2: During the transmission of image data of the current frame from the video graphics array controller to the local terminal, each time a horizontal synchronization signal (HSync) is detected, the count value of a pre-built first counter is increased by a first preset value, and the count value of a pre-built second counter is reset to zero. The horizontal synchronization signal is used to indicate the start of transmission of image data for a new row of pixels. Each time image data of a pixel in the image arrives at the monitoring position, the count value of the second counter is increased by a second preset value. The current first count value of the first counter and the current second count value of the pre-built second counter are obtained. The first count value is determined as the target ordinate value, and the second count value is determined as the target abscissa value. The target coordinates are determined based on the target ordinate and abscissa values. It is determined whether the target coordinates are within a first coordinate range. When the target coordinates are determined to be within the first coordinate range, image data of the target updated pixel corresponding to the target coordinates is captured from the target data transmission channel. When the first count value equals the first ordinate value and the second count value equals the first abscissa value, the capture operation of image data within the first coordinate range is considered complete.

[0103] The target data transmission channel is the image data transmission channel from the video graphics array controller to the local terminal. Both the first and second preset values ​​can be 1.

[0104] Specifically, the image data compression engine can be configured with two counters, namely the first counter and the second counter mentioned above. During the transmission of the current frame's image data from the video graphics array controller to the local terminal, whenever the image data compression engine detects a horizontal synchronization signal, it indicates the start of image data transmission for a new row of pixels. At this time, the count value of the first counter can be increased by a first preset value, and the count value of the second counter can be reset to zero to begin the pixel counting operation for the current row. Each time image data of a pixel arrives at the monitoring position (e.g., the monitoring position could be a DVI interface), the count value of the second counter is increased by a second preset value. Furthermore, the image data compression engine can also determine whether the first count value is equal to the first vertical coordinate value and whether the second count value is equal to the first horizontal coordinate value. If both determinations are true, it indicates that image data for all pixels within the first coordinate range has been captured.

[0105] In some optional implementations, before acquiring image data within the first coordinate range, the image data compression engine can first obtain the current memory bandwidth and determine whether the memory bandwidth is less than a preset bandwidth threshold. If not, it can read image data from memory using method one; if so, it can capture image data from the monitoring location using method two. Thus, when memory bandwidth is sufficient, data can be read from memory immediately; when memory bandwidth is insufficient, image data can be captured from the local image data transmission channel (i.e., the target data transmission channel). Since insufficient memory bandwidth may lead to slow image data transmission, using the channel that is already used for image data transmission can accelerate the acquisition efficiency of image data within the first coordinate range.

[0106] Step S204: Compress the image data within the first coordinate range to obtain compressed image data within the first coordinate range.

[0107] The compressed image data within the first coordinate range can be in JPEG format.

[0108] Specifically, the image data compression engine can compress the image data within the first coordinate range according to the compression process shown in Figure 4, as follows:

[0109] First, the image data within the first coordinate range is converted from the RGB color space to the YUV color space to obtain the image data after conversion.

[0110] Second, since the image data within the first coordinate range is arranged by pixels, the image data within the first coordinate range can be transformed according to a preset pixel block size to obtain image data corresponding to at least one pixel block. For example, the pixel block size can be 8×8, meaning that one pixel block can include 64 pixels.

[0111] Third, perform Discrete Cosine Transform (DCT) on the image data corresponding to at least one pixel block to obtain the image data after Discrete Cosine Transform.

[0112] Fourth, the image data after discrete cosine transform is subjected to quantization, entropy coding, and compression to obtain compressed image data within the first coordinate range.

[0113] The Discrete Cosine Transform (DCT) is primarily used to convert data from the spatial domain to the frequency domain. Quantization converts the frequency domain data obtained after the DCT into integers for further compression, reducing the amount of image data transmitted.

[0114] Step S205: Transmit the compressed image data within the first coordinate range to the remote terminal.

[0115] Specifically, the image data compression engine can write the first coordinate range and the compressed image data within the first coordinate range into the corresponding storage locations in memory, and notify the EMAC to perform a read operation. After the EMAC reads the first coordinate range and the compressed image data within the first coordinate range, it transmits them to the remote terminal. The remote terminal can overwrite and display the image data within the first coordinate range of the previous frame image according to the first coordinate range, as shown in Figure 5.

[0116] The following example illustrates this. Between two VSync signals, the user moves the mouse from its original position (256, 256) to a new position (265, 250). The original and new positions can be the top-left corner of the mouse. If the mouse occupies 8×16 pixels, the CPU will update the image of the first coordinate range {x:256-263, y:256-271} and {x:265-272, y:250-257}. This means removing the mouse display within the {x:256-263, y:256-271} area and adding the mouse display within the {x:265-272, y:250-257} area. The write address information corresponding to {x:256-263, y:256-271} includes: 100400H-10041fH, 101400H-10141fH, ..., 10f400H-10f41fH. The write address information corresponding to {x:265-272, y:250-257} includes: fa424H-fa443H, fb424H-101443H, ..., 101424H-101443H. Accordingly, the target address range can be an address range where the lower 12 bits of the address between fa000H and 10f000H are between 400H and 440H.

[0117] The image data transmission method provided in this embodiment addresses the issue that, when updating image data in each frame, since the current frame and the previous frame generally only differ in a portion of pixel data, the central processing unit (CPU) typically only writes the image data of the changed pixels into memory. Therefore, this solution monitors the write address information of the bus from the CPU to memory during the processing cycle of the current frame. Furthermore, a first coordinate range for the updated pixels can be determined based on the write address information, a first preset storage space size, and a second preset storage space size. Finally, only the image data of the pixels within the first coordinate range needs to be acquired, compressed, and transmitted to the remote terminal. This significantly reduces the amount of compressed and transmitted image data (from complete image data to image data within the first coordinate range), reducing network bandwidth usage and improving image data transmission efficiency.

[0118] This embodiment also provides an image data transmission device for implementing the above embodiments and preferred embodiments; details already described will not be repeated. As used below, the term "module" can refer to a combination of software and / or hardware that performs a predetermined function. Although the device described in the following embodiments is preferably implemented in software, hardware implementation, or a combination of software and hardware, is also possible and contemplated.

[0119] This embodiment provides an image data transmission device, as shown in FIG6, including:

[0120] The acquisition module 601 is used to acquire at least one write address information during the processing cycle of the current frame, wherein the write address information is the starting address information of the central processing unit writing image data of updated pixels into memory;

[0121] The determining module 602 is used to determine the first coordinate range of the updated pixel based on each write address information in at least one write address information, the first preset storage space size, and the second preset storage space size, wherein the first preset storage space size is the storage space size occupied by the image data of a row of pixels in the image, and the second preset storage space size is the storage space size occupied by the image data of a pixel in the image.

[0122] The acquisition module 601 is also used to acquire image data within the first coordinate range based on the first coordinate range;

[0123] Compression module 603 is used to compress image data within the first coordinate range to obtain compressed image data within the first coordinate range;

[0124] The transmission module 604 is used to transmit the compressed image data within the first coordinate range to a remote terminal.

[0125] In some alternative implementations, the determining module 602 is specifically used for:

[0126] Based on the target write address information and the first preset storage space size, determine the vertical coordinate value corresponding to the target write address information, wherein the target write address information is any one of at least one write address information;

[0127] Based on the target write address information, the first preset storage space size, and the second preset storage space size, determine the x-coordinate value corresponding to the target write address information;

[0128] The first coordinate range is determined based on the ordinate and abscissa values ​​corresponding to each write address information.

[0129] In some alternative implementations, the determining module 602 is specifically used for:

[0130] Based on the y-coordinate value corresponding to each write address information, determine the largest first y-coordinate value and the smallest second y-coordinate value;

[0131] Based on the x-coordinate value corresponding to each write address information, determine the largest first x-coordinate value and the smallest second x-coordinate value;

[0132] The first coordinate range is determined based on the first ordinate value, the second ordinate value, the first abscissa value, and the second abscissa value.

[0133] In some optional implementations, the acquisition module 601 is specifically used for:

[0134] The target address range is determined based on the first coordinate range, the first preset storage space size, and the second preset storage space size;

[0135] Based on the target address range, read the image data within the first coordinate range from the storage location in memory corresponding to the target address range.

[0136] In some optional implementations, the acquisition module 601 is specifically used for:

[0137] During the process of the video graphics array controller starting to transmit the image data of the current frame to the local terminal, each time a target signal is detected, the count value of the pre-built first counter is increased by a first preset value;

[0138] Obtain the current first count value of the first counter and the current second count value of the pre-constructed second counter, wherein the count value of the first counter is used to indicate the position of the pixel corresponding to the target signal in the current row of pixels, and the count value of the second counter is used to indicate the row number of the pixel corresponding to the target signal;

[0139] The first count value is determined as the target vertical coordinate value, and the second count value is determined as the target horizontal coordinate value;

[0140] Determine the target coordinates based on the target's vertical and horizontal coordinates;

[0141] Determine if the target coordinates are within the range of the first coordinate system;

[0142] When the target coordinates are determined to be within the first coordinate range, image data of the target updated pixel corresponding to the target coordinates is captured from the target data transmission channel, wherein the target data transmission channel is the image data transmission channel from the video graphics array controller to the local terminal;

[0143] When it is determined that the first count value is equal to the first vertical coordinate value and the second count value is equal to the first horizontal coordinate value, the image data capture operation within the first coordinate range is completed.

[0144] In some optional implementations, the ordinate value corresponding to the target write address information is determined based on the target write address information and the first preset storage space size, using the following expression:

[0145] Y=write_addr / k1

[0146] Where Y is the vertical coordinate value, write_addr is the target write address information, and k1 is the first preset storage space size.

[0147] In some optional implementations, the x-coordinate value corresponding to the target write address information is determined based on the target write address information, the first preset storage space size, and the second preset storage space size, using the following expression:

[0148] X=write_addr%k1 / k2

[0149] Where X is the horizontal coordinate value, write_addr is the target write address information, k1 is the first preset storage space size, and k2 is the second preset storage space size.

[0150] Further functional descriptions of the above modules and units are the same as those in the corresponding embodiments described above, and will not be repeated here.

[0151] In this embodiment, the image data transmission device is presented in the form of a functional unit. Here, a unit refers to an ASIC (Application Specific Integrated Circuit) circuit, a processor and memory that execute one or more software or fixed programs, and / or other devices that can provide the above functions.

[0152] This invention also provides a computer device having the image data transmission apparatus shown in FIG6 above.

[0153] Please refer to Figure 7, which is a schematic diagram of a computer device according to an optional embodiment of the present invention. As shown in Figure 7, the computer device includes one or more processors 10, a memory 20, and interfaces for connecting the various components, including high-speed interfaces and low-speed interfaces. The various components communicate with each other using different buses and can be mounted on a common motherboard or otherwise installed as needed. The processors can process instructions executed within the computer device, including instructions stored in or on memory to display graphical information of a GUI on an external input / output device (such as a display device coupled to the interface). In some optional embodiments, multiple processors and / or multiple buses can be used with multiple memories and multiple memory modules, if desired. Similarly, multiple computer devices can be connected, each providing some of the necessary operations (e.g., as a server array, a group of blade servers, or a multiprocessor system). Figure 7 uses one processor 10 as an example.

[0154] Processor 10 can be a central processing unit or a graphics processor. Processor 10 may further include hardware integrated circuits. These hardware integrated circuits can be application-specific integrated circuits (ASICs), programmable logic devices, or combinations thereof. These programmable logic devices can be complex programmable logic devices (CLPs), field-programmable gate arrays (FPGAs), general-purpose array logic (GBAs), or any combination thereof.

[0155] The memory 20 stores instructions executable by at least one processor 10 to cause the at least one processor 10 to perform the method shown in the above embodiments.

[0156] The memory 20 may include a program storage area and a data storage area. The program storage area may store the operating system and applications required for at least one function; the data storage area may store data created based on the use of the computer device. Furthermore, the memory 20 may include high-speed random access memory and may also include non-transitory memory, such as at least one disk storage device, flash memory device, or other non-transitory solid-state storage device. In some alternative embodiments, the memory 20 may optionally include memory remotely located relative to the processor 10, and these remote memories may be connected to the computer device via a network. Examples of such networks include, but are not limited to, the Internet, intranets, local area networks, mobile communication networks, and combinations thereof.

[0157] The memory 20 may include volatile memory, such as random access memory; the memory may also include non-volatile memory, such as flash memory, hard disk or solid-state drive; the memory 20 may also include a combination of the above types of memory.

[0158] The computer device also includes a communication interface 30 for communicating with other devices or communication networks.

[0159] This invention also provides a computer-readable storage medium. The methods described above according to embodiments of the invention can be implemented in hardware or firmware, or implemented as computer code that can be recorded on a storage medium, or implemented as computer code downloaded via a network and originally stored on a remote storage medium or a non-transitory machine-readable storage medium and then stored on a local storage medium. Thus, the methods described herein can be processed by software stored on a storage medium using a general-purpose computer, a dedicated processor, or programmable or dedicated hardware. The storage medium can be a magnetic disk, optical disk, read-only memory, random access memory, flash memory, hard disk, or solid-state drive, etc.; further, the storage medium can also include combinations of the above types of memory. It is understood that computers, processors, microprocessor controllers, or programmable hardware include storage components capable of storing or receiving software or computer code, which, when accessed and executed by the computer, processor, or hardware, implements the methods shown in the above embodiments.

[0160] A portion of this invention can be applied as a computer program product, such as computer program instructions, which, when executed by a computer, can invoke or provide the methods and / or technical solutions according to the invention through the operation of the computer. Those skilled in the art will understand that the forms in which computer program instructions exist in a computer-readable medium include, but are not limited to, source files, executable files, installation package files, etc. Correspondingly, the ways in which computer program instructions are executed by a computer include, but are not limited to: the computer directly executing the instructions, or the computer compiling the instructions and then executing the corresponding compiled program, or the computer reading and executing the instructions, or the computer reading and installing the instructions and then executing the corresponding installed program. Here, the computer-readable medium can be any available computer-readable storage medium or communication medium accessible to a computer.

[0161] Although embodiments of the invention have been described in conjunction with the accompanying drawings, those skilled in the art can make various modifications and variations without departing from the spirit and scope of the invention, and such modifications and variations all fall within the scope defined by the appended claims.

Claims

1. An image data transmission method, characterized in that, The method is applied to a baseboard management controller. The method includes: during the processing cycle of the current frame, acquiring at least one write address information, wherein the write address information is the starting address information for the central processing unit to write image data of updated pixels into memory; determining a first coordinate range of the updated pixels based on each of the at least one write address information, a first preset storage space size, and a second preset storage space size, wherein the first preset storage space size is the storage space occupied by image data of a row of pixels in the image, and the second preset storage space size is the storage space occupied by image data of one pixel in the image; acquiring the current memory bandwidth; if the memory bandwidth is determined to be greater than or equal to a preset bandwidth threshold, determining a target address range based on the first coordinate range, the first preset storage space size, and the second preset storage space size; reading image data within the first coordinate range from the storage location in memory corresponding to the target address range based on the target address range; if the memory bandwidth is determined to be less than the preset bandwidth threshold, during the process of the video graphics array controller starting to transmit the image data of the current frame to the local terminal, each time a horizontal synchronization signal is detected, incrementing the count value of a pre-built first counter by a first preset value, and incrementing the count value of a pre-built second counter... The value is cleared to zero; when the image data of a pixel in the image reaches the monitoring position, the count value of the second counter is increased by a second preset value; the current first count value of the first counter and the current second count value of the pre-constructed second counter are obtained; the first count value is determined as the target ordinate value and the second count value is determined as the target abscissa value; the target coordinates are determined according to the target ordinate value and the target abscissa value; when the target coordinates are determined to be coordinates within the first coordinate range, the image data of the target updated pixel corresponding to the target coordinates is captured from the target data transmission channel; when the first count value is equal to the first ordinate value and the second count value is equal to the first abscissa value, the image data capture operation within the first coordinate range is determined to be completed, wherein the target data transmission channel is the image data transmission channel from the video graphics array controller to the local terminal, the horizontal synchronization signal is used to indicate the start of the transmission of image data of a new row of pixels, the first ordinate value is the maximum ordinate value within the first coordinate range, and the first abscissa value is the maximum abscissa value within the first coordinate range; the image data within the first coordinate range is compressed to obtain compressed image data within the first coordinate range; the compressed image data within the first coordinate range is transmitted to the remote terminal.

2. The method according to claim 1, characterized in that, The step of determining the first coordinate range of the updated pixel based on each of the at least one write address information, the first preset storage space size, and the second preset storage space size includes: determining the ordinate value corresponding to the target write address information based on the target write address information and the first preset storage space size, wherein the target write address information is any one of the at least one write address information; determining the abscissa value corresponding to the target write address information based on the target write address information, the first preset storage space size, and the second preset storage space size; and determining the first coordinate range based on the ordinate value and the abscissa value corresponding to each of the write address information.

3. The method according to claim 2, characterized in that, Determining the first coordinate range based on the ordinate and abscissa values ​​corresponding to each write address information includes: determining the largest first ordinate value and the smallest second ordinate value based on the ordinate value corresponding to each write address information; determining the largest first abscissa value and the smallest second abscissa value based on the abscissa value corresponding to each write address information; and determining the first coordinate range based on the first ordinate value, the second ordinate value, the first abscissa value, and the second abscissa value.

4. The method according to claim 2, characterized in that, The step of determining the ordinate value corresponding to the target write address information based on the target write address information and the first preset storage space size is expressed as follows: Y = write_addr / k1, where Y is the ordinate value, write_addr is the target write address information, and k1 is the first preset storage space size.

5. The method according to claim 2, characterized in that, The step of determining the horizontal coordinate value corresponding to the target write address information based on the target write address information, the first preset storage space size, and the second preset storage space size adopts the following expression: X=write_addr%k1 / k2 where X is the horizontal coordinate value, write_addr is the target write address information, k1 is the first preset storage space size, and k2 is the second preset storage space size.

6. An image data transmission device, characterized in that, The device is applied to a baseboard management controller. The device includes: an acquisition module, configured to acquire at least one write address information during the processing cycle of the current frame, wherein the write address information is the starting address information for the central processing unit to write image data of an updated pixel into memory; and a determination module, configured to determine a first coordinate range of the updated pixel based on each of the at least one write address information, a first preset storage space size, and a second preset storage space size, wherein the first preset storage space size is the storage space occupied by image data of a row of pixels in the image, and the second preset storage space size is the storage space occupied by image data of a single pixel in the image; the acquisition module... The module is also used to obtain the current memory bandwidth; when the memory bandwidth is determined to be greater than or equal to a preset bandwidth threshold, a target address range is determined based on the first coordinate range, the first preset storage space size, and the second preset storage space size; based on the target address range, image data within the first coordinate range is read from the memory at the storage location corresponding to the target address range; when the memory bandwidth is determined to be less than the preset bandwidth threshold, during the process of the video graphics array controller starting to transmit the image data of the current frame to the local terminal, each time a horizontal synchronization signal is detected, the count value of the pre-built first counter is increased by a first preset value, and the count value of the pre-built second counter is increased by a first preset value. The counter value is reset to zero; when image data of a pixel in the image reaches the monitoring position, the count value of the second counter is increased by a second preset value; the current first count value of the first counter and the current second count value of the pre-constructed second counter are obtained; the first count value is determined as the target ordinate value and the second count value is determined as the target abscissa value; the target coordinates are determined according to the target ordinate value and the target abscissa value; when the target coordinates are determined to be within the first coordinate range, image data of the target updated pixel corresponding to the target coordinates is captured from the target data transmission channel; when the first count value is determined to be equal to the first ordinate value, and the second count value is determined to be equal to the first ordinate value, the count value of the second counter is increased by a second preset value ... When the count value equals the first horizontal coordinate value, the image data capture operation within the first coordinate range is determined to be complete. The target data transmission channel is the image data transmission channel from the video graphics array controller to the local terminal. The horizontal synchronization signal is used to indicate the start of image data transmission for a new row of pixels. The first vertical coordinate value is the maximum vertical coordinate value within the first coordinate range, and the first horizontal coordinate value is the maximum horizontal coordinate value within the first coordinate range. A compression module is used to compress the image data within the first coordinate range to obtain compressed image data within the first coordinate range. A transmission module is used to transmit the compressed image data within the first coordinate range to a remote terminal.

7. A computer device, characterized in that, include: A memory and a processor are communicatively connected, the memory stores computer instructions, and the processor executes the computer instructions to perform the image data transmission method of any one of claims 1 to 5.

8. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores computer instructions for causing the computer to perform the image data transmission method according to any one of claims 1 to 5.

Citation Information

Patent Citations

  • Efficient video frame capturing

    US20070132771A1

  • Methods and apparatus for non-intrusive capturing of frame buffer memory information for remote display

    US20080291210A1