decoder/flac: moved flac_tag_load() to flac_metadata.c
Make this code is reusable.
This commit is contained in:
parent
382691179f
commit
d6d5caae23
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user