[FFmpeg-devel] [PATCHv4] flac: ignore duplicated ID3 tags if vorbis tags exist

Timothy Gu timothygu99 at gmail.com
Fri Feb 6 06:10:11 CET 2015


On Thu Feb 05 2015 at 7:57:21 PM Ben Boeckel <mathstuf at gmail.com> wrote:

> FLAC doesn't really support ID3 tags, so warn if they are found at all.
> If vorbis tags are found, toss out duplicate ID3 tags.
>
> Fixes #3799.
>
> Signed-off-by: Ben Boeckel <mathstuf at gmail.com>
> ---
>  libavformat/flacdec.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c
> index 1a8dc19..fdb8e46 100644
> --- a/libavformat/flacdec.c
> +++ b/libavformat/flacdec.c
> @@ -33,6 +33,7 @@ static int flac_read_header(AVFormatContext *s)
>      int ret, metadata_last=0, metadata_type, metadata_size,
> found_streaminfo=0;
>      uint8_t header[4];
>      uint8_t *buffer=NULL;
> +    int has_idv3 = 0;
>      AVStream *st = avformat_new_stream(s, NULL);
>      if (!st)
>          return AVERROR(ENOMEM);
> @@ -47,6 +48,19 @@ static int flac_read_header(AVFormatContext *s)
>          return 0;
>      }
>
> +    if (av_dict_count(s->metadata)) {
> +        /* XXX: Is there a better way to parse this out? ID3 parsing is
> done
> +         * all the way out in avformat_open_input. */
> +        has_idv3 = 1;
> +    }
> +
> +    if (has_idv3) {
> +        int level = AV_LOG_WARNING;
> +        if (s->error_recognition & AV_EF_COMPLIANT)
> +            level = AV_LOG_ERROR;
> +        av_log(s, level, "Spec-compliant FLAC do not support ID3
> tags.\n");


Not sure if this is a good idea but AV_EF_COMPLIANT doxygen says:

consider all spec non compliances as errors
(bad grammar BTW)

So you should probably return an error too for that case.

Timothy


More information about the ffmpeg-devel mailing list