Systems and methods for error detection in video data for delivery
By generating and comparing frame error detection codes between encoding and decoding computing systems, the problem of video frame corruption detection is solved, improving the efficiency and resource utilization of the transmission process.
Patent Information
- Application Number
- CN202180033132.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-05-05
- Filing Date
- 2021-05-05
- Publication Date
- 2026-02-24
- Estimated Expiration
- 2041-05-05
AI Technical Summary
During video data transmission, it is difficult to effectively detect video frame corruption, leading to inefficient use of network and storage resources.
By applying an error detection code generation scheme between the encoding and decoding computing systems, frame error detection codes are generated and compared to determine the extent and location of video frame corruption.
It enables rapid and effective detection of corrupted video frames, reducing the need for network bandwidth, storage utilization, and processing power.
Smart Images

Figure CN115486083B_ABST
Abstract
Description
Technical Field
[0001] This disclosure generally relates to detecting errors in transmitted video frame data. More specifically, this disclosure relates to systems and methods for detecting corruption in decoded video frame data using error detection codes. Background Technology
[0002] The transmission of video data requires complex and error-prone ordering of the data in both the sending and receiving systems and / or intermediate computing systems. For example, real-time transport protocols require multiple components to be correctly processed and updated in a specified order (e.g., timestamps, packet sequence IDs, frame sequence IDs, inter-frame correlation lists, etc.). Therefore, any processing error can result in video packet sequences (e.g., video frames, etc.) that can be decoded by the decoding computing system but include obvious corruption. Summary of the Invention
[0003] Many aspects and advantages of embodiments of this disclosure will be set forth in part in the description which follows, or may be learned from the description or by practice of the embodiments.
[0004] One example aspect of this disclosure relates to a computer-implemented method for error detection in video data. The method may include: receiving an encoded video frame and an associated first frame error detection code by a decoding computing system including one or more computing devices. The first frame error detection code may be generated by the encoding computing system by applying an error detection code generation scheme to the first decoded video frame. The first decoded video frame may include decoding of the encoded video frame generated at the encoding computing system. The method may include: decoding the encoded video frame by the decoding computing system to obtain a second decoded video frame. The method may include: applying the error detection code generation scheme to the second decoded video frame by the decoding computing system to generate a second frame error detection code. The method may include: determining, by the decoding computing system, error data describing one or more differences between the first frame error detection code and the second frame error detection code. The method may include: determining, by the decoding computing system, that the encoded video frame is a corrupted video frame based on the error data exceeding one or more error thresholds.
[0005] Another example aspect of this disclosure relates to an encoding computing system. The computing system may include one or more processors. The computing system may include one or more tangible, non-transitory computer-readable media that collectively store instructions that, when executed by the one or more processors, cause the encoding computing system to perform operations. Operations may include: receiving video frames from a video frame capture device. Operations may include: encoding the video frames according to an encoding scheme to produce encoded video frames. Operations may include: generating frame error detection codes for the video frames based on intermediate encoded data generated by executing the encoding scheme. Operations may include: sending the encoded video frames and the frame error detection codes to a decoding computing system.
[0006] Other aspects of this disclosure relate to various systems, apparatuses, non-transitory computer-readable media, user interfaces, and electronic devices.
[0007] These and other features, aspects, and advantages of the various embodiments of this disclosure will be better understood by referring to the following description and the appended claims. The accompanying drawings, which are incorporated in and form a part of this specification, illustrate exemplary embodiments of the disclosure and, together with the description, serve to explain the relevant principles. Attached Figure Description
[0008] Referring to the accompanying drawings, a detailed discussion of embodiments for those skilled in the art is set forth in the specification, in which:
[0009] Figure 1 A block diagram depicting an example computing system according to an exemplary embodiment of the present disclosure;
[0010] Figure 2 A flowchart depicting an example embodiment of the present disclosure for detecting corrupted errors in transmitted video frame data;
[0011] Figure 3 A flowchart is depicted for reducing decoded video frames to obtain error detection codes according to an example embodiment of the present disclosure;
[0012] Figure 4A This is a flowchart depicting an example method for generating and transmitting encoded video frames and associated first frame error detection codes according to an example embodiment of the present disclosure;
[0013] Figure 4B This is a flowchart depicting an example method for detecting corrupted errors in encoded video frames based on error detection codes, according to an example embodiment of the present disclosure;
[0014] Figure 5 This is a flowchart depicting an example method of performing operations in response to the detection of a corrupted video frame, according to an example embodiment of the present disclosure.
[0015] Repeated labels across multiple graphs are intended to identify the same features across various implementations. Detailed Implementation
[0016] Reference will now be made in detail to embodiments, one or more examples of which are illustrated in the accompanying drawings. Each example is provided by way of explanation of the embodiments and not as a limitation thereof. Indeed, it will be apparent to those skilled in the art that various modifications and variations can be made to the embodiments without departing from the scope or spirit of this disclosure. For example, features shown or described as part of one embodiment may be used with another embodiment to produce yet another embodiment. Therefore, it is intended that aspects of this disclosure cover such modifications and variations.
[0017] An exemplary aspect of this disclosure relates to systems and methods for detecting errors in video communicated between computing systems. More specifically, this disclosure relates to appropriately ensuring that a transmitted video file is not corrupted by utilizing post-decoding error detection codes for verification on both an encoding computing system and a decoding computing system. For example, the encoding computing system may receive captured video frames (e.g., a single frame of a captured video file, etc.) and encode the video file according to an encoding scheme. The encoding computing system may then decode the video file and generate frame error detection codes based on the decoded video frames (e.g., using an error detection code generation scheme, etc.). The encoding computing system may send the encoded video frames and frame error detection codes to the decoding computing system (e.g., using Real-Time Transport Protocol (RTP) packets and associated extension fields, etc.). The decoding computing system may decode the encoded video frames according to the encoding scheme to generate additional frame error detection codes. The decoding computing system may then compare the two frame error detection codes to determine whether the decoded video frame is corrupted (e.g., based on detected errors, etc.). In this way, both the encoding computing system and the decoding computing system can generate error detection codes from the decoding of the encoded frames, thus allowing for accurate detection and evaluation of any corruption present in the video frames.
[0018] More specifically, the transmission of video data requires complex and error-prone ordering of data by both the transmitting and receiving computing systems. For example, real-time transport protocols require multiple components to be correctly processed and updated in a specified order (e.g., timestamps, packet sequence IDs, frame sequence IDs, inter-frame correlation lists, etc.). Therefore, any processing error can result in video packet sequences (e.g., video frames, etc.) that can be decoded by the decoding computing system but include obvious corruption. However, detecting video frame corruption can be difficult and often requires transmitting both the original video frames and the processed (e.g., encoded) video frames to the receiving computing system, leading to inefficient use of network and storage resources.
[0019] To address these inefficiencies, this disclosure proposes a method for detecting errors in transmitted video frame data. More specifically, the encoding computing system can receive video frames from a video frame capture device (e.g., a camera, webcam, associated capture device, etc.). In some implementations, the video frame may be one of multiple video frames captured by the video frame capture device. Alternatively or additionally, in some implementations, the video frame may include multiple video frames of different resolutions.
[0020] The encoding computing system can encode video frames according to an encoding scheme to produce a first encoded video frame. The encoding scheme can be any arbitrary video encoding scheme (e.g., MPEG, AVI, etc.). In some implementations, the first encoded video frame can be a compressed representation of the video frame.
[0021] The encoding computation system can decode the encoded video frame according to the decoding scheme corresponding to the encoding scheme to obtain a first decoded video frame. More specifically, the encoding computation system can decode the encoded frame to generate a first decoded video frame as a decoded representation of the video frame. In some implementations, if the encoding scheme is a lossy encoding scheme, the decoded video frame may be different from the video frame (e.g., artifacts from a lossy compression scheme).
[0022] The encoding computation system can apply an error detection code generation scheme to the first decoded video frame to generate a first-frame error detection code. More specifically, the encoding computation scheme can generate the first-frame error detection code from the first decoded video frame by utilizing any arbitrary error detection coding technique (e.g., MD5, SHA-1, Cyclic Redundancy Check, Perceptual Hash, Deterministic Reduction Algorithm, etc.). In some implementations, the first-frame error detection code can be a reduced representation of the first decoded video frame. For example, the first decoded video frame can be reduced by the encoding computation system (e.g., to a 16×16 pixel representation, etc.). The reduced representation of the first decoded video frame can be used as the first-frame error detection code.
[0023] The encoding computing system can send the first encoded video frame and the first frame error detection code to the decoding computing system. In some implementations, the encoding computing system can send the first encoded video frame and the first frame error detection code to the decoding computing system via a network (e.g., the Internet, a local area network, etc.). In some implementations, a real-time transport protocol (RTP) can be used to send the first frame error detection code and the first encoded video frame to the decoding computing system. For example, the first encoded video frame can be packaged into one or more RTP packets, and the first frame error detection code can be packaged in an extension field of one or more RTP packets. In this way, the first encoded video frame and the first frame error detection code can arrive at the decoding computing system simultaneously.
[0024] The decoding computing system can receive a first encoded video frame and a first frame error detection code. Using the same or substantially similar encoding and / or decoding scheme as the encoding computing system, the decoding computing system can process the first encoded video frame in this way to obtain a second decoded video frame. In some implementations, the second decoded video frame can be the same as or substantially similar to the first decoded video frame generated at the encoding computing system. Alternatively, in some implementations, the second decoded video frame can be significantly different from the first encoded video frame (e.g., due to data corruption, etc.).
[0025] The decoding computation system can apply the error detection code generation scheme used by the encoding computation system to the second decoded video frame to generate a second frame error detection code. In some implementations, the decoding computation system can reduce the second decoded video frame in the same way as the encoding computation system (e.g., to a 16×16 pixel representation, etc.) to generate a reduced second decoded video frame. In this way, the difference between the reduced first decoded video frame and the reduced second decoded video frame will spatially correspond to the corrupted location of the second decoded video frame.
[0026] The decoding computation system can determine erroneous data describing one or more differences between the first frame error detection code and the second frame error detection code. More specifically, the decoding computation system can determine erroneous data by evaluating the differences between the first frame error detection code and the second frame error detection code. As previously described, if the first frame error detection code and the second frame error detection code are generated by reducing the first decoded video frame and the second decoded video frame respectively, the error detection codes can be compared to determine one or more spatial locations of obvious corruption in the second decoded video frame. Therefore, in some implementations, the erroneous data may include the location of one or more errors in the second decoded video frame. Additionally or alternatively, in some implementations, the erroneous data may include the number of pixels associated with the error. For example, comparing the first frame error detection code and the second frame error detection code can determine that there is a difference in the upper left position of the first decoded video frame and the second decoded video frame. The erroneous data may include this position and may also include the number of pixels associated with the difference between the decoded video frames.
[0027] A decoding computation system can determine that an encoded video frame is corrupted based on erroneous data exceeding one or more error thresholds. More specifically, the decoding computation system can determine the number and / or severity of errors associated with differences between a first video frame and a second video frame that cause the encoded video frame to be corrupted. For example, an error threshold can specify that exceeding a certain number of errors indicates that the encoded video frame is corrupted. As another example, an error threshold can specify that exceeding a certain number of pixel differences indicates that the encoded video frame is corrupted. The error threshold can be any threshold associated with the severity and / or number of errors in the encoded video frame.
[0028] In some implementations, the originally captured video frame can describe the differences between the current frame and previously captured frames. More specifically, the video frame can include data describing any changes to the scene depicted in the previous frame. For example, a previous video frame could include a person sitting behind a static background. After capturing the previous video frame, the person can move slightly, while the static background can remain unchanged. The current video frame can depend on the previous video frame by including only the data depicting the new position of the person in the frame, and the decoder (e.g., a decoding computing system, etc.) can fill in the remainder of the current frame with the data included in the previous frame (e.g., the static background, etc.). In this way, by including only the changes to the depicted scene while utilizing previously captured data that has not changed, the video frame can depend on previously transmitted frames, thus utilizing substantially less data. In some implementations, the unchanged data from the previous frame (e.g., data depicting the static background, etc.) can be combined with the encoded video frame during decoding to generate a decoded video frame.
[0029] In some implementations, the error detection code generation scheme may incorporate one or more references to previous image frames received before the original video frame. More specifically, the error detection code may include data from the current video frame and any previously dependent video frames (e.g., the complete data of the currently decoded video frame, etc.). Therefore, the error detection code can be used to determine dependency failures between video frames. For example, video frame B may depend on a previous video frame A. An error code generation scheme can be applied to a first decoded video frame to generate a first error detection code. The first error detection code may be based on the current video frame B and the previous video frame A. The first error detection code and the encoded video frame can be sent to a decoding computing system. The decoding computing system may decode the encoded video frame based on an incorrect dependency (e.g., depending on a previous frame C instead of a previous frame A, etc.). For example, multiplexing video stream switching may cause the decoding computing system to use an incorrect keyframe for frame dependency. The decoding computing system can generate a second error detection code from the decoded video frame and compare the first and second error detection codes. Based on the differences between the codes, the computing system can determine that the second decoded video frame depends on an incorrect previous frame. In this way, error detection code generation schemes can be used to detect errors that originate from incorrect frame dependencies rather than transmission errors (e.g., lost data).
[0030] In response to determining that an encoded video frame is corrupted, in some implementations, the decoding computation system may generate recording data. Recording data may include the corrupted video frame, the encoded video frame, a second decoded video frame, metadata associated with the corrupted video frame, error data describing one or more differences, or any other arbitrary data associated with the video frame data. Additionally or alternatively, in some implementations, the decoding computation system may generate a recording request and send it to the encoding computation system. The recording request may include instructions to generate recording data, which includes data identical or similar to the recording data generated by the decoding computation system.
[0031] In some implementations, the decoding computation system can request a replacement frame after determining that the encoded video frame is corrupted. The request for a replacement frame can be sent to the encoding computation system. In response, the encoding computation system can generate a replacement video frame by re-encoding the video frame using a specific encoding scheme. Alternatively, in some implementations, the encoding computation system can generate a replacement video frame by re-encoding the video frame using a different encoding scheme. In this way, the replacement data can avoid the corruption effects associated with a particular encoding scheme.
[0032] In some implementations, the decoding computing system can generate a stream restart request. More specifically, while the encoding computing system is transmitting a sequence of video frames (e.g., a video stream) for continuous real-time display, the decoding computing system can generate a stream restart request in response to determining that an encoded video frame is corrupted. The stream restart request can include instructions for the encoding computing system to stop transmitting the current video stream and begin transmitting a new stream starting from the video frame following the corrupted video frame. In this way, the decoding computing system can quickly receive a new stream without any downstream frame corruption errors caused by the corrupted video frame.
[0033] This disclosure provides several technical effects and benefits. As an example of these effects and benefits, the systems and methods of this disclosure enable the detection of corruption in transmitted (e.g., multiplexed, packed, unpacked, etc.) video frame data. More specifically, this disclosure can quickly and efficiently detect the severity and / or spatial location of corruption in decoded video frame data. Furthermore, this disclosure allows this detection to be performed without transmitting both the video frame data and the encoded video frame data to the decoding computing system. By avoiding this requirement, this disclosure significantly reduces network bandwidth usage, storage usage, and processing power associated with video file transmission.
[0034] Exemplary embodiments of this disclosure will now be discussed in more detail with reference to the accompanying drawings.
[0035] Figure 1An example computing system 102 is depicted in an example video streaming environment 100 according to an example embodiment of the present disclosure. The video streaming environment 100 includes the computing system 102 connected and communicating via a network 180.
[0036] In some example embodiments, computing system 102 can be any suitable device, including but not limited to smartphones, tablets, laptops, desktop computers, or any other computer device configured to allow users to participate in video conferencing. Computing system 102 may include one or more processors 112, memory 114, multiplexer 122, camera 124, and associated display device 126.
[0037] It should be noted that computing system 102 can be used as both an encoding computing system and / or a decoding computing system in this embodiment. More specifically, computing system 102 can be used as an encoding computing system by receiving video frame data from camera 124 and encoding the video frames before transmitting them to the auxiliary decoding computing system via network 180. Similarly, computing system 102 can be used as a decoding computing system by receiving encoded video frames from the encoding computing system via network 180, and can subsequently decode the encoded video frames and detect errors in them. In this way, as shown, computing system 102 can represent an encoding computing system, a decoding computing system, or both.
[0038] One or more processors 112 may be any suitable processing device, such as a microprocessor, microcontroller, integrated circuit, or other suitable processing device. Memory 114 may include any suitable computing system or medium, including but not limited to non-transitory computer-readable media, RAM, ROM, hard disk drives, flash memory drives, or other storage devices. Memory 114 may store information accessible by one or more processors 112, including instructions executable by one or more processors 112. Instructions may be any set of instructions that, when executed by one or more processors 112, cause one or more processors 112 to provide the desired functionality.
[0039] Specifically, in some devices, memory 114 may store instructions for encoding and decoding video frame data and applying an error detection code generation scheme to the video frame data. Computing system 102 may implement instructions to perform various aspects of this disclosure, including receiving captured video frames from camera 124, encoding video frame data, decoding video frame data, applying an error detection code generation scheme to the video frame data, sending and / or receiving encoded video frames and / or error detection codes to the encoding computing system and / or decoding computing system via network 180, or any other operation associated with an implementation of this embodiment.
[0040] It should be understood that the term "system" can refer to dedicated hardware, computer logic executing on a more general-purpose processor, or some combination thereof. Therefore, a system can be implemented as hardware, dedicated circuitry, firmware, and / or software that controls a general-purpose processor. In one embodiment, a system can be implemented as a program code file stored on a storage device, loaded into memory, and executed by a processor, or it can be provided from a computer program product, such as computer-executable instructions stored in a tangible computer-readable storage medium such as RAM, a hard disk, or optical or magnetic media.
[0041] The memory 114 may also include data 116 that can be retrieved, manipulated, created, or stored by one or more processors 112, such as video frame data (e.g., captured at the computing system 102 or received via the network 180). In some example embodiments, such data may be accessed and displayed to one or more users of the computing system 102 after being decoded on an associated display device 126.
[0042] More specifically, memory 114 may include an encoding / decoding codec 119. Codec 119 may be any arbitrary encoding and / or decoding scheme for video frame data, image data, or any other data utilized by the system. For example, codec 119 may include a conventional video frame processing codec (e.g., AVI, MOV, MPEG, etc.). As another example, codec 119 may also include an error detection code generation scheme associated with codec 119. For example, codec 119 may include a conventional error detection code generation scheme, such as a conventional checksum algorithm (e.g., CRC, etc.). As another example, codec 119 may include other types of error detection code generation schemes (e.g., perceptual hashing algorithms, deterministic reduction algorithms, etc.).
[0043] In some implementations, computing system 102 can receive captured video frame data from camera 124. Camera 124 may be hardware integrated with computing system 102, or it may be a video capture device (e.g., a webcam, video recording device, etc.) communicatively coupled to computing system 102. Computing system 102 can encode the video frames of the video frame data according to an encoding scheme to generate encoded video frames. Computing system 102 can decode the encoded video frames according to a decoding scheme corresponding to the encoding scheme to obtain decoded video frames. Computing system 102 can apply an error detection code generation scheme to the decoded video frames to generate frame error detection codes. Computing system 102 can send the encoded video frames and frame error detection codes to an auxiliary computing system (e.g., a decoding computing system, etc.) via network 180 (e.g., using Real-Time Transport Protocol Packets, etc.).
[0044] In some implementations, computing system 102 may package the encoded video frames and frame error detection codes before sending packets via network 180. More specifically, computing system 102 may package the encoded video frames and frame error detection codes within a transmission packet. In some implementations, the transmission packet may be one or more Real-Time Transport Protocol (RTP) packets. The encoded video frames may be included in the packets, and the frame error detection codes may be included in one or more corresponding extension fields of the one or more RTP packets. The transmission packet may be transmitted to the auxiliary computing system via network 180.
[0045] Alternatively or additionally, in some implementations, computing system 102 may receive encoded video frames and associated first-frame error detection codes via network 180 (e.g., from an auxiliary computing system, etc.). More specifically, in some implementations, computing system 102 may receive transport packets. A transport packet may include one or more Real-Time Transport Protocol (RTP) packets, which include encoded video frames and associated first-frame error detection codes in extended fields of the packets. The transport packet may be split into encoded video frames and first-frame error detection codes (e.g., by unpacking the transport packet using a packetizer, etc.).
[0046] The computing system 102 can decode the encoded video frame to obtain a decoded video frame. The computing system 102 can apply an error detection code generation scheme to the decoded video frame to generate a second frame error detection code. The computing system 102 can determine error data describing one or more differences between the second frame error detection code and the first frame error detection code. If the error data exceeds one or more error thresholds, the computing system 102 can determine that the encoded video frame is a corrupted video frame.
[0047] In some implementations, computing system 102 may perform operations in response to determining that an encoded video frame is a corrupted video frame. For example, computing system 102 may generate recording data (e.g., stored in memory 114), which may include the corrupted video frame, the decoded video frame, metadata associated with the corrupted video frame, and / or any other data associated with the unpacking of the transmission packet. As another example, computing system 102 may send a replacement frame request to the auxiliary computing system that initially sent the transmission packet via network 180. In response, the computing system may receive a replacement encoded video frame and may subsequently attempt to decode the replacement video frame.
[0048] In some implementations, the computing system 102 can generate a stream restart request. More specifically, while the computing system 102 is receiving a sequence of video frames (e.g., a video stream) for sequential real-time display, the computing system 102 can generate a stream restart request in response to determining that an encoded video frame is corrupted. The stream restart request may include instructions for the transmitting computing system to stop transmitting the current video stream and begin transmitting a new stream starting at a video frame following the corrupted video frame. In this way, the computing system 102 can quickly receive a new stream without any downstream frame corruption errors caused by the corrupted video frame.
[0049] Additionally or alternatively, in some implementations, computing system 102 may determine that the corrupted video frame is below one or more corruption thresholds. If the corrupted video frame is below one or more corruption thresholds, computing system 102 may determine that the corrupted video frame is suitable for display. For example, computing system may determine to provide the corrupted video frame to another computing device or computing system via network 180. As another example, computing system 102 may determine to display the corrupted video frame via an associated display device 126.
[0050] Network 180 can be any type of communication network, such as a local area network (e.g., intranet), a wide area network (e.g., the Internet), or some combination thereof. Generally, communication between computing system 102 and server computing system 130 can be carried via a network interface using any type of wired and / or wireless connection, using various communication protocols (e.g., TCP / IP, HTTP), encoding or format (e.g., HTML, XML), and / or protection schemes (e.g., VPN, Secure HTTP, SSL).
[0051] Figure 2 A flowchart illustrating an example embodiment of the present disclosure for detecting corrupted errors in transmitted video frame data is provided. More specifically, the encoding calculation system 201 may receive captured frame data 204 (e.g., from an associated video frame capture device such as a camera). The captured frame data may include one or more video frames. The video frames of the captured frame data 204 may be input to an encoder 206 to receive encoded video frames 208. In some implementations, the encoder 206 may represent the application of any arbitrary encoding scheme. For example, the encoder 206 may represent the application of conventional video encoding schemes such as MPEG and AVI.
[0052] Encoded video frames can be sent to decoder 210 to receive a first decoded video frame 212. Like encoder 206, decoder 210 can represent the application of a decoding scheme to the encoded video frame. Decoder 210 (e.g., the applied decoding scheme) can correspond to the encoding scheme used at encoder 206. More specifically, decoder 210 can decode encoded video frame 208 using the same encoding scheme as encoder 206 to produce the first decoded video frame 212. In some implementations, if the encoding scheme used at encoder 206 is lossy (e.g., a lossy compression algorithm, etc.), the first decoded video frame 212 can be a lossy representation of a video frame from the captured frame data 204.
[0053] Error detection code generation scheme 214 can be applied to the first decoded video frame 212. The error detection code generation scheme can be any arbitrary hash and / or checksum scheme. For example, the error detection code generation scheme can be, or can include, conventional checksum generation schemes such as CRC, Fletcher checksum, Adler-32, etc. Alternatively, in some implementations, the error detection code generation scheme can be another form of hash operation, such as a perceptual hash algorithm and / or a deterministic reduction algorithm. For example, a reduced perceptual hash algorithm can be applied to the first decoded video frame. For example, a deterministic perceptual hash algorithm can be used to reduce the first decoded video frame 212 to a very small representation (e.g., reducing 1920×1080 pixels to a 16×16 pixel representation, etc.). The reduced decoded video frame can be used as the first frame error detection code 216. (Refer to...) Figure 3 The application of perceptual hashing as an error detection code generation scheme will be discussed in more detail.
[0054] By applying error detection code generation scheme 214 to the first decoded video frame 212, the encoding computation system can generate a first frame error detection code 216. This code can be any type of code specified by error detection code generation scheme 214. For example, if error detection code generation scheme 214 is a conventional checksum hash algorithm, then the first frame error detection code 216 can be or may include a discrete value string. Alternatively, if error detection code generation scheme 214 is a perceptual hash algorithm, then the first frame error detection code 216 can be a reduced representation of the first decoded video frame 212.
[0055] The first frame error detection code 216 can be sent to the packetizer 218. The packetizer 218 can be any type of arbitrary hardware and / or software packetizer. For example, the packetizer 218 can be a physical hardware packetizer integrated into or communicatively coupled to the encoding computing system 201. As another example, the packetizer 218 can be a processor of the encoding computing system 201 (e.g., ...). Figure 1The processor 112) executes a virtualized packer. It should be noted that in some implementations, the packer 218 may be, or may include, additional multiplexers with different functionalities. For example, the multiplexer of the packer 218 may be configured to replace the first video frame with a second video frame of a different resolution, as previously described. Furthermore, the multiplexer of the packer 218 may be used to multiplex the first frame error detection code 216 and the encoded video frame 208. In this way, the encoding computing system can utilize any configuration and / or number of physical and / or virtualized multiplexers 218 to perform the functions described in this embodiment.
[0056] Packetizer 218 can receive encoded video frame 208 and first frame error detection code 216. Packetizer 218 can package encoded video frame 208 and first frame error detection code 216 and transmit both via network 220. More specifically, in some implementations, packetizer 218 can package encoded video frame 208 and first frame error detection code 216 into Real-Time Transport Protocol (RTP) packets 219. RTP packets 219 may include one or more RTP packets, and RTP packets 219 may include encoded video frame 208. Furthermore, first frame error detection code 216 may be included in an extension field of RTP packets 219. Alternatively, in some implementations, when transmitting packets via network 220, the packets may utilize any other type of transport protocol.
[0057] In some implementations, network 220 may include a server situated between encoding computing system 201 and decoding computing system 202. More specifically, in implementations where multiple video frames at multiple resolutions are processed individually (e.g., encoded, hashed, etc.) and then multiplexed at encoding computing system 201, the server of network 220 may select a specific subset (e.g., one, two, etc.) of such encoded frames to transmit to decoding computing system 202 (e.g., based on network connection statistics regarding connections from decoding computing system 202 to network 220, etc.). In this manner, the intermediate computing system may be, or may include, a multiplexer that can be configured to select video frames from multiple video frames at multiple resolutions.
[0058] It should be noted that in some implementations, the processing described in the encoding computing system 201 can be performed in parallel on multiple different image frames with multiple different image resolutions. For example, multiple captured frame data 204 can be processed to generate encoded video frames and associated error detection codes in parallel. In some implementations, each of the multiple encoded video frames and its associated error detection code can be packaged into one or more transports (e.g., packaged by packetizer 218 into Real-Time Transport Protocol packets 219, etc.).
[0059] Using packetizer 218, encoding computing system 201 can send encoded video frame 208 and first frame error detection code 216 (e.g., packaged in a transport packet, etc.) to decoding computing system 202. Decoding computing system 202 can receive encoded video frame 208 and first frame error detection code 216 via network 220 and can use packetizer 222 to separate (e.g., unpack) encoded video frame 208 and first frame error detection code 216. Decoding computing system 202 can send encoded video frame 208 to decoder 210 to obtain second decoded video frame 224. Decoder 210 can be the same decoder as decoder 210 of encoding computing system 201. In some cases, second decoded video frame 224 can be the same decoded video frame as first decoded video frame 212. However, as shown, second decoded video frame 224 can have one or more associated errors.
[0060] It should be noted that packetizers 218 / 222 can perform both packetizing and unpacking operations. More specifically, packetizer 218 can both packetize the first frame error detection code 216 and the error detection code generation scheme 214 (e.g., packetize into a transmission packet, etc.) and unpack the transmission packet into individual components. Similarly, packetizer 220 can perform both packetizing and unpacking operations in the same manner as packetizer 218. In this way, both packetizers can be used for both sending and receiving operations (e.g., in conjunction with network 220, etc.).
[0061] Error detection code generation scheme 214 can be applied to the second decoded video frame 224. Error detection code generation scheme 214 can be the same scheme used by the encoding calculation system 201. By applying error detection code generation scheme 214, the decoding calculation system 202 can generate a second frame error detection code 226. The second frame error detection code 226 can be a hash representation of the second decoded video frame 224 and can be generated in the same manner as the first frame error detection code 216.
[0062] The second frame error detection code 226 and the first frame error detection code 216 can be compared by the decoding computing system 202 at the error code comparator 228. More specifically, the decoding computing system 202 can determine (e.g., via the code comparator 228) error data 230 describing one or more differences between the first frame error detection code 216 and the second frame error detection code 226. These one or more differences can describe corruption errors present in the second decoded video frame 224. In some implementations, if the error detection code generation scheme 214 is some type of hash algorithm (e.g., perceptual hashing, deterministic reduction, etc.), the error data can describe the spatial location of one or more differences and / or the number of pixels associated with one or more differences. For example, the first and second error detection codes 216 / 226 can both be reduced pixel representations of the first and second decoded video frames 212 / 224, respectively. The second decoded video frame 224 may be corrupted in the upper right corner of the frame (e.g., one or more pixel errors). By comparing the reduced pixel representations (e.g., first and second error detection codes 216 / 226), the decoding computing system 202 can determine the spatial location of one or more errors by determining the spatial location of the differences between the reduced pixel representations. Additionally or alternatively, in some implementations, the decoding computing system 202 can determine the number of pixels associated with the differences between the reduced pixel representations. In this way, the decoding computing system 202 can quickly and efficiently determine the location and severity of one or more differences (e.g., errors, etc.) and can include this information in the error data 230.
[0063] The decoding computing system 202 can determine that erroneous data exceeds one or more error thresholds. The error thresholds can correspond to information stored in the erroneous data. For example, an error threshold can describe a specific threshold severity level of the difference between decoded video frames (e.g., the number of affected pixels, etc.). As another example, an error threshold can describe a specific threshold number of differences between decoded video frames. As yet another example, an error threshold can describe one or more difference location thresholds between video frames.
[0064] Based on error data 230 exceeding one or more error thresholds, the decoding computing system 202 can determine that the encoded video frame is a corrupted video frame. More specifically, the decoding computing system 202 can determine that the encoded video frame 208 has a certain level of corruption. Based on this determination, in some implementations, the decoding computing system can generate recording data via a recording file generator 232. The recording data may include one or more previous encoded video frames received from the encoding computing system 201 before receiving the encoded video frame 208. Additionally or alternatively, in some implementations, the recording data may include the corrupted video frame (e.g., encoded video frame 208 and / or the second decoded video frame 224), metadata associated with the corrupted video frame, or error data 230.
[0065] In some implementations, the decoding computing system may send a replacement frame request to the encoding computing system 201 based on erroneous data exceeding an error threshold. In response, the decoding computing system 202 can receive a replacement encoded video frame from the encoding computing system 201. The replacement encoded video frame may be a re-encoded video frame from the captured frame data 204. In some implementations, the replacement encoded video frame may include a keyframe.
[0066] In some implementations, the decoding computing system 202 may send a recording request to the encoding computing system 201. The recording request may include instructions for the encoding computing system 201 to generate recording data (e.g., via a recording file generator, etc.), the recording data including at least some of the data included by the decoding computing system (e.g., encoded video frame 208, etc.).
[0067] In some implementations, the decoding computing system 202 can determine that the corrupted video frame is below a corruption threshold. The corruption threshold can describe the threshold level of corruption associated with the corrupted video frame. In response to this determination, the decoding computing system 202 can provide the corrupted video frame (e.g., a second decoded video frame 224) to the associated display device 234.
[0068] Figure 3 A flowchart 300 depicts a process for reducing a decoded video frame to obtain an error detection code according to an example embodiment of the present disclosure. A decoding computing system 302 may receive an encoded video frame and an associated first error detection code 306. The decoding computing system 302 may decode the encoded video frame to produce a second decoded video frame 304. These operations may be described as referenced... Figure 3 Perform as described.
[0069] The decoding computing system 302 can apply the reduced error detection code generation scheme 308 to the second decoded video frame 304 to generate a second error detection code 310. The reduced error detection code generation scheme 308 can be used to reduce the second decoded video frame 304 to a smaller format representation 310, such as the second error detection code 310 (e.g., reducing a 1920×1080 pixel representation to a 16×16 pixel representation, etc.). It should be noted that any type of deterministic algorithm can be used to generate the error detection codes 306 / 310 (e.g., perceptual hashing, reduced error detection code generation scheme, etc.). Additionally, the first error detection code 306 can be a reduced representation of the first decoded video frame.
[0070] The decoding calculation system 302 can determine one or more differences by comparing error detection codes 306 / 310 using comparator 312. More specifically, the decoding calculation system 302 can compare the pixels of error detection codes 306 / 310 to determine one or more differences. As shown, the first error detection code 306 includes a pixel of a specific color at pixel location 311B. However, the second error detection code 310 is missing the same pixel at pixel location 311A. The comparison between pixel locations 311A / 311B can be used to determine the difference between them. Furthermore, error data 314 including the difference between pixel locations 311A / 311B can be generated. In addition, in some implementations, error data 314 can indicate the location of the error (e.g., pixel locations 311A / 311B) and / or the number of pixels in the second decoded video frame 304 associated with pixel locations 311A / 311B.
[0071] Figure 4A A flowchart depicts an example method for detecting corrupted errors in encoded video frames based on an error detection code, according to an example embodiment of the present disclosure. Although FIG4 depicts the steps performed in a particular order for illustrative and discussion purposes, the method of the present disclosure is not limited to the specifically described order or arrangement. The various steps of method 400 may be omitted, rearranged, combined, and / or modified in various ways without departing from the scope of the present disclosure.
[0072] At 402, method 400 may include receiving frames from a video capture device. More specifically, the encoding computing system may receive video frames from a video frame capture device (e.g., a camera, webcam, associated capture device, etc.). In some implementations, a video frame may be one of a plurality of video frames captured by the video frame capture device. Alternatively or additionally, in some implementations, a video frame may include multiple video frames.
[0073] It should be noted that in some implementations, the processing described in the coding computation system can be performed in parallel on multiple different image frames with multiple different image resolutions. For example, multiple captured frame data can be processed to generate coded video frames and associated error detection codes in parallel. In some implementations, each of the multiple coded video frames and its associated error detection code can be packaged into one or more transport packets (e.g., packaged by a packetizer into Real-Time Transport Protocol (RTP) packets, etc.).
[0074] At 404, method 400 may include encoding the frame using an encoding scheme to generate an encoded frame. More specifically, the encoding computation system may encode the video frame according to the encoding scheme to produce a first encoded video frame. The encoding scheme may be any arbitrary video encoding scheme (e.g., MPEG, AVI, etc.). In some implementations, the first encoded video frame may be a compressed representation of the video frame.
[0075] At 406, method 400 may include decoding the frame using a decoding scheme to generate a decoded frame. More specifically, the encoding computation system may decode the encoded video frame according to a decoding scheme corresponding to the encoding scheme to obtain a first decoded video frame. More specifically, the encoding computation system may decode the encoded frame to generate a first decoded video frame as a decoded representation of the video frame. In some implementations, if the encoding scheme is a lossy encoding scheme, the decoded video frame may differ from the video frame (e.g., artifacts from a lossy compression scheme, etc.).
[0076] At 408, method 400 may include applying an error detection code generation scheme to a decoded frame to generate a first frame error detection code. More specifically, the encoding computation system may apply the error detection code generation scheme to the first decoded video frame to generate the first frame error detection code. The error detection code generation scheme may be any arbitrary hash and / or checksum scheme. For example, the error detection code generation scheme may be or may include conventional checksum generation schemes such as CRC, Fletcher checksum, Adler-32, etc. Alternatively, in some implementations, the error detection code generation scheme may be another form of hash operation, such as a perceptual hash algorithm. For example, a reduced perceptual hash algorithm may be applied to the first decoded video frame. For example, a deterministic perceptual hash algorithm may be used to reduce the first decoded video frame to a very small representation (e.g., reducing 1920×1080 pixels to a 16×16 pixel representation, etc.). The reduced decoded video frame can be used as the first frame error detection code.
[0077] By applying an error detection code generation scheme to the decoded video frame, the encoding computation system can generate a first frame error detection code. This code can be any type of code specified by the error detection code generation scheme. For example, if the error detection code generation scheme is a conventional checksum hash algorithm, the first frame error detection code can be or may include a discrete value string. Alternatively, if the error detection code generation scheme is a perceptual hash algorithm, the frame error detection code can be a reduced representation of the decoded video frame.
[0078] Alternatively, in some implementations, the encoding computation system can forgo decoding the encoded video frames to generate decoded video frames. Instead, the encoding computation system can generate intermediate encoded data. More specifically, the encoding computation system can perform an encoding scheme on the video frames to generate encoded video frames. During the execution of the encoding scheme, intermediate encoded data similar to or describing the decoded video frames can be extracted. This intermediate encoded data can be used instead of the decoded video frames to generate the first frame error detection code. In this way, the encoding computation system can generate both the encoded video frames and the first frame error detection code without decoding the encoded video frames, thereby saving significant processing resources and time.
[0079] At 410, method 400 may include sending an encoded frame and a first frame error detection code to a decoding computing system. More specifically, the encoding computing system may send the first encoded video frame and the first frame error detection code to the decoding computing system. In some implementations, the encoding computing system may send the first encoded video frame and the first frame error detection code to the decoding computing system via a network (e.g., the Internet, a local area network, etc.). In some implementations, a real-time transport protocol (RTP) may be used to send the first frame error detection code and the first encoded video frame to the decoding computing system. For example, the first encoded video frame may be packaged into one or more RTP packets, and the first frame error detection code may be packaged in an extension field of the one or more RTP packets. In this way, the first encoded video frame and the first frame error detection code may arrive at the decoding computing system simultaneously.
[0080] In some implementations, the first frame error detection code can be sent via a packetizer. The packetizer can be any type of arbitrary hardware and / or software packetizer. For example, the packetizer can be a physical hardware packetizer integrated into or communicatively coupled to the coding computation system. As another example, the packetizer can be a component of one or more processors of the coding computation system (e.g., ...). Figure 1The processor 112) executes a virtualized packer. It should be noted that in some implementations, the packer may be, or may include, additional multiplexers with different functionalities. For example, the packer's multiplexer may be configured to replace the first video frame with a second video frame of a different resolution, as previously described. Furthermore, the packer's multiplexer may be used to multiplex the first frame error detection code and the encoded video frame. In this way, the encoding computing system can utilize any configuration and / or number of physical and / or virtualized packers and / or multiplexers to perform the functions described in this embodiment.
[0081] The packetizer can receive encoded video frames and a first-frame error detection code. The packetizer can package the encoded video frames and the first-frame error detection code and transmit both over the network. More specifically, in some implementations, the packetizer can package the encoded video frames and the first-frame error detection code into Real-Time Transport Protocol (RTP) packets. The RTP packets can include one or more RTP packets, and the RTP packets can include encoded video frames. Furthermore, the first-frame error detection code can be included in an extension field of the RTP packet. Alternatively, in some implementations, the packets can utilize any other type of transport protocol when being transmitted over the network.
[0082] An encoding computing system using a packetizer can send encoded video frames and first-frame error detection codes (e.g., packaged in a transport packet, etc.) to a decoding computing system. The decoding computing system can receive the encoded video frames and first-frame error detection codes over a network.
[0083] Figure 4B A flowchart depicts an example method 401 performed according to an example embodiment of the present disclosure. Although for purposes of illustration and discussion, Figure 4B The steps are described in a specific order, but the method of this disclosure is not limited to the described order or arrangement. The individual steps of method 401 may be omitted, rearranged, combined, and / or modified in various ways without departing from the scope of this disclosure. Furthermore, in some implementations, Figure 4A Method 400 and Figure 4B Method 401 can be rearranged, combined and / or modified in various ways without departing from the scope of this disclosure.
[0084] At 412, method 401 may include receiving an encoded video frame and a first frame error detection code generated from a first decoded frame. More specifically, the decoding computing system may receive the first encoded video frame and the first frame error detection code. In some implementations, the decoding computing system may receive them in a packet transmitted from the encoding computing system. In some implementations, the decoding computing system may receive the encoded video frame and the first frame error detection code via a network, and a packetizer may be used to separate the encoded video frame and the first frame error detection code.
[0085] At 414, method 401 may include decoding the encoded frame to obtain a second decoded frame. More specifically, the decoding computation system may use a... Figure 4A The first encoded video frame is decoded using an encoding and / or decoding scheme that is the same as or substantially similar to the encoding computation system to obtain the second decoded video frame. In some implementations, the second decoded video frame may be the same as or substantially similar to the first decoded video frame generated at the encoding computation system. Alternatively, in some implementations, the second decoded video frame may be significantly different from the first encoded video frame (e.g., due to data corruption, etc.).
[0086] At 416, method 401 may include generating a second frame error detection code from the second decoded frame. More specifically, the decoding computation system may determine error data describing one or more differences between the first frame error detection code and the second frame error detection code. The decoding computation system may determine the error data by evaluating the differences by comparing the first frame error detection code and the second frame error detection code. As previously described, if the first frame error detection code and the second frame error detection code are generated by reducing the first decoded video frame and the second decoded video frame respectively, the error detection codes can be compared to determine the spatial location of one or more obviously present corrupted errors in the second decoded video frame. Therefore, in some implementations, the error data may include the location of one or more errors in the second decoded video frame. Additionally or alternatively, in some implementations, the error data may include the number of pixels associated with the error. For example, comparing the first frame error detection code and the second frame error detection code may determine that there is a difference in the upper left position of the first decoded video frame and the second decoded video frame. The error data may include this position and may also include the number of pixels associated with the difference between the decoded video frames.
[0087] At 418, method 401 may include determining a difference between a first frame error detection code and a second frame error detection code. More specifically, the decoding computation system may determine error data describing one or more differences between the first frame error detection code and the second frame error detection code. The decoding computation system may determine the error data by evaluating the differences by comparing the first frame error detection code and the second frame error detection code. As previously described, if the first frame error detection code and the second frame error detection code are generated by reducing the first decoded video frame and the second decoded video frame respectively, the error detection codes can be compared to determine one or more spatial locations of obvious corruption in the second decoded video frame. Therefore, in some implementations, the error data may include the location of one or more errors in the second decoded video frame. Additionally or alternatively, in some implementations, the error data may include the number of pixels associated with the error. For example, comparing the first frame error detection code and the second frame error detection code may determine that there is a difference in the upper left position of the first decoded video frame and the second decoded video frame. The error data may include this position and may also include the number of pixels associated with the difference between the decoded video frames.
[0088] At 420, method 401 may include determining that the encoded video frame is corrupted based on error data. More specifically, the decoding computation system may determine that the encoded video frame is a corrupted video frame based on error data exceeding one or more error thresholds. The decoding computation system may determine the number and / or severity of errors associated with differences between the first video frame and the second video frame that cause the encoded video frame to be corrupted. For example, the error threshold may specify that exceeding a certain number of errors indicates that the encoded video frame is corrupted. As another example, the error threshold may specify that exceeding a certain number of pixel differences indicates that the encoded video frame is corrupted. The error threshold may be any threshold associated with the severity and / or number of errors in the encoded video frame.
[0089] Figure 5 A flowchart depicts an example method for performing operations in response to the detection of a corrupted video frame, according to an example embodiment of the present disclosure. Although for illustrative and discussion purposes... Figure 5 The steps are described in a specific order, but the method disclosed herein is not limited to the specifically described order or arrangement. The individual steps of method 500 may be omitted, rearranged, combined, and / or modified in various ways without departing from the scope of this disclosure.
[0090] In step 502, method 500 may include determining that the encoded video frame is corrupted based on error data. More specifically, the decoding computation system may determine that the encoded video frame is corrupted based on error data exceeding one or more error thresholds. The decoding computation system may determine the number and / or severity of errors associated with differences between the first and second video frames that cause the encoded video frame to be corrupted. For example, the error threshold may specify that exceeding a certain number of errors indicates that the encoded video frame is corrupted. As another example, the error threshold may specify that exceeding a certain number of pixel differences indicates that the encoded video frame is corrupted. The error threshold may be any threshold associated with the severity and / or number of errors in the encoded video frame.
[0091] In 504, the method may include generating recording data based on error data. More specifically, in response to determining that an encoded video frame is a corrupted video frame, the decoding computing system may generate recording data. The recording data may include the corrupted video frame, a second decoded video frame, metadata associated with the corrupted video frame, error data describing one or more differences, or any other arbitrary data associated with the video frame data. Additionally or alternatively, in some implementations, the decoding computing system may generate a recording request and send the recording request to the encoding computing system. The recording request may include instructions to generate recording data, which includes data that is the same as or similar to the recording data generated by the decoding computing system.
[0092] In step 505, method 500 may include determining that a corrupted video frame is below a corruption threshold. The corruption threshold may describe the threshold level of corruption associated with the corrupted video frame.
[0093] In step 506, method 500 may include providing a corrupted video frame for display. More specifically, in response to determining that the corrupted video frame is below a corruption threshold, the decoding computing system may provide the corrupted video frame for display on a display device. The display device may be integrated with or communicatively coupled to the decoding computing system, or alternatively, it may reside in a separate computing system.
[0094] Alternatively or additionally, at 507, method 500 may include sending a replacement frame request to the encoding computing system. It should be noted that, as shown, method 500 allows for the generation of recording data based on erroneous data (e.g., 504), determining that a corrupted video frame is below a corruption threshold (e.g., 505), providing a corrupted video frame for display (e.g., 506), sending a replacement frame request to the encoding computing system (e.g., 507), and receiving a replacement encoded video frame from the encoding computing system (508). However, these steps do not need to be performed sequentially or at all.
[0095] In step 508, method 500 may include receiving a replacement coded video frame from an encoding computing system. In response, a decoding computing system may receive the replacement coded video frame from the encoding computing system. The replacement coded video frame may be a re-encoded video frame from captured frame data. In some implementations, the replacement coded video frame may include a keyframe.
[0096] The technologies discussed in this paper involve servers, databases, software applications, other computer-based systems, and the actions taken and the information sent to / from these systems. The inherent flexibility of computer-based systems allows for a wide variety of possible configurations, combinations, and partitions of tasks and functions among components. For example, the processing discussed in this paper can be implemented using a single device or component, or multiple devices or components working in combination. Databases and applications can be implemented on a single system or distributed across multiple systems. Distributed components can operate sequentially or in parallel.
[0097] While the subject matter has been described in detail with reference to various specific example embodiments thereof, each example is provided by way of explanation and not as a limitation thereof. Once the foregoing is understood, those skilled in the art will readily generate changes, variations, and equivalents of these embodiments. Therefore, this subject matter disclosure does not exclude such modifications, variations, and / or additions to the subject matter, which will be apparent to those skilled in the art. For example, features shown or described as part of one embodiment may be used with another embodiment to produce yet another embodiment. Therefore, it is intended that this disclosure cover such changes, variations, and equivalents.
[0098] For example, this topic may include applying an error detection code generation scheme to a first decoded video frame to generate a first frame error detection code. Applying the error detection code generation scheme may include: reducing the decoded video frame to obtain a reduced video frame, the reduced video frame being smaller than the first decoded video frame; and encoding the reduced video frame to obtain an encoded reduced video frame, wherein the first frame error detection code includes the encoded reduced video frame.
[0099] As another example, this subject matter may include an encoding computing system. An encoding computing system may include one or more processors. An encoding computing system may include one or more tangible, non-transitory computer-readable media that commonly store instructions that, when executed by the one or more processors, cause the encoding computing system to perform operations. Operations may include: receiving video frames from a video frame capture device. Operations may include: encoding the video frames according to an encoding scheme to produce encoded video frames. Operations may include: generating frame error detection codes for the video frames based on intermediate encoded data produced by executing the encoding scheme. Operations may include: sending the encoded video frames and frame error detection codes to a decoding computing system.
Claims
1. A computer-implemented method for error detection in video data, comprising: The encoded video frame and the associated first frame error detection code are received by a decoding computing system including one or more computing devices. The first frame error detection code is generated by the encoding computing system by applying an error detection code generation scheme to the first decoded video frame. The first decoded video frame includes the decoding of the encoded video frame generated at the encoding computing system. The encoded video frame is decoded by the decoding computing system to obtain the second decoded video frame; The error detection code generation scheme is applied to the second decoded video frame by the decoding computing system to generate the error detection code for the second frame; The decoding calculation system determines error data describing one or more differences between the error detection codes of the first frame and the error detection codes of the second frame; The decoding calculation system determines that an encoded video frame is a corrupted video frame based on error data exceeding one or more error thresholds. as well as In response to the decoding calculation system determining that the encoded video frame is a corrupted video frame: The decoding computing system sends a replacement frame request to the encoding computing system. The replacement frame request requests a replacement encoded video frame for the encoded video frame. The encoding computing system generates the replacement encoded video frame by encoding the video frame according to the encoding scheme.
2. The computer-implemented method as described in claim 1, wherein, Encoded video frames are received in Real-Time Transport Protocol (RTP) packets, and the error detection code for the first frame is included in the extended field of the RTP packets.
3. The computer-implemented method as described in any one of claims 1-2, wherein, The method further includes: in response to the decoding computing system determining that the encoded video frame is a corrupted video frame. Recorded data is generated by the decoding computing system. The recorded data includes at least one of the following: a corrupted video frame, metadata associated with the corrupted video frame, or error data describing one or more differences.
4. The computer-implemented method as described in claim 3, wherein, The recorded data also includes one or more previously encoded video frames received from the encoding computing system before the received encoded video frames.
5. The computer-implemented method as described in claim 3, wherein, The method further includes: sending recording request data from the decoding computing system to the encoding computing system, the recording request data including instructions for generating recording data, and the recording data including at least the video frame corresponding to the damaged video frame.
6. The computer-implemented method as described in claim 1, wherein, The method further includes: receiving a replacement encoded video frame from the encoding computing system by the decoding computing system, wherein the replacement encoded video frame is configured as a replacement encoded video frame.
7. The computer-implemented method as described in claim 1, wherein, Replace the encoded video frames, including keyframes.
8. The computer-implemented method as described in any one of claims 1-2, 4-7, wherein, The error detection code generation scheme is applied to the second decoded video frame by the decoding computing system to generate the second frame error detection code, including: The decoding calculation system reduces the second decoded video frame to obtain a reduced second video frame, which is smaller than the second decoded video frame; and The reduced second video frame is encoded by the decoding computing system to obtain an encoded reduced second video frame, wherein the second frame error detection code includes the encoded reduced second video frame.
9. The computer-implemented method as described in claim 8, wherein: The first frame error detection code includes an encoded, reduced first video frame, wherein the encoded, reduced first video frame has been reduced to the size of the second frame error detection code; and The error data described by the decoding calculation system, which describes one or more differences between the first frame error detection code and the second frame error detection code, includes: the decoding calculation system comparing a plurality of first pixels of the first frame error detection code and a plurality of second pixels of the second frame error detection code to determine one or more differences at one or more spatial locations of the first frame error detection code and the second frame error detection code.
10. The computer-implemented method as described in claim 9, wherein, The encoded and reduced first video frame and the encoded and reduced second video frame are reduced by performing deterministic reduction algorithms, respectively.
11. The computer-implemented method as described in any one of claims 1-2, 4-7, 9-10, wherein, The method further includes: The decoding calculation system determines that the corrupted video frame is below the corruption threshold; and The corrupted video frames are provided by the decoding computing system for display.
12. A coding calculation system, comprising: One or more processors; as well as One or more tangible, non-transitory computer-readable media that collectively store instructions that, when executed by one or more processors, cause a coded computing system to perform operations, including: Receive video frames from the video frame capture device; Video frames are encoded according to an encoding scheme to produce encoded video frames; The encoded video frame is decoded according to the decoding scheme corresponding to the encoding scheme to obtain the decoded video frame; The error detection code generation scheme is applied to the decoded video frame to generate the frame error detection code; the encoded video frame and the frame error detection code are sent to the decoding computing system. When error data describing one or more differences between the frame error detection code determined by the decoding computing system and the received frame error detection code exceeds an error threshold, a replacement frame request is received from the decoding computing system; and In response to the replacement frame request: Replacement coded video frames are generated by encoding video frames according to a coding scheme. The replaced encoded video frames are sent to the decoding computing system.
13. The coding calculation system as described in claim 12, wherein, Sending encoded video frames and frame error detection codes to the decoding computing system includes: Encoded video frames and frame error detection codes are packaged in the transmission packet; and Send a transmission packet to the decoding computing system.
14. The coding calculation system as described in claim 12 or 13, wherein, The operation further includes: receiving recording request data from the decoding computing system, the recording request data including instructions for generating recording data, and the recording data including at least video frames.
15. The coding calculation system as described in claim 12 or 13, wherein: Video frames are captured at a first resolution by a video frame capture device; as well as Receiving video frames from a video frame capture device also includes: Scale the video frame to a second resolution to obtain a second video frame; as well as Replace the video frame with the second video frame.
16. The coding calculation system as described in claim 12, wherein, Generating replacement encoded video frames also includes: The replaced encoded video frame is decoded according to the decoding scheme corresponding to the encoding scheme to obtain the replaced decoded video frame. The error detection code generation scheme is applied to replace decoded video frames to generate error detection codes for the replacement frames; and Sending the replacement encoded frame to the decoding computing system also includes sending the replacement frame error detection code to the decoding computing system.
17. The coding calculation system as described in any one of claims 12, 13, and 16, wherein, Applying error detection code generation schemes to decode video frames to generate frame error detection codes includes: Reduce the decoded video frames to obtain reduced video frames, where the reduced video frames are smaller than the decoded video frames; and The reduced video frames are encoded to obtain encoded reduced video frames, wherein the frame error detection code includes the encoded reduced video frames.
18. One or more tangible, non-transitory computer-readable media storing computer-readable instructions that, when executed by one or more processors, cause the one or more processors to perform operations, said operations including: Receive video frames from the video frame capture device; The video frames are encoded according to the encoding scheme to produce the first encoded video frame; The first encoded video frame is decoded according to the decoding scheme corresponding to the encoding scheme to obtain the first decoded video frame; The error detection code generation scheme is applied to the first decoded video frame to generate the first frame error detection code; The encoded video frame is decoded according to the decoding scheme corresponding to the encoding scheme to obtain the second decoded video frame; The error detection code generation scheme is applied to the second decoded video frame to generate the error detection code for the second frame; Determine error data that describes one or more differences between the error detection codes of the first frame and the error detection codes of the second frame; Based on error data exceeding one or more error thresholds, the encoded video frame is determined to be a corrupted video frame. as well as In response to determining that the encoded video frame is a corrupted video frame: Send a replacement frame request, wherein the replacement frame request requests a replacement encoded video frame for the encoded video frame, wherein the replacement encoded video frame is generated by encoding the video frame according to the encoding scheme.
Citation Information
Patent Citations
Error detection and mitigation in video channels
CN106464913A
Decoding video data
US8588299B1