Commit 435cebd0 authored by Anssi Hannula's avatar Anssi Hannula Committed by Ronald S. Bultje

mpegtsenc: handle multiple language tags per stream

Signed-off-by: 's avatarRonald S. Bultje <rsbultje@gmail.com>
parent 89e568fe
......@@ -283,12 +283,24 @@ static void mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
/* write optional descriptors here */
switch(st->codec->codec_type) {
case AVMEDIA_TYPE_AUDIO:
if (lang && strlen(lang->value) == 3) {
if (lang) {
char *p;
char *next = lang->value;
uint8_t *len_ptr;
*q++ = 0x0a; /* ISO 639 language descriptor */
*q++ = 4;
*q++ = lang->value[0];
*q++ = lang->value[1];
*q++ = lang->value[2];
len_ptr = q++;
*len_ptr = 0;
for (p = lang->value; next && *len_ptr < 255 / 4 * 4; p = next + 1) {
next = strchr(p, ',');
if (strlen(p) != 3 && (!next || next != p + 3))
continue; /* not a 3-letter code */
*q++ = *p++;
*q++ = *p++;
*q++ = *p++;
if (st->disposition & AV_DISPOSITION_CLEAN_EFFECTS)
*q++ = 0x01;
else if (st->disposition & AV_DISPOSITION_HEARING_IMPAIRED)
......@@ -297,6 +309,12 @@ static void mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
*q++ = 0x03;
else
*q++ = 0; /* undefined type */
*len_ptr += 4;
}
if (*len_ptr == 0)
q -= 2; /* no language codes were written */
}
break;
case AVMEDIA_TYPE_SUBTITLE:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment