aboutsummaryrefslogtreecommitdiff
path: root/libavformat/avienc.c
diff options
context:
space:
mode:
authorErik Olofsson2013-11-09 20:26:00 +0100
committerMichael Niedermayer2013-11-09 20:33:04 +0100
commitf5bffd3a1a1aea5d478161b86ce2029179282d6c (patch)
tree7eb10d2271bc3e2404cbc1c413e760647922d10c /libavformat/avienc.c
parentf591ba60ff4b873b26e3b5c428c5562ffb7e8d41 (diff)
libavf/avienc: store language metadata for XSUB streams
Formatted in such a way that DivX certified players can decode it. Verified on Sony Playstation 3 and Philips DVP3380. Fixes ticket 2385 Signed-off-by: Erik Olofsson <eaj.olofsson@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/avienc.c')
-rw-r--r--libavformat/avienc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libavformat/avienc.c b/libavformat/avienc.c
index 27db3f1f12..45f7a203da 100644
--- a/libavformat/avienc.c
+++ b/libavformat/avienc.c
@@ -26,6 +26,8 @@
#include "avi.h"
#include "avio_internal.h"
#include "riff.h"
+#include "libavformat/avlanguage.h"
+#include "libavutil/avstring.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/dict.h"
#include "libavutil/avassert.h"
@@ -309,6 +311,16 @@ static int avi_write_header(AVFormatContext *s)
ff_riff_write_info_tag(s->pb, "strn", t->value);
t = NULL;
}
+ if(stream->codec_id == AV_CODEC_ID_XSUB
+ && (t = av_dict_get(s->streams[i]->metadata, "language", NULL, 0))) {
+ const char* langstr = av_convert_lang_to(t->value, AV_LANG_ISO639_1);
+ t = NULL;
+ if (langstr) {
+ char* str = av_asprintf("Subtitle - %s-xx;02", langstr);
+ ff_riff_write_info_tag(s->pb, "strn", str);
+ av_free(str);
+ }
+ }
}
if (pb->seekable) {