Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-03-19 Thread Clément Bœsch
On Tue, Feb 21, 2017 at 05:15:59PM +, Saverio Blasi wrote:
[...]
>  enabled libspeex  && require_pkg_config speex speex/speex.h 
> speex_decoder_init -lspeex
>  enabled libtesseract  && require_pkg_config tesseract tesseract/capi.h 
> TessBaseAPICreate
>  enabled libtheora && require libtheora theora/theoraenc.h 
> th_info_init -ltheoraenc -ltheoradec -logg

> +enabled libturing && require_pkg_config libturing turing.h 
> turing_version

You probably want to specify a minimal version

[...]
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
> +02110-1301 USA  */
> +

This looks mangled.

> +#include 

Please add a line break after this

> +#include "libavutil/internal.h"
> +#include "libavutil/common.h"
> +#include "libavutil/opt.h"
> +#include "libavutil/pixdesc.h"
> +#include "avcodec.h"
> +#include "internal.h"
> +
> +#define MAX_OPTION_LENGTH 256
> +
> +typedef struct libturingEncodeContext {
> +const AVClass *class;
> +turing_encoder *encoder;
> +const char *options;
> +} libturingEncodeContext;
> +
> +typedef struct optionContext {

> +char** argv;
> +char* options;
> +char* s;

Style here and in other places: * stick to the var

> +int options_buffer_size;
> +int buffer_filled;
> +int options_added;
> +} optionContext;
> +

> +static av_cold int libturing_encode_close(AVCodecContext *avctx) {

Style: here and in other places missing line break before "{" for
functions.

> +libturingEncodeContext *ctx = avctx->priv_data;
> +

> +if (ctx->encoder) {
> +turing_destroy_encoder(ctx->encoder);
> +}

Note: the NULL check should probably be part of the libturing API to
simplify code paths for the users (just like the stdlib free(3)
convention).

> +return 0;
> +}
> +
> +static av_cold int add_option(const char* current_option, 
> +optionContext* option_ctx) {

This function should be replaced with AVBPrint API. It will be much
simpler (that function will basically disappear) and will allow the caller
to check for errors only once.

[...]
> +static av_cold int libturing_encode_init(AVCodecContext *avctx) {
> +libturingEncodeContext *ctx = avctx->priv_data;
> +const int bit_depth = av_pix_fmt_desc_get(avctx->pix_fmt)->comp[0].depth;
> +int error_code = 0;
> +

> +optionContext encoder_options;

use "encoder_options = {0}" so you don't need to fill each and every field
later on, and risk to forget one in the future.

[...]
> +int const illegal_option =
> +!strcmp("input-res", en->key) ||
> +!strcmp("frame-rate", en->key) ||
> +!strcmp("f", en->key) ||
> +!strcmp("frames", en->key) ||
> +!strcmp("sar", en->key) ||
> +!strcmp("bit-depth", en->key) ||
> +!strcmp("internal-bit-depth", en->key);

you could use av_match_name(en->key, "input-res,frame-rate,f,...") here.

> +if (illegal_option) {
> +av_log(avctx, AV_LOG_WARNING, "%s=%s ignored - this 
> parameter is inferred from ffmpeg.\n", en->key, en->value);
> +} else {
> +if (turing_check_binary_option(en->key)) {
> +snprintf(option_string, MAX_OPTION_LENGTH, "--%s", 
> en->key);
> +} else {
> +snprintf(option_string, MAX_OPTION_LENGTH, 
> "--%s=%s", en->key, en->value);
> +}
> +if ((error_code = add_option(option_string, 
> _options)) > 0) {
> +goto fail;

leaking dict here.

> +}
> +}
> +}
> +av_dict_free();
> +}
> +}
> +
> +if ((error_code = add_option("dummy-input-filename", _options)) 
> > 0) {
> +goto fail;
> +}
> +
> +if ((error_code = finalise_options(_options)) > 0) {
> +goto fail;
> +}
> +
> +settings.argv = (char const**)encoder_options.argv;
> +settings.argc = encoder_options.options_added;
> +

> +for (int i=0; i +av_log(avctx, AV_LOG_VERBOSE, "arg %d: %s\n", i, settings.argv[i]);
> +}
> +
> +ctx->encoder = turing_create_encoder(settings);
> +
> +if (!ctx->encoder) {
> +av_log(avctx, AV_LOG_ERROR, "Failed to create libturing encoder.\n");
> +error_code = AVERROR_INVALIDDATA;
> +goto fail;
> +}
> +
> +if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) {
> +turing_bitstream const *bitstream;
> +bitstream = turing_encode_headers(ctx->encoder);
> +if (bitstream->size <= 0) {
> +av_log(avctx, AV_LOG_ERROR, "Failed to encode headers.\n");
> +turing_destroy_encoder(ctx->encoder);
> +error_code = AVERROR_INVALIDDATA;
> +   

Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-03-16 Thread Saverio Blasi
Dear Mark,

Sorry for the long delay in replying.
We have now pushed some changes to our main Turing codec repository to address 
your comments below. Our custom boost libraries should now be correctly 
installed so there is no need for preserving any additional Turing build 
folder. These changes are completely transparent to our ffmpeg patch, which 
remains valid at v7.

We would appreciate comments on this.

Thanks,

All the best,

Saverio Blasi, PhD
Senior Research Engineer 
BBC Research & Development
Centre House|56 Wood Lane|London|W12 7SB




-Original Message-
From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of Mark 
Thompson
Sent: 28 February 2017 11:02
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

On 28/02/17 10:27, Saverio Blasi wrote:
> Dear Mark,
> 
> We provide our custom Boost libraries. In our tests we are able to build and 
> run using just "--enable-gpl --enable-libturing". We would prefer to keep the 
> pkgconfig file. I am not sure I fully understand what is required to be 
> changed there (if anything), could you please be a bit more specific?

Well, where do those libraries end up?  I agree the pkgconfig file is the 
correct way to do this, but it currently points at the libturing build 
directory which need not exist when building ffmpeg.

You should be able to install the library with some prefix (below using the 
default /usr/local) and then use it in ffmpeg without any other magic:

mkdir libturing-build
cd libturing-build
cmake ../path/to/libturing/source/
make
make install
cd ..
rm -rf libturing-build

mkdir ffmpeg-build
cd ffmpeg-build
../path/to/ffmpeg/source/configure --enable-gpl --enable-libturing make 
./ffmpeg ... -c:v libturing ...
make install
ffmpeg ... -c:v libturing ...

For me, this sequence currently fails to link for the configure test because 
the custom boost libraries are not found (were not installed anywhere, as far 
as I can tell).

Have you tried this on a vanilla install of a standard distribution?  It sounds 
like you might have more stuff in your development setup which allows it to 
work.

- Mark


> -Original Message-
> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf 
> Of Mark Thompson
> Sent: 27 February 2017 11:14
> To: FFmpeg development discussions and patches 
> <ffmpeg-devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface 
> for ffmpeg
> 
> On 27/02/17 08:29, Saverio Blasi wrote:
>>> Right, I had a bit more of a look at it and was able to "fix" it by adding 
>>> the boost libraries to the ffmpeg configure line as well.
>>>
>>> Actually running it it all looks good to me, if as fast as a particularly 
>>> lethargic snail (like all H.265 encoders targetting quality).
>>>
>>> valgrind came up with some errors, but they appear to be on the libturing 
>>> side rather than in the ffmpeg wrapper (i.e. please do fix them, but they 
>>> don't matter to this patch).
>>>
>>> Thanks,
>>>
>>> - Mark
>>
>> Dear Mark,
>>
>> Thanks a lot for this, we are very happy to know the patch will be 
>> integrated.
>> Regarding the problems you mention, we will have a look at the output of 
>> valgrind, and are also working on speeding up the encoder.
> 
> Also the pkgconfig file:
> * It refers to the libturing build directory, which need not exist after 
> installation.
> * I think libstdc++ and the boost libraries are always required, not 
> just when linking statically.  (Not sure how this interacts with other 
> parts, though - it seems to not like the system boost libraries on 
> Ubuntu 16.04 (1.58): do you need to install your custom boost 
> libraries as well?)
> 
> It should be possible to build and run with just "--enable-gpl 
> --enable-libturing" on a clean "make install"ed libturing.
> 
> Thanks,
> 
> - Mark

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-28 Thread Mark Thompson
On 28/02/17 10:27, Saverio Blasi wrote:
> Dear Mark,
> 
> We provide our custom Boost libraries. In our tests we are able to build and 
> run using just "--enable-gpl --enable-libturing". We would prefer to keep the 
> pkgconfig file. I am not sure I fully understand what is required to be 
> changed there (if anything), could you please be a bit more specific?

Well, where do those libraries end up?  I agree the pkgconfig file is the 
correct way to do this, but it currently points at the libturing build 
directory which need not exist when building ffmpeg.

You should be able to install the library with some prefix (below using the 
default /usr/local) and then use it in ffmpeg without any other magic:

mkdir libturing-build
cd libturing-build
cmake ../path/to/libturing/source/
make
make install
cd ..
rm -rf libturing-build

mkdir ffmpeg-build
cd ffmpeg-build
../path/to/ffmpeg/source/configure --enable-gpl --enable-libturing
make
./ffmpeg ... -c:v libturing ...
make install
ffmpeg ... -c:v libturing ...

For me, this sequence currently fails to link for the configure test because 
the custom boost libraries are not found (were not installed anywhere, as far 
as I can tell).

Have you tried this on a vanilla install of a standard distribution?  It sounds 
like you might have more stuff in your development setup which allows it to 
work.

- Mark


> -Original Message-
> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of Mark 
> Thompson
> Sent: 27 February 2017 11:14
> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for 
> ffmpeg
> 
> On 27/02/17 08:29, Saverio Blasi wrote:
>>> Right, I had a bit more of a look at it and was able to "fix" it by adding 
>>> the boost libraries to the ffmpeg configure line as well.
>>>
>>> Actually running it it all looks good to me, if as fast as a particularly 
>>> lethargic snail (like all H.265 encoders targetting quality).
>>>
>>> valgrind came up with some errors, but they appear to be on the libturing 
>>> side rather than in the ffmpeg wrapper (i.e. please do fix them, but they 
>>> don't matter to this patch).
>>>
>>> Thanks,
>>>
>>> - Mark
>>
>> Dear Mark,
>>
>> Thanks a lot for this, we are very happy to know the patch will be 
>> integrated.
>> Regarding the problems you mention, we will have a look at the output of 
>> valgrind, and are also working on speeding up the encoder.
> 
> Also the pkgconfig file:
> * It refers to the libturing build directory, which need not exist after 
> installation.
> * I think libstdc++ and the boost libraries are always required, not just 
> when linking statically.  (Not sure how this interacts with other parts, 
> though - it seems to not like the system boost libraries on Ubuntu 16.04 
> (1.58): do you need to install your custom boost libraries as well?)
> 
> It should be possible to build and run with just "--enable-gpl 
> --enable-libturing" on a clean "make install"ed libturing.
> 
> Thanks,
> 
> - Mark

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-28 Thread Saverio Blasi
Dear Mark,

We provide our custom Boost libraries. In our tests we are able to build and 
run using just "--enable-gpl --enable-libturing". We would prefer to keep the 
pkgconfig file. I am not sure I fully understand what is required to be changed 
there (if anything), could you please be a bit more specific?

Thanks a lot,
Saverio

-Original Message-
From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of Mark 
Thompson
Sent: 27 February 2017 11:14
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

On 27/02/17 08:29, Saverio Blasi wrote:
>> Right, I had a bit more of a look at it and was able to "fix" it by adding 
>> the boost libraries to the ffmpeg configure line as well.
>>
>> Actually running it it all looks good to me, if as fast as a particularly 
>> lethargic snail (like all H.265 encoders targetting quality).
>>
>> valgrind came up with some errors, but they appear to be on the libturing 
>> side rather than in the ffmpeg wrapper (i.e. please do fix them, but they 
>> don't matter to this patch).
>>
>> Thanks,
>>
>> - Mark
>
> Dear Mark,
>
> Thanks a lot for this, we are very happy to know the patch will be integrated.
> Regarding the problems you mention, we will have a look at the output of 
> valgrind, and are also working on speeding up the encoder.

Also the pkgconfig file:
* It refers to the libturing build directory, which need not exist after 
installation.
* I think libstdc++ and the boost libraries are always required, not just when 
linking statically.  (Not sure how this interacts with other parts, though - it 
seems to not like the system boost libraries on Ubuntu 16.04 (1.58): do you 
need to install your custom boost libraries as well?)

It should be possible to build and run with just "--enable-gpl 
--enable-libturing" on a clean "make install"ed libturing.

Thanks,

- Mark

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


-
http://www.bbc.co.uk
This e-mail (and any attachments) is confidential and
may contain personal views which are not the views of the BBC unless 
specifically stated.
If you have received it in
error, please delete it from your system.
Do not use, copy or disclose the
information in any way nor act in reliance on it and notify the sender
immediately.
Please note that the BBC monitors e-mails
sent or received.
Further communication will signify your consent to
this.
-
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-27 Thread Carl Eugen Hoyos
2017-02-27 12:13 GMT+01:00 Mark Thompson :

> * I think libstdc++ and the boost libraries are always required

If this is true, not using pkgconfig is the more user-friendly solution.

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-27 Thread Mark Thompson
On 27/02/17 08:29, Saverio Blasi wrote:
>> Right, I had a bit more of a look at it and was able to "fix" it by adding 
>> the boost libraries to the ffmpeg configure line as well.
>>
>> Actually running it it all looks good to me, if as fast as a particularly 
>> lethargic snail (like all H.265 encoders targetting quality).
>>
>> valgrind came up with some errors, but they appear to be on the libturing 
>> side rather than in the ffmpeg wrapper (i.e. please do fix them, but they 
>> don't matter to this patch).
>>
>> Thanks,
>>
>> - Mark
> 
> Dear Mark,
> 
> Thanks a lot for this, we are very happy to know the patch will be 
> integrated. 
> Regarding the problems you mention, we will have a look at the output of 
> valgrind, and are also working on speeding up the encoder.

Also the pkgconfig file:
* It refers to the libturing build directory, which need not exist after 
installation.
* I think libstdc++ and the boost libraries are always required, not just when 
linking statically.  (Not sure how this interacts with other parts, though - it 
seems to not like the system boost libraries on Ubuntu 16.04 (1.58): do you 
need to install your custom boost libraries as well?)

It should be possible to build and run with just "--enable-gpl 
--enable-libturing" on a clean "make install"ed libturing.

Thanks,

- Mark

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-27 Thread Saverio Blasi
> Right, I had a bit more of a look at it and was able to "fix" it by adding 
> the boost libraries to the ffmpeg configure line as well.
>
> Actually running it it all looks good to me, if as fast as a particularly 
> lethargic snail (like all H.265 encoders targetting quality).
>
> valgrind came up with some errors, but they appear to be on the libturing 
> side rather than in the ffmpeg wrapper (i.e. please do fix them, but they 
> don't matter to this patch).
>
> Thanks,
>
> - Mark

Dear Mark,

Thanks a lot for this, we are very happy to know the patch will be integrated. 
Regarding the problems you mention, we will have a look at the output of 
valgrind, and are also working on speeding up the encoder. 

All the best,

Saverio Blasi, PhD
Senior Research Engineer 
BBC Research & Development
Centre House|56 Wood Lane|London|W12 7SB





___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-24 Thread Mark Thompson
On 23/02/17 20:47, Mark Thompson wrote:
> On 21/02/17 17:15, Saverio Blasi wrote:
>> Hi all,
>>
>> We have recently circulated this new iteration (see below) of our work 
>> towards integrating our HEVC Turing codec within FFMpeg. Assuming that there 
>> are no more requests for changes, we would like to understand what is the 
>> timeline for integration within the project.
>>
>> Thanks a lot,
>>
>> All the best,
>> 
>> Saverio Blasi, PhD
>> Senior Research Engineer 
>> BBC Research & Development
>> Centre House|56 Wood Lane|London|W12 7SB
>>
>>
>>
>>
>> -Original Message-
>> From: Saverio Blasi [mailto:saverio.bl...@bbc.co.uk] 
>> Sent: 13 February 2017 13:37
>> To: ffmpeg-devel@ffmpeg.org
>> Cc: Saverio Blasi 
>> Subject: [PATCH v7] - Added Turing codec interface for ffmpeg
>>
>> - This patch contains the changes to interface the Turing codec 
>> (http://turingcodec.org/) with ffmpeg. The patch was modified to address the 
>> comments in the review as follows:
>>   - Added a pkg-config file to list all dependencies required by libturing. 
>> This should address the issue pointed out by Hendrik Leppkes on Fri 
>> 18/11/2016
>>   - As per suggestions of wm4, two functions (add_option and 
>> finalise_options) have been created. The former appends new options while 
>> the latter sets up the argv array of pointers to char* accordingly. 
>> add_option re-allocates the buffer for options using av_realloc
>>   - Additionally, both these functions handle the errors in case the memory 
>> wasn't allocated correctly
>>   - malloc|free|realloc have been substituted with their corresponding 
>> av_{malloc|free|realloc} version
>>   - Check on bit-depth has been removed since the ffmpeg already casts the 
>> right pix_fmt and bit depth
>>   - pix_fmts is now set in ff_libturing_encoder as in h264dec.c.
>>   - Changed usage of av_free with av_freep and fixed calls to free arrays
>>   - Added brackets to all if and for statements
>>   - Avoid repetition of code to free arrays in case of failure to initialise 
>> the libturing encoder
>>   - Some fixes to address the review from wm4 and Mark Thompson received on 
>> Wed 08/02/2017
>>   - Fixed indentation
>> ---
>>  LICENSE.md |   1 +
>>  configure  |   5 +
>>  libavcodec/Makefile|   1 +
>>  libavcodec/allcodecs.c |   1 +
>>  libavcodec/libturing.c | 320 
>> +
>>  5 files changed, 328 insertions(+)
>>  create mode 100644 libavcodec/libturing.c
>>
>> diff --git a/LICENSE.md b/LICENSE.md
>> index 640633c..86e5371 100644
>> --- a/LICENSE.md
>> +++ b/LICENSE.md
>> @@ -85,6 +85,7 @@ The following libraries are under GPL:
>>  - frei0r
>>  - libcdio
>>  - librubberband
>> +- libturing
>>  - libvidstab
>>  - libx264
>>  - libx265
>> diff --git a/configure b/configure
>> index 7154142..a27cb8b 100755
>> --- a/configure
>> +++ b/configure
>> @@ -255,6 +255,7 @@ External library support:
>>--enable-libssh  enable SFTP protocol via libssh [no]
>>--enable-libtesseractenable Tesseract, needed for ocr filter [no]
>>--enable-libtheora   enable Theora encoding via libtheora [no]
>> +  --enable-libturing   enable H.265/HEVC encoding via libturing [no]
>>--enable-libtwolame  enable MP2 encoding via libtwolame [no]
>>--enable-libv4l2 enable libv4l2/v4l-utils [no]
>>--enable-libvidstab  enable video stabilization using vid.stab [no]
>> @@ -1562,6 +1563,7 @@ EXTERNAL_LIBRARY_LIST="
>>  libssh
>>  libtesseract
>>  libtheora
>> +libturing
>>  libtwolame
>>  libv4l2
>>  libvidstab
>> @@ -2858,6 +2860,7 @@ libspeex_decoder_deps="libspeex"
>>  libspeex_encoder_deps="libspeex"
>>  libspeex_encoder_select="audio_frame_queue"
>>  libtheora_encoder_deps="libtheora"
>> +libturing_encoder_deps="libturing"
>>  libtwolame_encoder_deps="libtwolame"
>>  libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
>>  libvorbis_decoder_deps="libvorbis"
>> @@ -5131,6 +5134,7 @@ die_license_disabled gpl frei0r  die_license_disabled 
>> gpl libcdio  die_license_disabled gpl librubberband  die_license_disabled 
>> gpl libsmbclient
>> +die_license_disabled gpl libturing
>>  die_license_disabled gpl libvidstab
>>  die_license_disabled gpl libx264
>>  die_license_disabled gpl libx265
>> @@ -5789,6 +5793,7 @@ enabled libssh&& require_pkg_config libssh 
>> libssh/sftp.h sftp_init
>>  enabled libspeex  && require_pkg_config speex speex/speex.h 
>> speex_decoder_init -lspeex
>>  enabled libtesseract  && require_pkg_config tesseract tesseract/capi.h 
>> TessBaseAPICreate
>>  enabled libtheora && require libtheora theora/theoraenc.h 
>> th_info_init -ltheoraenc -ltheoradec -logg
>> +enabled libturing && require_pkg_config libturing turing.h 
>> turing_version
>>  enabled libtwolame&& require libtwolame twolame.h twolame_init 
>> -ltwolame &&

Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-23 Thread Mark Thompson
On 21/02/17 17:15, Saverio Blasi wrote:
> Hi all,
> 
> We have recently circulated this new iteration (see below) of our work 
> towards integrating our HEVC Turing codec within FFMpeg. Assuming that there 
> are no more requests for changes, we would like to understand what is the 
> timeline for integration within the project.
> 
> Thanks a lot,
> 
> All the best,
> 
> Saverio Blasi, PhD
> Senior Research Engineer 
> BBC Research & Development
> Centre House|56 Wood Lane|London|W12 7SB
> 
> 
> 
> 
> -Original Message-
> From: Saverio Blasi [mailto:saverio.bl...@bbc.co.uk] 
> Sent: 13 February 2017 13:37
> To: ffmpeg-devel@ffmpeg.org
> Cc: Saverio Blasi 
> Subject: [PATCH v7] - Added Turing codec interface for ffmpeg
> 
> - This patch contains the changes to interface the Turing codec 
> (http://turingcodec.org/) with ffmpeg. The patch was modified to address the 
> comments in the review as follows:
>   - Added a pkg-config file to list all dependencies required by libturing. 
> This should address the issue pointed out by Hendrik Leppkes on Fri 18/11/2016
>   - As per suggestions of wm4, two functions (add_option and 
> finalise_options) have been created. The former appends new options while the 
> latter sets up the argv array of pointers to char* accordingly. add_option 
> re-allocates the buffer for options using av_realloc
>   - Additionally, both these functions handle the errors in case the memory 
> wasn't allocated correctly
>   - malloc|free|realloc have been substituted with their corresponding 
> av_{malloc|free|realloc} version
>   - Check on bit-depth has been removed since the ffmpeg already casts the 
> right pix_fmt and bit depth
>   - pix_fmts is now set in ff_libturing_encoder as in h264dec.c.
>   - Changed usage of av_free with av_freep and fixed calls to free arrays
>   - Added brackets to all if and for statements
>   - Avoid repetition of code to free arrays in case of failure to initialise 
> the libturing encoder
>   - Some fixes to address the review from wm4 and Mark Thompson received on 
> Wed 08/02/2017
>   - Fixed indentation
> ---
>  LICENSE.md |   1 +
>  configure  |   5 +
>  libavcodec/Makefile|   1 +
>  libavcodec/allcodecs.c |   1 +
>  libavcodec/libturing.c | 320 
> +
>  5 files changed, 328 insertions(+)
>  create mode 100644 libavcodec/libturing.c
> 
> diff --git a/LICENSE.md b/LICENSE.md
> index 640633c..86e5371 100644
> --- a/LICENSE.md
> +++ b/LICENSE.md
> @@ -85,6 +85,7 @@ The following libraries are under GPL:
>  - frei0r
>  - libcdio
>  - librubberband
> +- libturing
>  - libvidstab
>  - libx264
>  - libx265
> diff --git a/configure b/configure
> index 7154142..a27cb8b 100755
> --- a/configure
> +++ b/configure
> @@ -255,6 +255,7 @@ External library support:
>--enable-libssh  enable SFTP protocol via libssh [no]
>--enable-libtesseractenable Tesseract, needed for ocr filter [no]
>--enable-libtheora   enable Theora encoding via libtheora [no]
> +  --enable-libturing   enable H.265/HEVC encoding via libturing [no]
>--enable-libtwolame  enable MP2 encoding via libtwolame [no]
>--enable-libv4l2 enable libv4l2/v4l-utils [no]
>--enable-libvidstab  enable video stabilization using vid.stab [no]
> @@ -1562,6 +1563,7 @@ EXTERNAL_LIBRARY_LIST="
>  libssh
>  libtesseract
>  libtheora
> +libturing
>  libtwolame
>  libv4l2
>  libvidstab
> @@ -2858,6 +2860,7 @@ libspeex_decoder_deps="libspeex"
>  libspeex_encoder_deps="libspeex"
>  libspeex_encoder_select="audio_frame_queue"
>  libtheora_encoder_deps="libtheora"
> +libturing_encoder_deps="libturing"
>  libtwolame_encoder_deps="libtwolame"
>  libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
>  libvorbis_decoder_deps="libvorbis"
> @@ -5131,6 +5134,7 @@ die_license_disabled gpl frei0r  die_license_disabled 
> gpl libcdio  die_license_disabled gpl librubberband  die_license_disabled gpl 
> libsmbclient
> +die_license_disabled gpl libturing
>  die_license_disabled gpl libvidstab
>  die_license_disabled gpl libx264
>  die_license_disabled gpl libx265
> @@ -5789,6 +5793,7 @@ enabled libssh&& require_pkg_config libssh 
> libssh/sftp.h sftp_init
>  enabled libspeex  && require_pkg_config speex speex/speex.h 
> speex_decoder_init -lspeex
>  enabled libtesseract  && require_pkg_config tesseract tesseract/capi.h 
> TessBaseAPICreate
>  enabled libtheora && require libtheora theora/theoraenc.h 
> th_info_init -ltheoraenc -ltheoradec -logg
> +enabled libturing && require_pkg_config libturing turing.h 
> turing_version
>  enabled libtwolame&& require libtwolame twolame.h twolame_init 
> -ltwolame &&
>   { check_lib twolame.h 
> twolame_encode_buffer_float32_interleaved -ltwolame ||
> die 

Re: [FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-21 Thread Saverio Blasi
Hi all,

We have recently circulated this new iteration (see below) of our work towards 
integrating our HEVC Turing codec within FFMpeg. Assuming that there are no 
more requests for changes, we would like to understand what is the timeline for 
integration within the project.

Thanks a lot,

All the best,

Saverio Blasi, PhD
Senior Research Engineer 
BBC Research & Development
Centre House|56 Wood Lane|London|W12 7SB




-Original Message-
From: Saverio Blasi [mailto:saverio.bl...@bbc.co.uk] 
Sent: 13 February 2017 13:37
To: ffmpeg-devel@ffmpeg.org
Cc: Saverio Blasi 
Subject: [PATCH v7] - Added Turing codec interface for ffmpeg

- This patch contains the changes to interface the Turing codec 
(http://turingcodec.org/) with ffmpeg. The patch was modified to address the 
comments in the review as follows:
  - Added a pkg-config file to list all dependencies required by libturing. 
This should address the issue pointed out by Hendrik Leppkes on Fri 18/11/2016
  - As per suggestions of wm4, two functions (add_option and finalise_options) 
have been created. The former appends new options while the latter sets up the 
argv array of pointers to char* accordingly. add_option re-allocates the buffer 
for options using av_realloc
  - Additionally, both these functions handle the errors in case the memory 
wasn't allocated correctly
  - malloc|free|realloc have been substituted with their corresponding 
av_{malloc|free|realloc} version
  - Check on bit-depth has been removed since the ffmpeg already casts the 
right pix_fmt and bit depth
  - pix_fmts is now set in ff_libturing_encoder as in h264dec.c.
  - Changed usage of av_free with av_freep and fixed calls to free arrays
  - Added brackets to all if and for statements
  - Avoid repetition of code to free arrays in case of failure to initialise 
the libturing encoder
  - Some fixes to address the review from wm4 and Mark Thompson received on Wed 
08/02/2017
  - Fixed indentation
---
 LICENSE.md |   1 +
 configure  |   5 +
 libavcodec/Makefile|   1 +
 libavcodec/allcodecs.c |   1 +
 libavcodec/libturing.c | 320 +
 5 files changed, 328 insertions(+)
 create mode 100644 libavcodec/libturing.c

diff --git a/LICENSE.md b/LICENSE.md
index 640633c..86e5371 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -85,6 +85,7 @@ The following libraries are under GPL:
 - frei0r
 - libcdio
 - librubberband
+- libturing
 - libvidstab
 - libx264
 - libx265
diff --git a/configure b/configure
index 7154142..a27cb8b 100755
--- a/configure
+++ b/configure
@@ -255,6 +255,7 @@ External library support:
   --enable-libssh  enable SFTP protocol via libssh [no]
   --enable-libtesseractenable Tesseract, needed for ocr filter [no]
   --enable-libtheora   enable Theora encoding via libtheora [no]
+  --enable-libturing   enable H.265/HEVC encoding via libturing [no]
   --enable-libtwolame  enable MP2 encoding via libtwolame [no]
   --enable-libv4l2 enable libv4l2/v4l-utils [no]
   --enable-libvidstab  enable video stabilization using vid.stab [no]
@@ -1562,6 +1563,7 @@ EXTERNAL_LIBRARY_LIST="
 libssh
 libtesseract
 libtheora
+libturing
 libtwolame
 libv4l2
 libvidstab
@@ -2858,6 +2860,7 @@ libspeex_decoder_deps="libspeex"
 libspeex_encoder_deps="libspeex"
 libspeex_encoder_select="audio_frame_queue"
 libtheora_encoder_deps="libtheora"
+libturing_encoder_deps="libturing"
 libtwolame_encoder_deps="libtwolame"
 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
 libvorbis_decoder_deps="libvorbis"
@@ -5131,6 +5134,7 @@ die_license_disabled gpl frei0r  die_license_disabled gpl 
libcdio  die_license_disabled gpl librubberband  die_license_disabled gpl 
libsmbclient
+die_license_disabled gpl libturing
 die_license_disabled gpl libvidstab
 die_license_disabled gpl libx264
 die_license_disabled gpl libx265
@@ -5789,6 +5793,7 @@ enabled libssh&& require_pkg_config libssh 
libssh/sftp.h sftp_init
 enabled libspeex  && require_pkg_config speex speex/speex.h 
speex_decoder_init -lspeex
 enabled libtesseract  && require_pkg_config tesseract tesseract/capi.h 
TessBaseAPICreate
 enabled libtheora && require libtheora theora/theoraenc.h th_info_init 
-ltheoraenc -ltheoradec -logg
+enabled libturing && require_pkg_config libturing turing.h 
turing_version
 enabled libtwolame&& require libtwolame twolame.h twolame_init 
-ltwolame &&
  { check_lib twolame.h 
twolame_encode_buffer_float32_interleaved -ltwolame ||
die "ERROR: libtwolame must be installed and 
version must be >= 0.3.10"; } diff --git a/libavcodec/Makefile 
b/libavcodec/Makefile index 43a6add..de5af1d 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -883,6 +883,7 @@ OBJS-$(CONFIG_LIBSHINE_ENCODER)   += libshine.o
 

[FFmpeg-devel] [PATCH v7] - Added Turing codec interface for ffmpeg

2017-02-13 Thread Saverio Blasi
- This patch contains the changes to interface the Turing codec 
(http://turingcodec.org/) with ffmpeg. The patch was modified to address the 
comments in the review as follows:
  - Added a pkg-config file to list all dependencies required by libturing. 
This should address the issue pointed out by Hendrik Leppkes on Fri 18/11/2016
  - As per suggestions of wm4, two functions (add_option and finalise_options) 
have been created. The former appends new options while the latter sets up the 
argv array of pointers to char* accordingly. add_option re-allocates the buffer 
for options using av_realloc
  - Additionally, both these functions handle the errors in case the memory 
wasn't allocated correctly
  - malloc|free|realloc have been substituted with their corresponding 
av_{malloc|free|realloc} version
  - Check on bit-depth has been removed since the ffmpeg already casts the 
right pix_fmt and bit depth
  - pix_fmts is now set in ff_libturing_encoder as in h264dec.c.
  - Changed usage of av_free with av_freep and fixed calls to free arrays
  - Added brackets to all if and for statements
  - Avoid repetition of code to free arrays in case of failure to initialise 
the libturing encoder
  - Some fixes to address the review from wm4 and Mark Thompson received on Wed 
08/02/2017
  - Fixed indentation
---
 LICENSE.md |   1 +
 configure  |   5 +
 libavcodec/Makefile|   1 +
 libavcodec/allcodecs.c |   1 +
 libavcodec/libturing.c | 320 +
 5 files changed, 328 insertions(+)
 create mode 100644 libavcodec/libturing.c

diff --git a/LICENSE.md b/LICENSE.md
index 640633c..86e5371 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -85,6 +85,7 @@ The following libraries are under GPL:
 - frei0r
 - libcdio
 - librubberband
+- libturing
 - libvidstab
 - libx264
 - libx265
diff --git a/configure b/configure
index 7154142..a27cb8b 100755
--- a/configure
+++ b/configure
@@ -255,6 +255,7 @@ External library support:
   --enable-libssh  enable SFTP protocol via libssh [no]
   --enable-libtesseractenable Tesseract, needed for ocr filter [no]
   --enable-libtheora   enable Theora encoding via libtheora [no]
+  --enable-libturing   enable H.265/HEVC encoding via libturing [no]
   --enable-libtwolame  enable MP2 encoding via libtwolame [no]
   --enable-libv4l2 enable libv4l2/v4l-utils [no]
   --enable-libvidstab  enable video stabilization using vid.stab [no]
@@ -1562,6 +1563,7 @@ EXTERNAL_LIBRARY_LIST="
 libssh
 libtesseract
 libtheora
+libturing
 libtwolame
 libv4l2
 libvidstab
@@ -2858,6 +2860,7 @@ libspeex_decoder_deps="libspeex"
 libspeex_encoder_deps="libspeex"
 libspeex_encoder_select="audio_frame_queue"
 libtheora_encoder_deps="libtheora"
+libturing_encoder_deps="libturing"
 libtwolame_encoder_deps="libtwolame"
 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
 libvorbis_decoder_deps="libvorbis"
@@ -5131,6 +5134,7 @@ die_license_disabled gpl frei0r
 die_license_disabled gpl libcdio
 die_license_disabled gpl librubberband
 die_license_disabled gpl libsmbclient
+die_license_disabled gpl libturing
 die_license_disabled gpl libvidstab
 die_license_disabled gpl libx264
 die_license_disabled gpl libx265
@@ -5789,6 +5793,7 @@ enabled libssh&& require_pkg_config libssh 
libssh/sftp.h sftp_init
 enabled libspeex  && require_pkg_config speex speex/speex.h 
speex_decoder_init -lspeex
 enabled libtesseract  && require_pkg_config tesseract tesseract/capi.h 
TessBaseAPICreate
 enabled libtheora && require libtheora theora/theoraenc.h th_info_init 
-ltheoraenc -ltheoradec -logg
+enabled libturing && require_pkg_config libturing turing.h 
turing_version
 enabled libtwolame&& require libtwolame twolame.h twolame_init 
-ltwolame &&
  { check_lib twolame.h 
twolame_encode_buffer_float32_interleaved -ltwolame ||
die "ERROR: libtwolame must be installed and 
version must be >= 0.3.10"; }
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 43a6add..de5af1d 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -883,6 +883,7 @@ OBJS-$(CONFIG_LIBSHINE_ENCODER)   += libshine.o
 OBJS-$(CONFIG_LIBSPEEX_DECODER)   += libspeexdec.o
 OBJS-$(CONFIG_LIBSPEEX_ENCODER)   += libspeexenc.o
 OBJS-$(CONFIG_LIBTHEORA_ENCODER)  += libtheoraenc.o
+OBJS-$(CONFIG_LIBTURING_ENCODER)  += libturing.o
 OBJS-$(CONFIG_LIBTWOLAME_ENCODER) += libtwolame.o
 OBJS-$(CONFIG_LIBVO_AMRWBENC_ENCODER) += libvo-amrwbenc.o
 OBJS-$(CONFIG_LIBVORBIS_DECODER)  += libvorbisdec.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index f92b2b7..f650591 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -615,6 +615,7 @@ void avcodec_register_all(void)
 REGISTER_ENCODER(LIBSHINE,  libshine);
 REGISTER_ENCDEC (LIBSPEEX,  libspeex);