On 10/12/2012 12:27 PM, Luca Barbato wrote: > The native tags will be used all when available. > --- > doc/nut.texi | 2 +- > libavformat/nut.c | 27 ++++++++++++++++++++++++++- > libavformat/nut.h | 1 + > libavformat/nutdec.c | 7 ++++++- > 4 files changed, 34 insertions(+), 3 deletions(-) > > diff --git a/doc/nut.texi b/doc/nut.texi > index dafbb39..1c23934 100644 > --- a/doc/nut.texi > +++ b/doc/nut.texi > @@ -50,7 +50,7 @@ to be read big-endian. > @end multitable > > <type> is S for signed integer, U for unsigned integer, F for IEEE float > -<interleaving> is D for default, as a historical artefact. > +<interleaving> is D for default, P is for planar. > <bits> is 8/16/24/32 > > @example > diff --git a/libavformat/nut.c b/libavformat/nut.c > index b666bff..e367d1c 100644 > --- a/libavformat/nut.c > +++ b/libavformat/nut.c > @@ -90,8 +90,33 @@ const AVCodecTag ff_nut_video_tags[] = { > { AV_CODEC_ID_NONE , 0 } > }; > > +const AVCodecTag ff_nut_audio_tags[] = { > + { AV_CODEC_ID_PCM_ALAW, MKTAG('A', 'L', 'A', 'W') }, > + { AV_CODEC_ID_PCM_MULAW, MKTAG('U', 'L', 'A', 'W') }, > + { AV_CODEC_ID_PCM_F32BE, MKTAG(32 , 'D', 'F', 'P') }, > + { AV_CODEC_ID_PCM_F32LE, MKTAG('P', 'F', 'D', 32 ) }, > + { AV_CODEC_ID_PCM_F64BE, MKTAG(64 , 'D', 'F', 'P') }, > + { AV_CODEC_ID_PCM_F64LE, MKTAG('P', 'F', 'D', 64 ) }, > + { AV_CODEC_ID_PCM_S16BE, MKTAG(16 , 'D', 'S', 'P') }, > + { AV_CODEC_ID_PCM_S16LE, MKTAG('P', 'S', 'D', 16 ) }, > + { AV_CODEC_ID_PCM_S24BE, MKTAG(24 , 'D', 'S', 'P') }, > + { AV_CODEC_ID_PCM_S24LE, MKTAG('P', 'S', 'D', 24 ) }, > + { AV_CODEC_ID_PCM_S32BE, MKTAG(32 , 'D', 'S', 'P') }, > + { AV_CODEC_ID_PCM_S32LE, MKTAG('P', 'S', 'D', 32 ) }, > + { AV_CODEC_ID_PCM_S8, MKTAG('P', 'S', 'D', 8 ) }, > + { AV_CODEC_ID_PCM_U16BE, MKTAG(16 , 'D', 'U', 'P') }, > + { AV_CODEC_ID_PCM_U16LE, MKTAG('P', 'U', 'D', 16 ) }, > + { AV_CODEC_ID_PCM_U24BE, MKTAG(24 , 'D', 'U', 'P') }, > + { AV_CODEC_ID_PCM_U24LE, MKTAG('P', 'U', 'D', 24 ) }, > + { AV_CODEC_ID_PCM_U32BE, MKTAG(32 , 'D', 'U', 'P') }, > + { AV_CODEC_ID_PCM_U32LE, MKTAG('P', 'U', 'D', 32 ) }, > + { AV_CODEC_ID_PCM_U8, MKTAG('P', 'U', 'D', 8 ) }, > + { AV_CODEC_ID_PCM_S16LE_PLANAR, MKTAG('P', 'S', 'P', 16 ) }, > + { AV_CODEC_ID_NONE, 0 } > +}; > + > const AVCodecTag * const ff_nut_codec_tags[] = { > - ff_nut_video_tags, ff_nut_subtitle_tags, > + ff_nut_video_tags, ff_nut_audio_tags, ff_nut_subtitle_tags, > ff_codec_bmp_tags, ff_codec_wav_tags, 0 > }; > > diff --git a/libavformat/nut.h b/libavformat/nut.h > index 335eceb..a91a109 100644 > --- a/libavformat/nut.h > +++ b/libavformat/nut.h > @@ -105,6 +105,7 @@ typedef struct NUTContext { > > extern const AVCodecTag ff_nut_subtitle_tags[]; > extern const AVCodecTag ff_nut_video_tags[]; > +extern const AVCodecTag ff_nut_audio_tags[]; > > extern const AVCodecTag * const ff_nut_codec_tags[]; > > diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c > index 8448e13..9b1891f 100644 > --- a/libavformat/nutdec.c > +++ b/libavformat/nutdec.c > @@ -358,7 +358,12 @@ static int decode_stream_header(NUTContext *nut) > break; > case 1: > st->codec->codec_type = AVMEDIA_TYPE_AUDIO; > - st->codec->codec_id = ff_codec_get_id(ff_codec_wav_tags, tmp); > + st->codec->codec_id = av_codec_get_id((const AVCodecTag * const > []) { > + ff_nut_audio_tags, > + ff_codec_wav_tags, > + 0 > + }, > + tmp); > break; > case 2: > st->codec->codec_type = AVMEDIA_TYPE_SUBTITLE;
LGTM if tested. -Justin _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel