You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avformat: fix ID3v2 parser for v2.2 comment frames
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
				
					committed by
					
						 Michael Niedermayer
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							b9f2f93261
						
					
				
				
					commit
					ecd360041e
				
			| @@ -823,6 +823,7 @@ static void id3v2_parse(AVIOContext *pb, AVDictionary **metadata, | ||||
|     const ID3v2EMFunc *extra_func = NULL; | ||||
|     unsigned char *uncompressed_buffer = NULL; | ||||
|     av_unused int uncompressed_buffer_size = 0; | ||||
|     const char *comm_frame; | ||||
|  | ||||
|     av_log(s, AV_LOG_DEBUG, "id3v2 ver:%d flags:%02X len:%d\n", version, flags, len); | ||||
|  | ||||
| @@ -834,12 +835,14 @@ static void id3v2_parse(AVIOContext *pb, AVDictionary **metadata, | ||||
|         } | ||||
|         isv34     = 0; | ||||
|         taghdrlen = 6; | ||||
|         comm_frame = "COM"; | ||||
|         break; | ||||
|  | ||||
|     case 3: | ||||
|     case 4: | ||||
|         isv34     = 1; | ||||
|         taghdrlen = 10; | ||||
|         comm_frame = "COMM"; | ||||
|         break; | ||||
|  | ||||
|     default: | ||||
| @@ -950,7 +953,7 @@ static void id3v2_parse(AVIOContext *pb, AVDictionary **metadata, | ||||
|         /* check for text tag or supported special meta tag */ | ||||
|         } else if (tag[0] == 'T' || | ||||
|                    !memcmp(tag, "USLT", 4) || | ||||
|                    !memcmp(tag, "COMM", 4) || | ||||
|                    !strcmp(tag, comm_frame) || | ||||
|                    (extra_meta && | ||||
|                     (extra_func = get_extra_meta_func(tag, isv34)))) { | ||||
|             pbx = pb; | ||||
| @@ -1018,7 +1021,7 @@ static void id3v2_parse(AVIOContext *pb, AVDictionary **metadata, | ||||
|                 read_ttag(s, pbx, tlen, metadata, tag); | ||||
|             else if (!memcmp(tag, "USLT", 4)) | ||||
|                 read_uslt(s, pbx, tlen, metadata); | ||||
|             else if (!memcmp(tag, "COMM", 4)) | ||||
|             else if (!strcmp(tag, comm_frame)) | ||||
|                 read_comment(s, pbx, tlen, metadata); | ||||
|             else | ||||
|                 /* parse special meta tag */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user