A method for recovering network video data packet loss during real-time video communication, said method performed within a reference-order AL-FEC system and comprising:
- 1) retrieving a current frame by a packetizer, said current frame encoded by a video encoder from a picture captured by said video input device, said packetizer adapted to be run on a sender device, said sender device having a first processing unit, a first network interface operatively coupled to said first processing unit and a network, a first memory operatively coupled to said first processing unit, and a video input device operatively coupled to said first processing unit;
- 2) dividing said current frame into a set of source packets by said packetizer;
- 3) constructing, by said packetizer, a source symbol from each source packet within said set of source packets to form a set of source symbols of said current frame, each source symbol including a corresponding source packet, a frame descriptor and an encoding symbol identifier;
- 4) searching, by a reference-order AL-FEC encoder, backward according to a reference order of said current frame to find all reference frames of said current frame within an encoding window, said reference-order AL-FEC encoder adapted to be run on said sender device, wherein said reference order is not a time-reference order or a block-reference order;
- 5) determining, by said reference-order AL-FEC encoder, a set of source symbols of each of said reference frames to form a list of sets of source symbols, said set of source symbols of said current frame and said list of sets of source symbols forming a first set of source symbols;
- 6) performing, by said reference-order AL-FEC encoder, FEC encoding on said first set of source symbols to generate a repair symbol;
- 7) constructing, by said reference-order AL-FEC encoder, a repair packet based on said repair symbol, said repair packet including said repair symbol and a repair packet descriptor, said repair packet and said first set of source symbols adapted to be sent to a receiver device over said network by said sender device;
- 8) retrieving, by a reference-order AL-FEC decoder, said repair packet and a second set of source symbols sent by said sender device over said network, said reference-order AL-FEC decoder adapted to be run on said receiver device, said receiver device having a second processing unit, a second network interface operatively coupled to said second processing unit, a second memory operatively coupled to said second processing unit, and a video render device operatively coupled to said second processing unit;
- 9) extracting, by said reference-order AL-FEC decoder, a repair packet descriptor from said repair packet;
- 10) determining, by said reference-order AL-FEC decoder, that a source symbol within said set of source symbols of said current frame is lost based on encoding symbol identifiers of said set of source symbols, wherein, when there is source symbol loss, said second set of source symbols differs from said first set of source symbols and, when there is no source symbol loss, said second set of source symbols is same as said first set of source symbols;
- 11) decoding, by said reference-order AL-FEC decoder, said repair packet to recover said lost source symbol;
- and
- 12) constructing, by a depacketizer adapted to be run on said receiver device, said current frame from said second set of source symbols and said lost source symbol, wherein said reconstructed current frame is adapted to be used to construct said picture by a video decoder, and wherein said reconstructed picture is rendered by said video render device.