---

Reviews in patch form please.

 libavformat/id3v2.c | 127 +++++++++++++++++++++++++++++++---------------------
 1 file changed, 76 insertions(+), 51 deletions(-)

diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c
index 7bcea21..a6a483c 100644
--- a/libavformat/id3v2.c
+++ b/libavformat/id3v2.c
@@ -259,7 +259,8 @@ static int decode_str(AVFormatContext *s, AVIOContext *pb, 
int encoding,
 /**
  * Parse a text tag.
  */
-static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen, const 
char *key)
+static void read_ttag(AVFormatContext *s, AVIOContext *pb, int taglen,
+                      const char *key)
 {
     uint8_t *dst;
     int encoding, dict_flags = AV_DICT_DONT_OVERWRITE | 
AV_DICT_DONT_STRDUP_VAL;
@@ -300,10 +301,12 @@ static void read_ttag(AVFormatContext *s, AVIOContext 
*pb, int taglen, const cha
 /**
  * Parse GEOB tag into a ID3v2ExtraMetaGEOB struct.
  */
-static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen, char 
*tag, ID3v2ExtraMeta **extra_meta)
+static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen,
+                         char *tag,
+                         ID3v2ExtraMeta **extra_meta)
 {
     ID3v2ExtraMetaGEOB *geob_data = NULL;
-    ID3v2ExtraMeta *new_extra = NULL;
+    ID3v2ExtraMeta *new_extra     = NULL;
     char encoding;
     unsigned int len;

@@ -312,13 +315,15 @@ static void read_geobtag(AVFormatContext *s, AVIOContext 
*pb, int taglen, char *

     geob_data = av_mallocz(sizeof(ID3v2ExtraMetaGEOB));
     if (!geob_data) {
-        av_log(s, AV_LOG_ERROR, "Failed to alloc %zu bytes\n", 
sizeof(ID3v2ExtraMetaGEOB));
+        av_log(s, AV_LOG_ERROR, "Failed to alloc %zu bytes\n",
+               sizeof(ID3v2ExtraMetaGEOB));
         return;
     }

     new_extra = av_mallocz(sizeof(ID3v2ExtraMeta));
     if (!new_extra) {
-        av_log(s, AV_LOG_ERROR, "Failed to alloc %zu bytes\n", 
sizeof(ID3v2ExtraMeta));
+        av_log(s, AV_LOG_ERROR, "Failed to alloc %zu bytes\n",
+               sizeof(ID3v2ExtraMeta));
         goto fail;
     }

@@ -327,7 +332,8 @@ static void read_geobtag(AVFormatContext *s, AVIOContext 
*pb, int taglen, char *
     taglen--;

     /* read MIME type (always ISO-8859) */
-    if (decode_str(s, pb, ID3v2_ENCODING_ISO8859, &geob_data->mime_type, 
&taglen) < 0
+    if (decode_str(s, pb, ID3v2_ENCODING_ISO8859, &geob_data->mime_type,
+                   &taglen) < 0
         || taglen <= 0)
         goto fail;

@@ -349,18 +355,19 @@ static void read_geobtag(AVFormatContext *s, AVIOContext 
*pb, int taglen, char *
             goto fail;
         }
         if ((len = avio_read(pb, geob_data->data, taglen)) < taglen)
-            av_log(s, AV_LOG_WARNING, "Error reading GEOB frame, data 
truncated.\n");
+            av_log(s, AV_LOG_WARNING,
+                   "Error reading GEOB frame, data truncated.\n");
         geob_data->datasize = len;
     } else {
-        geob_data->data = NULL;
+        geob_data->data     = NULL;
         geob_data->datasize = 0;
     }

     /* add data to the list */
-    new_extra->tag = "GEOB";
+    new_extra->tag  = "GEOB";
     new_extra->data = geob_data;
     new_extra->next = *extra_meta;
-    *extra_meta = new_extra;
+    *extra_meta     = new_extra;

     return;

@@ -373,11 +380,12 @@ fail:

 static int is_number(const char *str)
 {
-    while (*str >= '0' && *str <= '9') str++;
+    while (*str >= '0' && *str <= '9')
+        str++;
     return !*str;
 }

-static AVDictionaryEntry* get_date_tag(AVDictionary *m, const char *tag)
+static AVDictionaryEntry *get_date_tag(AVDictionary *m, const char *tag)
 {
     AVDictionaryEntry *t;
     if ((t = av_dict_get(m, tag, NULL, AV_DICT_MATCH_CASE)) &&
@@ -389,28 +397,28 @@ static AVDictionaryEntry* get_date_tag(AVDictionary *m, 
const char *tag)
 static void merge_date(AVDictionary **m)
 {
     AVDictionaryEntry *t;
-    char date[17] = {0};      // YYYY-MM-DD hh:mm
+    char date[17] = { 0 };      // YYYY-MM-DD hh:mm

     if (!(t = get_date_tag(*m, "TYER")) &&
         !(t = get_date_tag(*m, "TYE")))
         return;
     av_strlcpy(date, t->value, 5);
     av_dict_set(m, "TYER", NULL, 0);
-    av_dict_set(m, "TYE",  NULL, 0);
+    av_dict_set(m, "TYE", NULL, 0);

     if (!(t = get_date_tag(*m, "TDAT")) &&
         !(t = get_date_tag(*m, "TDA")))
         goto finish;
     snprintf(date + 4, sizeof(date) - 4, "-%.2s-%.2s", t->value + 2, t->value);
     av_dict_set(m, "TDAT", NULL, 0);
-    av_dict_set(m, "TDA",  NULL, 0);
+    av_dict_set(m, "TDA", NULL, 0);

     if (!(t = get_date_tag(*m, "TIME")) &&
         !(t = get_date_tag(*m, "TIM")))
         goto finish;
     snprintf(date + 10, sizeof(date) - 10, " %.2s:%.2s", t->value, t->value + 
2);
     av_dict_set(m, "TIME", NULL, 0);
-    av_dict_set(m, "TIM",  NULL, 0);
+    av_dict_set(m, "TIM", NULL, 0);

 finish:
     if (date[0])
@@ -425,15 +433,17 @@ static void free_apic(void *obj)
     av_freep(&apic);
 }

-static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen, char 
*tag, ID3v2ExtraMeta **extra_meta)
+static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen,
+                      char *tag,
+                      ID3v2ExtraMeta **extra_meta)
 {
     int enc, pic_type;
-    char             mimetype[64];
-    const CodecMime     *mime = ff_id3v2_mime_tags;
-    enum AVCodecID           id = AV_CODEC_ID_NONE;
-    ID3v2ExtraMetaAPIC  *apic = NULL;
+    char mimetype[64];
+    const CodecMime *mime     = ff_id3v2_mime_tags;
+    enum AVCodecID id         = AV_CODEC_ID_NONE;
+    ID3v2ExtraMetaAPIC *apic  = NULL;
     ID3v2ExtraMeta *new_extra = NULL;
-    int64_t               end = avio_tell(pb) + taglen;
+    int64_t end               = avio_tell(pb) + taglen;

     if (taglen <= 4)
         goto fail;
@@ -456,7 +466,9 @@ static void read_apic(AVFormatContext *s, AVIOContext *pb, 
int taglen, char *tag
         mime++;
     }
     if (id == AV_CODEC_ID_NONE) {
-        av_log(s, AV_LOG_WARNING, "Unknown attached picture mimetype: %s, 
skipping.\n", mimetype);
+        av_log(s, AV_LOG_WARNING,
+               "Unknown attached picture mimetype: %s, skipping.\n",
+               mimetype);
         goto fail;
     }
     apic->id = id;
@@ -465,14 +477,16 @@ static void read_apic(AVFormatContext *s, AVIOContext 
*pb, int taglen, char *tag
     pic_type = avio_r8(pb);
     taglen--;
     if (pic_type < 0 || pic_type >= FF_ARRAY_ELEMS(ff_id3v2_picture_types)) {
-        av_log(s, AV_LOG_WARNING, "Unknown attached picture type %d.\n", 
pic_type);
+        av_log(s, AV_LOG_WARNING, "Unknown attached picture type %d.\n",
+               pic_type);
         pic_type = 0;
     }
     apic->type = ff_id3v2_picture_types[pic_type];

     /* description and picture data */
     if (decode_str(s, pb, enc, &apic->description, &taglen) < 0) {
-        av_log(s, AV_LOG_ERROR, "Error decoding attached picture 
description.\n");
+        av_log(s, AV_LOG_ERROR,
+               "Error decoding attached picture description.\n");
         goto fail;
     }

@@ -481,10 +495,10 @@ static void read_apic(AVFormatContext *s, AVIOContext 
*pb, int taglen, char *tag
         goto fail;
     memset(apic->buf->data + taglen, 0, FF_INPUT_BUFFER_PADDING_SIZE);

-    new_extra->tag    = "APIC";
-    new_extra->data   = apic;
-    new_extra->next   = *extra_meta;
-    *extra_meta       = new_extra;
+    new_extra->tag  = "APIC";
+    new_extra->data = apic;
+    new_extra->next = *extra_meta;
+    *extra_meta     = new_extra;

     return;

@@ -498,7 +512,8 @@ fail:
 typedef struct ID3v2EMFunc {
     const char *tag3;
     const char *tag4;
-    void (*read)(AVFormatContext*, AVIOContext*, int, char*, ID3v2ExtraMeta 
**);
+    void (*read)(AVFormatContext *, AVIOContext *, int, char *,
+                 ID3v2ExtraMeta **);
     void (*free)(void *obj);
 } ID3v2EMFunc;

@@ -527,7 +542,9 @@ static const ID3v2EMFunc *get_extra_meta_func(const char 
*tag, int isv34)
     return NULL;
 }

-static void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, 
uint8_t flags, ID3v2ExtraMeta **extra_meta)
+static void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version,
+                           uint8_t flags,
+                           ID3v2ExtraMeta **extra_meta)
 {
     int isv34, tlen, unsync;
     char tag[5];
@@ -546,13 +563,13 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, 
uint8_t version, uint8_t
             reason = "compression";
             goto error;
         }
-        isv34 = 0;
+        isv34     = 0;
         taghdrlen = 6;
         break;

     case 3:
     case 4:
-        isv34 = 1;
+        isv34     = 1;
         taghdrlen = 10;
         break;

@@ -577,24 +594,26 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, 
uint8_t version, uint8_t

     while (len >= taghdrlen) {
         unsigned int tflags = 0;
-        int tunsync = 0;
+        int tunsync         = 0;

         if (isv34) {
             avio_read(s->pb, tag, 4);
             tag[4] = 0;
-            if(version==3){
+            if (version == 3) {
                 tlen = avio_rb32(s->pb);
-            }else
+            } else
                 tlen = get_size(s->pb, 4);
-            tflags = avio_rb16(s->pb);
+            tflags  = avio_rb16(s->pb);
             tunsync = tflags & ID3v2_FLAG_UNSYNCH;
         } else {
             avio_read(s->pb, tag, 3);
             tag[3] = 0;
-            tlen = avio_rb24(s->pb);
+            tlen   = avio_rb24(s->pb);
         }
         if (tlen < 0 || tlen > len - taghdrlen) {
-            av_log(s, AV_LOG_WARNING, "Invalid size in frame %s, skipping the 
rest of tag.\n", tag);
+            av_log(s, AV_LOG_WARNING,
+                   "Invalid size in frame %s, skipping the rest of tag.\n",
+                   tag);
             break;
         }
         len -= taghdrlen + tlen;
@@ -602,7 +621,8 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, 
uint8_t version, uint8_t

         if (!tlen) {
             if (tag[0])
-                av_log(s, AV_LOG_DEBUG, "Invalid empty frame %s, skipping.\n", 
tag);
+                av_log(s, AV_LOG_DEBUG, "Invalid empty frame %s, skipping.\n",
+                       tag);
             continue;
         }

@@ -612,7 +632,9 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, 
uint8_t version, uint8_t
         }

         if (tflags & (ID3v2_FLAG_ENCRYPTION | ID3v2_FLAG_COMPRESSION)) {
-            av_log(s, AV_LOG_WARNING, "Skipping encrypted/compressed ID3v2 
frame %s.\n", tag);
+            av_log(s, AV_LOG_WARNING,
+                   "Skipping encrypted/compressed ID3v2 frame %s.\n",
+                   tag);
             avio_skip(s->pb, tlen);
         /* check for text tag or supported special meta tag */
         } else if (tag[0] == 'T' || (extra_meta && (extra_func = 
get_extra_meta_func(tag, isv34)))) {
@@ -632,9 +654,10 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, 
uint8_t version, uint8_t
                         *b++ = val ? val : avio_r8(s->pb);
                     }
                 }
-                ffio_init_context(&pb, buffer, b - buffer, 0, NULL, NULL, 
NULL, NULL);
+                ffio_init_context(&pb, buffer, b - buffer, 0, NULL, NULL, NULL,
+                                  NULL);
                 tlen = b - buffer;
-                pbx = &pb; // read from sync buffer
+                pbx  = &pb; // read from sync buffer
             } else {
                 pbx = s->pb; // read straight from input
             }
@@ -644,8 +667,7 @@ static void ff_id3v2_parse(AVFormatContext *s, int len, 
uint8_t version, uint8_t
             else
                 /* parse special meta tag */
                 extra_func->read(s, pbx, tlen, tag, extra_meta);
-        }
-        else if (!tag[0]) {
+        } else if (!tag[0]) {
             if (tag[1])
                 av_log(s, AV_LOG_WARNING, "invalid frame id, assuming 
padding");
             avio_skip(s->pb, tlen);
@@ -659,19 +681,22 @@ seek:
     if (version == 4 && flags & 0x10) /* Footer preset, always 10 bytes, skip 
over it */
         end += 10;

-  error:
+error:
     if (reason)
-        av_log(s, AV_LOG_INFO, "ID3v2.%d tag skipped, cannot handle %s\n", 
version, reason);
+        av_log(s, AV_LOG_INFO, "ID3v2.%d tag skipped, cannot handle %s\n",
+               version,
+               reason);
     avio_seek(s->pb, end, SEEK_SET);
     av_free(buffer);
     return;
 }

-void ff_id3v2_read(AVFormatContext *s, const char *magic, ID3v2ExtraMeta 
**extra_meta)
+void ff_id3v2_read(AVFormatContext *s, const char *magic,
+                   ID3v2ExtraMeta **extra_meta)
 {
     int len, ret;
     uint8_t buf[ID3v2_HEADER_SIZE];
-    int     found_header;
+    int found_header;
     int64_t off;

     do {
@@ -680,8 +705,8 @@ void ff_id3v2_read(AVFormatContext *s, const char *magic, 
ID3v2ExtraMeta **extra
         ret = avio_read(s->pb, buf, ID3v2_HEADER_SIZE);
         if (ret != ID3v2_HEADER_SIZE)
             break;
-            found_header = ff_id3v2_match(buf, magic);
-            if (found_header) {
+        found_header = ff_id3v2_match(buf, magic);
+        if (found_header) {
             /* parse ID3v2 header */
             len = ((buf[6] & 0x7f) << 21) |
                   ((buf[7] & 0x7f) << 14) |
--
1.8.1.5

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

Reply via email to