decoder/flac: moved flac_tag_load() to flac_metadata.c
Make this code is reusable.
This commit is contained in:
		@@ -214,59 +214,6 @@ flac_write_cb(const FLAC__StreamDecoder *dec, const FLAC__Frame *frame,
 | 
				
			|||||||
	return flac_common_write(data, frame, buf, nbytes);
 | 
						return flac_common_write(data, frame, buf, nbytes);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct tag *
 | 
					 | 
				
			||||||
flac_tag_load(const char *file, const char *char_tnum)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct tag *tag;
 | 
					 | 
				
			||||||
	FLAC__Metadata_SimpleIterator *it;
 | 
					 | 
				
			||||||
	FLAC__StreamMetadata *block = NULL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	it = FLAC__metadata_simple_iterator_new();
 | 
					 | 
				
			||||||
	if (!FLAC__metadata_simple_iterator_init(it, file, 1, 0)) {
 | 
					 | 
				
			||||||
		const char *err;
 | 
					 | 
				
			||||||
		FLAC_API FLAC__Metadata_SimpleIteratorStatus s;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		s = FLAC__metadata_simple_iterator_status(it);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		switch (s) { /* slightly more human-friendly messages: */
 | 
					 | 
				
			||||||
		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT:
 | 
					 | 
				
			||||||
			err = "illegal input";
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE:
 | 
					 | 
				
			||||||
			err = "error opening file";
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE:
 | 
					 | 
				
			||||||
			err = "not a FLAC file";
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		default:
 | 
					 | 
				
			||||||
			err = FLAC__Metadata_SimpleIteratorStatusString[s];
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		g_debug("Reading '%s' metadata gave the following error: %s\n",
 | 
					 | 
				
			||||||
			file, err);
 | 
					 | 
				
			||||||
		FLAC__metadata_simple_iterator_delete(it);
 | 
					 | 
				
			||||||
		return NULL;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	tag = tag_new();
 | 
					 | 
				
			||||||
	do {
 | 
					 | 
				
			||||||
		block = FLAC__metadata_simple_iterator_get_block(it);
 | 
					 | 
				
			||||||
		if (!block)
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		flac_tag_apply_metadata(tag, char_tnum, block);
 | 
					 | 
				
			||||||
		FLAC__metadata_object_delete(block);
 | 
					 | 
				
			||||||
	} while (FLAC__metadata_simple_iterator_next(it));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	FLAC__metadata_simple_iterator_delete(it);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (!tag_is_defined(tag)) {
 | 
					 | 
				
			||||||
		tag_free(tag);
 | 
					 | 
				
			||||||
		tag = NULL;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return tag;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7
 | 
					#if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct tag *
 | 
					static struct tag *
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -191,3 +191,56 @@ flac_tag_apply_metadata(struct tag *tag, const char *track,
 | 
				
			|||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct tag *
 | 
				
			||||||
 | 
					flac_tag_load(const char *file, const char *char_tnum)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct tag *tag;
 | 
				
			||||||
 | 
						FLAC__Metadata_SimpleIterator *it;
 | 
				
			||||||
 | 
						FLAC__StreamMetadata *block = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						it = FLAC__metadata_simple_iterator_new();
 | 
				
			||||||
 | 
						if (!FLAC__metadata_simple_iterator_init(it, file, 1, 0)) {
 | 
				
			||||||
 | 
							const char *err;
 | 
				
			||||||
 | 
							FLAC_API FLAC__Metadata_SimpleIteratorStatus s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							s = FLAC__metadata_simple_iterator_status(it);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							switch (s) { /* slightly more human-friendly messages: */
 | 
				
			||||||
 | 
							case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT:
 | 
				
			||||||
 | 
								err = "illegal input";
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE:
 | 
				
			||||||
 | 
								err = "error opening file";
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE:
 | 
				
			||||||
 | 
								err = "not a FLAC file";
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								err = FLAC__Metadata_SimpleIteratorStatusString[s];
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							g_debug("Reading '%s' metadata gave the following error: %s\n",
 | 
				
			||||||
 | 
								file, err);
 | 
				
			||||||
 | 
							FLAC__metadata_simple_iterator_delete(it);
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tag = tag_new();
 | 
				
			||||||
 | 
						do {
 | 
				
			||||||
 | 
							block = FLAC__metadata_simple_iterator_get_block(it);
 | 
				
			||||||
 | 
							if (!block)
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							flac_tag_apply_metadata(tag, char_tnum, block);
 | 
				
			||||||
 | 
							FLAC__metadata_object_delete(block);
 | 
				
			||||||
 | 
						} while (FLAC__metadata_simple_iterator_next(it));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						FLAC__metadata_simple_iterator_delete(it);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!tag_is_defined(tag)) {
 | 
				
			||||||
 | 
							tag_free(tag);
 | 
				
			||||||
 | 
							tag = NULL;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return tag;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,4 +42,7 @@ void
 | 
				
			|||||||
flac_tag_apply_metadata(struct tag *tag, const char *track,
 | 
					flac_tag_apply_metadata(struct tag *tag, const char *track,
 | 
				
			||||||
			const FLAC__StreamMetadata *block);
 | 
								const FLAC__StreamMetadata *block);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct tag *
 | 
				
			||||||
 | 
					flac_tag_load(const char *file, const char *char_tnum);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user