CN112839232A - Data stream start code searching method and device and computer storage medium - Google Patents
Data stream start code searching method and device and computer storage medium Download PDFInfo
- Publication number
- CN112839232A CN112839232A CN201911157145.1A CN201911157145A CN112839232A CN 112839232 A CN112839232 A CN 112839232A CN 201911157145 A CN201911157145 A CN 201911157145A CN 112839232 A CN112839232 A CN 112839232A
- Authority
- CN
- China
- Prior art keywords
- byte
- code
- bytes
- judgment
- start code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
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/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of 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/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- 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/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/1883—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
-
- 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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
The application discloses a data stream start code searching method and device and a computer storage medium. The method comprises the following steps: dividing a data stream into at least two data blocks; the data stream comprises at least two coding units which are connected in sequence, and each coding unit comprises a start code; the start code in each data block is searched in parallel. By means of the method, the search time of the start code in the data stream can be shortened, and the search efficiency of the start code is improved.
Description
Technical Field
The present application relates to the field of intelligent electronic devices, and in particular, to a method for searching for a start code of a data stream, a device for searching for a start code of a data stream, and a computer storage medium.
Background
At present, the bottom layer of video decoding mostly uses OMX to connect a video decoder, a front end sends a packet of data to the decoder for decoding, some platforms use software for decoding, and in order to reduce the load of a CPU and optimize the decoding rate, a plurality of platforms use hardware for decoding; whether the decoding is hard or soft, the start code of each coding unit is found before the decoding is really performed, and the data is sent to a decoder according to the start code and the coding units to complete the decoding work.
However, the existing decoder will put the data sent from the front end into a buffer, and then look for the start code byte by byte, if the file is large, the load of the CPU will be greatly increased, and it may cause video playing to be blocked due to too long decoding time, resulting in poor user experience.
Disclosure of Invention
The application provides a data stream start code searching method, a data stream start code device and a computer storage medium, which are used for solving the problem of low efficiency of searching a start code of a coding unit in the related art.
In order to solve the above technical problem, the present application provides a data stream start code searching method. The method comprises the following steps: dividing a data stream into at least two data blocks, wherein the data stream comprises at least two coding units which are sequentially connected, and each coding unit comprises a start code; the start code in each data block is searched in parallel.
In order to solve the above technical problem, the present application provides a data stream start code searching apparatus. The apparatus includes a processor and a memory; the processor is coupled to the memory and executes the instructions during operation to implement the steps of the data stream start code search method as described above in cooperation with the memory.
To solve the above technical problem, the present application provides a computer storage medium. The computer storage medium stores a computer program that is executed to implement the steps of the above-described data stream start code search method.
According to the method and the device, the data stream is divided into at least two data blocks, the start codes in the at least two data blocks are searched in parallel, the search time of the start codes can be shortened, and the search efficiency of the start codes is improved.
And overlapping bytes are arranged between two ringing data blocks, and the number of the overlapping bytes is equal to the number of bytes of the start code minus 1, so that the situation that the start code is repeated or missed when the data stream is divided can be avoided.
Furthermore, the starting code of the data block is searched by skipping bytes, so that the searching efficiency of the starting code of each data block can be further accelerated, the video playing is more continuous and smooth, and the user experience is improved.
Drawings
Fig. 1 is a schematic flowchart illustrating an embodiment of a data stream start code searching method provided in the present application;
FIG. 2 is a schematic flow chart diagram illustrating an embodiment of dividing a data stream into at least two data blocks that are sequentially connected according to the present disclosure;
FIG. 3 is a flow diagram illustrating an embodiment of a start code for a byte-skipping search data block provided herein;
FIG. 4 is a schematic diagram of the present application for dividing a data stream into 3 data blocks that are sequentially connected;
FIG. 5 is a diagram illustrating a start code one state of a byte-skip search data block provided herein;
FIG. 6 is a schematic diagram of another state of a start code of a byte-skipping search data block provided herein;
FIG. 7 is a schematic diagram of yet another state of a start code of a byte-skip search data block provided herein;
FIG. 8 is a diagram illustrating yet another state of start codes for a byte-skip search data block provided herein;
FIG. 9 is a schematic structural diagram of an embodiment of a data stream start code search apparatus provided in the present application;
FIG. 10 is a schematic structural diagram of an embodiment of a computer storage medium provided in the present application.
Detailed Description
In order to make those skilled in the art better understand the technical solution of the present application, the recipe comparison method, the recipe comparison apparatus, and the computer storage medium provided in the present application are described in further detail below with reference to the accompanying drawings and the detailed description.
Referring to fig. 1, fig. 1 is a schematic flowchart illustrating a data stream start code searching method according to an embodiment of the present disclosure. The embodiment comprises the following steps:
s110: the data stream is partitioned into at least two data blocks.
A data stream is an ordered set of data sequences of bytes having a start point and an end point. The data stream may be divided into at least two data blocks, specifically, 2, 3, 5 or other numbers, which is not limited in this application. It is to be understood that, since the data stream is ordered, the order of the data blocks described in the present application as the first data block, the second data block, the third data block, the previous data block, the next data block, etc. is consistent with the order of the positions of the data blocks in the data stream.
In this embodiment, the data stream is, for example, a video, and the data stream includes at least two sequentially connected coding units, and each coding unit includes a start code. In particular, video is a continuous sequence of images, consisting of successive frames, a frame being an image. After the video encoder encodes the video images, each frame of image is encoded into one or more coding units, such as NAL (Network abstraction Layer) of the h.264/AVC video coding standard. If the video is stored on the medium, the video encoder adds a start code before each coding unit because the coding units are closely connected in sequence and the video decoder cannot distinguish the start position and the end position of each coding unit in the data stream. For example, in the H.264/AVC video coding standard, the start code is 0x 000001.
How many data blocks the data stream is divided into can be determined according to the number of parallel data processing units. The parallel data processing unit is used for searching the start codes in the data blocks in parallel. For example, there are 3 parallel data processing units, the data stream may be divided into 3 data blocks, or may be multiple of the number of data blocks of the parallel data processing units.
When the data stream is divided into at least two data blocks which are connected in sequence, the start code may be divided into the two data blocks, which may result in missing the start code. In this embodiment, to avoid missing codes of the start code, two adjacent data blocks may include overlapping bytes. Specifically, in every two adjacent data blocks, the last byte of the previous data block and the same number of bytes of the first byte of the next data block are repeated. That is, when the data stream is divided, the next data block is divided into a plurality of overlapping bytes, or the previous data block is divided into a plurality of bytes, and the plurality of divided bytes are the overlapping bytes.
Furthermore, the sum of the byte number of the overlapped bytes and 1 is equal to the byte number of the start code, so that the missing code of the start code can be avoided, and the repeated search of the start code of the same coding unit can be avoided.
In some embodiments, dividing the data stream may be to calculate the number of bytes of each data block, and divide the data stream according to the number of bytes of each data block. The byte number of each data block can be the same, or the byte number of partial data blocks can be different, or the byte number of all data blocks can be different. Calculating the byte number of each data block, for example, a value obtained by dividing the sum of the byte number of the data stream and the byte number of the overlapped byte by the number of the parallel data processing units, wherein if the value obtained by dividing the sum of the byte number of the data stream and the byte number of the overlapped byte by the number of the parallel data processing units is an integer, the byte number of each data block is equal to the byte number of each data block; the value of the sum of the number of bytes of the data stream and the number of bytes of the overlapped bytes divided by the number of parallel data processing units is not an integer, and the integer may be fetched downwards, and the remainder is distributed to one or several data blocks. After the number of bytes of each data block is calculated, the data stream is divided according to the number of bytes of the data block, the number of parallel data processing units and the number of bytes of overlapped bytes.
In other embodiments, an irrelevant byte may be inserted at the start position of the first data block or at the end position of the last data block, so that the data stream may be divided evenly, and the byte number of each data block is consistent, thereby improving the overall search efficiency of the start code of the data stream. Wherein the irrelevant byte may be other values different from the start code. For example, the start code is 0x000001, and the don't care byte may be any value except 00 and 01.
The number of bytes of the irrelevant bytes is related to the number of bytes of the data stream and the number of parallel data processing units. The calculation of the number of independent bytes and the segmentation of the data stream will be described in detail below.
Referring to fig. 2, fig. 2 is a flowchart illustrating an embodiment of dividing a data stream into at least two data blocks that are sequentially connected according to the present application. The present embodiment is described by taking an example in which an irrelevant byte is inserted into the start position of the first data block, but the present invention is not limited to this.
S111: and determining the byte number of the irrelevant byte and the byte number of each data block according to the byte number of the data stream, the byte number of the start code and the number of the parallel data processing units.
The parallel data processing unit is used for searching the start code in each data block in parallel. The number of data blocks into which the data stream is divided may be determined according to the number of parallel data processing units. In this embodiment, the number of parallel data processing units may be the same as the number of data blocks. Of course, the number of parallel data processing units may be different from the number of data blocks in other embodiments, such as the number of data blocks being multiple of the number of parallel data processing units, or other numbers. The number of parallel data processing units may be determined according to the total thread and utilization rate of the processor, which is not limited in this application.
The number of bytes of the irrelevant bytes needed to be inserted in the first data block can be calculated according to the number of bytes of the data stream and the number of parallel data processing units. Further, the byte number of each data block is calculated according to the byte number of the data stream, the byte number of the irrelevant byte and the number of the parallel data processing units, and the byte number of each data block is the same. It should be noted that the number of bytes of the data block referred to in this embodiment refers to the number of bytes of the data block after the data stream is divided into the data blocks, that is, the number of bytes of the data block including irrelevant bytes or the number of bytes of overlapping bytes.
In a specific embodiment, the number of bytes of the irrelevant byte inserted before the first data block is calculated, which may be the sum of the number of bytes of the data stream and the overlapping bytes of all data blocks, and the remainder of the number of parallel data processing units is obtained by subtracting the remainder from the number of parallel data processing units, and the number of bytes of the irrelevant byte is obtained. The formula is expressed as follows:
L1=n-[L+(n-1)·(m-1)]%n (1)
in the formula (1), L1Indicating the number of bytes of the extraneous bytes, L indicating the number of bytes of the data stream,n represents the number of parallel data processing units, m represents the number of bytes of the start code,% being the remainder. (n-1) may represent the number of data blocks other than the first data block, (m-1) may represent the number of bytes of overlapping bytes per data block, and (n-1) · (m-1) may represent the total number of overlapping bytes contained in all data blocks after the data stream is divided into at least two data blocks on average. Sum of number of bytes of data stream and total number of overlapping bytes [ L + (n-1) · (m-1)]The number n of the parallel data processing units is used for calculating the remainder, and the number n of the parallel data processing units is subtracted by the remainder to obtain the number L of bytes of irrelevant bytes1。
Calculating to obtain the byte number L of the irrelevant byte1Thereafter, the number of bytes per data block is calculated. The number of bytes per data block may be calculated by dividing the sum of the number of bytes of the data stream, the number of bytes of the irrelevant bytes, and the total number of overlapping bytes by the number of parallel data processing units. The calculation formula of the number of bytes of each data block is as follows:
L2=[L+L1+(n-1)·(m-1)]/n (2)
in equation (2), L2 indicates the number of bytes per data block, and the other symbols have the same meanings as above.
In another embodiment, the number of bytes of each data block may be calculated according to the number of bytes of the data stream, the number of bytes of the overlapped bytes, and the number of parallel data processing units, and then the number of bytes of the irrelevant bytes may be calculated according to the number of bytes of the data stream, the number of bytes of the overlapped bytes, the number of bytes of each data block, and the number of bytes of the parallel data processing units.
The number of bytes of each data block is calculated by rounding up the value obtained by dividing the sum of the number of bytes of the data stream and the number of bytes of the overlapped bytes by the number of parallel data processing units, and the rounded up value is the number of bytes of each data block.
The number of bytes of the irrelevant bytes is calculated as, for example, the difference between the product of the number of bytes of each data block and the number of parallel data processing units minus the sum of the number of bytes of the data stream and the number of bytes of the overlapping bytes.
S112: the data stream is partitioned according to the number of bytes of each data block, the number of bytes of irrelevant bytes, and the number of bytes of overlapping bytes.
After the number of bytes of each data block and the number of bytes of the overlapping bytes are calculated, the data stream may be divided according to the number of bytes of each data block and the number of bytes of the overlapping bytes.
Specifically, the position of the first byte of the data block in the data stream is calculated, the position of the ending byte is determined according to the byte number of the data block, and the data block can be obtained by dividing the ending byte.
Calculating the position of the first byte of the data block in the data stream may be by calculating an offset value of the position of the first byte of the data block relative to the position of the first byte of the data stream. The offset value is calculated as follows:
ai=L2-L1+[i-2]·[L2-(m-1)]-(m-1) (3)
in the formula (3), i (i is a positive integer and counted from 2) represents the ith data block, aiAnd an offset value indicating the position of the first byte of the ith data block relative to the position of the first byte of the data stream, and the meanings of other symbols are the same as those described in S112.
It should be noted that the first byte of the first data block is the first byte of the data stream, and the ending byte of the first data block is determined according to the number of bytes of each data block minus the number of bytes of the irrelevant byte. After the division, an irrelevant byte is inserted before the first byte of the first data block so that the byte number of the irrelevant byte is the same as that of other data blocks.
The position of the first byte of the ith data block relative to the first byte of the data stream can be determined according to the offset value of the position of the first byte of the ith data block, and then the data blocks are divided according to the byte number of the data blocks.
S120: the start code in each data block is searched in parallel.
After dividing the data stream into at least two data blocks, the parallel data processing unit performs a parallel search on each data block to simultaneously search for a start code in each data block. Therefore, the searching efficiency of the start code can be improved, the fluency of video playing is improved, and the user experience effect is improved.
Starting from the first byte of the data block, the start code is searched, and a section of continuous bytes in the data block is taken as a judgment code to be compared with the start code. And the byte number of the judgment code is equal to the byte number of the start code. In this embodiment, if the irrelevant byte is inserted into the data block, the irrelevant byte does not participate in the search of the start code. Specifically, when the irrelevant byte is inserted into the start position of the data block, the start code is searched from the first non-irrelevant byte of the data block; when the irrelevant byte is inserted into the end position of the data block, the search is stopped when the irrelevant byte is searched.
The start code search for the data block may be a search by traversing each byte of the data block.
In this embodiment, the start code search for the data block may also be a byte skipping search for bytes of the data block according to a preset rule.
In some embodiments, the search for the start codes of at least two data blocks may be performed by traversing each byte of the data block for all data blocks, or by skipping byte search for all data blocks, or by traversing each byte of the data block for part data blocks, or by skipping byte search for part data blocks.
Referring to fig. 3, fig. 3 is a flowchart illustrating an embodiment of a start code of a byte-skipping search data block according to the present application. The method for searching the start code of the data block by jumping bytes comprises the following steps:
s121: starting from the first non-independent byte of the data block, a section of bytes is taken as the judgment code.
And the byte number of the judgment code is equal to the byte number of the start code. In this embodiment, the start code is, for example, 0x000001 or 0x 00000001.
S122: and comparing and judging whether the value of the last byte of the code is equal to the value of the last byte of the start code.
The last byte value of the start code and the last byte value of the last code may be compared to determine whether the last byte value is equal to the last byte value of the start code, so as to quickly determine whether the current determination code is the start code, and whether further comparison between the last byte value of the start code and the last byte value of the non-start code is required.
If the value of the last byte of the code is not equal to the value of the last byte of the start code, S123 is performed.
If the value of the last byte is equal to the value of the first byte, S124 is performed.
S123: the comparison determines whether the value of the last byte of the code is equal to the value of at least one non-last byte of the start code.
If the value of the last byte of the code is not equal to the value of the non-last byte of the start code, S125 is executed.
If the value of the last byte of the code is equal to the value of at least one non-last byte of the start code, S127 is executed.
S124: and comparing and judging whether the value of the non-last byte of the code is equal to the value of the non-last byte of the corresponding position of the start code.
And when the value of the last byte of the code is judged to be equal to the value of the last byte of the start code, continuously comparing and judging whether the value of the non-last byte of the code is equal to the value of the non-last byte at the corresponding position of the start code. For example, the decision code may be compared with each byte of the start code that is not the last byte in sequence from back to front. Of course, each byte of the non-last byte of the start code may be compared against in order from the back to the front. It is understood that the corresponding position in this embodiment means that the positions of the bytes used for comparison in the start code and the judgment code are consistent. For example, the values of the first byte of the judgment code and the first byte of the start code are compared, and the values of the second byte of the judgment code and the second byte of the start code are compared.
If the value of the non-last byte of the code is not equal to the value of the non-last byte of the start code in at least one corresponding position, S125 is executed.
If the value of the non-last byte of the code is equal to the value of the non-last byte of the corresponding position of the start code, S129 is executed.
S125: it is determined whether the data block has a number of bytes from a first number of bytes after a first number of bytes of a header byte of the determination code that is greater than or equal to the first number.
In this embodiment, the first number is equal to the number of bytes of the start code.
If the number of bytes of the data block after the first number of bytes after the head byte of the judgment code is greater than or equal to the first number, it means that a segment of the first number of bytes can also be taken as a new judgment code on the data block, and if the data block has not been searched, the search of the start code in the data block needs to be continued, and at this time, S126 is executed.
If the byte number of the data block after the first number of bit bytes after the head bit byte of the judgment code is smaller than the first number, the remaining bytes on the data block are not enough to take a section of the first number of bytes as a new judgment code, and the data block is searched completely, and the search of the start code of the data block is finished.
S126: starting from a first number of bit bytes after a head bit byte of the judgment code, a section of judgment code of the first number of bytes is taken.
Starting from a first number of bytes after a first number of bytes of a judgment code, a section of the judgment code of the first number of bytes is taken from the data block. After the new judgment code is taken, S123 is executed.
S127: and judging whether the byte number of the data block after a second number byte after the first number byte of the judgment code is larger than or equal to the first number.
Wherein the second number is equal to the number of bytes of the start code minus the number of bits of the next byte in the non-last bytes of the start code equal to the value of the last byte of the decision code. In the present embodiment, the second number is, for example, equal to 1.
If the number of bytes of the data block after the second number of bytes after the first number of bytes of the judgment code is greater than or equal to the first number, it means that a section of bytes with the length of the first number can also be taken as a new judgment code on the data block, and if the data block has not been searched, the search of the start code in the data block needs to be continued, and at this time, S128 is executed.
If the byte number of the data block after the second number bit byte after the head bit byte of the judgment code is smaller than the first number, the remaining bytes on the data block are not enough to take a byte with the first number of bytes as a new judgment code, the data block is searched, and the search of the start code of the data block is finished.
S128: starting from a second number of bytes after the first number of bytes of the judgment code, a section of judgment code of the first number of bytes is taken.
Starting from a second number of bytes after the first number of bytes of the judgment code, a section of judgment code of the first number of bytes is taken from the data block. After the new judgment code is taken, S123 is executed.
S129: and outputting the coding unit to which the judgment code belongs.
If the judgment code is the same as the start code, the start code in the data block is successfully matched, and the coding unit to which the judgment code belongs is output to decode and display the coding unit.
In addition, since a data block may contain a plurality of start codes, after one of the start codes is searched, it is still necessary to continue searching the data block for the next start code. After matching a start code, the next start code may be searched again starting from the first number of bytes after the first byte of the judgment code, and S125 is executed.
In another embodiment, the searching for the start code of the data block in bytes skipping includes the following steps. In this embodiment, the number of bytes of the start code, the number of bytes, and the order of the number are not limited. The start code is, for example, 0x 010001, or 0x 151612, or 0x 0100010010011, and the start code can be selected according to the practical application, which is not limited in this embodiment.
The last byte of the decision code is compared with the last byte of the start code.
If the last byte of the judgment code is equal to the last byte of the start code, comparing the non-last byte of the judgment code with the non-last byte of the start code. For example, the decision code may be compared with each byte of the start code that is not the last byte in sequence from back to front. Of course, each byte of the non-last byte of the start code may be compared against in order from the back to the front.
If the non-last byte of the judgment code is equal to the non-last byte of the start code, the coding unit to which the judgment code belongs is output. And determining whether the number of bytes of the data block from the first number of bit bytes after the first number of bit bytes of the determination code is greater than or equal to the first number. Wherein the first number is equal to the number of bytes of the start code. If the byte number of the data block after the first number of bit bytes after the head byte and the tail byte of the judgment code is larger than or equal to the first number, a section of bytes is selected again as the judgment code from the first number of bit bytes after the head byte and the tail byte of the judgment code, and the step of comparing the last byte of the judgment code with the last byte of the start code is continuously executed. If the byte number of the data block after the first number of bit bytes from the head byte and the tail byte of the judgment code is less than the first number, the search of the start code of the data block is finished.
If the non-last byte of the judgment code is different from the non-last byte of the start code, the last byte of the judgment code and the non-last byte of the start code are continuously compared.
If the last byte of the judgment code is equal to at least one non-last byte of the start code, judging whether the byte number of the data block after the second number of bytes after the head byte of the judgment code is larger than or equal to the first number. Wherein the second number is equal to the first number minus the number of bits in which the next byte in the non-last byte of the start code is located that is equal to the value of the last byte of the decision code. It will be appreciated that when the last byte of the predicate code and 1 non-last byte of the start code are equal, the second number is equal to the first number minus the number of bits in which the non-last byte of the start code is equal to the value of the last byte of the predicate code. For example, if the 1 st byte of the start code is equal to the last byte of the judgment code, and the other bytes of the start code are not equal to the judged last byte, the second number is equal to the first number-1. Also for example, if the 1 st byte and the 2 nd byte of the start code are equal to the last byte of the judgment code, and the other bytes of the start code are not equal to the judged last byte, the second number is equal to the first number-2. If the byte number of the data block after the second number of bit bytes after the head byte and the tail byte of the judgment code is larger than or equal to the first number, a section of byte is selected as the judgment code again from a bit byte after the head byte of the judgment code, and the step of comparing the last byte of the judgment code with the last byte of the start code is continuously executed. And if the byte number of the data block after the second digital byte after the head byte and the tail byte of the judgment code is smaller than the first number, ending the search of the start code of the data block.
If the last byte of the judgment code is different from the non-last byte of the start code, judging whether the byte number of the data block after the first number of bytes after the head byte of the judgment code is larger than or equal to the first number. If the byte number of the data block after the first number of bit bytes after the head byte and the tail byte of the judgment code is larger than or equal to the first number, a section of bytes is selected again as the judgment code from the first number of bit bytes after the head byte and the tail byte of the judgment code, and the step of comparing the last byte of the judgment code with the last byte of the start code is continuously executed. If the byte number of the data block after the first number of bit bytes from the head byte and the tail byte of the judgment code is less than the first number, the search of the start code of the data block is finished.
If the last byte of the judgment code is different from the last byte of the start code, the last byte of the judgment code is continuously compared with the non-last byte of the start code.
If the last byte of the judgment code is equal to at least one non-last byte of the start code, judging whether the byte number of the data block after the second number of bytes after the head byte of the judgment code is larger than or equal to the first number. If the byte number of the data block after the second number of bit bytes after the head byte and the tail byte of the judgment code is larger than or equal to the first number, a section of byte is selected as the judgment code again from a bit byte after the head byte of the judgment code, and the step of comparing the last byte of the judgment code with the last byte of the start code is continuously executed. And if the byte number of the data block after the second digital byte after the head byte and the tail byte of the judgment code is smaller than the first number, ending the search of the start code of the data block.
If the last byte of the judgment code is different from the non-last byte of the start code, judging whether the byte number of the data block after the first number of bytes after the head byte of the judgment code is larger than or equal to the first number. If the byte number of the data block after the first number of bit bytes after the head byte and the tail byte of the judgment code is larger than or equal to the first number, a section of bytes is selected again as the judgment code from the first number of bit bytes after the head byte and the tail byte of the judgment code, and the step of comparing the last byte of the judgment code with the last byte of the start code is continuously executed. If the byte number of the data block after the first number of bit bytes from the head byte and the tail byte of the judgment code is less than the first number, the search of the start code of the data block is finished.
In this embodiment, the data stream is divided into at least two data blocks, and start codes in the at least two data blocks are searched in parallel, so that the search efficiency of the start codes can be improved, and the fluency of video playing is improved. In addition, when the start code in the data block is searched, the start code is searched by using the byte skipping search method when the size relation between the start code and the numerical value of the byte in the start code is judged, so that the search time of the start code can be shortened, the video playing is continuous and smooth, the phenomena of screen splash, blockage and the like are avoided, the smoothness of the video playing can be improved, and the video watching experience of a user is improved.
For more clear and accurate description of the technical solution of the present application, the following description will take an example where the start code is 0x000001, the data stream is "000001020304050000011213141500000121222324250000", and the number of parallel data processing units is 3. It is understood that the number of bytes and their values in the data stream, the number of bytes and their values of the start code, and the number of parallel data processing units are merely illustrative, and the application is not limited thereto.
When the start code is 0x000001, it may be determined that the length of the start code is 3 bytes, i.e., m — 3. The number n of parallel data processing units is 3, and the length of the data stream is 24 bytes, i.e. L is 24.
Referring to fig. 4, fig. 4 is a schematic diagram of dividing a data stream into 3 data blocks that are sequentially connected according to the present application.
The number of bytes of the irrelevant byte is calculated according to equation (1) in S112:
L1=n-[L+(n-1)·(m-1)]%n=3-[24+(3-1)·(3-1)]%3=2;
the number of bytes per data block is calculated according to equation (1) in S112:
L2=[L+L1+(n-1)·(m-1)]/n=[24+2+(3-1)·(3-1)]/3=10
the first byte of the first data block is the same as the first byte of the data stream, and 2 bytes of irrelevant bytes, such as FF (in this example, the count is 16, where FF represents the value 15), are inserted before the first byte of the first data block. The first data block has a byte count of 10, so the ending byte of the first data block is the 8 th bit byte of the data stream. The first data block is: 0000010203040500.
calculating an offset value of the first byte of the second data block relative to the first byte of the data stream according to equation (3) in S113:
a2=L2-L1+[i-2]·[L2-(m-1)]-(m-1)
=10-2+(2-2)·(10-2)-2=6
that is, the second data block 05000001121314150000 is obtained by dividing the data stream before the 7 th byte and after the 16 th byte. The two bytes 0500 preceding the second data block are overlapping bytes.
Calculating an offset value of the first byte of the third data block relative to the first byte of the data stream according to equation (3) in S113:
a3=L2-L1+[i-2]·[L2-(m-1)]-(m-1)
=10-2+(3-2)·(10-2)-2=14
that is, the data stream is divided before the 15 th byte and after the 24 th byte to obtain a third data block 00000121222324250000. The first two bytes 0000 of the third data block are overlapping bytes.
After dividing the data stream into 3 data blocks, 3 parallel data processing units perform parallel search on the 3 data blocks, respectively.
The skip byte search is illustrated with the second data block (05000001121314150000) as an example. Referring to fig. 5 to 8 together, fig. 5 is a schematic diagram of a first state of a start code of a byte-skipping search data block provided by the present application, fig. 6 is a schematic diagram of another state of the start code of the byte-skipping search data block provided by the present application, fig. 7 is a schematic diagram of another state of the start code of the byte-skipping search data block provided by the present application, and fig. 8 is a schematic diagram of another state of the start code of the byte-skipping search data block provided by the present application.
Starting from the first byte of the second data block 050000 is taken as the decision code, as shown in fig. 5.
Compare the last byte 00 of the predicate code 050000 with the last byte 01 of the start code 000001 for equality:
if the last byte 00 of the judgment code 050000 is not equal to the last byte 01 of the start code 000001, the last byte 00 of the judgment code 050000 is continuously compared with the non-last byte 00 of the start code 000001;
the last byte 00 of the judgment code 050000 is equal to the non-last byte (the first byte of the start code and the second byte of the start code) 00 of the start code 000001, and if the byte number 9 of the data block after the 1-bit byte after the head byte of the judgment code 050000 is judged to be greater than the byte number 3 of the start code, 000001 is taken as the judgment code from the 1-bit byte after the head byte of the judgment code, as shown in fig. 6;
comparing and judging whether the last byte 01 of the code 000001 is equal to the last byte 01 of the start code 000001;
if the last byte 01 of the judgment code 000001 is equal to the last byte 01 of the start code 000001, the second byte 00 of the judgment code 000001 and the second byte 00 of the start code 000001 are continuously compared in size;
judging whether the second byte 00 of the code 000001 is equal to the second byte 00 of the start code 000001, and continuously comparing whether the first byte 00 of the code 000001 is equal to the first byte 00 of the start code 000001;
judging that the head byte 00 of the code 000001 is equal to the head byte 00 of the start code 000001, outputting the coding unit to which the judgment code belongs, judging that the byte number 6 of the data block after the 3-bit byte after the head byte of the judgment code 000001 is greater than the byte number 3 of the start code, and taking 121314 as the judgment code from the 3-bit byte after the head byte of the judgment code, as shown in fig. 7;
comparing the last byte 14 of the judgment code 121314 with the last byte 01 of the start code 000001 to determine whether the bytes are equal;
if the last byte 14 of the predicate code 121314 is not equal to the last byte 01 of the start code 000001, the last byte 14 of the predicate code 121314 is continuously compared with the non-last byte 00 of the start code 000001;
the last byte 14 of the judgment code 121314 is not equal to the non-last byte 00 of the start code 000001, the data block is judged to be equal to the byte 3 of the start code from the byte 3 after the 3-bit byte after the head byte of the judgment code 000001, and 150000 is taken as the judgment code from the byte 3 after the head byte of the judgment code, as shown in fig. 8;
comparing whether the last byte 00 of the code 150000 is equal to the last byte 01 of the start code 000001;
if the last byte 00 of the judgment code 150000 is not equal to the last byte 01 of the start code 000001, the last byte 00 of the judgment code 150000 is continuously compared with the non-last byte 00 of the start code 000001;
the last byte 00 of the judgment code 150000 is equal to the non-last byte 00 of the start code 000001, the byte number 2 of the data block after the 1-bit byte after the head byte of the judgment code 000001 is judged to be smaller than the byte number 3 of the start code, the judgment code of 3 bytes cannot be continuously selected from the data block, and the start code search of the second data block is finished.
The above-mentioned data stream start code searching method is implemented by a data stream start code searching apparatus, so the present application further provides a data stream start code searching apparatus, please refer to fig. 9, fig. 9 is a schematic structural diagram of an embodiment of the data stream start code searching apparatus provided by the present application, and the data stream start code searching apparatus 100 of the present embodiment may be a smart phone, a television, a computer, or a vehicle-mounted television. The data stream start code search apparatus 100 includes a processor 101 and a memory 102, and the data stream start code search apparatus 100 of this embodiment can implement the above-mentioned data stream start code search method. The memory 102 stores a computer program, and the processor 101 is configured to execute the computer program to implement the above-mentioned data stream start code searching method. Specifically, the processor 101 is configured to divide the data stream into at least two data blocks, and search for a start code in each data block in parallel.
The processor 101 may be an integrated circuit chip having signal processing capability. The processor 101 may also be a general purpose processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), an off-the-shelf programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components. A general purpose processor may be a microprocessor or the processor may be any conventional processor or the like.
For the method of the above embodiment, it may exist in the form of a computer program, so that the present application provides a computer storage medium, please refer to fig. 10, where fig. 10 is a schematic structural diagram of an embodiment of the computer storage medium provided in the present application. The computer storage medium 200 of the present embodiment stores therein a computer program 201 that can be executed to implement the method in the above-described embodiments.
The computer storage medium 200 of this embodiment may be a medium that can store program instructions, such as a usb disk, a removable hard disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), a magnetic disk, or an optical disk, or may also be a server that stores the program instructions, and the server may send the stored program instructions to other devices for operation, or may self-operate the stored program instructions.
In the several embodiments provided in the present application, it should be understood that the disclosed method and apparatus may be implemented in other ways. For example, the above-described apparatus embodiments are merely illustrative, and for example, a division of a module or a unit is merely a logical division, and an actual implementation may have another division, for example, a plurality of units or components may be combined or integrated into another system, or some features may be omitted, or not executed. In addition, the shown or discussed mutual coupling or direct coupling or communication connection may be an indirect coupling or communication connection through some interfaces, devices or units, and may be in an electrical, mechanical or other form.
Units described as separate parts may or may not be physically separate, and parts displayed as units may or may not be physical units, may be located in one place, or may be distributed on a plurality of network units. Some or all of the units can be selected according to actual needs to achieve the purpose of the embodiment.
In addition, functional units in the embodiments of the present application may be integrated into one processing unit, or each unit may exist alone physically, or two or more units are integrated into one unit. The integrated unit can be realized in a form of hardware, and can also be realized in a form of a software functional unit.
The integrated unit, if implemented in the form of a software functional unit and sold or used as a stand-alone product, may be stored in a computer readable storage medium. Based on such understanding, the technical solution of the present application may be substantially implemented or contributed to by the prior art, or all or part of the technical solution may be embodied in a software product, which is stored in a storage medium and includes instructions for causing a computer device (which may be a personal computer, a server, a network device, or the like) or a processor (processor) to execute all or part of the steps of the method according to the embodiments of the present application. And the aforementioned storage medium includes: a U-disk, a removable hard disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), a magnetic disk or an optical disk, and other various media capable of storing program codes.
The above description is only for the purpose of illustrating embodiments of the present application and is not intended to limit the scope of the present application, and all modifications of equivalent structures and equivalent processes, which are made by the contents of the specification and the drawings of the present application or are directly or indirectly applied to other related technical fields, are also included in the scope of the present application.
Claims (12)
1. A data stream start code searching method is characterized in that the data stream comprises at least two coding units which are connected in sequence, and each coding unit comprises a start code; the method comprises the following steps:
dividing the data stream into at least two data blocks;
searching the start codes in each of the data blocks in parallel.
2. The method of claim 1, wherein the splitting the data stream into at least two data blocks comprises:
and dividing the data stream into at least two data blocks which are connected in sequence, wherein the two adjacent data blocks comprise overlapping bytes, and the sum of the byte number of the overlapping bytes and 1 is equal to the byte number of the start code.
3. The method of claim 2, wherein the dividing the data stream into at least two of the data blocks that are sequentially connected comprises:
determining the byte number of each data block according to the byte number of the data stream, the byte number of the start code and the number of parallel data processing units; wherein the parallel data processing unit is configured to search the start code in each of the data blocks in parallel;
and dividing the data stream according to the byte number of each data block and the byte number of the overlapped byte.
4. The method of claim 2, wherein the dividing the data stream into at least two of the data blocks that are sequentially connected comprises:
determining the byte number of irrelevant bytes and the byte number of each data block according to the byte number of the data stream, the byte number of the start code and the number of parallel data processing units; wherein the parallel data processing unit is configured to search the start code in each of the data blocks in parallel, and the irrelevant byte is used to insert a start position of a first data block or an end position of a last data block;
calculating the offset value of the position of the first byte of each data block in the data stream and the first byte of the data stream according to the byte number of each data block, the byte number of the irrelevant byte and the byte number of the overlapped byte;
and dividing the data stream according to the offset value and the byte number of each data block.
5. The method of claim 1, wherein the searching for the start code in each of the data blocks in parallel comprises:
taking a section of bytes as a judgment code from a first non-irrelevant byte of the data block, wherein the byte number of the judgment code is equal to the byte number of the start code;
comparing the judgment code with the start code;
based on the comparison result, a section of byte is taken again as the judgment code from the first number of bytes or the second number of bytes after the head byte of the judgment code, and the step of comparing the judgment code with the start code is executed until the data block is finished.
6. The method of claim 5, wherein the comparing the decision code to the start code; based on the comparison result, re-taking a section of byte as the judgment code from at least one byte after the head byte of the judgment code comprises:
comparing whether the value of the last byte of the judgment code is equal to the value of the last byte of the start code;
if the value of the last byte of the judgment code is equal to the value of the last byte of the start code, comparing the value of the non-last byte of the judgment code with the value of the non-last byte of the corresponding position of the start code;
if the value of the non-last byte of the judgment code is equal to the value of the non-last byte at the corresponding position of the start code, outputting the coding unit to which the judgment code belongs, and taking a section of byte as the judgment code again from a first number of bytes behind the head byte of the judgment code; wherein the first number is equal to the number of bytes of the start code;
if the value of at least one non-last byte of the judgment code is not equal to the value of the non-last byte at the corresponding position of the start code, comparing the last byte of the judgment code with the non-last byte of the start code;
if the value of the last byte of the judgment code is equal to the value of at least one non-last byte of the start code, a section of byte is selected as the judgment code again from the second number of bits behind the first byte of the judgment code; wherein the second number is equal to the number of bytes of the start code minus the number of bits of the last byte of the judgment code where the next byte in the non-last bytes of the start code is located;
and if the value of the last byte of the judgment code is not equal to the value of the non-last byte of the start code, starting from the first number of bytes after the head byte of the judgment code, and re-taking a section of bytes as the judgment code.
7. The method of claim 5, wherein the comparing the decision code to the start code; based on the comparison result, re-taking a segment of bytes as the determination code from at least one byte after the first byte of the determination code, further comprising:
comparing whether the value of the last byte of the judgment code is equal to the value of the last byte of the start code;
if the value of the last byte of the judgment code is not equal to the value of the last byte of the start code, comparing whether the value of the last byte of the judgment code is equal to the value of the non-last byte of the start code;
if the value of the last byte of the judgment code is equal to the value of at least one non-last byte of the start code, a section of byte is selected as the judgment code again from the second number of bits behind the first byte of the judgment code; wherein the second number is equal to the number of bytes of the start code minus the number of bits of the last byte of the judgment code where the next byte in the non-last bytes of the start code is located;
if the value of the last byte of the judgment code is not equal to the value of the non-last byte of the start code, a section of byte is selected as the judgment code again from the first number of bytes after the head byte of the judgment code; wherein the first number is equal to a number of bytes of the start code.
8. The method of claim 5, wherein the comparing the decision code to the start code; based on the comparison result, re-taking a section of byte as the judgment code from at least one byte after the head byte of the judgment code comprises:
comparing whether the value of the last byte of the judgment code is equal to the last byte of the start code;
if the value of the last byte of the judgment code is not equal to the value of the last byte of the start code, continuously comparing the value of the last byte of the judgment code with the value of the non-last byte of the start code;
if the value of the last byte of the judgment code is not equal to the value of the non-last byte of the start code, taking a section of bytes as the judgment code from a first number of bytes after the head byte of the judgment code, wherein the first number is equal to the number of bytes of the start code; wherein the first number is equal to the number of bytes of the start code;
if the value of the last byte of the judgment code is equal to the value of the non-last byte of the start code, taking a section of bytes as the judgment code from a second number of bytes after the first byte of the judgment code; wherein the second number is equal to the number of bytes of the start code minus the number of bits of the last byte of the judgment code where the next byte in the non-last bytes of the start code is located;
if the value of the last byte of the judgment code is equal to the value of the last byte of the start code, comparing whether the value of the non-last byte of the judgment code is equal to the value of the non-last byte of the corresponding position of the start code;
if the value of at least one non-last byte of the judgment code is not equal to the value of the non-last byte at the corresponding position of the start code, taking a section of bytes as the judgment code from a first number of bytes behind a head byte of the judgment code;
if the value of the non-last byte of the judgment code is equal to the value of the non-last byte of the corresponding position of the start code, outputting the coding unit to which the judgment code belongs, and taking a section of bytes as the judgment code from a first number of bytes behind the head byte of the judgment code.
9. The method of claim 8, wherein the start code is 0x000001 or 0x 00000001.
10. The method according to any one of claims 5 to 9, wherein before said re-fetching a byte as said decision code, further comprising:
judging whether the number of bytes of the data block after a first number of bit bytes or a second number of bit bytes of the judgment code from the head bit bytes of the judgment code is larger than or equal to the number of bytes of the judgment code;
if yes, executing a step of re-taking a section of byte as the judgment code;
if not, ending the search for the start code of the data block.
11. An apparatus for searching for a start code of a data stream, the apparatus comprising a processor and a memory; the processor is coupled to the memory and is operable to execute instructions to implement the data stream start code search method of any of claims 1 to 10 in cooperation with the memory.
12. A computer storage medium, characterized in that the computer storage medium stores a computer program which is executed to implement the data stream start code search method according to any one of claims 1 to 10.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911157145.1A CN112839232B (en) | 2019-11-22 | 2019-11-22 | Data stream start code searching method and device and computer storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911157145.1A CN112839232B (en) | 2019-11-22 | 2019-11-22 | Data stream start code searching method and device and computer storage medium |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112839232A true CN112839232A (en) | 2021-05-25 |
CN112839232B CN112839232B (en) | 2023-01-17 |
Family
ID=75922016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911157145.1A Active CN112839232B (en) | 2019-11-22 | 2019-11-22 | Data stream start code searching method and device and computer storage medium |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112839232B (en) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1241091A (en) * | 1998-06-26 | 2000-01-12 | 德国汤姆森-布兰特有限公司 | Method and apparatus for multistandard video data acquisition |
EP1051041A1 (en) * | 1999-05-07 | 2000-11-08 | Deutsche Thomson-Brandt Gmbh | Method for searching start codes |
US20010022891A1 (en) * | 1997-02-18 | 2001-09-20 | Mark Alan Schultz | Random picture decoding |
US6470034B1 (en) * | 1997-10-30 | 2002-10-22 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for reduced complexity start code detection in compressed bitstream |
CN101217660A (en) * | 2007-12-27 | 2008-07-09 | 海信集团有限公司 | Video/audio decoding method |
CN101252685A (en) * | 2008-02-22 | 2008-08-27 | 华为技术有限公司 | Decoding method and apparatus |
CN101778288A (en) * | 2010-03-02 | 2010-07-14 | 青岛海信信芯科技有限公司 | Method and device for decoding digital video |
US20150134623A1 (en) * | 2011-02-17 | 2015-05-14 | Jitcomm Networks Pte Ltd | Parallel data partitioning |
CN104980763A (en) * | 2014-04-05 | 2015-10-14 | 浙江大学 | Video code stream and video encoding and decoding method and device |
CN107534776A (en) * | 2015-01-06 | 2018-01-02 | 微软技术许可有限责任公司 | Parallel processing is to identify the flag sequence in video data |
CN109743581A (en) * | 2019-01-24 | 2019-05-10 | 上海国茂数字技术有限公司 | Coding side processing method, decoding end processing method and the method for preventing pseudo- initial code |
-
2019
- 2019-11-22 CN CN201911157145.1A patent/CN112839232B/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010022891A1 (en) * | 1997-02-18 | 2001-09-20 | Mark Alan Schultz | Random picture decoding |
US6470034B1 (en) * | 1997-10-30 | 2002-10-22 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for reduced complexity start code detection in compressed bitstream |
CN1241091A (en) * | 1998-06-26 | 2000-01-12 | 德国汤姆森-布兰特有限公司 | Method and apparatus for multistandard video data acquisition |
EP1051041A1 (en) * | 1999-05-07 | 2000-11-08 | Deutsche Thomson-Brandt Gmbh | Method for searching start codes |
CN101217660A (en) * | 2007-12-27 | 2008-07-09 | 海信集团有限公司 | Video/audio decoding method |
CN101252685A (en) * | 2008-02-22 | 2008-08-27 | 华为技术有限公司 | Decoding method and apparatus |
CN101778288A (en) * | 2010-03-02 | 2010-07-14 | 青岛海信信芯科技有限公司 | Method and device for decoding digital video |
US20150134623A1 (en) * | 2011-02-17 | 2015-05-14 | Jitcomm Networks Pte Ltd | Parallel data partitioning |
CN104980763A (en) * | 2014-04-05 | 2015-10-14 | 浙江大学 | Video code stream and video encoding and decoding method and device |
CN107534776A (en) * | 2015-01-06 | 2018-01-02 | 微软技术许可有限责任公司 | Parallel processing is to identify the flag sequence in video data |
CN109743581A (en) * | 2019-01-24 | 2019-05-10 | 上海国茂数字技术有限公司 | Coding side processing method, decoding end processing method and the method for preventing pseudo- initial code |
Non-Patent Citations (2)
Title |
---|
J. OSTERMANN: "Video coding with H.264/AVC: tools, performance, and complexity", 《 IEEE CIRCUITS AND SYSTEMS MAGAZINE》 * |
王智: "AVS视频编码器中熵编码的研究", 《中国优秀硕士学位论文全文数据库》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112839232B (en) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180192047A1 (en) | Image prediction method and device | |
US20090219985A1 (en) | Systems and Methods for Processing Multiple Projections of Video Data in a Single Video File | |
CN110784740A (en) | Video processing method, device, server and readable storage medium | |
KR101266661B1 (en) | A method of compression of graphics images and videos | |
US11217279B2 (en) | Method and device for adjusting video playback speed | |
JP2008504750A5 (en) | ||
EP2395757A1 (en) | Image decoding device | |
CN109688407B (en) | Reference block selection method and device for coding unit, electronic equipment and storage medium | |
US9326011B2 (en) | Method and apparatus for generating bitstream based on syntax element | |
US20110051813A1 (en) | Utilizing thresholds and early termination to achieve fast motion estimation in a video encoder | |
CN108063973A (en) | A kind of method for decoding video stream and equipment | |
CN104185982B (en) | Video processing method and video appliance implementing method | |
US20100153687A1 (en) | Streaming processor, operation method of streaming processor and processor system | |
CN107666611B (en) | A kind of bit rate control method and mobile terminal | |
KR100969224B1 (en) | Method and system for processing b pictures with missing or invalid forward reference pictures | |
CN109218722B (en) | Video coding method, device and equipment | |
CN112839232B (en) | Data stream start code searching method and device and computer storage medium | |
CN106791870B (en) | A kind of method for video coding, video encoding/decoding method and relevant device | |
CN115460458B (en) | Video frame loss method and device | |
US10440359B2 (en) | Hybrid video encoder apparatus and methods | |
JP2012023734A (en) | Fast file position search method | |
US11323730B2 (en) | Temporally-overlapped video encoding, video decoding and video rendering techniques therefor | |
US20120183234A1 (en) | Methods for parallelizing fixed-length bitstream codecs | |
CN111988626B (en) | Frame reference method, apparatus and storage medium | |
CN112738508A (en) | Video coding method, video determining method, video processing method, server and VR terminal |
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 |