]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/mpegtsenc.c
avformat/mpegtsenc: Fix mpegts_write_pes() for private_stream_2 and other types
[ffmpeg] / libavformat / mpegtsenc.c
index bf93204a5da9f58a4dee1466974ff311b98531d3..969c222f7b7d5fde3f6364edd7392ba91b196490 100644 (file)
@@ -1450,6 +1450,16 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st,
                 pts = dts = AV_NOPTS_VALUE;
 
             header_len = 0;
+
+            if (stream_id != STREAM_ID_PROGRAM_STREAM_MAP &&
+                stream_id != STREAM_ID_PADDING_STREAM &&
+                stream_id != STREAM_ID_PRIVATE_STREAM_2 &&
+                stream_id != STREAM_ID_ECM_STREAM &&
+                stream_id != STREAM_ID_EMM_STREAM &&
+                stream_id != STREAM_ID_PROGRAM_STREAM_DIRECTORY &&
+                stream_id != STREAM_ID_DSMCC_STREAM &&
+                stream_id != STREAM_ID_TYPE_E_STREAM) {
+
             flags      = 0;
             if (pts != AV_NOPTS_VALUE) {
                 header_len += 5;
@@ -1543,6 +1553,11 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st,
                 memset(q, 0xff, pes_header_stuffing_bytes);
                 q += pes_header_stuffing_bytes;
             }
+            } else {
+                len = payload_size;
+                *q++ = len >> 8;
+                *q++ = len;
+            }
             is_start = 0;
         }
         /* header size */