UNPKG

@astronautlabs/rfc8331

Version:

Implementation of RFC 8331, RTP Payload for SMPTE ST 291-1 Ancillary Data

155 lines 6.22 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RTPPacketHeader = exports.AncillaryPacket = exports.AncillaryMessage = exports.ANC_MIMETYPE = void 0; const bitstream_1 = require("@astronautlabs/bitstream"); const ST291 = __importStar(require("@astronautlabs/st291")); exports.ANC_MIMETYPE = 'video/smpte291'; class AncillaryMessage extends bitstream_1.BitstreamElement { constructor() { super(...arguments); this.wordAlign = 0; } } __decorate([ bitstream_1.Field(1), __metadata("design:type", Number) ], AncillaryMessage.prototype, "c", void 0); __decorate([ bitstream_1.Field(11), __metadata("design:type", Number) ], AncillaryMessage.prototype, "lineNumber", void 0); __decorate([ bitstream_1.Field(12), __metadata("design:type", Number) ], AncillaryMessage.prototype, "horizontalOffset", void 0); __decorate([ bitstream_1.Field(1), __metadata("design:type", Number) ], AncillaryMessage.prototype, "dataStreamFlag", void 0); __decorate([ bitstream_1.Field(7), __metadata("design:type", Number) ], AncillaryMessage.prototype, "streamNum", void 0); __decorate([ bitstream_1.Marker(), __metadata("design:type", Object) ], AncillaryMessage.prototype, "$packetStart", void 0); __decorate([ bitstream_1.Field(0, { skip: ['ancillaryDataFlag'] }), __metadata("design:type", ST291.Packet) ], AncillaryMessage.prototype, "packet", void 0); __decorate([ bitstream_1.Marker(), __metadata("design:type", Object) ], AncillaryMessage.prototype, "$packetEnd", void 0); __decorate([ bitstream_1.Field(i => 32 - (i.measure(i => i.$packetStart, i => i.$packetEnd) % 32)), __metadata("design:type", Number) ], AncillaryMessage.prototype, "wordAlign", void 0); exports.AncillaryMessage = AncillaryMessage; class AncillaryPacket extends bitstream_1.BitstreamElement { constructor() { super(...arguments); this.ancCount = 0; /** * The 22 reserved bits of value "0" follow the F field to * ensure that the first ANC data packet header field in the * payload begins 32-bit word-aligned with the start of the RTP * header to ease implementation. */ this.reserved = 0; } } __decorate([ bitstream_1.Field(8, { writtenValue: i => i.messages.length }), __metadata("design:type", Number) ], AncillaryPacket.prototype, "ancCount", void 0); __decorate([ bitstream_1.Field(2), __metadata("design:type", Number) ], AncillaryPacket.prototype, "field", void 0); __decorate([ bitstream_1.Field(22), __metadata("design:type", Number) ], AncillaryPacket.prototype, "reserved", void 0); __decorate([ bitstream_1.Field(0, { array: { count: i => i.ancCount, type: AncillaryMessage } }), __metadata("design:type", Array) ], AncillaryPacket.prototype, "messages", void 0); exports.AncillaryPacket = AncillaryPacket; class RTPPacketHeader extends bitstream_1.BitstreamElement { } __decorate([ bitstream_1.Field(2), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "version", void 0); __decorate([ bitstream_1.Field(1), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "p", void 0); __decorate([ bitstream_1.Field(1), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "x", void 0); __decorate([ bitstream_1.Field(4), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "cc", void 0); __decorate([ bitstream_1.Field(1), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "marker", void 0); __decorate([ bitstream_1.Field(7), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "pt", void 0); __decorate([ bitstream_1.Field(16), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "sequenceNumber", void 0); __decorate([ bitstream_1.Field(32), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "timestamp", void 0); __decorate([ bitstream_1.Field(32), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "ssrc", void 0); __decorate([ bitstream_1.Field(16), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "extendedSequenceNumber", void 0); __decorate([ bitstream_1.Field(16), __metadata("design:type", Number) ], RTPPacketHeader.prototype, "length", void 0); exports.RTPPacketHeader = RTPPacketHeader; //# sourceMappingURL=syntax.js.map