EvalVid Source Code – In this section we are going to discuss about the how the frame loss is calculate, during video transmission process also in simulation tool Evalvid-with-their source-code.
- Based on the video trace file, the sender trace file, and the receiver trace file, the lost frames can indicate.
- If a frame is lost due to packet loss, also the ET component sets the vop_coded. bit of this video object plane (VOP) header in the original compress video file to 0.
- The setting of this bit to 0 indicates that no subsequent data exists for this VOP. This type of frame is refer to as a vop-not-coded frame.
- While a frame is completely receive and the vop_coded bit is set to 1, this type of frame is refer to as a decodable frame.
- After setting the vop_coded bit to 0 for all the lost frames, the process file is then used to represent the compressed video file receive by the receiver side.
Sample Evalvid Source Code.
void resetbits(unsigned pos) { pos_ = pos; bit_ = CHAR_BIT;} unsigned nextbits(unsigned char *s, unsigned n) { unsigned i = 0, v = 0; while (i < n) { if (!bit_) pos_++, bit_ = CHAR_BIT; if (bit_ == CHAR_BIT && (n - i) / CHAR_BIT) { while ((n - i) / CHAR_BIT) { v = v << CHAR_BIT | s[pos_++]; i += CHAR_BIT; } continue; } v = v << 1 | GETBIT(s[pos_], --bit_); i++; } return v;} unsigned skipbits(unsigned char *s, unsigned b) { unsigned count = 0; if (b > 1) return 0; for (;;) { if (!bit_) pos_++, bit_ = CHAR_BIT; if (b == GETBIT(s[pos_], --bit_)) count++; else break; } return count;} int mark_not_coded(unsigned char *p, unsigned n, unsigned nti) { unsigned sc; resetbits(0); if (sc != SC_VOP) goto X; VOP: nextbits(p, 2); skipbits(p, 1); if (!nextbits(p, 1)) goto X; nextbits(p, nti); if (!nextbits(p, 1)) goto X; CLRBIT(p[pos_], bit_ - 1); if (nextbits(p, 1)) goto X; NO_VOP: return currentpos(); X: return 0;}