Merge commit '54bc15d5ebfd07fd468743ba29f709ea19e840b9'
* commit '54bc15d5ebfd07fd468743ba29f709ea19e840b9': id3v2: fix reading v2.2 attached pictures Conflicts: libavformat/id3v2.c See: 05c3c568dccd6c42fdf6eea891d08c71fe2ee772 Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
						commit
						eb215be9ce
					
				@ -404,7 +404,8 @@ error:
 | 
				
			|||||||
 * Parse GEOB tag into a ID3v2ExtraMetaGEOB struct.
 | 
					 * Parse GEOB tag into a ID3v2ExtraMetaGEOB struct.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen,
 | 
					static void read_geobtag(AVFormatContext *s, AVIOContext *pb, int taglen,
 | 
				
			||||||
                         const char *tag, ID3v2ExtraMeta **extra_meta, int isv34)
 | 
					                         const char *tag, ID3v2ExtraMeta **extra_meta,
 | 
				
			||||||
 | 
					                         int isv34)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ID3v2ExtraMetaGEOB *geob_data = NULL;
 | 
					    ID3v2ExtraMetaGEOB *geob_data = NULL;
 | 
				
			||||||
    ID3v2ExtraMeta *new_extra     = NULL;
 | 
					    ID3v2ExtraMeta *new_extra     = NULL;
 | 
				
			||||||
@ -536,7 +537,8 @@ static void free_apic(void *obj)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen,
 | 
					static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen,
 | 
				
			||||||
                      const char *tag, ID3v2ExtraMeta **extra_meta, int isv34)
 | 
					                      const char *tag, ID3v2ExtraMeta **extra_meta,
 | 
				
			||||||
 | 
					                      int isv34)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int enc, pic_type;
 | 
					    int enc, pic_type;
 | 
				
			||||||
    char mimetype[64];
 | 
					    char mimetype[64];
 | 
				
			||||||
@ -546,7 +548,7 @@ static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen,
 | 
				
			|||||||
    ID3v2ExtraMeta *new_extra = NULL;
 | 
					    ID3v2ExtraMeta *new_extra = NULL;
 | 
				
			||||||
    int64_t end               = avio_tell(pb) + taglen;
 | 
					    int64_t end               = avio_tell(pb) + taglen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (taglen <= 4)
 | 
					    if (taglen <= 4 || (!isv34 && taglen <= 6))
 | 
				
			||||||
        goto fail;
 | 
					        goto fail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    new_extra = av_mallocz(sizeof(*new_extra));
 | 
					    new_extra = av_mallocz(sizeof(*new_extra));
 | 
				
			||||||
@ -559,11 +561,13 @@ static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    /* mimetype */
 | 
					    /* mimetype */
 | 
				
			||||||
    if (isv34) {
 | 
					    if (isv34) {
 | 
				
			||||||
    taglen -= avio_get_str(pb, taglen, mimetype, sizeof(mimetype));
 | 
					        taglen -= avio_get_str(pb, taglen, mimetype, sizeof(mimetype));
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        avio_read(pb, mimetype, 3);
 | 
					        avio_read(pb, mimetype, 3);
 | 
				
			||||||
        mimetype[3] = 0;
 | 
					        mimetype[3] = 0;
 | 
				
			||||||
 | 
					        taglen    -= 3;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while (mime->id != AV_CODEC_ID_NONE) {
 | 
					    while (mime->id != AV_CODEC_ID_NONE) {
 | 
				
			||||||
        if (!av_strncasecmp(mime->str, mimetype, sizeof(mimetype))) {
 | 
					        if (!av_strncasecmp(mime->str, mimetype, sizeof(mimetype))) {
 | 
				
			||||||
            id = mime->id;
 | 
					            id = mime->id;
 | 
				
			||||||
@ -718,7 +722,8 @@ typedef struct ID3v2EMFunc {
 | 
				
			|||||||
    const char *tag3;
 | 
					    const char *tag3;
 | 
				
			||||||
    const char *tag4;
 | 
					    const char *tag4;
 | 
				
			||||||
    void (*read)(AVFormatContext *s, AVIOContext *pb, int taglen,
 | 
					    void (*read)(AVFormatContext *s, AVIOContext *pb, int taglen,
 | 
				
			||||||
                 const char *tag, ID3v2ExtraMeta **extra_meta, int isv34);
 | 
					                 const char *tag, ID3v2ExtraMeta **extra_meta,
 | 
				
			||||||
 | 
					                 int isv34);
 | 
				
			||||||
    void (*free)(void *obj);
 | 
					    void (*free)(void *obj);
 | 
				
			||||||
} ID3v2EMFunc;
 | 
					} ID3v2EMFunc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user