Module: libav
Branch: master
Commit: 9e71cc81f3655cacf0f91860fba3043f13b64059

Author:    Baptiste Coudurier <[email protected]>
Committer: Vittorio Giovara <[email protected]>
Date:      Wed Mar 21 14:18:16 2012 -0700

movdec: handle 0x7fff langcode as macintosh per the specs

The correct point that seperates ISO and MAC language codes is 0x400
according to the current QT spec. Old QT specs did not list where this
seperation is but apparently only defined the meaning of the first 137.

---

 libavformat/isom.c |    2 +-
 libavformat/mov.c  |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/isom.c b/libavformat/isom.c
index b0923c4..1748d7c 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -355,7 +355,7 @@ int ff_mov_lang_to_iso639(unsigned code, char to[4])
     memset(to, 0, 4);
     /* is it the mangled iso code? */
     /* see http://www.geocities.com/xhelmboyx/quicktime/formats/mp4-layout.txt 
*/
-    if (code > 138) {
+    if (code >= 0x400 && code != 0x7fff) {
         for (i = 2; i >= 0; i--) {
             to[i] = 0x60 + (code & 0x1f);
             code >>= 5;
diff --git a/libavformat/mov.c b/libavformat/mov.c
index dc5b42b..6f72ce8 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -298,7 +298,7 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext 
*pb, MOVAtom atom)
     if (parse)
         parse(c, pb, str_size, key);
     else {
-        if (data_type == 3 || (data_type == 0 && langcode < 0x800)) { // MAC 
Encoded
+        if (data_type == 3 || (data_type == 0 && (langcode < 0x400 || langcode 
== 0x7fff))) { // MAC Encoded
             mov_read_mac_string(c, pb, str_size, str, sizeof(str));
         } else {
             avio_read(pb, str, str_size);

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to