Evalvid-RA, which is a tool-set for trace file simulation of rate adaptive MPEG-4 video.It was created by modifying the original EvalVid v1.2, original ns-2 interface of EvalVid and implementing a rate adaptive version of SVBR into ns-2.
Note : Evalvid-RA is not compatible with EvalVid 2.x. The practical impact of this is that one have to work on “raw” *.m4v files, and not the ISO Media File format *.mp4.
Thus it is not possible to hint *.m4v files with certain MTU settings, as it is possible with *.mp4 files.The MTU parameter is however given directly in the ns-2 simulation, and the packetization will hence follow this MTU parameter without taking notice of macro-block boundaries.
Sample code for Evalvid example:
This is the code for transmission of mpeg video files simulated using EvalVid tool.
static unsigned bit_ = 8, pos_; void resetbuf() { pos_ = 0; bit_ = 8; } unsigned nextbits(char *s, unsigned n) { unsigned i, v = 0; for (i=0; i<n; i++) { if (!bit_) pos_++, bit_ = 8; v = v << 1 | !!(s[pos_] & 1U << --bit_); } return v; } unsigned skipbits(char *s, unsigned b) { unsigned count = 0; if (b > 1) return 0; for (;;) { if (!bit_) pos_++, bit_ = 8; if (b == !!(s[pos_] & 1U << --bit_)) count++; else break; } return count; } int VOP_not_coded(char *s, VOL_header *VOL_h) { if (nextbits(s, 8) != 0) goto E; if (nextbits(s, 8) != 0) goto E; if (nextbits(s, 8) != 1) goto E; if (nextbits(s, 8) != 0xB6) goto E; nextbits(s, 2); skipbits(s, 1); if (!nextbits(s, 1)) goto E; nextbits(s, CalcMinBits(VOL_h->vop_time_inc_res)); if (!nextbits(s, 1)) goto E; CLRBIT(s[pos_], bit_ - 1); if (nextbits(s, 1)) goto E; return pos_; fprintf(stderr, "frame parsing error!\n"); return 0; }
Journal Support for NS2 Projects: