16 #if defined(MSWindows)
20 #define kipdprintf(...)
25 #define kipdprintf(...) printf(__VA_ARGS__)
29 #elif defined(AJALinux)
33 #define kipdprintf(...)
38 #define kipdprintf(...) printf(__VA_ARGS__)
46 #define kipdprintf(_format_...)
51 #define kipdprintf(_format_...) printf(_format_)
54 #elif defined(AJABareMetal)
58 #define kipdprintf(_format_...)
63 #define kipdprintf(_format_...) printf(_format_)
159 for (
int i = 0; i < 188; i++ )
168 uint32_t crc_table[256] =
170 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
171 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
172 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7,
173 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
174 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3,
175 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
176 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef,
177 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
178 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb,
179 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
180 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
181 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
182 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4,
183 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
184 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08,
185 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
186 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc,
187 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
188 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050,
189 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
190 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
191 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
192 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1,
193 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
194 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5,
195 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
196 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9,
197 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
198 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd,
199 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
200 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
201 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
202 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2,
203 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
204 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e,
205 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
206 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a,
207 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
208 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676,
209 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
210 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
211 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
212 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
216 uint32_t crc = 0xffffffff;
218 for (i=0; i<len; i++)
219 crc = (crc << 8) ^ crc_table[((crc >> 24) ^ *data++) & 0xff];
251 void put16( uint16_t val,
int &pos )
253 _pkt8[pos++] = (uint8_t)(val>>8);
254 _pkt8[pos++] = (uint8_t)val;
257 void put32( uint32_t val,
int &pos )
259 _pkt8[pos++] = (uint8_t)(val>>24);
260 _pkt8[pos++] = (uint8_t)(val>>16);
261 _pkt8[pos++] = (uint8_t)(val>>8);
262 _pkt8[pos++] = (uint8_t)val;
329 _pkt8[pos++] = (uint8_t) (1 & 0xff);
330 _pkt8[pos++] = (uint8_t) (0xbd);
341 _pkt8[pos++] |= (uint8_t) ((
_pts >> 29) & 0xe);
343 _pkt8[pos++] |= (uint8_t) ((
_pts >> 22) & 0xff);
345 _pkt8[pos++] |= (uint8_t) ((
_pts >> 14) & 0xfe);
347 _pkt8[pos++] |= (uint8_t) ((
_pts >> 7) & 0xff);
349 _pkt8[pos++] |= (uint8_t) ((
_pts << 1) & 0xfe);
377 _pkt8[pos++] = (uint8_t) (1 & 0xff);
378 _pkt8[pos++] = (uint8_t) (0xbd);
389 _pkt8[pos++] |= (uint8_t) ((
_pts >> 29) & 0xe);
391 _pkt8[pos++] |= (uint8_t) ((
_pts >> 22) & 0xff);
393 _pkt8[pos++] |= (uint8_t) ((
_pts >> 14) & 0xfe);
395 _pkt8[pos++] |= (uint8_t) ((
_pts >> 7) & 0xff);
397 _pkt8[pos++] |= (uint8_t) ((
_pts << 1) & 0xfe);
427 _pkt8[pos++] = (uint8_t) ((
_auf1 >> 16) & 0xff);
428 _pkt8[pos++] = (uint8_t) ((
_auf1 >> 8) & 0xff);
436 _pkt8[pos++] = (uint8_t) ((
_auf2 >> 16) & 0xff);
437 _pkt8[pos++] = (uint8_t) ((
_auf2 >> 8) & 0xff);
445 _pkt8[pos++] = (uint8_t) (2 & 0xff);
446 _pkt8[pos++] = (uint8_t) (1 & 0xff);
454 _pkt8[pos++] = (uint8_t) (
_hh & 0xff);
455 _pkt8[pos++] = (uint8_t) (
_mm & 0xff);
456 _pkt8[pos++] = (uint8_t) (
_ss & 0xff);
457 _pkt8[pos++] = (uint8_t) (
_ff & 0xff);
475 _pkt8[pos++] = (uint8_t) (0 & 0xff);
476 _pkt8[pos++] = (uint8_t) (0 & 0xff);
477 _pkt8[pos++] = (uint8_t) (0 & 0xff);
478 _pkt8[pos++] = (uint8_t) (0 & 0xff);
500 d2 = 1.0 / 125000000;
501 d1 = 90e-3 / d2 - 1.0;
544 put16( (uint16_t)0xb000 + (length & 0x3ff), pos);
550 std::map <uint16_t, uint16_t>::const_iterator it =
_progNumToPID.begin();
553 put16( it->first, pos );
554 put16( (uint16_t)0xe000 + (it->second & 0x1fff), pos );
557 int crcEnd = pos - 1;
598 int len, lengthPos, j2kLengthPos, audioLengthPos;
642 _pkt8[j2kLengthPos] = 0xf0;
643 _pkt8[j2kLengthPos++] |= (uint8_t) ((len >> 8) & 0x1f);
644 _pkt8[j2kLengthPos] = (uint8_t) (len & 0xff);
655 audioLengthPos = pos;
660 _pkt8[audioLengthPos] = 0xf0;
661 _pkt8[audioLengthPos++] |= (uint8_t) ((len >> 8) & 0x1f);
662 _pkt8[audioLengthPos] = (uint8_t) (len & 0xff);
666 _pkt8[lengthPos] = 0xb0;
667 _pkt8[lengthPos++] |= (uint8_t) (((pos-crcStart+1) >> 8) & 0x1f);
668 _pkt8[lengthPos] = (uint8_t) ((pos-crcStart+1) & 0xff);
670 int crcEnd = pos - 1;
682 uint32_t profileLevel;
688 profileLevel = 0x102;
689 maxBitRate = 160000000;
693 profileLevel = 0x101;
694 maxBitRate = 213000000;
703 put16( profileLevel, pos );
709 put32( height, pos );
710 put32( maxBitRate, pos );
711 put32( 1250000, pos );
716 _pkt8[pos++] |= 0x3F;
721 put16( 0x0100, pos );
723 put16( height, pos );
725 put16( height, pos );
728 put32( maxBitRate, pos );