Re: [FFmpeg-devel] [PATCH 1/2] avcodec/midivid: Check dimensions to be the multiple assumed by the implementation

2020-02-13 Thread Paul B Mahol
On 2/13/20, Reino Wijnsma  wrote:
> On 2020-02-12T23:17:09+0100, Paul B Mahol  wrote:
>> This is incorrect.
>>
>> On 2/12/20, Michael Niedermayer  wrote:
>>> Fixes: out of array access
>>> Fixes:
>>> 20626/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MVDV_fuzzer-6279905350516736
>>>
>>> Found-by: continuous fuzzing process
>>> https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
>>> Signed-off-by: Michael Niedermayer 
>>> [...]
>
> Wow! What a wonderful nicely bottom-posted expressed opinion
> ! That
> certainly must have been very helpful for Michael.

What a nice and tolerant opinion, with so big acceptance. I'm deeply touched.
___
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".

[FFmpeg-devel] [PATCH] lavc/qsvenc: add support for external bitrate control for HEVC

2020-02-13 Thread Linjie Fu
Enables option for hevc_qsv encoder:
-extbrc

Improvements in BD-Rate could be observed with extbrc on.

Signed-off-by: Linjie Fu 
---
Details for extbrc:
https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#external-bit-rate-control

The improvement differs depending on the platform/clips/bitrate.
Based on the verifying on ICL, ~20% improvement in BD-Rate could be observed.

 libavcodec/qsvenc.c | 18 --
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index 9e41650..7f964ad 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -681,11 +681,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
 
 q->extparam_internal[q->nb_extparam_internal++] = (mfxExtBuffer 
*)&q->extco;
 
-if (avctx->codec_id == AV_CODEC_ID_H264) {
 #if QSV_HAVE_CO2
-q->extco2.Header.BufferId = MFX_EXTBUFF_CODING_OPTION2;
-q->extco2.Header.BufferSz = sizeof(q->extco2);
-
+if (avctx->codec_id == AV_CODEC_ID_H264) {
 if (q->int_ref_type >= 0)
 q->extco2.IntRefType = q->int_ref_type;
 if (q->int_ref_cycle_size >= 0)
@@ -697,8 +694,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
 q->extco2.BitrateLimit = q->bitrate_limit ? 
MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF;
 if (q->mbbrc >= 0)
 q->extco2.MBBRC = q->mbbrc ? MFX_CODINGOPTION_ON : 
MFX_CODINGOPTION_OFF;
-if (q->extbrc >= 0)
-q->extco2.ExtBRC = q->extbrc ? MFX_CODINGOPTION_ON : 
MFX_CODINGOPTION_OFF;
 
 if (q->max_frame_size >= 0)
 q->extco2.MaxFrameSize = q->max_frame_size;
@@ -746,9 +741,20 @@ FF_ENABLE_DEPRECATION_WARNINGS
 q->extco2.MaxQPP = q->extco2.MaxQPB = q->extco2.MaxQPI;
 }
 #endif
+}
+
+if (avctx->codec_id == AV_CODEC_ID_H264 || avctx->codec_id == 
AV_CODEC_ID_HEVC) {
+if (q->extbrc >= 0)
+q->extco2.ExtBRC = q->extbrc ? MFX_CODINGOPTION_ON : 
MFX_CODINGOPTION_OFF;
+
+q->extco2.Header.BufferId = MFX_EXTBUFF_CODING_OPTION2;
+q->extco2.Header.BufferSz = sizeof(q->extco2);
+
 q->extparam_internal[q->nb_extparam_internal++] = (mfxExtBuffer 
*)&q->extco2;
+}
 #endif
 
+if (avctx->codec_id == AV_CODEC_ID_H264) {
 #if QSV_HAVE_MF
 if (QSV_RUNTIME_VERSION_ATLEAST(q->ver, 1, 25)) {
 q->extmfp.Header.BufferId = MFX_EXTBUFF_MULTI_FRAME_PARAM;
-- 
2.7.4

___
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] Getting Started :: Need for render API

2020-02-13 Thread Timo Rothenpieler

Vulkan is the new standard API for interfacing with GPUs.
A video decode API in on the horizon, and shaders can be used as filters.
FFmpeg is primarily a library, the command line tool is pretty much only 
an example implementation.

___
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 v2] HEVC: Export motion vectors to frame side data.

2020-02-13 Thread Asaf Kave
On Wed, Feb 12, 2020 at 4:02 PM Paul B Mahol  wrote:

> On 2/12/20, Asaf Kave  wrote:
> > On Wed, Feb 12, 2020 at 11:35 AM Paul B Mahol  wrote:
> >
> >> On 2/12/20, Asaf Kave  wrote:
> >> > On Sun, Feb 9, 2020 at 10:59 AM Asaf Kave  wrote:
> >> >
> >> >>
> >> >>
> >> >> On Thu, Feb 6, 2020 at 4:10 PM Lynne  wrote:
> >> >>
> >> >>> Feb 6, 2020, 11:17 by kavea...@gmail.com:
> >> >>>
> >> >>> > On Sun, Feb 2, 2020 at 11:15 AM Asaf Kave 
> >> wrote:
> >> >>> >
> >> >>> >>
> >> >>> >>
> >> >>> >> On Tue, Jan 28, 2020 at 11:44 PM Asaf Kave 
> >> wrote:
> >> >>> >>
> >> >>> >>>
> >> >>> >>>
> >> >>> >>> On Sun, Jan 26, 2020, 12:31 Asaf Kave 
> wrote:
> >> >>> >>>
> >> >>> 
> >> >>> 
> >> >>>  On Wed, Jan 22, 2020 at 1:09 PM Asaf Kave 
> >> >>> wrote:
> >> >>> 
> >> >>> >
> >> >>> >
> >> >>> > On Tue, Jan 21, 2020 at 8:17 PM Lynne  wrote:
> >> >>> >
> >> >>> >> Jan 20, 2020, 08:42 by kavea...@gmail.com:
> >> >>> >>
> >> >>> >> > Ping
> >> >>> >> >
> >> >>> >>
> >> >>> >>
> >> https://ffmpeg.org/pipermail/ffmpeg-devel/2019-August/248836.html
> >> >>> >>
> >> >>> >>
> >> >>> >> I've okayed it, its just not been pushed yet.
> >> >>> >> You'll need to add the vectors to the block struct. int16_t
> [2]
> >> >>> will
> >> >>> >> do.
> >> >>> >>
> >> >>> >
> >> >>> > Thanks Lynne,
> >> >>> > I didn't find the 'libavutil: AVEncodeInfo data structures'
> >> >>> > commit\patch, even i try searching the code on the latest
> >> 'master'
> >> >>> branch.
> >> >>> > Where can i get the new API ?
> >> >>> >
> >> >>> 
> >> >>>  Hi,
> >> >>>  Can someone accelerate this?
> >> >>>  Thanks
> >> >>> 
> >> >>> 
> >> >>> >>>
> >> >>> >>> Ping
> >> >>> >>>
> >> >>> >>
> >> >>> >> Pinging it again.
> >> >>> >>
> >> >>> >
> >> >>> > Hello,
> >> >>> > Can someone push this to master or if not than give me a feedback,
> >> >>> > Thanks
> >> >>> >
> >> >>>
> >> >>> You need to download the patch and apply it yourself.
> >> >>>
> >> >>
> >> >> Thanks, but i getting this error :
> >> >> > git push
> >> >>  fatal: unable to access 'https://git.ffmpeg.org/ffmpeg.git/': The
> >> >> requested URL returned error: 403
> >> >>
> >> >> I think i am not approval to push.
> >> >>
> >> > can someone push it?
> >>
> >> Your patch can not be pushed as is.
> >> Instead it needs to be combined with another patch.
> >>
> > OK thank you, do i need to do something or only wait that somebody will
> > combine it?
>
> Very unlikely somebody will combine your patch with another for free.
> So it all is up to you.
>

Thanks,
So just to to be sure on what i need to do:
1. Download this patch '[FFmpeg-devel,1/3] libavutil: AVEncodeInfo data
structures' (
https://ffmpeg.org/pipermail/ffmpeg-devel/2019-August/248836.html), and
apply it locally.
2. Then i need to apply again my patch locally, and

> *add the vectors to the block struct. int16_t [2] will do*

 as Lynne mention before.

Now how i can push my patch?(i am not have the right permission) do i need
to push both patch's? or to combine them to one commit patch?

I looked at patch ' libavutil: AVEncodeInfo data structures', and i wasn't
convinced that both patch are so dependent, can you motivate me or direct
me to info why i need to add vectors at the 'AVEncodeInfoBlock' structure?
Thanks for your time.


> >
> >>
> >> >
> >> >>
> >> >>
> >> >>> ___
> >> >>> 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".
> >> >>
> >> >>
> >> > ___
> >> > 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".
> >> ___
> >> 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".
> > ___
> > 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".
> ___
> 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".
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/l

Re: [FFmpeg-devel] [PATCH v4] avfilter/vf_zoompan: fix shaking when zooming

2020-02-13 Thread Robert Deibel

On 07.02.20 21:23, Paul B Mahol wrote:

On 2/6/20, Robert Deibel  wrote:

Would appreciate further review or info.

Are you sure this change does not break older scripts?


You were right, it did break older scripts. Clips that were upscaled in 
a previous filter would be transformed in a worse way than before.


Fixed it in a new patch. Will test some more and send it again.

___
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 v2] HEVC: Export motion vectors to frame side data.

2020-02-13 Thread Paul B Mahol
On 2/13/20, Asaf Kave  wrote:
> On Wed, Feb 12, 2020 at 4:02 PM Paul B Mahol  wrote:
>
>> On 2/12/20, Asaf Kave  wrote:
>> > On Wed, Feb 12, 2020 at 11:35 AM Paul B Mahol  wrote:
>> >
>> >> On 2/12/20, Asaf Kave  wrote:
>> >> > On Sun, Feb 9, 2020 at 10:59 AM Asaf Kave  wrote:
>> >> >
>> >> >>
>> >> >>
>> >> >> On Thu, Feb 6, 2020 at 4:10 PM Lynne  wrote:
>> >> >>
>> >> >>> Feb 6, 2020, 11:17 by kavea...@gmail.com:
>> >> >>>
>> >> >>> > On Sun, Feb 2, 2020 at 11:15 AM Asaf Kave 
>> >> wrote:
>> >> >>> >
>> >> >>> >>
>> >> >>> >>
>> >> >>> >> On Tue, Jan 28, 2020 at 11:44 PM Asaf Kave 
>> >> wrote:
>> >> >>> >>
>> >> >>> >>>
>> >> >>> >>>
>> >> >>> >>> On Sun, Jan 26, 2020, 12:31 Asaf Kave 
>> wrote:
>> >> >>> >>>
>> >> >>> 
>> >> >>> 
>> >> >>>  On Wed, Jan 22, 2020 at 1:09 PM Asaf Kave 
>> >> >>> wrote:
>> >> >>> 
>> >> >>> >
>> >> >>> >
>> >> >>> > On Tue, Jan 21, 2020 at 8:17 PM Lynne  wrote:
>> >> >>> >
>> >> >>> >> Jan 20, 2020, 08:42 by kavea...@gmail.com:
>> >> >>> >>
>> >> >>> >> > Ping
>> >> >>> >> >
>> >> >>> >>
>> >> >>> >>
>> >> https://ffmpeg.org/pipermail/ffmpeg-devel/2019-August/248836.html
>> >> >>> >>
>> >> >>> >>
>> >> >>> >> I've okayed it, its just not been pushed yet.
>> >> >>> >> You'll need to add the vectors to the block struct. int16_t
>> [2]
>> >> >>> will
>> >> >>> >> do.
>> >> >>> >>
>> >> >>> >
>> >> >>> > Thanks Lynne,
>> >> >>> > I didn't find the 'libavutil: AVEncodeInfo data structures'
>> >> >>> > commit\patch, even i try searching the code on the latest
>> >> 'master'
>> >> >>> branch.
>> >> >>> > Where can i get the new API ?
>> >> >>> >
>> >> >>> 
>> >> >>>  Hi,
>> >> >>>  Can someone accelerate this?
>> >> >>>  Thanks
>> >> >>> 
>> >> >>> 
>> >> >>> >>>
>> >> >>> >>> Ping
>> >> >>> >>>
>> >> >>> >>
>> >> >>> >> Pinging it again.
>> >> >>> >>
>> >> >>> >
>> >> >>> > Hello,
>> >> >>> > Can someone push this to master or if not than give me a
>> >> >>> > feedback,
>> >> >>> > Thanks
>> >> >>> >
>> >> >>>
>> >> >>> You need to download the patch and apply it yourself.
>> >> >>>
>> >> >>
>> >> >> Thanks, but i getting this error :
>> >> >> > git push
>> >> >>  fatal: unable to access 'https://git.ffmpeg.org/ffmpeg.git/': The
>> >> >> requested URL returned error: 403
>> >> >>
>> >> >> I think i am not approval to push.
>> >> >>
>> >> > can someone push it?
>> >>
>> >> Your patch can not be pushed as is.
>> >> Instead it needs to be combined with another patch.
>> >>
>> > OK thank you, do i need to do something or only wait that somebody will
>> > combine it?
>>
>> Very unlikely somebody will combine your patch with another for free.
>> So it all is up to you.
>>
>
> Thanks,
> So just to to be sure on what i need to do:
> 1. Download this patch '[FFmpeg-devel,1/3] libavutil: AVEncodeInfo data
> structures' (
> https://ffmpeg.org/pipermail/ffmpeg-devel/2019-August/248836.html), and
> apply it locally.
> 2. Then i need to apply again my patch locally, and
>
>> *add the vectors to the block struct. int16_t [2] will do*
>
>  as Lynne mention before.
>
> Now how i can push my patch?(i am not have the right permission) do i need
> to push both patch's? or to combine them to one commit patch?
>
> I looked at patch ' libavutil: AVEncodeInfo data structures', and i wasn't
> convinced that both patch are so dependent, can you motivate me or direct
> me to info why i need to add vectors at the 'AVEncodeInfoBlock' structure?

Mostly because other developers want to use that new API instead of
current old one to export motion vectors.

> Thanks for your time.
>
>
>> >
>> >>
>> >> >
>> >> >>
>> >> >>
>> >> >>> ___
>> >> >>> 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".
>> >> >>
>> >> >>
>> >> > ___
>> >> > 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".
>> >> ___
>> >> 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".
>> > ___
>> > 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".
>> ___
>> ffmpeg-devel

[FFmpeg-devel] [PATCH v2] avcodec/cbs_av1: add missing value constrains to point_y_value, point_cb_value and point_cr_value

2020-02-13 Thread James Almer
If i is greater than 0, it is a requirement of bitstream conformance that 
point_y_value[ i ] is greater than point_y_value[ i - 1 ].
If i is greater than 0, it is a requirement of bitstream conformance that 
point_cb_value[ i ] is greater than point_cb_value[ i - 1 ].
If i is greater than 0, it is a requirement of bitstream conformance that 
point_cr_value[ i ] is greater than point_cr_value[ i - 1 ].

Signed-off-by: James Almer 
---
Better version. Now it can't overflow the min value, and will also constrain
the max value to ensure v[i] > v[i-1] is always true.

 libavcodec/cbs_av1_syntax_template.c | 15 ---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/libavcodec/cbs_av1_syntax_template.c 
b/libavcodec/cbs_av1_syntax_template.c
index b62e07fb11..0855f7306f 100644
--- a/libavcodec/cbs_av1_syntax_template.c
+++ b/libavcodec/cbs_av1_syntax_template.c
@@ -1156,7 +1156,10 @@ static int FUNC(film_grain_params)(CodedBitstreamContext 
*ctx, RWContext *rw,
 
 fc(4, num_y_points, 0, 14);
 for (i = 0; i < current->num_y_points; i++) {
-fbs(8, point_y_value[i],   1, i);
+fcs(8, point_y_value[i],
+i ? current->point_y_value[i - 1] + 1 : 0,
+MAX_UINT_BITS(8) - (current->num_y_points - i - 1),
+1, i);
 fbs(8, point_y_scaling[i], 1, i);
 }
 
@@ -1175,12 +1178,18 @@ static int 
FUNC(film_grain_params)(CodedBitstreamContext *ctx, RWContext *rw,
 } else {
 fc(4, num_cb_points, 0, 10);
 for (i = 0; i < current->num_cb_points; i++) {
-fbs(8, point_cb_value[i],   1, i);
+fcs(8, point_cb_value[i],
+i ? current->point_cb_value[i - 1] + 1 : 0,
+MAX_UINT_BITS(8) - (current->num_cb_points - i - 1),
+1, i);
 fbs(8, point_cb_scaling[i], 1, i);
 }
 fc(4, num_cr_points, 0, 10);
 for (i = 0; i < current->num_cr_points; i++) {
-fbs(8, point_cr_value[i],   1, i);
+fcs(8, point_cr_value[i],
+i ? current->point_cr_value[i - 1] + 1 : 0,
+MAX_UINT_BITS(8) - (current->num_cr_points - i - 1),
+1, i);
 fbs(8, point_cr_scaling[i], 1, i);
 }
 }
-- 
2.25.0

___
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 v2] avcodec/cbs_av1: add missing value constrains to point_y_value, point_cb_value and point_cr_value

2020-02-13 Thread Andreas Rheinhardt
On Thu, Feb 13, 2020 at 4:08 PM James Almer  wrote:

> If i is greater than 0, it is a requirement of bitstream conformance that
> point_y_value[ i ] is greater than point_y_value[ i - 1 ].
> If i is greater than 0, it is a requirement of bitstream conformance that
> point_cb_value[ i ] is greater than point_cb_value[ i - 1 ].
> If i is greater than 0, it is a requirement of bitstream conformance that
> point_cr_value[ i ] is greater than point_cr_value[ i - 1 ].
>
> Signed-off-by: James Almer 
> ---
> Better version. Now it can't overflow the min value, and will also
> constrain
> the max value to ensure v[i] > v[i-1] is always true.
>

How could the min value overflow at all? After all, the addition v[i - 1] +
1 is performed after promoting v[i - 1] to int. This is then losslessly
converted to uint32_t. So your new version will not detect any more errors
than the old version. It might error out earlier sometimes, but to do so it
always computes the max.
(With the old version it can happen that the min value is bigger than the
max value which leads to the desired error (and an error message that might
be confusing; avoiding this seems to be the only real advantage this new
version has).)

- Andreas
___
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 v2] avcodec/cbs_av1: add missing value constrains to point_y_value, point_cb_value and point_cr_value

2020-02-13 Thread James Almer
On 2/13/2020 2:45 PM, Andreas Rheinhardt wrote:
> On Thu, Feb 13, 2020 at 4:08 PM James Almer  wrote:
> 
>> If i is greater than 0, it is a requirement of bitstream conformance that
>> point_y_value[ i ] is greater than point_y_value[ i - 1 ].
>> If i is greater than 0, it is a requirement of bitstream conformance that
>> point_cb_value[ i ] is greater than point_cb_value[ i - 1 ].
>> If i is greater than 0, it is a requirement of bitstream conformance that
>> point_cr_value[ i ] is greater than point_cr_value[ i - 1 ].
>>
>> Signed-off-by: James Almer 
>> ---
>> Better version. Now it can't overflow the min value, and will also
>> constrain
>> the max value to ensure v[i] > v[i-1] is always true.
>>
> 
> How could the min value overflow at all? After all, the addition v[i - 1] +
> 1 is performed after promoting v[i - 1] to int. This is then losslessly
> converted to uint32_t. So your new version will not detect any more errors
> than the old version. It might error out earlier sometimes, but to do so it
> always computes the max.
> (With the old version it can happen that the min value is bigger than the
> max value which leads to the desired error (and an error message that might
> be confusing; avoiding this seems to be the only real advantage this new
> version has).)
> 
> - Andreas

I wasn't sure if the sum would be promoted or not, but in any case, the
core change is ensuring a given max value is constrained to always be
smaller than the next min allowed value.
___
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] avfilter: add Contrast Adaptive Sharpen video filter

2020-02-13 Thread Paul B Mahol
Will apply.

On 2/10/20, Paul B Mahol  wrote:
> Signed-off-by: Paul B Mahol 
> ---
>  libavfilter/Makefile |   1 +
>  libavfilter/allfilters.c |   1 +
>  libavfilter/vf_cas.c | 253 +++
>  3 files changed, 255 insertions(+)
>  create mode 100644 libavfilter/vf_cas.c
___
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] avfilter: add pad opencl filter

2020-02-13 Thread Paul B Mahol
Will apply.

On 2/10/20, Paul B Mahol  wrote:
> Signed-off-by: Paul B Mahol 
> ---
>  configure   |   1 +
>  doc/filters.texi|  77 +++
>  libavfilter/Makefile|   1 +
>  libavfilter/allfilters.c|   1 +
>  libavfilter/opencl/pad.cl   |  36 
>  libavfilter/opencl_source.h |   1 +
>  libavfilter/vf_pad_opencl.c | 397 
>  7 files changed, 514 insertions(+)
>  create mode 100644 libavfilter/opencl/pad.cl
>  create mode 100644 libavfilter/vf_pad_opencl.c
___
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 1/3 v2] avcodec: add an AVCodecContext field to signal types of packet, frame, and coded stream side data to export

2020-02-13 Thread James Almer
On 2/10/2020 3:26 PM, James Almer wrote:
> Add an initial mvs flag to is, analog to the export_mvs flags2 one.
> 
> Signed-off-by: James Almer 
> ---
>  libavcodec/avcodec.h | 18 ++
>  libavcodec/mpegpicture.c |  2 +-
>  libavcodec/mpegutils.c   |  2 +-
>  libavcodec/options_table.h   |  2 ++
>  libavcodec/snowdec.c |  2 +-
>  libavcodec/utils.c   |  3 +++
>  tests/ref/fate/api-mjpeg-codec-param |  2 ++
>  tests/ref/fate/api-png-codec-param   |  2 ++
>  8 files changed, 30 insertions(+), 3 deletions(-)

No opinions about the field or constant names?

An alternative is to add one field per type of side data instead of
dumping them all in one. So packet, frame and coded stream. The latter
would be added once it's needed, or added now and the CPB properties
side data could be made optional through it (although i don't like
disabling it by default when it's been enabled for a long time now).
___
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] lavu/tx: implement 32 bit fixed point FFT and MDCT

2020-02-13 Thread Lynne
Feb 8, 2020, 23:26 by d...@lynne.ee:

> Patch attached. Commit message:
>
> Required minimal changes to the code so made sense to implement.
> FFT and MDCT tested, the output of both was properly rounded.
> Fun fact: the non-power-of-two fixed-point FFT and MDCT are the fastest ever
> non-power-of-two fixed-point FFT and MDCT written.
> This can replace the power of two integer MDCTs in aac and ac3 if the
> MIPS optimizations are ported across.
> Unfortunately the ac3 encoder uses a 16-bit fixed point forward transform,
> unlike the encoder which uses a 32bit inverse transform, so some modifications
> might be required there.
>
> I am somewhat unsure that choosing a float as a scale value was a good
> decision as it still leaves some small amount of possible float platform
> to platform mismatch. However, an AVRational is somewhat too cumbersome
> and doesn't allow for encoders to use the same scaling code for floats.
>

Pushed.
Maybe I'll actually do some work on SIMD this weekend.
___
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".

[FFmpeg-devel] [PATCH 1/2] avcodec/dstdec: Use local channels variable

2020-02-13 Thread Michael Niedermayer
Signed-off-by: Michael Niedermayer 
---
 libavcodec/dstdec.c | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/libavcodec/dstdec.c b/libavcodec/dstdec.c
index 880b838b0c..bdabced823 100644
--- a/libavcodec/dstdec.c
+++ b/libavcodec/dstdec.c
@@ -262,7 +262,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
 skip_bits1(gb);
 if (get_bits(gb, 6))
 return AVERROR_INVALIDDATA;
-memcpy(frame->data[0], avpkt->data + 1, FFMIN(avpkt->size - 1, 
frame->nb_samples * avctx->channels));
+memcpy(frame->data[0], avpkt->data + 1, FFMIN(avpkt->size - 1, 
frame->nb_samples * channels));
 goto dsd;
 }
 
@@ -287,7 +287,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
 
 same_map = get_bits1(gb);
 
-if ((ret = read_map(gb, &s->fsets, map_ch_to_felem, avctx->channels)) < 0)
+if ((ret = read_map(gb, &s->fsets, map_ch_to_felem, channels)) < 0)
 return ret;
 
 if (same_map) {
@@ -295,13 +295,13 @@ static int decode_frame(AVCodecContext *avctx, void *data,
 memcpy(map_ch_to_pelem, map_ch_to_felem, sizeof(map_ch_to_felem));
 } else {
 avpriv_request_sample(avctx, "Not Same Mapping");
-if ((ret = read_map(gb, &s->probs, map_ch_to_pelem, avctx->channels)) 
< 0)
+if ((ret = read_map(gb, &s->probs, map_ch_to_pelem, channels)) < 0)
 return ret;
 }
 
 /* Half Probability (10.10) */
 
-for (ch = 0; ch < avctx->channels; ch++)
+for (ch = 0; ch < channels; ch++)
 half_prob[ch] = get_bits1(gb);
 
 /* Filter Coef Sets (10.12) */
@@ -325,7 +325,7 @@ static int decode_frame(AVCodecContext *avctx, void *data,
 build_filter(s->filter, &s->fsets);
 
 memset(s->status, 0xAA, sizeof(s->status));
-memset(dsd, 0, frame->nb_samples * 4 * avctx->channels);
+memset(dsd, 0, frame->nb_samples * 4 * channels);
 
 ac_get(ac, gb, prob_dst_x_bit(s->fsets.coeff[0][0]), &dst_x_bit);
 
@@ -364,10 +364,10 @@ static int decode_frame(AVCodecContext *avctx, void *data,
 }
 
 dsd:
-for (i = 0; i < avctx->channels; i++) {
+for (i = 0; i < channels; i++) {
 ff_dsd2pcm_translate(&s->dsdctx[i], frame->nb_samples, 0,
  frame->data[0] + i * 4,
- avctx->channels * 4, pcm + i, avctx->channels);
+ channels * 4, pcm + i, channels);
 }
 
 *got_frame_ptr = 1;
-- 
2.17.1

___
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".

[FFmpeg-devel] [PATCH 2/2] avcodec/dstdec: Check sample rate

2020-02-13 Thread Michael Niedermayer
Fixes: out of array access
Fixes: 
20659/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DST_fuzzer-5735812071424000

Found-by: continuous fuzzing process 
https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer 
---
 libavcodec/dstdec.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/libavcodec/dstdec.c b/libavcodec/dstdec.c
index bdabced823..0505d3fde5 100644
--- a/libavcodec/dstdec.c
+++ b/libavcodec/dstdec.c
@@ -86,6 +86,11 @@ static av_cold int decode_init(AVCodecContext *avctx)
 return AVERROR_PATCHWELCOME;
 }
 
+if (DST_SAMPLES_PER_FRAME(avctx->sample_rate) & 7) {
+avpriv_request_sample(avctx, "sample rate %d", avctx->sample_rate);
+return AVERROR_PATCHWELCOME;
+}
+
 avctx->sample_fmt = AV_SAMPLE_FMT_FLT;
 
 for (i = 0; i < avctx->channels; i++)
-- 
2.17.1

___
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 v2] avcodec/cbs_av1: add missing value constrains to point_y_value, point_cb_value and point_cr_value

2020-02-13 Thread Mark Thompson
On 13/02/2020 18:21, James Almer wrote:
> On 2/13/2020 2:45 PM, Andreas Rheinhardt wrote:
>> On Thu, Feb 13, 2020 at 4:08 PM James Almer  wrote:
>>
>>> If i is greater than 0, it is a requirement of bitstream conformance that
>>> point_y_value[ i ] is greater than point_y_value[ i - 1 ].
>>> If i is greater than 0, it is a requirement of bitstream conformance that
>>> point_cb_value[ i ] is greater than point_cb_value[ i - 1 ].
>>> If i is greater than 0, it is a requirement of bitstream conformance that
>>> point_cr_value[ i ] is greater than point_cr_value[ i - 1 ].
>>>
>>> Signed-off-by: James Almer 
>>> ---
>>> Better version. Now it can't overflow the min value, and will also
>>> constrain
>>> the max value to ensure v[i] > v[i-1] is always true.
>>>
>>
>> How could the min value overflow at all? After all, the addition v[i - 1] +
>> 1 is performed after promoting v[i - 1] to int. This is then losslessly
>> converted to uint32_t. So your new version will not detect any more errors
>> than the old version. It might error out earlier sometimes, but to do so it
>> always computes the max.
>> (With the old version it can happen that the min value is bigger than the
>> max value which leads to the desired error (and an error message that might
>> be confusing; avoiding this seems to be the only real advantage this new
>> version has).)
>>
>> - Andreas
> 
> I wasn't sure if the sum would be promoted or not, but in any case, the
> core change is ensuring a given max value is constrained to always be
> smaller than the next min allowed value.

Yeah.  With your change the error will be precise and diagnosed as early as 
possible (e.g. { 10, 30, 20, 40, 50 } -> ~"value[2] out of range: 20, but must 
be in [31,253]"), so it looks good to me.

Thanks,

- Mark
___
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".

[FFmpeg-devel] [PATCH 3/3] avformat/libsrt: fix checking connection result in non-blocking mode

2020-02-13 Thread Marton Balint
After f8990c5f414d4575415e2a3981c3b14ca3d4 we properly set non-blocking
mode which makes the connect() call return always 0 even if no connection can
be established.

Fix this by always doing a poll after calling connect(). Also there was some
leftover copy paste code which checks for various errors which are simply not
possible with SRT.

Signed-off-by: Marton Balint 
---
 libavformat/libsrt.c | 41 +
 1 file changed, 13 insertions(+), 28 deletions(-)

diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c
index 378acb045a..1ab6c1ddb3 100644
--- a/libavformat/libsrt.c
+++ b/libavformat/libsrt.c
@@ -250,34 +250,19 @@ static int libsrt_listen_connect(int eid, int fd, const 
struct sockaddr *addr, s
 if (libsrt_socket_nonblock(fd, 1) < 0)
 av_log(h, AV_LOG_DEBUG, "ff_socket_nonblock failed\n");
 
-while ((ret = srt_connect(fd, addr, addrlen))) {
-ret = libsrt_neterrno(h);
-switch (ret) {
-case AVERROR(EINTR):
-if (ff_check_interrupt(&h->interrupt_callback))
-return AVERROR_EXIT;
-continue;
-case AVERROR(EINPROGRESS):
-case AVERROR(EAGAIN):
-ret = libsrt_network_wait_fd_timeout(h, eid, fd, 1, timeout, 
&h->interrupt_callback);
-if (ret < 0)
-return ret;
-ret = srt_getlasterror(NULL);
-srt_clearlasterror();
-if (ret != 0) {
-char buf[128];
-ret = AVERROR(ret);
-av_strerror(ret, buf, sizeof(buf));
-if (will_try_next)
-av_log(h, AV_LOG_WARNING,
-   "Connection to %s failed (%s), trying next 
address\n",
-   h->filename, buf);
-else
-av_log(h, AV_LOG_ERROR, "Connection to %s failed: %s\n",
-   h->filename, buf);
-}
-default:
-return ret;
+ret = srt_connect(fd, addr, addrlen);
+if (ret < 0)
+return libsrt_neterrno(h);
+
+ret = libsrt_network_wait_fd_timeout(h, eid, fd, 1, timeout, 
&h->interrupt_callback);
+if (ret < 0) {
+if (will_try_next) {
+av_log(h, AV_LOG_WARNING,
+   "Connection to %s failed (%s), trying next address\n",
+   h->filename, av_err2str(ret));
+} else {
+av_log(h, AV_LOG_ERROR, "Connection to %s failed: %s\n",
+   h->filename, av_err2str(ret));
 }
 }
 return ret;
-- 
2.16.4

___
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".

[FFmpeg-devel] [PATCH 1/3] avformat/libsrt: fix timeout unit confusion between milisec and microsec

2020-02-13 Thread Marton Balint
Signed-off-by: Marton Balint 
---
 libavformat/libsrt.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c
index d7faa603f5..1d748f0e81 100644
--- a/libavformat/libsrt.c
+++ b/libavformat/libsrt.c
@@ -210,7 +210,7 @@ static int libsrt_network_wait_fd_timeout(URLContext *h, 
int eid, int fd, int wr
 }
 }
 
-static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, 
socklen_t addrlen, URLContext *h, int timeout)
+static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, 
socklen_t addrlen, URLContext *h, int64_t timeout)
 {
 int ret;
 int reuse = 1;
@@ -243,7 +243,7 @@ static int libsrt_listen(int eid, int fd, const struct 
sockaddr *addr, socklen_t
 return ret;
 }
 
-static int libsrt_listen_connect(int eid, int fd, const struct sockaddr *addr, 
socklen_t addrlen, int timeout, URLContext *h, int will_try_next)
+static int libsrt_listen_connect(int eid, int fd, const struct sockaddr *addr, 
socklen_t addrlen, int64_t timeout, URLContext *h, int will_try_next)
 {
 int ret;
 
@@ -447,7 +447,7 @@ static int libsrt_setup(URLContext *h, const char *uri, int 
flags)
 }
 if (s->mode == SRT_MODE_LISTENER) {
 // multi-client
-if ((ret = libsrt_listen(s->eid, fd, cur_ai->ai_addr, 
cur_ai->ai_addrlen, h, open_timeout / 1000)) < 0)
+if ((ret = libsrt_listen(s->eid, fd, cur_ai->ai_addr, 
cur_ai->ai_addrlen, h, open_timeout)) < 0)
 goto fail1;
 fd = ret;
 } else {
@@ -458,7 +458,7 @@ static int libsrt_setup(URLContext *h, const char *uri, int 
flags)
 }
 
 if ((ret = libsrt_listen_connect(s->eid, fd, cur_ai->ai_addr, 
cur_ai->ai_addrlen,
-  open_timeout / 1000, h, 
!!cur_ai->ai_next)) < 0) {
+  open_timeout, h, !!cur_ai->ai_next)) 
< 0) {
 if (ret == AVERROR_EXIT)
 goto fail1;
 else
-- 
2.16.4

___
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".

[FFmpeg-devel] [PATCH 2/3] avformat/libsrt: fix name of timeout option

2020-02-13 Thread Marton Balint
rw_timeout is the generic URLcontext option, not the protocol specific timeout
option, also ?rw_timeout never worked because ?timeout was parsed instead.

Signed-off-by: Marton Balint 
---
 doc/protocols.texi   | 2 +-
 libavformat/libsrt.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/protocols.texi b/doc/protocols.texi
index 5e8c97d164..57814c7831 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -1347,7 +1347,7 @@ Set UDP receive buffer size, expressed in bytes.
 @item send_buffer_size=@var{bytes}
 Set UDP send buffer size, expressed in bytes.
 
-@item rw_timeout
+@item timeout
 Set raise error timeout for read/write optations.
 
 This option is only relevant in read mode:
diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c
index 1d748f0e81..378acb045a 100644
--- a/libavformat/libsrt.c
+++ b/libavformat/libsrt.c
@@ -96,7 +96,7 @@ typedef struct SRTContext {
 #define E AV_OPT_FLAG_ENCODING_PARAM
 #define OFFSET(x) offsetof(SRTContext, x)
 static const AVOption libsrt_options[] = {
-{ "rw_timeout", "Timeout of socket I/O operations",
 OFFSET(rw_timeout),   AV_OPT_TYPE_INT64, { .i64 = -1 }, 
-1, INT64_MAX, .flags = D|E },
+{ "timeout","Timeout of socket I/O operations",
 OFFSET(rw_timeout),   AV_OPT_TYPE_INT64, { .i64 = -1 }, 
-1, INT64_MAX, .flags = D|E },
 { "listen_timeout", "Connection awaiting timeout", 
 OFFSET(listen_timeout),   AV_OPT_TYPE_INT64, { .i64 = -1 }, 
-1, INT64_MAX, .flags = D|E },
 { "send_buffer_size", "Socket send buffer size (in bytes)",
 OFFSET(send_buffer_size), AV_OPT_TYPE_INT,  { .i64 = -1 }, 
-1, INT_MAX,   .flags = D|E },
 { "recv_buffer_size", "Socket receive buffer size (in bytes)", 
 OFFSET(recv_buffer_size), AV_OPT_TYPE_INT,  { .i64 = -1 }, 
-1, INT_MAX,   .flags = D|E },
-- 
2.16.4

___
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] avfilter: add pad opencl filter

2020-02-13 Thread Mark Thompson
On 10/02/2020 12:03, Paul B Mahol wrote:
> Signed-off-by: Paul B Mahol 
> ---
>  configure   |   1 +
>  doc/filters.texi|  77 +++
>  libavfilter/Makefile|   1 +
>  libavfilter/allfilters.c|   1 +
>  libavfilter/opencl/pad.cl   |  36 
>  libavfilter/opencl_source.h |   1 +
>  libavfilter/vf_pad_opencl.c | 397 
>  7 files changed, 514 insertions(+)
>  create mode 100644 libavfilter/opencl/pad.cl
>  create mode 100644 libavfilter/vf_pad_opencl.c
> 
> ...
> +
> +The @var{x} expression can reference the value set by the @var{y}
> +expression, and vice versa.
> +
> +The default value of @var{x} and @var{y} is 0.
> +
> +If @var{x} or @var{y} evaluate to a negative number, they'll be changed
> +so the input image is centered on the padded area.
> +
> +@item color
> +Specify the color of the padded area. For the syntax of this option,
> +check the @ref{color syntax,,"Color" section in the ffmpeg-utils
> +manual,ffmpeg-utils}.
> +
> +@item aspect
> +Pad to aspect instead to a resolution.

Funny phrasing.  "Pad to an aspect ratio instead of to a resolution.", maybe.

> +@end table
> +
> +The value for the @var{width}, @var{height}, @var{x}, and @var{y}
> +options are expressions containing the following constants:
> +
> +@table @option
> +@item in_w
> +@item in_h
> +The input video width and height.
> +
> +@item iw
> +@item ih
> +These are the same as @var{in_w} and @var{in_h}.
> +
> ...
> +
> +static int pad_opencl_init(AVFilterContext *avctx, AVFrame *input_frame)
> +{
> +PadOpenCLContext *ctx = avctx->priv;
> +AVHWFramesContext *input_frames_ctx = (AVHWFramesContext 
> *)input_frame->hw_frames_ctx->data;
> +const AVPixFmtDescriptor *desc = 
> av_pix_fmt_desc_get(input_frames_ctx->sw_format);
> +uint8_t rgba_map[4];
> +cl_int cle;
> +int err;
> +
> +ff_fill_rgba_map(rgba_map, input_frames_ctx->sw_format);

Ah, cute.  It's nice that a function already exists for this case :)

> +ctx->is_rgb = !!(desc->flags & AV_PIX_FMT_FLAG_RGB);
> +ctx->is_packed = !(desc->flags & AV_PIX_FMT_FLAG_PLANAR);
> +ctx->hsub = desc->log2_chroma_w;
> +ctx->vsub = desc->log2_chroma_h;
> +
> +err = ff_opencl_filter_load_program(avctx, &ff_opencl_source_pad, 1);
> +if (err < 0)
> +goto fail;
> +
> ...

I tested a bit on Mali and everything else LGTM.

Thanks,

- Mark
___
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".

[FFmpeg-devel] [PATCH]lavc/mlp_parse: Read wordlength from 0xba streams

2020-02-13 Thread Carl Eugen Hoyos
Hi!

Attached patch allows detecting s16 truehd streams encoded with
FFmpeg, only tested with FFmpeg's encoder, I did not look into any
specification.

Please comment, Carl Eugen
From 1b98303ab87463037e05e66f3129112fc5c6e484 Mon Sep 17 00:00:00 2001
From: Carl Eugen Hoyos 
Date: Fri, 14 Feb 2020 00:25:52 +0100
Subject: [PATCH] lavc/mlp_parse: Read wordlength from 0xba streams.

Fixes detecting 16 bit streams encoded with FFmpeg.
---
 libavcodec/mlp_parse.c | 11 +--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/libavcodec/mlp_parse.c b/libavcodec/mlp_parse.c
index 45715352c2..74173acba3 100644
--- a/libavcodec/mlp_parse.c
+++ b/libavcodec/mlp_parse.c
@@ -123,7 +123,6 @@ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb)
 mh->channels_mlp   = mlp_channels[channel_arrangement];
 mh->channel_layout_mlp = mlp_layout[channel_arrangement];
 } else if (mh->stream_type == 0xba) {
-mh->group1_bits = 24; // TODO: Is this information actually conveyed anywhere?
 mh->group2_bits = 0;
 
 ratebits = get_bits(gb, 4);
@@ -159,7 +158,15 @@ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb)
 
 mh->num_substreams = get_bits(gb, 4);
 
-skip_bits_long(gb, 4 + (header_size - 17) * 8);
+if (mh->stream_type == 0xba) {
+skip_bits(gb, 17);
+mh->group1_bits = get_bits(gb, 5);
+if (!mh->group1_bits)
+mh->group1_bits = 24;
+skip_bits_long(gb, 4 + (header_size - 17) * 8 - 22);
+} else {
+skip_bits_long(gb, 4 + (header_size - 17) * 8);
+}
 
 return 0;
 }
-- 
2.24.1

___
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 v2] avcodec/cbs_av1: add missing value constrains to point_y_value, point_cb_value and point_cr_value

2020-02-13 Thread James Almer
On 2/13/2020 8:08 PM, Mark Thompson wrote:
> On 13/02/2020 18:21, James Almer wrote:
>> On 2/13/2020 2:45 PM, Andreas Rheinhardt wrote:
>>> On Thu, Feb 13, 2020 at 4:08 PM James Almer  wrote:
>>>
 If i is greater than 0, it is a requirement of bitstream conformance that
 point_y_value[ i ] is greater than point_y_value[ i - 1 ].
 If i is greater than 0, it is a requirement of bitstream conformance that
 point_cb_value[ i ] is greater than point_cb_value[ i - 1 ].
 If i is greater than 0, it is a requirement of bitstream conformance that
 point_cr_value[ i ] is greater than point_cr_value[ i - 1 ].

 Signed-off-by: James Almer 
 ---
 Better version. Now it can't overflow the min value, and will also
 constrain
 the max value to ensure v[i] > v[i-1] is always true.

>>>
>>> How could the min value overflow at all? After all, the addition v[i - 1] +
>>> 1 is performed after promoting v[i - 1] to int. This is then losslessly
>>> converted to uint32_t. So your new version will not detect any more errors
>>> than the old version. It might error out earlier sometimes, but to do so it
>>> always computes the max.
>>> (With the old version it can happen that the min value is bigger than the
>>> max value which leads to the desired error (and an error message that might
>>> be confusing; avoiding this seems to be the only real advantage this new
>>> version has).)
>>>
>>> - Andreas
>>
>> I wasn't sure if the sum would be promoted or not, but in any case, the
>> core change is ensuring a given max value is constrained to always be
>> smaller than the next min allowed value.
> 
> Yeah.  With your change the error will be precise and diagnosed as early as 
> possible (e.g. { 10, 30, 20, 40, 50 } -> ~"value[2] out of range: 20, but 
> must be in [31,253]"), so it looks good to me.
> 
> Thanks,
> 
> - Mark

Applied, thanks.
___
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]lavc/mlp_parse: Read wordlength from 0xba streams

2020-02-13 Thread Hendrik Leppkes
On Fri, Feb 14, 2020 at 12:29 AM Carl Eugen Hoyos  wrote:
>
> Hi!
>
> Attached patch allows detecting s16 truehd streams encoded with
> FFmpeg, only tested with FFmpeg's encoder, I did not look into any
> specification.
>

According to Dolbys Bitstream specification this read does not seem
right. It reads half of a reserved field and 3 single-bit control
fields - in a structure called "channel meaning", which otherwise only
includes fields on channel assignment and interpretation, so this
field being in there seems weird.
Also, why would they code a literal value, and not a lookup table with
fewer bits like the 0xbb case does?

Unless we can find an actual real-world sample from a licensed encoder
that can confirm the presence and accuracy of this field, I'm going to
assume its not correct. It looks to me like it may be writing a MLP
(ie. 0xbb) header, and not a TrueHD header - beyond the first
differences, anyway. The high-level bitstream specification was not
available when mlpenc.c was initially written.
___
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".

[FFmpeg-devel] Status and Plans for Subtitle Filters

2020-02-13 Thread Soft Works
Hi,

I am looking for some guidance regarding future plans about processing subtitle 
streams in filter graphs.

Please correct me where I'm wrong - this is the situation as I've understood it 
so far:

- Currently, ffmpeg filter graphs do not support processing subtitle streams
- This is why filters like 'subtitles' and 'ass' need to open, read and parse 
the media file a second time  in parallel instead of just taking the subtitle 
events from ffmpeg'demuxing
- For graphical subtitles, there exists the so-called 'sub2video' workaround 
which is injecting the the graphical subtitle overlay images into the video 
filtergraph by declaring them as video
- The 'sub2video' was meant to exist until filtering would support subtitle 
streams
- A while ago, Clement Boesch submitted a patch for adding subtitle streams to 
filtergraph processing 
(https://patchwork.ffmpeg.org/project/ffmpeg/patch/20161102220934.26010-...@pkh.me/)
- I read through all the discussion about it, but nothing happened afterwards 
and I couldn't find any indication about why it didn't get merged


I'm asking because I'm intending to implement a subtitle filter that operates 
on in-stream data rather than a separate input and that will render text on 
transparent frames for later overlay.

The possible options that I have identified so far for creating that kind of 
"subtitle rendering filter" would be:

- Create a video source filter and implement some hack to get the subtitle data 
from the decoder to that filter - or...
- Jump on the sub2video implementation and extend it to render overlay images  
in case of text subtitles - or...
- check out the situation with regards to adding subtitle filter support in 
ffmpeg and ask about plans for this

That's where I stand right now. Does  it even make sense, the way I summarized 
it?`

Thank you very much,

softworkz



. 
___
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".

[FFmpeg-devel] [PATCH 3/3] libavcodec/libx264.c: add support for use_last_roi

2020-02-13 Thread Guo, Yejun
Signed-off-by: Guo, Yejun 
---
 libavcodec/libx264.c | 37 ++---
 1 file changed, 30 insertions(+), 7 deletions(-)

diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index bad9351..b275cc2 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -107,6 +107,12 @@ typedef struct X264Context {
 X264Opaque *reordered_opaque;
 
 /**
+ * quant_offsets that will be passed to encoder
+ */
+float *qoffsets;
+int qsize;  //in byte
+
+/**
  * If the encoder does not support ROI then warn the first time we
  * encounter a frame with ROI side data.
  */
@@ -299,9 +305,18 @@ static int x264_encode_set_roi(const AVFrame *frame, 
AVCodecContext *ctx, int bi
 int nb_rois;
 const AVRegionOfInterest *roi;
 uint32_t roi_size;
-float *qoffsets;
+int qsize = mbx * mby * sizeof(*x4->qoffsets);
 
 if (!sd) {
+if (frame->use_last_roi) {
+if (!x4->qoffsets) {
+if (!x4->roi_warned) {
+x4->roi_warned = 1;
+av_log(ctx, AV_LOG_WARNING, "No previous data for ROI 
encoding, skipping ROI.\n");
+}
+}
+x4->pic.prop.quant_offsets = x4->qoffsets;
+}
 return 0;
 }
 
@@ -329,10 +344,18 @@ static int x264_encode_set_roi(const AVFrame *frame, 
AVCodecContext *ctx, int bi
 }
 nb_rois = sd->size / roi_size;
 
-qoffsets = av_mallocz_array(mbx * mby, sizeof(*qoffsets));
-if (!qoffsets)
+// re-allocate x4->qoffsets if size changed
+if (x4->qsize != qsize)
+av_freep(&x4->qoffsets);
+
+if (!x4->qoffsets)
+x4->qoffsets = av_malloc(qsize);
+if (!x4->qoffsets)
 return AVERROR(ENOMEM);
 
+x4->qsize = qsize;
+memset(x4->qoffsets, 0, x4->qsize);
+
 // This list must be iterated in reverse because the first
 // region in the list applies when regions overlap.
 for (int i = nb_rois - 1; i >= 0; i--) {
@@ -347,7 +370,7 @@ static int x264_encode_set_roi(const AVFrame *frame, 
AVCodecContext *ctx, int bi
 endx   = FFMIN(mbx, (roi->right + MB_SIZE - 1)/ MB_SIZE);
 
 if (roi->qoffset.den == 0) {
-av_free(qoffsets);
+av_freep(&x4->qoffsets);
 av_log(ctx, AV_LOG_ERROR, "AVRegionOfInterest.qoffset.den must not 
be zero.\n");
 return AVERROR(EINVAL);
 }
@@ -356,13 +379,12 @@ static int x264_encode_set_roi(const AVFrame *frame, 
AVCodecContext *ctx, int bi
 
 for (int y = starty; y < endy; y++) {
 for (int x = startx; x < endx; x++) {
-qoffsets[x + y*mbx] = qoffset;
+x4->qoffsets[x + y*mbx] = qoffset;
 }
 }
 }
 
-x4->pic.prop.quant_offsets = qoffsets;
-x4->pic.prop.quant_offsets_free = av_free;
+x4->pic.prop.quant_offsets = x4->qoffsets;
 return 0;
 }
 
@@ -515,6 +537,7 @@ static av_cold int X264_close(AVCodecContext *avctx)
 av_freep(&avctx->extradata);
 av_freep(&x4->sei);
 av_freep(&x4->reordered_opaque);
+av_freep(&x4->qoffsets);
 
 if (x4->enc) {
 x264_encoder_close(x4->enc);
-- 
2.7.4

___
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".

[FFmpeg-devel] [PATCH 2/3] libavcodec/libx264.c: refine code to extract function x264_encode_set_roi

2020-02-13 Thread Guo, Yejun
Signed-off-by: Guo, Yejun 
---
 libavcodec/libx264.c | 148 ---
 1 file changed, 80 insertions(+), 68 deletions(-)

diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index ca8f6c0..bad9351 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -289,6 +289,83 @@ static void reconfig_encoder(AVCodecContext *ctx, const 
AVFrame *frame)
 }
 }
 
+static int x264_encode_set_roi(const AVFrame *frame, AVCodecContext *ctx, int 
bit_depth)
+{
+AVFrameSideData *sd = av_frame_get_side_data(frame, 
AV_FRAME_DATA_REGIONS_OF_INTEREST);
+X264Context *x4 = ctx->priv_data;
+int mbx = (frame->width + MB_SIZE - 1) / MB_SIZE;
+int mby = (frame->height + MB_SIZE - 1) / MB_SIZE;
+int qp_range = 51 + 6 * (bit_depth - 8);
+int nb_rois;
+const AVRegionOfInterest *roi;
+uint32_t roi_size;
+float *qoffsets;
+
+if (!sd) {
+return 0;
+}
+
+if (x4->params.rc.i_aq_mode == X264_AQ_NONE) {
+if (!x4->roi_warned) {
+x4->roi_warned = 1;
+av_log(ctx, AV_LOG_WARNING, "Adaptive quantization must be enabled 
to use ROI encoding, skipping ROI.\n");
+}
+return 0;
+}
+
+if (frame->interlaced_frame != 0) {
+if (!x4->roi_warned) {
+x4->roi_warned = 1;
+av_log(ctx, AV_LOG_WARNING, "interlaced_frame not supported for 
ROI encoding yet, skipping ROI.\n");
+}
+return 0;
+}
+
+roi = (const AVRegionOfInterest*)sd->data;
+roi_size = roi->self_size;
+if (!roi_size || sd->size % roi_size != 0) {
+av_log(ctx, AV_LOG_ERROR, "Invalid AVRegionOfInterest.self_size.\n");
+return AVERROR(EINVAL);
+}
+nb_rois = sd->size / roi_size;
+
+qoffsets = av_mallocz_array(mbx * mby, sizeof(*qoffsets));
+if (!qoffsets)
+return AVERROR(ENOMEM);
+
+// This list must be iterated in reverse because the first
+// region in the list applies when regions overlap.
+for (int i = nb_rois - 1; i >= 0; i--) {
+int startx, endx, starty, endy;
+float qoffset;
+
+roi = (const AVRegionOfInterest*)(sd->data + roi_size * i);
+
+starty = FFMIN(mby, roi->top / MB_SIZE);
+endy   = FFMIN(mby, (roi->bottom + MB_SIZE - 1)/ MB_SIZE);
+startx = FFMIN(mbx, roi->left / MB_SIZE);
+endx   = FFMIN(mbx, (roi->right + MB_SIZE - 1)/ MB_SIZE);
+
+if (roi->qoffset.den == 0) {
+av_free(qoffsets);
+av_log(ctx, AV_LOG_ERROR, "AVRegionOfInterest.qoffset.den must not 
be zero.\n");
+return AVERROR(EINVAL);
+}
+qoffset = roi->qoffset.num * 1.0f / roi->qoffset.den;
+qoffset = av_clipf(qoffset * qp_range, -qp_range, +qp_range);
+
+for (int y = starty; y < endy; y++) {
+for (int x = startx; x < endx; x++) {
+qoffsets[x + y*mbx] = qoffset;
+}
+}
+}
+
+x4->pic.prop.quant_offsets = qoffsets;
+x4->pic.prop.quant_offsets_free = av_free;
+return 0;
+}
+
 static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame,
   int *got_packet)
 {
@@ -300,7 +377,6 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, 
const AVFrame *frame,
 int bit_depth;
 int64_t wallclock = 0;
 X264Opaque *out_opaque;
-AVFrameSideData *sd;
 
 x264_picture_init( &x4->pic );
 x4->pic.img.i_csp   = x4->params.i_csp;
@@ -367,73 +443,9 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, 
const AVFrame *frame,
 }
 }
 
-sd = av_frame_get_side_data(frame, AV_FRAME_DATA_REGIONS_OF_INTEREST);
-if (sd) {
-if (x4->params.rc.i_aq_mode == X264_AQ_NONE) {
-if (!x4->roi_warned) {
-x4->roi_warned = 1;
-av_log(ctx, AV_LOG_WARNING, "Adaptive quantization must be 
enabled to use ROI encoding, skipping ROI.\n");
-}
-} else {
-if (frame->interlaced_frame == 0) {
-int mbx = (frame->width + MB_SIZE - 1) / MB_SIZE;
-int mby = (frame->height + MB_SIZE - 1) / MB_SIZE;
-int qp_range = 51 + 6 * (bit_depth - 8);
-int nb_rois;
-const AVRegionOfInterest *roi;
-uint32_t roi_size;
-float *qoffsets;
-
-roi = (const AVRegionOfInterest*)sd->data;
-roi_size = roi->self_size;
-if (!roi_size || sd->size % roi_size != 0) {
-av_log(ctx, AV_LOG_ERROR, "Invalid 
AVRegionOfInterest.self_size.\n");
-return AVERROR(EINVAL);
-}
-nb_rois = sd->size / roi_size;
-
-qoffsets = av_mallocz_array(mbx * mby, sizeof(*qoffsets));
-if (!qoffsets)
-return AVERROR(

[FFmpeg-devel] [PATCH 1/3] avutil/frame: add use_last_roi

2020-02-13 Thread Guo, Yejun
For some cases, the regions of interest do not change, it is not
convenient to always prepare the roi data for every frame. So, add
use_last_roi to show it uses the same roi data as last frame.

Since a new flag is added into AVFrame, the major version number of
lavu is changed.

Signed-off-by: Guo, Yejun 
---
 doc/APIchanges  |  3 +++
 libavutil/frame.h   |  8 
 libavutil/version.h | 20 ++--
 3 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 761f37f..eec0f2f 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil: 2017-10-21
 
 API changes, most recent first:
 
+2020-02-14 - xx - lavu 57.0.100 - frame.h
+  Add use_last_roi in AVFrame.
+
 2020-02-13 - xx - lavu 56.41.100 - tx.h
   Add AV_TX_INT32_FFT and AV_TX_INT32_MDCT
 
diff --git a/libavutil/frame.h b/libavutil/frame.h
index b5afb58..2c786f4 100644
--- a/libavutil/frame.h
+++ b/libavutil/frame.h
@@ -634,6 +634,14 @@ typedef struct AVFrame {
 AVBufferRef *hw_frames_ctx;
 
 /**
+ * It is set if the RegionOfInterest info is the same as last frame,
+ * so, we don't need to prepare the same thing in side_data.
+ * If there is roi info in side_data and this variable is also set,
+ * use the info in side_data.
+ */
+int8_t use_last_roi;
+
+/**
  * AVBufferRef for free use by the API user. FFmpeg will never check the
  * contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when
  * the frame is unreferenced. av_frame_copy_props() calls create a new
diff --git a/libavutil/version.h b/libavutil/version.h
index 90cc55b..aade19b 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -78,8 +78,8 @@
  * @{
  */
 
-#define LIBAVUTIL_VERSION_MAJOR  56
-#define LIBAVUTIL_VERSION_MINOR  41
+#define LIBAVUTIL_VERSION_MAJOR  57
+#define LIBAVUTIL_VERSION_MINOR   0
 #define LIBAVUTIL_VERSION_MICRO 100
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
@@ -106,28 +106,28 @@
  */
 
 #ifndef FF_API_VAAPI
-#define FF_API_VAAPI(LIBAVUTIL_VERSION_MAJOR < 57)
+#define FF_API_VAAPI(LIBAVUTIL_VERSION_MAJOR < 58)
 #endif
 #ifndef FF_API_FRAME_QP
-#define FF_API_FRAME_QP (LIBAVUTIL_VERSION_MAJOR < 57)
+#define FF_API_FRAME_QP (LIBAVUTIL_VERSION_MAJOR < 58)
 #endif
 #ifndef FF_API_PLUS1_MINUS1
-#define FF_API_PLUS1_MINUS1 (LIBAVUTIL_VERSION_MAJOR < 57)
+#define FF_API_PLUS1_MINUS1 (LIBAVUTIL_VERSION_MAJOR < 58)
 #endif
 #ifndef FF_API_ERROR_FRAME
-#define FF_API_ERROR_FRAME  (LIBAVUTIL_VERSION_MAJOR < 57)
+#define FF_API_ERROR_FRAME  (LIBAVUTIL_VERSION_MAJOR < 58)
 #endif
 #ifndef FF_API_PKT_PTS
-#define FF_API_PKT_PTS  (LIBAVUTIL_VERSION_MAJOR < 57)
+#define FF_API_PKT_PTS  (LIBAVUTIL_VERSION_MAJOR < 58)
 #endif
 #ifndef FF_API_CRYPTO_SIZE_T
-#define FF_API_CRYPTO_SIZE_T(LIBAVUTIL_VERSION_MAJOR < 57)
+#define FF_API_CRYPTO_SIZE_T(LIBAVUTIL_VERSION_MAJOR < 58)
 #endif
 #ifndef FF_API_FRAME_GET_SET
-#define FF_API_FRAME_GET_SET(LIBAVUTIL_VERSION_MAJOR < 57)
+#define FF_API_FRAME_GET_SET(LIBAVUTIL_VERSION_MAJOR < 58)
 #endif
 #ifndef FF_API_PSEUDOPAL
-#define FF_API_PSEUDOPAL(LIBAVUTIL_VERSION_MAJOR < 57)
+#define FF_API_PSEUDOPAL(LIBAVUTIL_VERSION_MAJOR < 58)
 #endif
 
 
-- 
2.7.4

___
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] fftools/ffmpeg_filter: add -autoscale to disable/enable the default scale

2020-02-13 Thread Fu, Linjie
> -Original Message-
> From: ffmpeg-devel  On Behalf Of Fu,
> Linjie
> Sent: Tuesday, February 11, 2020 20:58
> To: FFmpeg development discussions and patches  de...@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH] fftools/ffmpeg_filter: add -autoscale
> to disable/enable the default scale
> 
> > -Original Message-
> > From: ffmpeg-devel  On Behalf Of
> > Moritz Barsnick
> > Sent: Tuesday, February 11, 2020 19:04
> > To: FFmpeg development discussions and patches  > de...@ffmpeg.org>
> > Subject: Re: [FFmpeg-devel] [PATCH] fftools/ffmpeg_filter: add -autoscale
> > to disable/enable the default scale
> >
> > On Mon, Feb 10, 2020 at 17:27:03 +0800, Linjie Fu wrote:
> > > +{ "autoscale",HAS_ARG | OPT_BOOL | OPT_SPEC |
> > > +  OPT_EXPERT | OPT_OUTPUT,   
> > > { .off =
> > OFFSET(autoscale) },
> > > +"automatically insert a scale filter at the end of the filter 
> > > graph if a
> > resolution"
> > > +"change is detected. This ensures all frames are the same 
> > > resolution
> > as the first frame"
> > > +"when they leave the filter chain (this option is enabled by
> default)."
> > > +"If disabled, some encoders/muxers may not support this mode."},
> >
> > Have you checked the output of "ffmpeg -h"? Your C strings merge
> > directly together, and are therefore missing spaces, e.g. in
> > "resolutionchange" and "as the first framewhen they leave",
> >
> Yes, spaces should be added, thanks for pointing this out :).
> 
> I'll fix this in next version together with other suggestions if there is any.
> 
Ping, any suggestions?

___
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".