Re: [FFmpeg-devel] How to wire asm to the makefile

2018-07-08 Thread Book Moons
(Those *_altivec files in libswscale are C code with intrinsics)

‐‐‐ Original Message ‐‐‐

On July 9, 2018 12:29 AM, Book Moons  wrote:

> Hello,
> 
> I have a Power optimized function in asm for an upcoming patch. Having some 
> trouble figuring out how to wire it up to the makefiles / build system. Are 
> there any docs on how to do that?
> 
> The only other example of Power asm seems to be libavcodec/ppc/fft_altivec.S. 
> That's simply appended to the OBJS-yes variable:
> 
> OBJS-$(CONFIG_FFT) += ppc/fft_init.o
> 
> ppc/fft_altivec.o
> 
> ppc/fft_vsx.o
> 
> Doing the same thing in the relevant makefile (for libswscale/ppc) doesn't 
> seem to work.
> 
> OBJS += ppc/swscale_altivec.o
> 
> ppc/yuv2rgb_altivec.o
> 
> ppc/yuv2yuv_altivec.o
> 
> ppc/hScale8To15_vsx.o
> 
> It looks for a .c file. Building with that change gives this error:
> 
> > make: *** No rule to make target 'src/libswscale/ppc/hScale8To15_vsx.c', 
> > needed by 'libswscale/ppc/hScale8To15_vsx.o'. Stop.
> 
> 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] fate: allow temp files for passed test to be kept

2018-07-08 Thread Gyan Doshi


On 08-07-2018 11:27 PM, Gyan Doshi wrote:


Ping.


Will push tonight if no objections.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] How to wire asm to the makefile

2018-07-08 Thread Book Moons
Hello,

I have a Power optimized function in asm for an upcoming patch. Having some 
trouble figuring out how to wire it up to the makefiles / build system. Are 
there any docs on how to do that?

The only other example of Power asm seems to be libavcodec/ppc/fft_altivec.S. 
That's simply appended to the OBJS-yes variable:

OBJS-$(CONFIG_FFT)   += ppc/fft_init.o\
  ppc/fft_altivec.o \
  ppc/fft_vsx.o

Doing the same thing in the relevant makefile (for libswscale/ppc) doesn't seem 
to work.

OBJS += ppc/swscale_altivec.o \
ppc/yuv2rgb_altivec.o   \
ppc/yuv2yuv_altivec.o   \
ppc/hScale8To15_vsx.o

It looks for a .c file. Building with that change gives this error:

>make: *** No rule to make target 'src/libswscale/ppc/hScale8To15_vsx.c', 
>needed by 'libswscale/ppc/hScale8To15_vsx.o'. Stop.

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


[FFmpeg-devel] [PATCH] lavfi: add vflip_opencl, hflip_opencl

2018-07-08 Thread Danil Iashchenko
lavfi: add vflip_opencl, hflip_opencl.
Behaves like existing vflip, hflip filters.
---
 configure |   2 +
 libavfilter/Makefile  |   4 +
 libavfilter/allfilters.c  |   2 +
 libavfilter/opencl/vflip.cl   |  60 ++
 libavfilter/opencl_source.h   |   1 +
 libavfilter/vf_vflip_opencl.c | 270 ++
 6 files changed, 339 insertions(+)
 create mode 100644 libavfilter/opencl/vflip.cl
 create mode 100644 libavfilter/vf_vflip_opencl.c

diff --git a/configure b/configure
index b1a4dcf..7863056 100755
--- a/configure
+++ b/configure
@@ -3348,6 +3348,7 @@ frei0r_filter_deps="frei0r libdl"
 frei0r_src_filter_deps="frei0r libdl"
 fspp_filter_deps="gpl"
 geq_filter_deps="gpl"
+hflip_opencl_filter_deps="opencl"
 histeq_filter_deps="gpl"
 hqdn3d_filter_deps="gpl"
 interlace_filter_deps="gpl"
@@ -3422,6 +3423,7 @@ uspp_filter_deps="gpl avcodec"
 vaguedenoiser_filter_deps="gpl"
 vidstabdetect_filter_deps="libvidstab"
 vidstabtransform_filter_deps="libvidstab"
+vflip_opencl_filter_deps="opencl"
 libvmaf_filter_deps="libvmaf pthreads"
 zmq_filter_deps="libzmq"
 zoompan_filter_deps="swscale"
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 7735c26..ad7daab 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -230,6 +230,8 @@ OBJS-$(CONFIG_GEQ_FILTER)+= vf_geq.o
 OBJS-$(CONFIG_GRADFUN_FILTER)+= vf_gradfun.o
 OBJS-$(CONFIG_HALDCLUT_FILTER)   += vf_lut3d.o framesync.o
 OBJS-$(CONFIG_HFLIP_FILTER)  += vf_hflip.o
+OBJS-$(CONFIG_HFLIP_OPENCL_FILTER)   += vf_vflip_opencl.o opencl.o \
+opencl/vflip.o
 OBJS-$(CONFIG_HISTEQ_FILTER) += vf_histeq.o
 OBJS-$(CONFIG_HISTOGRAM_FILTER)  += vf_histogram.o
 OBJS-$(CONFIG_HQDN3D_FILTER) += vf_hqdn3d.o
@@ -376,6 +378,8 @@ OBJS-$(CONFIG_USPP_FILTER)   += vf_uspp.o
 OBJS-$(CONFIG_VAGUEDENOISER_FILTER)  += vf_vaguedenoiser.o
 OBJS-$(CONFIG_VECTORSCOPE_FILTER)+= vf_vectorscope.o
 OBJS-$(CONFIG_VFLIP_FILTER)  += vf_vflip.o
+OBJS-$(CONFIG_VFLIP_OPENCL_FILTER)   += vf_vflip_opencl.o opencl.o \
+opencl/vflip.o
 OBJS-$(CONFIG_VFRDET_FILTER) += vf_vfrdet.o
 OBJS-$(CONFIG_VIDSTABDETECT_FILTER)  += vidstabutils.o 
vf_vidstabdetect.o
 OBJS-$(CONFIG_VIDSTABTRANSFORM_FILTER)   += vidstabutils.o 
vf_vidstabtransform.o
diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c
index 0ded83e..3e7e11b 100644
--- a/libavfilter/allfilters.c
+++ b/libavfilter/allfilters.c
@@ -219,6 +219,7 @@ extern AVFilter ff_vf_geq;
 extern AVFilter ff_vf_gradfun;
 extern AVFilter ff_vf_haldclut;
 extern AVFilter ff_vf_hflip;
+extern AVFilter ff_vf_hflip_opencl;
 extern AVFilter ff_vf_histeq;
 extern AVFilter ff_vf_histogram;
 extern AVFilter ff_vf_hqdn3d;
@@ -359,6 +360,7 @@ extern AVFilter ff_vf_uspp;
 extern AVFilter ff_vf_vaguedenoiser;
 extern AVFilter ff_vf_vectorscope;
 extern AVFilter ff_vf_vflip;
+extern AVFilter ff_vf_vflip_opencl;
 extern AVFilter ff_vf_vfrdet;
 extern AVFilter ff_vf_vidstabdetect;
 extern AVFilter ff_vf_vidstabtransform;
diff --git a/libavfilter/opencl/vflip.cl b/libavfilter/opencl/vflip.cl
new file mode 100644
index 000..4ed2f43
--- /dev/null
+++ b/libavfilter/opencl/vflip.cl
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2018 Danil Iashchenko
+ *
+ * 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
+ */
+
+
+void swap_pix(__write_only image2d_t dst,
+  __read_only  image2d_t src,
+  int2 loc,
+  int2 loc1) {
+
+const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
+   CLK_ADDRESS_CLAMP_TO_EDGE   |
+   CLK_FILTER_NEAREST);
+
+float4 px  = read_imagef(src, sampler, loc );
+float4 px1 = read_imagef(src, sampler, loc1);
+
+write_imagef(dst, loc,  px1);
+write_imagef(dst, loc1, px );
+}
+
+
+__kernel void vflip_global(__write_only image2d_t dst,
+   __read_only  image2d_t src)
+{
+
+int2 imgSize = get_image_dim(src);
+int2 loc  = (int2)(get_global_id(0), 

Re: [FFmpeg-devel] [PATCH 2/2] lavc/hevc_ps: use skip_bits instead of get_bits when skip bits.

2018-07-08 Thread myp...@gmail.com
On Mon, Jul 9, 2018 at 8:41 AM James Almer  wrote:
>
> On 7/8/2018 9:16 PM, myp...@gmail.com wrote:
> > On Sat, Jul 7, 2018 at 6:32 PM Carl Eugen Hoyos 
wrote:
> >>
> >> 2018-07-07 7:48 GMT+02:00, Jun Zhao :
> >>> use skip_bits when want to skip some bits.
> >>>
> >>> Signed-off-by: Jun Zhao 
> >>> ---
> >>>  libavcodec/hevc_ps.c | 2 +-
> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c
> >>> index bc5406b..278b928 100644
> >>> --- a/libavcodec/hevc_ps.c
> >>> +++ b/libavcodec/hevc_ps.c
> >>> @@ -1679,7 +1679,7 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb,
> >>> AVCodecContext *avctx,
> >>>
> >>>  if (get_bits1(gb)) { // pps_extension_present_flag
> >>>  int pps_range_extensions_flag = get_bits1(gb);
> >>> -/* int pps_extension_7bits = */ get_bits(gb, 7);
> >>> +skip_bits(gb, 7);
> >>
> >> This seems to make the code less readable, no?
> >
> > You means keep old style? But I think skip_bits more clear in this
> > case, maybe I need to add some comment?
>
> He probably means leaving the comment about what the skipped field/s is.
I see, will keep the comment about the skipped fields
​.​
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH v5 2/3] aadec: add chapters and seeking

2018-07-08 Thread Michael Niedermayer
On Sun, Jul 08, 2018 at 11:46:26AM +0200, Karsten Otto wrote:
> read_packet reads content in chunks. Thus seek must be clamped to valid
> chunk positions in the file, which in turn are relative to chapter start
> positions.
> 
> So in read_header, scan for chapter headers once by skipping through the
> content. Set stream time_base based on bitrate in bytes/s, for easy
> timestamp to position conversion.
> 
> Then in read_seek, find the chapter containing the seek position, calculate
> the nearest chunk position, and reinit the read_seek state accordingly.
> ---
>  libavformat/aadec.c | 85 
> ++---
>  1 file changed, 81 insertions(+), 4 deletions(-)

will apply

thanks

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Whats the most studid thing your enemy could do ? Blow himself up
Whats the most studid thing you could do ? Give up your rights and
freedom because your enemy blew himself up.



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


Re: [FFmpeg-devel] [PATCH] libavcodec/mpegaudiodecheader.h : detect reserved mpeg id

2018-07-08 Thread Michael Niedermayer
On Sun, Jul 08, 2018 at 12:26:10PM +0200, Karsten Otto wrote:
> Check the MPEG version ID for the reserved bit pattern 01, and abort the
> header check in that case. This reduces the chance of misinterpreting
> arbitrary data as a valid header, and prevents resulting audio artifacts.
> ---
>  libavcodec/mpegaudiodecheader.h | 3 +++
>  1 file changed, 3 insertions(+)

will apply

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When the tyrant has disposed of foreign enemies by conquest or treaty, and
there is nothing more to fear from them, then he is always stirring up
some war or other, in order that the people may require a leader. -- Plato


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


Re: [FFmpeg-devel] [PATCH 2/2] lavc/hevc_ps: use skip_bits instead of get_bits when skip bits.

2018-07-08 Thread James Almer
On 7/8/2018 9:16 PM, myp...@gmail.com wrote:
> On Sat, Jul 7, 2018 at 6:32 PM Carl Eugen Hoyos  wrote:
>>
>> 2018-07-07 7:48 GMT+02:00, Jun Zhao :
>>> use skip_bits when want to skip some bits.
>>>
>>> Signed-off-by: Jun Zhao 
>>> ---
>>>  libavcodec/hevc_ps.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c
>>> index bc5406b..278b928 100644
>>> --- a/libavcodec/hevc_ps.c
>>> +++ b/libavcodec/hevc_ps.c
>>> @@ -1679,7 +1679,7 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb,
>>> AVCodecContext *avctx,
>>>
>>>  if (get_bits1(gb)) { // pps_extension_present_flag
>>>  int pps_range_extensions_flag = get_bits1(gb);
>>> -/* int pps_extension_7bits = */ get_bits(gb, 7);
>>> +skip_bits(gb, 7);
>>
>> This seems to make the code less readable, no?
> 
> You means keep old style? But I think skip_bits more clear in this
> case, maybe I need to add some comment?

He probably means leaving the comment about what the skipped field/s is.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 2/2] lavc/hevc_ps: use skip_bits instead of get_bits when skip bits.

2018-07-08 Thread myp...@gmail.com
On Sat, Jul 7, 2018 at 6:32 PM Carl Eugen Hoyos  wrote:
>
> 2018-07-07 7:48 GMT+02:00, Jun Zhao :
> > use skip_bits when want to skip some bits.
> >
> > Signed-off-by: Jun Zhao 
> > ---
> >  libavcodec/hevc_ps.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c
> > index bc5406b..278b928 100644
> > --- a/libavcodec/hevc_ps.c
> > +++ b/libavcodec/hevc_ps.c
> > @@ -1679,7 +1679,7 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb,
> > AVCodecContext *avctx,
> >
> >  if (get_bits1(gb)) { // pps_extension_present_flag
> >  int pps_range_extensions_flag = get_bits1(gb);
> > -/* int pps_extension_7bits = */ get_bits(gb, 7);
> > +skip_bits(gb, 7);
>
> This seems to make the code less readable, no?

You means keep old style? But I think skip_bits more clear in this
case, maybe I need to add some comment?

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


Re: [FFmpeg-devel] [PATCH] lavfi/minterpolate: fix blending calc issue.

2018-07-08 Thread myp...@gmail.com
On Fri, Jul 6, 2018 at 3:21 PM Steven Liu  wrote:
>
> myp...@gmail.com  于2018年7月4日周三 下午3:05写道:
> >
> > On Wed, Jun 27, 2018 at 5:52 PM Jun Zhao  wrote:
> > >
> > > the right blending calc is:
> > > (alpha * Frame_2 + (MAX - alpha) * Frame_1 + 512) >> 10
> > >
> > > Signed-off-by: Jun Zhao 
> > > ---
> > >  libavfilter/vf_minterpolate.c | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/libavfilter/vf_minterpolate.c b/libavfilter/vf_minterpolate.c
> > > index d534315..c6a5e63 100644
> > > --- a/libavfilter/vf_minterpolate.c
> > > +++ b/libavfilter/vf_minterpolate.c
> > > @@ -1122,8 +1122,8 @@ static void interpolate(AVFilterLink *inlink,
> > AVFrame *avf_out)
> > >  for (y = 0; y < height; y++) {
> > >  for (x = 0; x < width; x++) {
> > >  avf_out->data[plane][x + y * 
> > > avf_out->linesize[plane]]
> > =
> > > -  alpha  * 
> > > mi_ctx->frames[2].avf->data[plane][x
> > + y * mi_ctx->frames[2].avf->linesize[plane]] +
> > > -((ALPHA_MAX - alpha) * 
> > > mi_ctx->frames[1].avf->data[plane][x
> > + y * mi_ctx->frames[1].avf->linesize[plane]] + 512) >> 10;
> > > +(alpha  * 
> > > mi_ctx->frames[2].avf->data[plane][x
> > + y * mi_ctx->frames[2].avf->linesize[plane]] +
> > > + (ALPHA_MAX - alpha) * 
> > > mi_ctx->frames[1].avf->data[plane][x
> > + y * mi_ctx->frames[1].avf->linesize[plane]] + 512) >> 10;
> > >  }
> > >  }
> > >  }
> > > --
> > > 2.7.4
> > >
> > ping, any comments for this fix?
>
> LGTM
Applied, thanks
>
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [GSoC] FFserver: Add HLS and DASH

2018-07-08 Thread Michael Niedermayer
On Thu, Jun 28, 2018 at 02:51:00AM +0200, Stephan Holljes wrote:
> This patchset took embarrassingly long to produce. I first took a few wrong
> turns, but I think I'm now at a point where I reached the limits of the
> public server API in libavformat. The main problem is that I cannot set
> options on clients that are accepted through http_accept(), for example
> a timeout on socket operations, as currently a client that disconnects while
> being sent a file causes the sending thread to loop infintely in a 
> poll()-call.
> I wonder if adding a different library handling the http server (as planned 
> for
> the future) would be better done now rather than later. 
> 
> Another bug I cannot really explain so far (that may be because of my
> unfamiliarity with DASH) is that with longer files the DASH stream starts to
> repeat some fragments (at least in mpv) in weird ways. HLS does not have this
> problem.
> 
> Another thing that is not yet handled are unmuxable codecs.
> 
> The patchset also includes some cleanup and other various fixes.

on a slightly different subject, do people want me to create a git repository
on git.ffmpeg.org, similar to:

https://git.ffmpeg.org/gitweb/ffmpeg.git

for this ?
as tha patches are not for the main ffmpeg repository ...
or maybe ive missed a discussion about this and this already has a intended
place to be put to ?

if i should create one, who should have access?, who will maintain it?
This question about maintaince is probably somewhat for mentor and student,
as i assume you know the code much better than anyone else ...

thanks

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Complexity theory is the science of finding the exact solution to an
approximation. Benchmarking OTOH is finding an approximation of the exact


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


Re: [FFmpeg-devel] [PATCH] fate: allow temp files for passed test to be kept

2018-07-08 Thread Gyan Doshi


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


[FFmpeg-devel] [PATCH] avutil/pixelutils: correct the function name in comments

2018-07-08 Thread Jun Zhao
Signed-off-by: Jun Zhao 
---
 libavutil/x86/pixelutils.asm | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavutil/x86/pixelutils.asm b/libavutil/x86/pixelutils.asm
index 7af3007..171a3d1 100644
--- a/libavutil/x86/pixelutils.asm
+++ b/libavutil/x86/pixelutils.asm
@@ -104,8 +104,8 @@ cglobal pixelutils_sad_16x16, 4,4,0, src1, stride1, src2, 
stride2
 RET
 
 
;---
-; int ff_pixelutils_sad_16x16_sse(const uint8_t *src1, ptrdiff_t stride1,
-; const uint8_t *src2, ptrdiff_t stride2);
+; int ff_pixelutils_sad_16x16_sse2(const uint8_t *src1, ptrdiff_t stride1,
+;  const uint8_t *src2, ptrdiff_t stride2);
 
;---
 INIT_XMM sse2
 cglobal pixelutils_sad_16x16, 4,4,5, src1, stride1, src2, stride2
@@ -134,8 +134,8 @@ cglobal pixelutils_sad_16x16, 4,4,5, src1, stride1, src2, 
stride2
 RET
 
 
;---
-; int ff_pixelutils_sad_[au]_16x16_sse(const uint8_t *src1, ptrdiff_t stride1,
-;  const uint8_t *src2, ptrdiff_t stride2);
+; int ff_pixelutils_sad_[au]_16x16_sse2(const uint8_t *src1, ptrdiff_t stride1,
+;   const uint8_t *src2, ptrdiff_t 
stride2);
 
;---
 %macro SAD_XMM_16x16 1
 INIT_XMM sse2
-- 
2.7.4

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


[FFmpeg-devel] [PATCH] libavcodec/mpegaudiodecheader.h : detect reserved mpeg id

2018-07-08 Thread Karsten Otto
Check the MPEG version ID for the reserved bit pattern 01, and abort the
header check in that case. This reduces the chance of misinterpreting
arbitrary data as a valid header, and prevents resulting audio artifacts.
---
 libavcodec/mpegaudiodecheader.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/mpegaudiodecheader.h b/libavcodec/mpegaudiodecheader.h
index 1cb9216461..ed9961250a 100644
--- a/libavcodec/mpegaudiodecheader.h
+++ b/libavcodec/mpegaudiodecheader.h
@@ -62,6 +62,9 @@ static inline int ff_mpa_check_header(uint32_t header){
 /* header */
 if ((header & 0xffe0) != 0xffe0)
 return -1;
+/* version check */
+if ((header & (3<<19)) == 1)
+return -1;
 /* layer check */
 if ((header & (3<<17)) == 0)
 return -1;
-- 
2.14.3 (Apple Git-98)

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


Re: [FFmpeg-devel] [PATCH] libavcodec/mpegaudiodecheader.c : prevent reserved id misinterpretation

2018-07-08 Thread Karsten Otto

> Am 08.07.2018 um 10:58 schrieb Michael Niedermayer :
> 
> Signierter PGP-Teil
> On Sat, Jul 07, 2018 at 10:29:11PM +0200, Karsten Otto wrote:
>> Check the MPEG version ID for the reserved bit pattern 01, and abort header
>> parsing in that case. This reduces the chance of misinterpreting arbitrary
>> data as a valid frame start, and prevents the resulting audio artifacts.
>> ---
>> libavcodec/mpegaudiodecheader.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>> 
>> diff --git a/libavcodec/mpegaudiodecheader.c 
>> b/libavcodec/mpegaudiodecheader.c
>> index 6cc79f18b5..23029f186a 100644
>> --- a/libavcodec/mpegaudiodecheader.c
>> +++ b/libavcodec/mpegaudiodecheader.c
>> @@ -46,10 +46,11 @@ int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, 
>> uint32_t header)
>> if (header & (1<<20)) {
>> s->lsf = (header & (1<<19)) ? 0 : 1;
>> mpeg25 = 0;
>> -} else {
>> +} else if (!(header & (1<<19))) {
>> s->lsf = 1;
>> mpeg25 = 1;
>> -}
>> +} else
>> +return -1; // reserved id
> 
> This check (assuming it breaks no existing mp3) would fit better in
> ff_mpa_check_header()
> 
I did not want to put it in ff_mpa_check_header(), since that is supposed to be 
a
"fast header check for resync", emphasis *fast*. But if you think an extra 
check is
acceptable, I can certainly put it there. Will send an update patch.

Re breaking existing mp3: I haven't checked the official ISO standard, but all 
other
free reference material agrees bit pattern 01 is supposed to be reserved. I have
tested both with an mpeg 1 layer 3 (first branch) and mpeg2.5 layer 3 (second)
branch, with files I found on samples.ffmpeg.org. The patch also passes make 
fate
(though I don't quite understand what that does, I assume it checks for such 
things).

Cheers, Karsten

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


[FFmpeg-devel] [PATCH v5 2/3] aadec: add chapters and seeking

2018-07-08 Thread Karsten Otto
read_packet reads content in chunks. Thus seek must be clamped to valid
chunk positions in the file, which in turn are relative to chapter start
positions.

So in read_header, scan for chapter headers once by skipping through the
content. Set stream time_base based on bitrate in bytes/s, for easy
timestamp to position conversion.

Then in read_seek, find the chapter containing the seek position, calculate
the nearest chunk position, and reinit the read_seek state accordingly.
---
 libavformat/aadec.c | 85 ++---
 1 file changed, 81 insertions(+), 4 deletions(-)

diff --git a/libavformat/aadec.c b/libavformat/aadec.c
index 4db71b1939..17ad20686b 100644
--- a/libavformat/aadec.c
+++ b/libavformat/aadec.c
@@ -35,6 +35,8 @@
 #define MAX_TOC_ENTRIES 16
 #define MAX_DICTIONARY_ENTRIES 128
 #define TEA_BLOCK_SIZE 8
+#define CHAPTER_HEADER_SIZE 8
+#define TIMEPREC 1000
 
 typedef struct AADemuxContext {
 AVClass *class;
@@ -46,6 +48,7 @@ typedef struct AADemuxContext {
 struct AVTEA *tea_ctx;
 uint8_t file_key[16];
 int64_t current_chapter_size;
+int64_t content_start;
 int64_t content_end;
 } AADemuxContext;
 
@@ -70,7 +73,7 @@ static int aa_read_header(AVFormatContext *s)
 uint32_t nkey, nval, toc_size, npairs, header_seed = 0, start;
 char key[128], val[128], codec_name[64] = {0};
 uint8_t output[24], dst[8], src[8];
-int64_t largest_size = -1, current_size = -1;
+int64_t largest_size = -1, current_size = -1, chapter_pos;
 struct toc_entry {
 uint32_t offset;
 uint32_t size;
@@ -173,19 +176,23 @@ static int aa_read_header(AVFormatContext *s)
 st->codecpar->codec_id = AV_CODEC_ID_MP3;
 st->codecpar->sample_rate = 22050;
 st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
-st->start_time = 0;
+avpriv_set_pts_info(st, 64, 8, 32000 * TIMEPREC);
 } else if (!strcmp(codec_name, "acelp85")) {
 st->codecpar->codec_id = AV_CODEC_ID_SIPR;
 st->codecpar->block_align = 19;
 st->codecpar->channels = 1;
 st->codecpar->sample_rate = 8500;
+st->codecpar->bit_rate = 8500;
 st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
+avpriv_set_pts_info(st, 64, 8, 8500 * TIMEPREC);
 } else if (!strcmp(codec_name, "acelp16")) {
 st->codecpar->codec_id = AV_CODEC_ID_SIPR;
 st->codecpar->block_align = 20;
 st->codecpar->channels = 1;
 st->codecpar->sample_rate = 16000;
+st->codecpar->bit_rate = 16000;
 st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
+avpriv_set_pts_info(st, 64, 8, 16000 * TIMEPREC);
 }
 
 /* determine, and jump to audio start offset */
@@ -198,7 +205,28 @@ static int aa_read_header(AVFormatContext *s)
 }
 start = TOC[largest_idx].offset;
 avio_seek(pb, start, SEEK_SET);
+
+// extract chapter positions. since all formats have constant bit rate, 
use it
+// as time base in bytes/s, for easy stream position <-> timestamp 
conversion
+st->start_time = 0;
+c->content_start = start;
 c->content_end = start + largest_size;
+
+while ((chapter_pos = avio_tell(pb)) >= 0 && chapter_pos < c->content_end) 
{
+int chapter_idx = s->nb_chapters;
+uint32_t chapter_size = avio_rb32(pb);
+if (chapter_size == 0) break;
+chapter_pos -= start + CHAPTER_HEADER_SIZE * chapter_idx;
+avio_skip(pb, 4 + chapter_size);
+if (!avpriv_new_chapter(s, chapter_idx, st->time_base,
+chapter_pos * TIMEPREC, (chapter_pos + chapter_size) * TIMEPREC, 
NULL))
+return AVERROR(ENOMEM);
+}
+
+st->duration = (largest_size - CHAPTER_HEADER_SIZE * s->nb_chapters) * 
TIMEPREC;
+
+ff_update_cur_dts(s, st, 0);
+avio_seek(pb, start, SEEK_SET);
 c->current_chapter_size = 0;
 
 return 0;
@@ -215,9 +243,10 @@ static int aa_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 int written = 0;
 int ret;
 AADemuxContext *c = s->priv_data;
+uint64_t pos = avio_tell(s->pb);
 
 // are we at the end of the audio content?
-if (avio_tell(s->pb) >= c->content_end) {
+if (pos >= c->content_end) {
 return AVERROR_EOF;
 }
 
@@ -230,6 +259,7 @@ static int aa_read_packet(AVFormatContext *s, AVPacket *pkt)
 av_log(s, AV_LOG_DEBUG, "Chapter %d (%" PRId64 " bytes)\n", 
c->chapter_idx, c->current_chapter_size);
 c->chapter_idx = c->chapter_idx + 1;
 avio_skip(s->pb, 4); // data start offset
+pos += 8;
 c->current_codec_second_size = c->codec_second_size;
 }
 
@@ -267,10 +297,56 @@ static int aa_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 if (ret < 0)
 return ret;
 memcpy(pkt->data, buf, written);
+pkt->pos = pos;
 
 return 0;
 }
 
+static int aa_read_seek(AVFormatContext *s,
+int stream_index, int64_t timestamp, int flags)
+{
+AADemuxContext *c = s->priv_data;
+

Re: [FFmpeg-devel] [PATCH v4 2/3] aadec: add chapters and seeking

2018-07-08 Thread Karsten Otto

> Am 08.07.2018 um 11:12 schrieb Michael Niedermayer :
> 
> Signierter PGP-Teil
> On Sat, Jul 07, 2018 at 07:41:28PM +0200, Karsten Otto wrote:
>> read_packet reads content in chunks. Thus seek must be clamped to valid
>> chunk positions in the file, which in turn are relative to chapter start
>> positions.
>> 
>> So in read_header, scan for chapter headers once by skipping through the
>> content. Set stream time_base based on bitrate in bytes/s, for easy
>> timestamp to position conversion.
>> 
>> Then in read_seek, find the chapter containing the seek position, calculate
>> the nearest chunk position, and reinit the read_seek state accordingly.
>> ---
>> libavformat/aadec.c | 87 
>> ++---
>> 1 file changed, 83 insertions(+), 4 deletions(-)
>> 
>> diff --git a/libavformat/aadec.c b/libavformat/aadec.c
>> index 4db71b1939..e3c03bc522 100644
>> --- a/libavformat/aadec.c
>> +++ b/libavformat/aadec.c
>> @@ -35,6 +35,8 @@
>> #define MAX_TOC_ENTRIES 16
>> #define MAX_DICTIONARY_ENTRIES 128
>> #define TEA_BLOCK_SIZE 8
>> +#define CHAPTER_HEADER_SIZE 8
>> +#define TIMEPREC 1000
>> 
>> typedef struct AADemuxContext {
>> AVClass *class;
>> @@ -46,6 +48,7 @@ typedef struct AADemuxContext {
>> struct AVTEA *tea_ctx;
>> uint8_t file_key[16];
>> int64_t current_chapter_size;
>> +int64_t content_start;
>> int64_t content_end;
>> } AADemuxContext;
>> 
>> @@ -70,7 +73,7 @@ static int aa_read_header(AVFormatContext *s)
>> uint32_t nkey, nval, toc_size, npairs, header_seed = 0, start;
>> char key[128], val[128], codec_name[64] = {0};
>> uint8_t output[24], dst[8], src[8];
>> -int64_t largest_size = -1, current_size = -1;
>> +int64_t largest_size = -1, current_size = -1, chapter_pos;
>> struct toc_entry {
>> uint32_t offset;
>> uint32_t size;
>> @@ -173,19 +176,23 @@ static int aa_read_header(AVFormatContext *s)
>> st->codecpar->codec_id = AV_CODEC_ID_MP3;
>> st->codecpar->sample_rate = 22050;
>> st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
>> -st->start_time = 0;
>> +avpriv_set_pts_info(st, 64, 8, 32000 * TIMEPREC);
>> } else if (!strcmp(codec_name, "acelp85")) {
>> st->codecpar->codec_id = AV_CODEC_ID_SIPR;
>> st->codecpar->block_align = 19;
>> st->codecpar->channels = 1;
>> st->codecpar->sample_rate = 8500;
>> +st->codecpar->bit_rate = 8500;
>> st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
>> +avpriv_set_pts_info(st, 64, 8, 8500 * TIMEPREC);
>> } else if (!strcmp(codec_name, "acelp16")) {
>> st->codecpar->codec_id = AV_CODEC_ID_SIPR;
>> st->codecpar->block_align = 20;
>> st->codecpar->channels = 1;
>> st->codecpar->sample_rate = 16000;
>> +st->codecpar->bit_rate = 16000;
>> st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
>> +avpriv_set_pts_info(st, 64, 8, 16000 * TIMEPREC);
>> }
>> 
>> /* determine, and jump to audio start offset */
>> @@ -198,7 +205,30 @@ static int aa_read_header(AVFormatContext *s)
>> }
>> start = TOC[largest_idx].offset;
>> avio_seek(pb, start, SEEK_SET);
>> +
>> +// extract chapter positions. since all formats have constant bit rate, 
>> use it
>> +// as time base in bytes/s, for easy stream position <-> timestamp 
>> conversion
>> +st->start_time = 0;
>> +c->content_start = start;
>> c->content_end = start + largest_size;
>> +
> 
>> +while ((chapter_pos = avio_tell(pb)) >= 0 && chapter_pos < 
>> c->content_end) {
>> +int chapter_idx, chapter_size;
>> +chapter_idx = s->nb_chapters;
>> +chapter_pos -= start + CHAPTER_HEADER_SIZE * chapter_idx;
>> +chapter_size = avio_rb32(pb);
>> +if (chapter_size == 0) break;
>> +avio_skip(pb, 4);
>> +avio_skip(pb, chapter_size);
> 
> I think this can end in an infinite loop if chapter_size is negative
> 
Nice catch, and my bad, chapter_size is supposed to be uint32_t. And I notice I 
should 
combine the avio_skip() which is probably more efficient. Will send a patch 
update.

Cheers, Karsten

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


Re: [FFmpeg-devel] [PATCH v4 1/3] aadec: improve eof detection

2018-07-08 Thread Michael Niedermayer
On Sat, Jul 07, 2018 at 07:41:27PM +0200, Karsten Otto wrote:
> Remember the end position of audio content in the file and check it during
> read_packet. There always seems to be other data beyond it, which could be
> misinterpreted as more audio. Also add some extra avio_read error checks,
> to bail early in case of a broken/truncated file.
> ---
>  libavformat/aadec.c | 15 +--
>  1 file changed, 13 insertions(+), 2 deletions(-)

will apply

thanks

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The bravest are surely those who have the clearest vision
of what is before them, glory and danger alike, and yet
notwithstanding go out to meet it. -- Thucydides


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


Re: [FFmpeg-devel] [PATCH v4 2/3] aadec: add chapters and seeking

2018-07-08 Thread Michael Niedermayer
On Sat, Jul 07, 2018 at 07:41:28PM +0200, Karsten Otto wrote:
> read_packet reads content in chunks. Thus seek must be clamped to valid
> chunk positions in the file, which in turn are relative to chapter start
> positions.
> 
> So in read_header, scan for chapter headers once by skipping through the
> content. Set stream time_base based on bitrate in bytes/s, for easy
> timestamp to position conversion.
> 
> Then in read_seek, find the chapter containing the seek position, calculate
> the nearest chunk position, and reinit the read_seek state accordingly.
> ---
>  libavformat/aadec.c | 87 
> ++---
>  1 file changed, 83 insertions(+), 4 deletions(-)
> 
> diff --git a/libavformat/aadec.c b/libavformat/aadec.c
> index 4db71b1939..e3c03bc522 100644
> --- a/libavformat/aadec.c
> +++ b/libavformat/aadec.c
> @@ -35,6 +35,8 @@
>  #define MAX_TOC_ENTRIES 16
>  #define MAX_DICTIONARY_ENTRIES 128
>  #define TEA_BLOCK_SIZE 8
> +#define CHAPTER_HEADER_SIZE 8
> +#define TIMEPREC 1000
>  
>  typedef struct AADemuxContext {
>  AVClass *class;
> @@ -46,6 +48,7 @@ typedef struct AADemuxContext {
>  struct AVTEA *tea_ctx;
>  uint8_t file_key[16];
>  int64_t current_chapter_size;
> +int64_t content_start;
>  int64_t content_end;
>  } AADemuxContext;
>  
> @@ -70,7 +73,7 @@ static int aa_read_header(AVFormatContext *s)
>  uint32_t nkey, nval, toc_size, npairs, header_seed = 0, start;
>  char key[128], val[128], codec_name[64] = {0};
>  uint8_t output[24], dst[8], src[8];
> -int64_t largest_size = -1, current_size = -1;
> +int64_t largest_size = -1, current_size = -1, chapter_pos;
>  struct toc_entry {
>  uint32_t offset;
>  uint32_t size;
> @@ -173,19 +176,23 @@ static int aa_read_header(AVFormatContext *s)
>  st->codecpar->codec_id = AV_CODEC_ID_MP3;
>  st->codecpar->sample_rate = 22050;
>  st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
> -st->start_time = 0;
> +avpriv_set_pts_info(st, 64, 8, 32000 * TIMEPREC);
>  } else if (!strcmp(codec_name, "acelp85")) {
>  st->codecpar->codec_id = AV_CODEC_ID_SIPR;
>  st->codecpar->block_align = 19;
>  st->codecpar->channels = 1;
>  st->codecpar->sample_rate = 8500;
> +st->codecpar->bit_rate = 8500;
>  st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
> +avpriv_set_pts_info(st, 64, 8, 8500 * TIMEPREC);
>  } else if (!strcmp(codec_name, "acelp16")) {
>  st->codecpar->codec_id = AV_CODEC_ID_SIPR;
>  st->codecpar->block_align = 20;
>  st->codecpar->channels = 1;
>  st->codecpar->sample_rate = 16000;
> +st->codecpar->bit_rate = 16000;
>  st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
> +avpriv_set_pts_info(st, 64, 8, 16000 * TIMEPREC);
>  }
>  
>  /* determine, and jump to audio start offset */
> @@ -198,7 +205,30 @@ static int aa_read_header(AVFormatContext *s)
>  }
>  start = TOC[largest_idx].offset;
>  avio_seek(pb, start, SEEK_SET);
> +
> +// extract chapter positions. since all formats have constant bit rate, 
> use it
> +// as time base in bytes/s, for easy stream position <-> timestamp 
> conversion
> +st->start_time = 0;
> +c->content_start = start;
>  c->content_end = start + largest_size;
> +

> +while ((chapter_pos = avio_tell(pb)) >= 0 && chapter_pos < 
> c->content_end) {
> +int chapter_idx, chapter_size;
> +chapter_idx = s->nb_chapters;
> +chapter_pos -= start + CHAPTER_HEADER_SIZE * chapter_idx;
> +chapter_size = avio_rb32(pb);
> +if (chapter_size == 0) break;
> +avio_skip(pb, 4);
> +avio_skip(pb, chapter_size);

I think this can end in an infinite loop if chapter_size is negative

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Many that live deserve death. And some that die deserve life. Can you give
it to them? Then do not be too eager to deal out death in judgement. For
even the very wise cannot see all ends. -- Gandalf


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


Re: [FFmpeg-devel] [PATCH] libavcodec/mpegaudiodecheader.c : prevent reserved id misinterpretation

2018-07-08 Thread Michael Niedermayer
On Sat, Jul 07, 2018 at 10:29:11PM +0200, Karsten Otto wrote:
> Check the MPEG version ID for the reserved bit pattern 01, and abort header
> parsing in that case. This reduces the chance of misinterpreting arbitrary
> data as a valid frame start, and prevents the resulting audio artifacts.
> ---
>  libavcodec/mpegaudiodecheader.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/mpegaudiodecheader.c b/libavcodec/mpegaudiodecheader.c
> index 6cc79f18b5..23029f186a 100644
> --- a/libavcodec/mpegaudiodecheader.c
> +++ b/libavcodec/mpegaudiodecheader.c
> @@ -46,10 +46,11 @@ int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, 
> uint32_t header)
>  if (header & (1<<20)) {
>  s->lsf = (header & (1<<19)) ? 0 : 1;
>  mpeg25 = 0;
> -} else {
> +} else if (!(header & (1<<19))) {
>  s->lsf = 1;
>  mpeg25 = 1;
> -}
> +} else
> +return -1; // reserved id

This check (assuming it breaks no existing mp3) would fit better in
ff_mpa_check_header()

thanks

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The educated differ from the uneducated as much as the living from the
dead. -- Aristotle 


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


[FFmpeg-devel] [PATCH] avformat/movenc: write track data in minf->hdlr for MOV

2018-07-08 Thread Gyan Doshi
From 13c0956d4892fd236e2923e88ef8d4fb0de1e080 Mon Sep 17 00:00:00 2001
From: Gyan Doshi 
Date: Sun, 8 Jul 2018 12:05:34 +0530
Subject: [PATCH] avformat/movenc: write track data in minf->hdlr for MOV

95 FATE references updated due to changed track handler names

Fixes #7104
---
 libavformat/movenc.c |  4 ++--
 libavformat/version.h|  2 +-
 tests/ref/acodec/alac|  4 ++--
 tests/ref/acodec/pcm-s16be   |  4 ++--
 tests/ref/acodec/pcm-s24be   |  4 ++--
 tests/ref/acodec/pcm-s32be   |  4 ++--
 tests/ref/acodec/pcm-s8  |  4 ++--
 tests/ref/fate/adtstoasc_ticket3715  |  4 ++--
 tests/ref/fate/copy-trac236  |  4 ++--
 .../hapqa-extract-nosnappy-to-hapalphaonly-mov   |  2 +-
 .../ref/fate/hapqa-extract-nosnappy-to-hapq-mov  |  2 +-
 tests/ref/lavf-fate/mov_qtrle_mace6  |  4 ++--
 tests/ref/lavf/mov   | 16 
 tests/ref/vsynth/vsynth1-avui|  4 ++--
 tests/ref/vsynth/vsynth1-dnxhd-1080i |  4 ++--
 tests/ref/vsynth/vsynth1-dnxhd-1080i-10bit   |  4 ++--
 tests/ref/vsynth/vsynth1-dnxhd-1080i-colr|  4 ++--
 tests/ref/vsynth/vsynth1-dnxhd-hr-hq-mov |  4 ++--
 tests/ref/vsynth/vsynth1-dnxhd-hr-lb-mov |  4 ++--
 tests/ref/vsynth/vsynth1-dnxhd-hr-sq-mov |  4 ++--
 tests/ref/vsynth/vsynth1-mov-bgr24   |  4 ++--
 tests/ref/vsynth/vsynth1-mov-bpp15   |  4 ++--
 tests/ref/vsynth/vsynth1-mov-bpp16   |  4 ++--
 tests/ref/vsynth/vsynth1-prores  |  4 ++--
 tests/ref/vsynth/vsynth1-prores_ks   |  4 ++--
 tests/ref/vsynth/vsynth1-qtrle   |  4 ++--
 tests/ref/vsynth/vsynth1-qtrlegray   |  4 ++--
 tests/ref/vsynth/vsynth1-svq1|  4 ++--
 tests/ref/vsynth/vsynth1-vc2-420p|  4 ++--
 tests/ref/vsynth/vsynth1-vc2-420p10  |  4 ++--
 tests/ref/vsynth/vsynth1-vc2-420p12  |  4 ++--
 tests/ref/vsynth/vsynth1-vc2-422p|  4 ++--
 tests/ref/vsynth/vsynth1-vc2-422p10  |  4 ++--
 tests/ref/vsynth/vsynth1-vc2-422p12  |  4 ++--
 tests/ref/vsynth/vsynth1-vc2-444p|  4 ++--
 tests/ref/vsynth/vsynth1-vc2-444p10  |  4 ++--
 tests/ref/vsynth/vsynth1-vc2-444p12  |  4 ++--
 tests/ref/vsynth/vsynth2-avui|  4 ++--
 tests/ref/vsynth/vsynth2-dnxhd-1080i |  4 ++--
 tests/ref/vsynth/vsynth2-dnxhd-1080i-10bit   |  4 ++--
 tests/ref/vsynth/vsynth2-dnxhd-1080i-colr|  4 ++--
 tests/ref/vsynth/vsynth2-dnxhd-hr-hq-mov |  4 ++--
 tests/ref/vsynth/vsynth2-dnxhd-hr-lb-mov |  4 ++--
 tests/ref/vsynth/vsynth2-dnxhd-hr-sq-mov |  4 ++--
 tests/ref/vsynth/vsynth2-mov-bgr24   |  4 ++--
 tests/ref/vsynth/vsynth2-mov-bpp15   |  4 ++--
 tests/ref/vsynth/vsynth2-mov-bpp16   |  4 ++--
 tests/ref/vsynth/vsynth2-prores  |  4 ++--
 tests/ref/vsynth/vsynth2-prores_ks   |  4 ++--
 tests/ref/vsynth/vsynth2-qtrle   |  4 ++--
 tests/ref/vsynth/vsynth2-qtrlegray   |  4 ++--
 tests/ref/vsynth/vsynth2-svq1|  4 ++--
 tests/ref/vsynth/vsynth2-vc2-420p|  4 ++--
 tests/ref/vsynth/vsynth2-vc2-420p10  |  4 ++--
 tests/ref/vsynth/vsynth2-vc2-420p12  |  4 ++--
 tests/ref/vsynth/vsynth2-vc2-422p|  4 ++--
 tests/ref/vsynth/vsynth2-vc2-422p10  |  4 ++--
 tests/ref/vsynth/vsynth2-vc2-422p12  |  4 ++--
 tests/ref/vsynth/vsynth2-vc2-444p|  4 ++--
 tests/ref/vsynth/vsynth2-vc2-444p10  |  4 ++--
 tests/ref/vsynth/vsynth2-vc2-444p12  |  4 ++--
 tests/ref/vsynth/vsynth3-dnxhd-1080i-10bit   |  4 ++--
 tests/ref/vsynth/vsynth3-dnxhd-1080i-colr|  4 ++--
 tests/ref/vsynth/vsynth3-dnxhd-hr-hq-mov |  4 ++--
 tests/ref/vsynth/vsynth3-dnxhd-hr-lb-mov |  4 ++--
 tests/ref/vsynth/vsynth3-dnxhd-hr-sq-mov |  4 ++--
 tests/ref/vsynth/vsynth3-mov-bgr24   |  4 ++--
 tests/ref/vsynth/vsynth3-mov-bpp15   |  4 ++--
 tests/ref/vsynth/vsynth3-mov-bpp16   |  4 ++--
 tests/ref/vsynth/vsynth3-prores  |  4 ++--
 tests/ref/vsynth/vsynth3-prores_ks   |  4 ++--
 tests/ref/vsynth/vsynth3-qtrle   |  4 ++--
 tests/ref/vsynth/vsynth3-svq1|  4 ++--
 tests/ref/vsynth/vsynth_lena-avui|  4 ++--
 tests/ref/vsynth/vsynth_lena-dnxhd-1080i |  4 ++--
 tests/ref/vsynth/vsynth_lena-dnxhd-1080i-10bit   |  4 ++--
 tests/ref/vsynth/vsynth_lena-dnxhd-1080i-colr|  4 ++--
 tests/ref/vsynth/vsynth_lena-dnxhd-hr-hq-mov |  4 ++--