[FFmpeg-devel] [PATCH] RealMedia muxer: support audio codecs other than AC-3

Ronald S. Bultje rsbultje
Mon May 3 00:00:23 CEST 2010


Hi,

On Sun, May 2, 2010 at 10:26 AM, Francesco Lavra
<francescolavra at interfree.it> wrote:
> Updated patches attached.
[..]
> Index: libavformat/rm.h
> ===================================================================
> --- libavformat/rm.h	(revision 23008)
> +++ libavformat/rm.h	(working copy)
> @@ -23,9 +23,11 @@
>  #define AVFORMAT_RM_H
>
>  #include "avformat.h"
> +#include "riff.h"

Why? Rest of patch #1 is OK.

For patch #2:

> Index: libavformat/rmenc.c
> ===================================================================
> --- libavformat/rmenc.c	(revision 23008)
> +++ libavformat/rmenc.c	(working copy)
> @@ -225,7 +225,15 @@
>              put_be32(s, 0x10); /* unknown */
>              put_be16(s, stream->enc->channels);
>              put_str8(s, "Int0"); /* codec name */
> +            if (!stream->enc->codec_tag)
> +                stream->enc->codec_tag =
> +                    ff_codec_get_tag(ff_rm_codec_tags, stream->enc->codec_id);
> +            if (stream->enc->codec_tag) {
> +                put_byte(s, 4); /* tag length */
> +                put_le32(s, stream->enc->codec_tag);
> +            } else {
>              put_str8(s, "dnet"); /* codec name */
> +            }

The term spaghetti code comes to mind. This is of course not OK. I
understand the original muxer was written for AC-3, but it's not OK to
leave it as-is if you want to generalize that.

I'd replace this whole thing. codec_tag is undefined for any practical
purpose. Imagine one of the custom divx variants in AVI, it will set
codec_tag. Do we want that in .rm? Probably not. If codec_id does not
result in a good tag, then error out.

(The second chunk is OK.)

Ronald



More information about the ffmpeg-devel mailing list