[FFmpeg-devel] [PATCH] lavf/adtsenc: Add support for APE tags

Thierry Foucu tfoucu at gmail.com
Fri Jul 12 06:09:09 CEST 2013


On Thu, Jul 11, 2013 at 4:40 PM, James Almer <jamrial at gmail.com> wrote:

> Should fix ticket #2269
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavformat/Makefile  |  2 +-
>  libavformat/adtsenc.c | 30 ++++++++++++++++++++++++++++++
>  2 files changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/Makefile b/libavformat/Makefile
> index 3c4a3c8..2d246bf 100644
> --- a/libavformat/Makefile
> +++ b/libavformat/Makefile
> @@ -60,7 +60,7 @@ OBJS-$(CONFIG_ADF_DEMUXER)               += bintext.o
> sauce.o
>  OBJS-$(CONFIG_ADP_DEMUXER)               += adp.o
>  OBJS-$(CONFIG_ADX_DEMUXER)               += adxdec.o
>  OBJS-$(CONFIG_ADX_MUXER)                 += rawenc.o
> -OBJS-$(CONFIG_ADTS_MUXER)                += adtsenc.o
> +OBJS-$(CONFIG_ADTS_MUXER)                += adtsenc.o apetag.o
>  OBJS-$(CONFIG_AEA_DEMUXER)               += aea.o pcm.o
>  OBJS-$(CONFIG_AFC_DEMUXER)               += afc.o
>  OBJS-$(CONFIG_AIFF_DEMUXER)              += aiffdec.o pcm.o isom.o \
> diff --git a/libavformat/adtsenc.c b/libavformat/adtsenc.c
> index 60d7b07..94fb494 100644
> --- a/libavformat/adtsenc.c
> +++ b/libavformat/adtsenc.c
> @@ -24,16 +24,20 @@
>  #include "libavcodec/put_bits.h"
>  #include "libavcodec/avcodec.h"
>  #include "libavcodec/mpeg4audio.h"
> +#include "libavutil/opt.h"
>  #include "avformat.h"
> +#include "apetag.h"
>
>  #define ADTS_HEADER_SIZE 7
>
>  typedef struct {
> +    AVClass *class;
>      int write_adts;
>      int objecttype;
>      int sample_rate_index;
>      int channel_conf;
>      int pce_size;
> +    int apetag;
>      uint8_t pce_data[MAX_PCE_SIZE];
>  } ADTSContext;
>
> @@ -162,6 +166,30 @@ static int adts_write_packet(AVFormatContext *s,
> AVPacket *pkt)
>      return 0;
>  }
>
> +static int adts_write_trailer(AVFormatContext *s)
> +{
> +    ADTSContext *adts = s->priv_data;
> +
> +    if (adts->apetag)
> +        ff_ape_write_tag(s);
> +
> +    return 0;
> +}
> +
> +#define ENC AV_OPT_FLAG_ENCODING_PARAM
> +#define OFFSET(obj) offsetof(ADTSContext, obj)
> +static const AVOption options[] = {
> +    { "apetag", "Enable APE tag writing", OFFSET(apetag),
> AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, ENC},
> +    { NULL },
> +};
> +
>

Thanks for adding an option.


> +static const AVClass adts_muxer_class = {
> +    .class_name     = "ADTS muxer",
> +    .item_name      = av_default_item_name,
> +    .option         = options,
> +    .version        = LIBAVUTIL_VERSION_INT,
> +};
> +
>  AVOutputFormat ff_adts_muxer = {
>      .name              = "adts",
>      .long_name         = NULL_IF_CONFIG_SMALL("ADTS AAC (Advanced Audio
> Coding)"),
> @@ -172,4 +200,6 @@ AVOutputFormat ff_adts_muxer = {
>      .video_codec       = AV_CODEC_ID_NONE,
>      .write_header      = adts_write_header,
>      .write_packet      = adts_write_packet,
> +    .write_trailer     = adts_write_trailer,
> +    .priv_class        = &adts_muxer_class,
>  };
> --
> 1.8.1.5
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list