Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-25 Thread Juan De León
I submitted another patch in a new email thread addressing your concerns,
apologies for the confusion.
The subject is "[PATCH] Extract QP from h264 encoded videos".
Here is the link to the archive
http://ffmpeg.org/pipermail/ffmpeg-devel/2019-July/247037.html
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-22 Thread Lynne
Jul 23, 2019, 12:23 AM by juandl-at-google@ffmpeg.org:

>> On Mon, Jul 22, 2019 at 12:17 PM Lynne  wrote:
>> You can't hack a decoder in any nice and performant way for it to output
>>
> data to an analyzer.
> Hi, Lynne
> I hear your concern about the decoder performance.
> I believe that the way we would like to modify the decoder should not
> affect its performance, since
> AV_FRAME_QUANTIZATION_PARAMS will be disabled by default; the extraction is
> done optionally with a flag.
> I would be glad to verify that by running tests and measuring performance
> with and without my changes.
> If you have in mind any tests I should run, please let me know.
>
>> I've explained why this is a bad idea and why you should maintain
>>
> it internally.
> FFmpeg already has a lot of analyzing tools, I disagree that this change
> does not belong to ffmpeg.
>

Switches like these only make code slower, not faster. And they don't erase 
code either.
I'll not accept this API without a decoder patch either.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-22 Thread Juan De León
> On Mon, Jul 22, 2019 at 12:17 PM Lynne  wrote:
> You can't hack a decoder in any nice and performant way for it to output
data to an analyzer.
Hi, Lynne
I hear your concern about the decoder performance.
I believe that the way we would like to modify the decoder should not
affect its performance, since
AV_FRAME_QUANTIZATION_PARAMS will be disabled by default; the extraction is
done optionally with a flag.
I would be glad to verify that by running tests and measuring performance
with and without my changes.
If you have in mind any tests I should run, please let me know.

> I've explained why this is a bad idea and why you should maintain
it internally.
FFmpeg already has a lot of analyzing tools, I disagree that this change
does not belong to ffmpeg.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-22 Thread Lynne
Jul 22, 2019, 8:03 PM by juandl-at-google@ffmpeg.org:

> On Fri, Jul 19, 2019 at 12:47 PM Moritz Barsnick  wrote:
>
>> On Fri, Jul 19, 2019 at 10:00:52 +0200, Nicolas George wrote:
>> > I do not judge whether this filter would be useful and should be
>> > included, but if so, then I would appreciate that the output be done
>> > using AVIO, so that it can go to any supported protocol.
>>
>> The metadata filter has a nice example of how to use avio, incl.
>> mapping to stdout:
>>
>>
>> https://github.com/FFmpeg/FFmpeg/blob/f102a4efcef33014d414f9bf4492a04feab20c82/libavfilter/f_metadata.c#L250
>>
>> I suppose this can been used as a reference.
>>
>> Moritz
>> ___
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
>>
>
>
> Thanks, I will update the filter to use avio.
> Pinging the thread.
>

I've explained why this is a bad idea and why you should maintain it internally.
You can't hack a decoder in any nice and performant way for it to output data 
to an analyzer.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-22 Thread Juan De León
On Fri, Jul 19, 2019 at 12:47 PM Moritz Barsnick  wrote:

> On Fri, Jul 19, 2019 at 10:00:52 +0200, Nicolas George wrote:
> > I do not judge whether this filter would be useful and should be
> > included, but if so, then I would appreciate that the output be done
> > using AVIO, so that it can go to any supported protocol.
>
> The metadata filter has a nice example of how to use avio, incl.
> mapping to stdout:
>
>
> https://github.com/FFmpeg/FFmpeg/blob/f102a4efcef33014d414f9bf4492a04feab20c82/libavfilter/f_metadata.c#L250
>
> I suppose this can been used as a reference.
>
> Moritz
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Thanks, I will update the filter to use avio.
Pinging the thread.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-19 Thread Moritz Barsnick
On Fri, Jul 19, 2019 at 10:00:52 +0200, Nicolas George wrote:
> I do not judge whether this filter would be useful and should be
> included, but if so, then I would appreciate that the output be done
> using AVIO, so that it can go to any supported protocol.

The metadata filter has a nice example of how to use avio, incl.
mapping to stdout:

https://github.com/FFmpeg/FFmpeg/blob/f102a4efcef33014d414f9bf4492a04feab20c82/libavfilter/f_metadata.c#L250

I suppose this can been used as a reference.

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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-19 Thread Nicolas George
Juan De León (12019-07-17):
> +FILE *stats_file;

I do not judge whether this filter would be useful and should be
included, but if so, then I would appreciate that the output be done
using AVIO, so that it can go to any supported protocol.

Regards,

-- 
  Nicolas George


signature.asc
Description: PGP signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-18 Thread Lynne
Jul 18, 2019, 12:25 AM by juandl-at-google@ffmpeg.org 
:

> For context
> https://docs.google.com/document/d/1WClt3EqhjwdGXhEw386O0wfn3IBQ1Ib-_5emVM1gbnA/edit?usp=sharing
>  
> 
> Feel free to comment the doc.
>

This is meant for analyzers and debugging, so I don't think we should implement 
such tools.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-18 Thread Moritz Barsnick
On Wed, Jul 17, 2019 at 16:18:11 -0700, Juan De León wrote:
> ---
>  libavfilter/vf_extractqp.c  | 116 
>  libavutil/Makefile  |   2 +
>  libavutil/quantization_params.c |  28 
>  libavutil/quantization_params.h |  98 +++
>  4 files changed, 244 insertions(+)
>  create mode 100644 libavfilter/vf_extractqp.c
>  create mode 100644 libavutil/quantization_params.c
>  create mode 100644 libavutil/quantization_params.h

Is this just an initial proposal and a proof of concept?

The side data which is supposed to come from the codecs isn't available
yet. I don't see AV_FRAME_DATA_QUANTIZATION_PARAMS defined anywhere. I
see no example of how to let the decoders detect the quantization and
insert that side data.

The "extractqp" filter apparently demonstrates how to detect
availability of this side data, i.e. shows how to call
av_frame_get_side_data(). It doesn't do anything useful at all though,
and it isn't included in the build (or documented).

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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] Setup for extracting quantization parameters from encoded streams

2019-07-17 Thread Juan De León
For context
https://docs.google.com/document/d/1WClt3EqhjwdGXhEw386O0wfn3IBQ1Ib-_5emVM1gbnA/edit?usp=sharing
Feel free to comment the doc.

On Wed, Jul 17, 2019 at 4:18 PM Juan De León  wrote:

> ---
>  libavfilter/vf_extractqp.c  | 116 
>  libavutil/Makefile  |   2 +
>  libavutil/quantization_params.c |  28 
>  libavutil/quantization_params.h |  98 +++
>  4 files changed, 244 insertions(+)
>  create mode 100644 libavfilter/vf_extractqp.c
>  create mode 100644 libavutil/quantization_params.c
>  create mode 100644 libavutil/quantization_params.h
>
> diff --git a/libavfilter/vf_extractqp.c b/libavfilter/vf_extractqp.c
> new file mode 100644
> index 00..4332012cc4
> --- /dev/null
> +++ b/libavfilter/vf_extractqp.c
> @@ -0,0 +1,116 @@
> +/*
> + * This file is part of FFmpeg.
> + *
> + * FFmpeg is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * FFmpeg is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with FFmpeg; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA
> + */
> +
> +#include "libavutil/frame.h"
> +#include "libavutil/opt.h"
> +#include "libavutil/quantization_params.h"
> +#include "libavfilter/avfilter.h"
> +#include "libavfilter/internal.h"
> +
> +typedef struct QPExtractContext {
> +const AVClass *class;
> +FILE *stats_file;
> +char *stats_file_str;
> +} QPExtractContext;
> +
> +#define OFFSET(x) offsetof(QPExtractContext, x)
> +#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
> +
> +static const AVOption qpextract_options[] = {
> +{"stats_file", "Set file to store QP information",
> OFFSET(stats_file_str), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
> +{"f",  "Set file to store QP information",
> OFFSET(stats_file_str), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS },
> +{ NULL }
> +};
> +
> +AVFILTER_DEFINE_CLASS(qpextract);
> +
> +static av_cold int init(AVFilterContext *ctx)
> +{
> +QPExtractContext *s = ctx->priv;
> +
> +if (s->stats_file_str) {
> +if (!strcmp(s->stats_file_str, "-")) {
> +s->stats_file = stdout;
> +} else {
> +s->stats_file = fopen(s->stats_file_str, "w");
> +if (!s->stats_file) {
> +int err = AVERROR(errno);
> +char buf[128];
> +av_strerror(err, buf, sizeof(buf));
> +av_log(ctx, AV_LOG_ERROR, "Could not open log file %s:
> %s\n",
> +   s->stats_file_str, buf);
> +return err;
> +}
> +}
> +}
> +return 0;
> +}
> +
> +static av_cold int uninit(AVFilterContext *ctx) {
> +return 0;
> +}
> +
> +static int filter_frame(AVFilterLink *inlink, AVFrame *in) {
> +AVFilterContext *ctx = inlink->dst;
> +AVFilterLink *outlink = ctx->outputs[0];
> +QPExtractContext *s = ctx->priv;
> +AVFrame *out = NULL;
> +
> +if (ctx->is_disabled) {
> +return ff_filter_frame(outlink, in);
> +}
> +
> +AVFrameSideData *sd = av_frame_get_side_data(in,
> AV_FRAME_DATA_QUANTIZATION_PARAMS);
> +
> +if (!sd) {
> +fprintf(s->stats_file, "no side data");
> +}
> +else {
> +fprintf(s->stats_file, "yes side data");
> +}
> +
> +return ff_filter_frame(outlink, in);
> +}
> +
> +static const AVFilterPad qpextract_inputs[] = {
> +{
> +.name = "default",
> +.type = AVMEDIA_TYPE_VIDEO,
> +.filter_frame = filter_frame,
> +},
> +{ NULL }
> +};
> +
> +static const AVFilterPad qpextract_outputs[] = {
> +{
> +.name  = "default",
> +.type  = AVMEDIA_TYPE_VIDEO,
> +},
> +{ NULL }
> +};
> +
> +AVFilter ff_vf_qpextract = {
> +.name  = "extractqp",
> +.description   = NULL_IF_CONFIG_SMALL("Extract quantization
> parameters."),
> +.init  = init,
> +.uninit= uninit,
> +.priv_size = sizeof(QPExtractContext),
> +.priv_class= _class,
> +.inputs= qpextract_inputs,
> +.outputs   = qpextract_outputs,
> +};
> diff --git a/libavutil/Makefile b/libavutil/Makefile
> index 8a7a44e4b5..be1a9c3a9c 100644
> --- a/libavutil/Makefile
> +++ b/libavutil/Makefile
> @@ -60,6 +60,7 @@ HEADERS = adler32.h
>\
>pixdesc.h \
>pixelutils.h