Re: [libav-devel] [PATCH 2/2] Add support for AMR-WB encoding via libvo-amrwbenc

2011-04-11 Thread Martin Storsjö
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

2011-04-11 Thread Luca Barbato
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

2011-04-07 Thread Martin Storsjö
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

2011-04-07 Thread Diego Biurrun
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

2011-04-07 Thread Martin Storsjö
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

2011-04-07 Thread Martin Storsjö
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