Skip to content

Commit

Permalink
mpegts: add all stream languages into metadata
Browse files Browse the repository at this point in the history
This is used at least on some older DVB broadcasts for dual-mono audio
tracks.

Signed-off-by: Ronald S. Bultje <[email protected]>
  • Loading branch information
anssih authored and rbultje committed Mar 7, 2011
1 parent 688c22e commit 6a7e074
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions libavformat/mpegts.c
Original file line number Diff line number Diff line change
Expand Up @@ -891,7 +891,8 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
{
const uint8_t *desc_end;
int desc_len, desc_tag;
char language[4];
char language[252];
int i;

desc_tag = get8(pp, desc_list_end);
if (desc_tag < 0)
Expand Down Expand Up @@ -960,16 +961,21 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
av_metadata_set2(&st->metadata, "language", language, 0);
break;
case 0x0a: /* ISO 639 language descriptor */
language[0] = get8(pp, desc_end);
language[1] = get8(pp, desc_end);
language[2] = get8(pp, desc_end);
language[3] = 0;
av_metadata_set2(&st->metadata, "language", language, 0);
for (i = 0; i + 4 <= desc_len; i += 4) {
language[i + 0] = get8(pp, desc_end);
language[i + 1] = get8(pp, desc_end);
language[i + 2] = get8(pp, desc_end);
language[i + 3] = ',';
switch (get8(pp, desc_end)) {
case 0x01: st->disposition |= AV_DISPOSITION_CLEAN_EFFECTS; break;
case 0x02: st->disposition |= AV_DISPOSITION_HEARING_IMPAIRED; break;
case 0x03: st->disposition |= AV_DISPOSITION_VISUAL_IMPAIRED; break;
}
}
if (i) {
language[i - 1] = 0;
av_metadata_set2(&st->metadata, "language", language, 0);
}
break;
case 0x05: /* registration descriptor */
st->codec->codec_tag = bytestream_get_le32(pp);
Expand Down

0 comments on commit 6a7e074

Please sign in to comment.