summaryrefslogtreecommitdiff
path: root/libavformat/rtpenc.c
diff options
context:
space:
mode:
authorThomas Volkert <thomas@netzeal.de>2016-05-03 19:07:37 +0200
committerThomas Volkert <thomas@netzeal.de>2016-05-03 19:07:37 +0200
commitf591b7b5265fcf29dad12c4995ee43b0e3d594e7 (patch)
tree466197196815268594b8817baff1aacc9fff3364 /libavformat/rtpenc.c
parent1ef267b83f8b71c07c2453852ce8bb44fa27a2da (diff)
rtpenc: packetizer for VC-2 HQ RTP payload format (draft v1)
Diffstat (limited to 'libavformat/rtpenc.c')
-rw-r--r--libavformat/rtpenc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libavformat/rtpenc.c b/libavformat/rtpenc.c
index ef51236ab3..f477650a87 100644
--- a/libavformat/rtpenc.c
+++ b/libavformat/rtpenc.c
@@ -49,6 +49,7 @@ static const AVClass rtp_muxer_class = {
static int is_supported(enum AVCodecID id)
{
switch(id) {
+ case AV_CODEC_ID_DIRAC:
case AV_CODEC_ID_H261:
case AV_CODEC_ID_H263:
case AV_CODEC_ID_H263P:
@@ -173,6 +174,17 @@ static int rtp_write_header(AVFormatContext *s1)
n = 1;
s->max_payload_size = n * TS_PACKET_SIZE;
break;
+ case AV_CODEC_ID_DIRAC:
+ if (s1->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
+ av_log(s, AV_LOG_ERROR,
+ "Packetizing VC-2 is experimental and does not use all values "
+ "of the specification "
+ "(even though most receivers may handle it just fine). "
+ "Please set -strict experimental in order to enable it.\n");
+ ret = AVERROR_EXPERIMENTAL;
+ goto fail;
+ }
+ break;
case AV_CODEC_ID_H261:
if (s1->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
av_log(s, AV_LOG_ERROR,
@@ -550,6 +562,9 @@ static int rtp_write_packet(AVFormatContext *s1, AVPacket *pkt)
case AV_CODEC_ID_MPEG2TS:
rtp_send_mpegts_raw(s1, pkt->data, size);
break;
+ case AV_CODEC_ID_DIRAC:
+ ff_rtp_send_vc2hq(s1, pkt->data, size, st->codecpar->field_order != AV_FIELD_PROGRESSIVE ? 1 : 0);
+ break;
case AV_CODEC_ID_H264:
ff_rtp_send_h264_hevc(s1, pkt->data, size);
break;