@astronautlabs/rfc8331
Version:
Implementation of RFC 8331, RTP Payload for SMPTE ST 291-1 Ancillary Data
155 lines • 6.22 kB
JavaScript
;
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