ffmpeg: read tags from AVFormatContext
The ffmpeg library provides some of the song metadata in the AVFormatContext struct. Pass it from there to MPD.
This commit is contained in:
		 Viliam Mateicka
					Viliam Mateicka
				
			
				
					committed by
					
						 Max Kellermann
						Max Kellermann
					
				
			
			
				
	
			
			
			 Max Kellermann
						Max Kellermann
					
				
			
						parent
						
							eac4ed2241
						
					
				
				
					commit
					33b5015469
				
			| @@ -301,11 +301,22 @@ ffmpeg_decode(struct decoder *decoder, struct input_stream *input) | |||||||
| static bool ffmpeg_tag_internal(struct ffmpeg_context *ctx) | static bool ffmpeg_tag_internal(struct ffmpeg_context *ctx) | ||||||
| { | { | ||||||
| 	struct tag *tag = (struct tag *) ctx->tag; | 	struct tag *tag = (struct tag *) ctx->tag; | ||||||
|  | 	const AVFormatContext *f = ctx->format_context; | ||||||
|  |  | ||||||
| 	if (ctx->format_context->duration != (int)AV_NOPTS_VALUE) { | 	tag->time = 0; | ||||||
| 		tag->time = ctx->format_context->duration / AV_TIME_BASE; | 	if (f->duration != (int)AV_NOPTS_VALUE) | ||||||
| 	} else { | 		tag->time = f->duration / AV_TIME_BASE; | ||||||
| 		tag->time = 0; | 	if (f->author[0]) | ||||||
|  | 		tag_add_item(tag, TAG_ITEM_ARTIST, f->author); | ||||||
|  | 	if (f->title[0]) | ||||||
|  | 		tag_add_item(tag, TAG_ITEM_TITLE, f->title); | ||||||
|  | 	if (f->album[0]) | ||||||
|  | 		tag_add_item(tag, TAG_ITEM_ALBUM, f->album); | ||||||
|  |  | ||||||
|  | 	if (f->track > 0) { | ||||||
|  | 		char buffer[16]; | ||||||
|  | 		snprintf(buffer, sizeof(buffer), "%d", f->track); | ||||||
|  | 		tag_add_item(tag, TAG_ITEM_TRACK, buffer); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return true; | 	return true; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user