Re: [libav-devel] [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc
On Mon, 11 Apr 2011, Luca Barbato wrote: > On 04/08/2011 12:22 AM, Martin Storsjö wrote: > > > The wrapper code is based on the libamr wrapper removed in SVN rev 19365. > > --- > > Changelog |1 + > > configure |6 ++ > > doc/general.texi|3 +- > > libavcodec/Makefile |1 + > > libavcodec/allcodecs.c |1 + > > libavcodec/libvo-amrwbenc.c | 127 > > +++ > > libavcodec/version.h|2 +- > > > Looks ok Pushed // Martin___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc
On 04/08/2011 12:22 AM, Martin Storsjö wrote: > The wrapper code is based on the libamr wrapper removed in SVN rev 19365. > --- > Changelog |1 + > configure |6 ++ > doc/general.texi|3 +- > libavcodec/Makefile |1 + > libavcodec/allcodecs.c |1 + > libavcodec/libvo-amrwbenc.c | 127 > +++ > libavcodec/version.h|2 +- Looks ok -- Luca Barbato Gentoo/linux http://dev.gentoo.org/~lu_zero ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc
On Fri, 8 Apr 2011, Diego Biurrun wrote: > On Thu, Apr 07, 2011 at 12:45:13PM +0300, Martin Storsjö wrote: > > > > --- /dev/null > > +++ b/libavcodec/libvo-amrwbenc.c > > @@ -0,0 +1,126 @@ > > + > > +#include "avcodec.h" > > +#include > > Place system headers before local headers, separate by an empty line. Done // MartinFrom da5a20a118336f68ef504d0cf712d18ccaa7ce50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Tue, 29 Dec 2009 16:48:09 +0200 Subject: [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc The wrapper code is based on the libamr wrapper removed in SVN rev 19365. --- Changelog |1 + configure |6 ++ doc/general.texi|3 +- libavcodec/Makefile |1 + libavcodec/allcodecs.c |1 + libavcodec/libvo-amrwbenc.c | 127 +++ libavcodec/version.h|2 +- 7 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 libavcodec/libvo-amrwbenc.c diff --git a/Changelog b/Changelog index 6a255d4..87ec036 100644 --- a/Changelog +++ b/Changelog @@ -84,6 +84,7 @@ version : - Chronomaster DFA decoder - Mobotix MxPEG decoder - AAC encoding via libvo-aacenc +- AMR-WB encoding via libvo-amrwbenc version 0.6: diff --git a/configure b/configure index 8880fba..c632ce5 100755 --- a/configure +++ b/configure @@ -179,6 +179,7 @@ External library support: --enable-libspeexenable Speex decoding via libspeex [no] --enable-libtheora enable Theora encoding via libtheora [no] --enable-libvo-aacencenable AAC encoding via libvo-aacenc [no] + --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] --enable-libvorbis enable Vorbis encoding via libvorbis, native implementation exists [no] --enable-libvpx enable VP8 support via libvpx [no] @@ -939,6 +940,7 @@ CONFIG_LIST=" libspeex libtheora libvo_aacenc +libvo_amrwbenc libvorbis libvpx libx264 @@ -1387,6 +1389,7 @@ libschroedinger_encoder_deps="libschroedinger" libspeex_decoder_deps="libspeex" libtheora_encoder_deps="libtheora" libvo_aacenc_encoder_deps="libvo_aacenc" +libvo_amrwbenc_encoder_deps="libvo_amrwbenc" libvorbis_encoder_deps="libvorbis" libvpx_decoder_deps="libvpx" libvpx_encoder_deps="libvpx" @@ -2529,6 +2532,7 @@ die_license_disabled nonfree libfaac die_license_disabled version3 libopencore_amrnb die_license_disabled version3 libopencore_amrwb die_license_disabled version3 libvo_aacenc +die_license_disabled version3 libvo_amrwbenc enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; } @@ -2869,6 +2873,7 @@ enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schr enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc +enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg enabled libvpx && { enabled libvpx_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx || @@ -3138,6 +3143,7 @@ echo "libspeex enabled ${libspeex-no}" echo "libtheora enabled ${libtheora-no}" echo "libva enabled ${vaapi-no}" echo "libvo-aacenc support ${libvo_aacenc-no}" +echo "libvo-amrwbenc support${libvo_amrwbenc-no}" echo "libvorbis enabled ${libvorbis-no}" echo "libvpx enabled${libvpx-no}" echo "libx264 enabled ${libx264-no}" diff --git a/doc/general.texi b/doc/general.texi index a8fab31..2c7949d 100644 --- a/doc/general.texi +++ b/doc/general.texi @@ -588,7 +588,8 @@ following image formats are supported: @item ADPCM Yamaha @tab X @tab X @item AMR-NB @tab E @tab X @tab encoding supported through external library libopencore-amrnb -@item AMR-WB @tab @tab X +@item AMR-WB @tab E @tab X +@tab encoding supported through external library libvo-amrwbenc @item Apple lossless audio @tab X @tab X @tab QuickTime fourcc 'alac' @item Atrac 1@tab @tab X diff --git a/libavcodec/Makefile b/libavcodec/Makefile index e9c40e4..1cdae2c 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -569,6 +569,7 @@ OBJS-$(CONFIG_LIBSCHROEDINGER_ENCODER)+= libschroedingerenc.o \ OBJS-$(CONFIG_LIBSPEEX_DECODER) += libspeexdec.o OBJS-$(CONFIG_LIBTHEORA_ENCODER) += libtheoraenc.o OBJS-$(CONFIG_LIBVO_AACENC_ENCODER) += libvo-aacenc.o mpeg4audio.o +OBJS-$(CONFIG_LIBVO_AMRWBENC_ENCODER) += libvo-amrwbenc.o OBJS-$(CONFIG_LIBVORBIS_ENCODE
Re: [libav-devel] [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc
On Thu, Apr 07, 2011 at 12:45:13PM +0300, Martin Storsjö wrote: > > --- /dev/null > +++ b/libavcodec/libvo-amrwbenc.c > @@ -0,0 +1,126 @@ > + > +#include "avcodec.h" > +#include Place system headers before local headers, separate by an empty line. Diego ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc
Minor issues with this patch that I noticed, will be fixed in the next round... On Thu, 7 Apr 2011, Martin Storsjö wrote: > The wrapper code is based on the libamr wrapper removed in SVN rev 19365. > --- > Changelog |1 + > configure |6 ++ > doc/general.texi|3 +- > libavcodec/Makefile |1 + > libavcodec/allcodecs.c |1 + > libavcodec/libvo-amrwbenc.c | 128 > +++ > 6 files changed, 139 insertions(+), 1 deletions(-) > create mode 100644 libavcodec/libvo-amrwbenc.c Missing minor bump, added locally (for both of the patches) > +#include "avcodec.h" > +#include > + > +static const char wb_bitrate_unsupported[] = > +"bitrate not supported: use one of 6.6k, 8.85k, 12.65k, 14.25k, 15.85k, > 18.25k, 19.85k, 23.05k, or 23.85k\n"; > + Long line, wrapped > +typedef struct AMRWB_bitrates { > +int rate; > +int mode; > +} AMRWB_bitrates; > + > +typedef struct AMRWBContext { > +intframeCount; Camelcase variable name, and the variable itself is useless, removed. > +void *state; > +intmode; > +intallow_dtx; > +} AMRWBContext; > + > +static int getWBBitrateMode(int bitrate) > +{ > +/* make the correspondance between bitrate and mode */ > +AMRWB_bitrates rates[] = { { 6600, 0}, > + { 8850, 1}, > + {12650, 2}, > + {14250, 3}, > + {15850, 4}, > + {18250, 5}, > + {19850, 6}, > + {23050, 7}, > + {23850, 8}, }; > +int i; > + > +for (i = 0; i < 9; i++) > +if (rates[i].rate == bitrate) > +return rates[i].mode; > +/* no bitrate matching, return an error */ > +return -1; > +} > + > +static av_cold int amr_wb_encode_init(AVCodecContext *avctx) > +{ > +AMRWBContext *s = avctx->priv_data; > + > +s->frameCount = 0; > + > +if (avctx->sample_rate != 16000) { > +av_log(avctx, AV_LOG_ERROR, "Only 16000Hz sample rate supported\n"); > +return -1; > +} > + > +if (avctx->channels != 1) { > +av_log(avctx, AV_LOG_ERROR, "Only mono supported\n"); > +return -1; > +} > + > +if ((s->mode = getWBBitrateMode(avctx->bit_rate)) < 0) { > +av_log(avctx, AV_LOG_ERROR, wb_bitrate_unsupported); > +return -1; > +} > + > +avctx->frame_size = 320; > +avctx->coded_frame = avcodec_alloc_frame(); > + > +s->state = E_IF_init(); > +s->allow_dtx = 0; > + > +return 0; > +} > + > +static int amr_wb_encode_close(AVCodecContext *avctx) > +{ > +AMRWBContext *s = avctx->priv_data; > + > +E_IF_exit(s->state); > +av_freep(&avctx->coded_frame); > +s->frameCount++; > +return 0; > +} > + > +static int amr_wb_encode_frame(AVCodecContext *avctx, > + unsigned char *frame/*out*/, > + int buf_size, void *data/*in*/) > +{ > +AMRWBContext *s = avctx->priv_data; > +int size; > + > +if ((s->mode = getWBBitrateMode(avctx->bit_rate)) < 0) { > +av_log(avctx, AV_LOG_ERROR, wb_bitrate_unsupported); > +return -1; > +} > +size = E_IF_encode(s->state, s->mode, data, frame, s->allow_dtx); > +return size; > +} > + > +AVCodec ff_libvo_amrwbenc_encoder = { > +"libvo_amrwbenc", > +CODEC_TYPE_AUDIO, > +CODEC_ID_AMR_WB, > +sizeof(AMRWBContext), > +amr_wb_encode_init, > +amr_wb_encode_frame, > +amr_wb_encode_close, > +NULL, > +.sample_fmts = (enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE}, > +.long_name = NULL_IF_CONFIG_SMALL("libvo-amrwbenc Adaptive Multi-Rate > (AMR) Wide-Band"), Slightly long line, wrapped. Updated version attached. // MartinFrom 3d8a990399e80fd6c8092802ba65eed60169b582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Tue, 29 Dec 2009 16:48:09 +0200 Subject: [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc The wrapper code is based on the libamr wrapper removed in SVN rev 19365. --- Changelog |1 + configure |6 ++ doc/general.texi|3 +- libavcodec/Makefile |1 + libavcodec/allcodecs.c |1 + libavcodec/libvo-amrwbenc.c | 126 +++ libavcodec/version.h|2 +- 7 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 libavcodec/libvo-amrwbenc.c diff --git a/Changelog b/Changelog index 6a255d4..87ec036 100644 --- a/Changelog +++ b/Changelog @@ -84,6 +84,7 @@ version : - Chronomaster DFA decoder - Mobotix MxPEG decoder - AAC encoding via libvo-aacenc +- AMR-WB encoding via libvo-amrwbenc version 0.6: diff --git a/configure b/configure index 8880fba..c632ce5 100755 --- a/confi
[libav-devel] [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc
The wrapper code is based on the libamr wrapper removed in SVN rev 19365. --- Changelog |1 + configure |6 ++ doc/general.texi|3 +- libavcodec/Makefile |1 + libavcodec/allcodecs.c |1 + libavcodec/libvo-amrwbenc.c | 128 +++ 6 files changed, 139 insertions(+), 1 deletions(-) create mode 100644 libavcodec/libvo-amrwbenc.c diff --git a/Changelog b/Changelog index 6a255d4..87ec036 100644 --- a/Changelog +++ b/Changelog @@ -84,6 +84,7 @@ version : - Chronomaster DFA decoder - Mobotix MxPEG decoder - AAC encoding via libvo-aacenc +- AMR-WB encoding via libvo-amrwbenc version 0.6: diff --git a/configure b/configure index 8880fba..c632ce5 100755 --- a/configure +++ b/configure @@ -179,6 +179,7 @@ External library support: --enable-libspeexenable Speex decoding via libspeex [no] --enable-libtheora enable Theora encoding via libtheora [no] --enable-libvo-aacencenable AAC encoding via libvo-aacenc [no] + --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] --enable-libvorbis enable Vorbis encoding via libvorbis, native implementation exists [no] --enable-libvpx enable VP8 support via libvpx [no] @@ -939,6 +940,7 @@ CONFIG_LIST=" libspeex libtheora libvo_aacenc +libvo_amrwbenc libvorbis libvpx libx264 @@ -1387,6 +1389,7 @@ libschroedinger_encoder_deps="libschroedinger" libspeex_decoder_deps="libspeex" libtheora_encoder_deps="libtheora" libvo_aacenc_encoder_deps="libvo_aacenc" +libvo_amrwbenc_encoder_deps="libvo_amrwbenc" libvorbis_encoder_deps="libvorbis" libvpx_decoder_deps="libvpx" libvpx_encoder_deps="libvpx" @@ -2529,6 +2532,7 @@ die_license_disabled nonfree libfaac die_license_disabled version3 libopencore_amrnb die_license_disabled version3 libopencore_amrwb die_license_disabled version3 libvo_aacenc +die_license_disabled version3 libvo_amrwbenc enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; } @@ -2869,6 +2873,7 @@ enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schr enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc +enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg enabled libvpx && { enabled libvpx_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx || @@ -3138,6 +3143,7 @@ echo "libspeex enabled ${libspeex-no}" echo "libtheora enabled ${libtheora-no}" echo "libva enabled ${vaapi-no}" echo "libvo-aacenc support ${libvo_aacenc-no}" +echo "libvo-amrwbenc support${libvo_amrwbenc-no}" echo "libvorbis enabled ${libvorbis-no}" echo "libvpx enabled${libvpx-no}" echo "libx264 enabled ${libx264-no}" diff --git a/doc/general.texi b/doc/general.texi index 5d66e42..d4cdc3b 100644 --- a/doc/general.texi +++ b/doc/general.texi @@ -588,7 +588,8 @@ following image formats are supported: @item ADPCM Yamaha @tab X @tab X @item AMR-NB @tab E @tab X @tab encoding supported through external library libopencore-amrnb -@item AMR-WB @tab @tab X +@item AMR-WB @tab E @tab X +@tab encoding supported through external library libvo-amrwbenc @item Apple lossless audio @tab X @tab X @tab QuickTime fourcc 'alac' @item Atrac 1@tab @tab X diff --git a/libavcodec/Makefile b/libavcodec/Makefile index e9c40e4..1cdae2c 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -569,6 +569,7 @@ OBJS-$(CONFIG_LIBSCHROEDINGER_ENCODER)+= libschroedingerenc.o \ OBJS-$(CONFIG_LIBSPEEX_DECODER) += libspeexdec.o OBJS-$(CONFIG_LIBTHEORA_ENCODER) += libtheoraenc.o OBJS-$(CONFIG_LIBVO_AACENC_ENCODER) += libvo-aacenc.o mpeg4audio.o +OBJS-$(CONFIG_LIBVO_AMRWBENC_ENCODER) += libvo-amrwbenc.o OBJS-$(CONFIG_LIBVORBIS_ENCODER) += libvorbis.o vorbis_data.o OBJS-$(CONFIG_LIBVPX_DECODER) += libvpxdec.o OBJS-$(CONFIG_LIBVPX_ENCODER) += libvpxenc.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index e0323ac..40a7e23 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -367,6 +367,7 @@ void avcodec_register_all(void) REGISTER_DECODER (LIBSPEEX, libspeex); REGISTER_ENCODER (LIBTHEORA, libtheora); REGISTER_ENCODER (LIBVO_AACENC, libvo_aacenc); +REGISTER_ENCODER (LIBVO_AMRWBENC, libvo_amrwbenc); REGISTER_ENCODER (LIBV