[FFmpeg-devel] [PATCH] mpegts: Enable muxing of SMPTE KLV data

Jeff Blackburne jblackburne at gmail.com
Tue Jun 11 18:59:01 CEST 2013


This is basically a re-post of Peter Ross's patch to mux SMPTE
key-length-value data. See these archive links:
http://ffmpeg.org/pipermail/ffmpeg-devel/2012-October/132381.html
http://ffmpeg.org/pipermail/ffmpeg-devel/2012-December/135502.html

The demux patch has already been accepted, and works well for me. I've
tested this patch as well, and it works as expected.

---
 libavformat/mpegtsenc.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index 0ddae65..0da65a5 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -397,6 +397,16 @@ static void mpegts_write_pmt(AVFormatContext *s,
MpegTSService *service)
                 *q++ = 'c';
             }
             break;
+        case AVMEDIA_TYPE_DATA:
+            if (st->codec->codec_id == AV_CODEC_ID_SMPTE_KLV) {
+                *q++ = 0x05; /* MPEG-2 registration descriptor */
+                *q++ = 4;
+                *q++ = 'K';
+                *q++ = 'L';
+                *q++ = 'V';
+                *q++ = 'A';
+            }
+            break;
         }

         val = 0xf000 | (q - desc_length_ptr - 2);
@@ -977,8 +987,8 @@ static void mpegts_write_pes(AVFormatContext *s,
AVStream *st,
             *q++ = len >> 8;
             *q++ = len;
             val = 0x80;
-            /* data alignment indicator is required for subtitle data */
-            if (st->codec->codec_type == AVMEDIA_TYPE_SUBTITLE)
+            /* data alignment indicator is required for subtitle and data
streams */
+            if (st->codec->codec_type == AVMEDIA_TYPE_SUBTITLE ||
st->codec->codec_type == AVMEDIA_TYPE_DATA)
                 val |= 0x04;
             *q++ = val;
             *q++ = flags;
-- 
1.7.1


More information about the ffmpeg-devel mailing list