Re: [FFmpeg-devel] [PATCH] lavc/libaomenc: Add -tile-columns/-tile-rows

2018-10-02 Thread Urvang Joshi
Hi,
Max value for both the tile rows and tile columns is 64  (so the max log2
value would be 6).
This is consistent in the public header:
https://aomedia.googlesource.com/aom/+/master/aom/aomcx.h#291
and
spec: https://aomediacodec.github.io/av1-spec/av1-spec.pdf (see page 7).

On Fri, Aug 31, 2018 at 6:08 PM James Zern 
wrote:

> On Fri, Aug 31, 2018 at 9:40 AM James Almer  wrote:
> >
> > On 8/31/2018 1:00 PM, Kagami Hiiragi wrote:
> > > On 31/08/18 18:18, James Almer wrote:
> > >> On 8/31/2018 11:52 AM, Kagami Hiiragi wrote:
> > >>> On 31/08/18 02:58, James Almer wrote:
> >  On 8/20/2018 2:56 PM, Kagami Hiiragi wrote:
> > > These options are required for multithreaded encoding, because
> they set
> > > to zero by default in av1_cx_iface.c.
> > >
> > > Signed-off-by: Kagami Hiiragi 
> > >
> > > diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
> > > index 9431179886..55cb7ff72e 100644
> > > --- a/libavcodec/libaomenc.c
> > > +++ b/libavcodec/libaomenc.c
> > > @@ -68,6 +68,8 @@ typedef struct AOMEncoderContext {
> > >  int static_thresh;
> > >  int drop_threshold;
> > >  int noise_sensitivity;
> > > +int tile_columns;
> > > +int tile_rows;
> > >  } AOMContext;
> > >
> > >  static const char *const ctlidstr[] = {
> > > @@ -75,6 +77,8 @@ static const char *const ctlidstr[] = {
> > >  [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL",
> > >  [AOME_SET_ENABLEAUTOALTREF] = "AOME_SET_ENABLEAUTOALTREF",
> > >  [AOME_SET_STATIC_THRESHOLD] = "AOME_SET_STATIC_THRESHOLD",
> > > +[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
> > > +[AV1E_SET_TILE_ROWS]= "AV1E_SET_TILE_ROWS",
> > >  [AV1E_SET_COLOR_RANGE]  = "AV1E_SET_COLOR_RANGE",
> > >  [AV1E_SET_COLOR_PRIMARIES]  = "AV1E_SET_COLOR_PRIMARIES",
> > >  [AV1E_SET_MATRIX_COEFFICIENTS] =
> "AV1E_SET_MATRIX_COEFFICIENTS",
> > > @@ -449,6 +453,11 @@ static av_cold int aom_init(AVCodecContext
> *avctx,
> > >  if (ctx->crf >= 0)
> > >  codecctl_int(avctx, AOME_SET_CQ_LEVEL,  ctx->crf);
> > >
> > > +if (ctx->tile_columns >= 0)
> > > +codecctl_int(avctx, AV1E_SET_TILE_COLUMNS,
> ctx->tile_columns);
> > > +if (ctx->tile_rows >= 0)
> > > +codecctl_int(avctx, AV1E_SET_TILE_ROWS, ctx->tile_rows);
> > > +
> > >  codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES,
> avctx->color_primaries);
> > >  codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS,
> avctx->colorspace);
> > >  codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS,
> avctx->color_trc);
> > > @@ -746,6 +755,8 @@ static const AVOption options[] = {
> > >  { "static-thresh","A change threshold on blocks below
> which they will be skipped by the encoder", OFFSET(static_thresh),
> AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE },
> > >  { "drop-threshold",   "Frame drop threshold",
> offsetof(AOMContext, drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 },
> INT_MIN, INT_MAX, VE },
> > >  { "noise-sensitivity", "Noise sensitivity",
> OFFSET(noise_sensitivity), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 4, VE},
> > > +{ "tile-columns", "Number of tile columns to use, log2",
> OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
> > 
> >  Why 6? The libaom API doesn't mention a limit, just says the
> argument
> >  should be in log2 unit, and that it will be capped based on the
> image size.
> > >>>
> > >>>
> https://aomedia.googlesource.com/aom/+/1742b043e2269dc1927afe428fbf5a46493e741e/av1/av1_cx_iface.c#298
> > >>>
> > > +{ "tile-rows", "Number of tile rows to use, log2",
> OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
> > 
> >  And for this one it says the range is [0-2].
> > >>>
> > >>> Who says it? I can pass --tile-rows=6 to aomenc.
> > >>
> > >> The doxy in the public header:
> > >> https://aomedia.googlesource.com/aom/+/master/aom/aomcx.h#312
> > >
> > > I guess it wasn't fixed after
> > >
> https://aomedia.googlesource.com/aom/+/492c545fad1e1f980d23d79d0372857c60d31458
> ^!/#F1
> > >
> > > I don't think ffmpeg should deal with libaom documentation issues...
> >
> > Seeing it's effectively a documentation issue, and that the change you
> > quoted was made before libaom 1.0.0 was tagged, then i guess the patch
> > is ok.
> >
> > I reported it to libaom bug tracker as well.
>
> Thanks for filing the bug, I posted a fix. Note AV1 supports
> non-uniform tiles now and there's another way to specify absolute
> widths and heights (--tile-width/height). This parameter wasn't
> descaled to allow the encoder to choose the layout unfortunately [1].
>
> [1] https://bugs.chromium.org/p/aomedia/issues/detail?id=2124
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

Re: [FFmpeg-devel] [PATCH] lavc/libaomenc: Add -tile-columns/-tile-rows

2018-08-31 Thread James Zern
On Fri, Aug 31, 2018 at 9:40 AM James Almer  wrote:
>
> On 8/31/2018 1:00 PM, Kagami Hiiragi wrote:
> > On 31/08/18 18:18, James Almer wrote:
> >> On 8/31/2018 11:52 AM, Kagami Hiiragi wrote:
> >>> On 31/08/18 02:58, James Almer wrote:
>  On 8/20/2018 2:56 PM, Kagami Hiiragi wrote:
> > These options are required for multithreaded encoding, because they set
> > to zero by default in av1_cx_iface.c.
> >
> > Signed-off-by: Kagami Hiiragi 
> >
> > diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
> > index 9431179886..55cb7ff72e 100644
> > --- a/libavcodec/libaomenc.c
> > +++ b/libavcodec/libaomenc.c
> > @@ -68,6 +68,8 @@ typedef struct AOMEncoderContext {
> >  int static_thresh;
> >  int drop_threshold;
> >  int noise_sensitivity;
> > +int tile_columns;
> > +int tile_rows;
> >  } AOMContext;
> >
> >  static const char *const ctlidstr[] = {
> > @@ -75,6 +77,8 @@ static const char *const ctlidstr[] = {
> >  [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL",
> >  [AOME_SET_ENABLEAUTOALTREF] = "AOME_SET_ENABLEAUTOALTREF",
> >  [AOME_SET_STATIC_THRESHOLD] = "AOME_SET_STATIC_THRESHOLD",
> > +[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
> > +[AV1E_SET_TILE_ROWS]= "AV1E_SET_TILE_ROWS",
> >  [AV1E_SET_COLOR_RANGE]  = "AV1E_SET_COLOR_RANGE",
> >  [AV1E_SET_COLOR_PRIMARIES]  = "AV1E_SET_COLOR_PRIMARIES",
> >  [AV1E_SET_MATRIX_COEFFICIENTS] = "AV1E_SET_MATRIX_COEFFICIENTS",
> > @@ -449,6 +453,11 @@ static av_cold int aom_init(AVCodecContext *avctx,
> >  if (ctx->crf >= 0)
> >  codecctl_int(avctx, AOME_SET_CQ_LEVEL,  ctx->crf);
> >
> > +if (ctx->tile_columns >= 0)
> > +codecctl_int(avctx, AV1E_SET_TILE_COLUMNS, ctx->tile_columns);
> > +if (ctx->tile_rows >= 0)
> > +codecctl_int(avctx, AV1E_SET_TILE_ROWS, ctx->tile_rows);
> > +
> >  codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, 
> > avctx->color_primaries);
> >  codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, 
> > avctx->colorspace);
> >  codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, 
> > avctx->color_trc);
> > @@ -746,6 +755,8 @@ static const AVOption options[] = {
> >  { "static-thresh","A change threshold on blocks below which 
> > they will be skipped by the encoder", OFFSET(static_thresh), 
> > AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE },
> >  { "drop-threshold",   "Frame drop threshold", offsetof(AOMContext, 
> > drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE },
> >  { "noise-sensitivity", "Noise sensitivity", 
> > OFFSET(noise_sensitivity), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 4, VE},
> > +{ "tile-columns", "Number of tile columns to use, log2", 
> > OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
> 
>  Why 6? The libaom API doesn't mention a limit, just says the argument
>  should be in log2 unit, and that it will be capped based on the image 
>  size.
> >>>
> >>> https://aomedia.googlesource.com/aom/+/1742b043e2269dc1927afe428fbf5a46493e741e/av1/av1_cx_iface.c#298
> >>>
> > +{ "tile-rows", "Number of tile rows to use, log2", 
> > OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
> 
>  And for this one it says the range is [0-2].
> >>>
> >>> Who says it? I can pass --tile-rows=6 to aomenc.
> >>
> >> The doxy in the public header:
> >> https://aomedia.googlesource.com/aom/+/master/aom/aomcx.h#312
> >
> > I guess it wasn't fixed after
> > https://aomedia.googlesource.com/aom/+/492c545fad1e1f980d23d79d0372857c60d31458^!/#F1
> >
> > I don't think ffmpeg should deal with libaom documentation issues...
>
> Seeing it's effectively a documentation issue, and that the change you
> quoted was made before libaom 1.0.0 was tagged, then i guess the patch
> is ok.
>
> I reported it to libaom bug tracker as well.

Thanks for filing the bug, I posted a fix. Note AV1 supports
non-uniform tiles now and there's another way to specify absolute
widths and heights (--tile-width/height). This parameter wasn't
descaled to allow the encoder to choose the layout unfortunately [1].

[1] https://bugs.chromium.org/p/aomedia/issues/detail?id=2124
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/libaomenc: Add -tile-columns/-tile-rows

2018-08-31 Thread James Almer
On 8/31/2018 1:00 PM, Kagami Hiiragi wrote:
> On 31/08/18 18:18, James Almer wrote:
>> On 8/31/2018 11:52 AM, Kagami Hiiragi wrote:
>>> On 31/08/18 02:58, James Almer wrote:
 On 8/20/2018 2:56 PM, Kagami Hiiragi wrote:
> These options are required for multithreaded encoding, because they set
> to zero by default in av1_cx_iface.c.
>
> Signed-off-by: Kagami Hiiragi 
>
> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
> index 9431179886..55cb7ff72e 100644
> --- a/libavcodec/libaomenc.c
> +++ b/libavcodec/libaomenc.c
> @@ -68,6 +68,8 @@ typedef struct AOMEncoderContext {
>  int static_thresh;
>  int drop_threshold;
>  int noise_sensitivity;
> +int tile_columns;
> +int tile_rows;
>  } AOMContext;
>  
>  static const char *const ctlidstr[] = {
> @@ -75,6 +77,8 @@ static const char *const ctlidstr[] = {
>  [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL",
>  [AOME_SET_ENABLEAUTOALTREF] = "AOME_SET_ENABLEAUTOALTREF",
>  [AOME_SET_STATIC_THRESHOLD] = "AOME_SET_STATIC_THRESHOLD",
> +[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
> +[AV1E_SET_TILE_ROWS]= "AV1E_SET_TILE_ROWS",
>  [AV1E_SET_COLOR_RANGE]  = "AV1E_SET_COLOR_RANGE",
>  [AV1E_SET_COLOR_PRIMARIES]  = "AV1E_SET_COLOR_PRIMARIES",
>  [AV1E_SET_MATRIX_COEFFICIENTS] = "AV1E_SET_MATRIX_COEFFICIENTS",
> @@ -449,6 +453,11 @@ static av_cold int aom_init(AVCodecContext *avctx,
>  if (ctx->crf >= 0)
>  codecctl_int(avctx, AOME_SET_CQ_LEVEL,  ctx->crf);
>  
> +if (ctx->tile_columns >= 0)
> +codecctl_int(avctx, AV1E_SET_TILE_COLUMNS, ctx->tile_columns);
> +if (ctx->tile_rows >= 0)
> +codecctl_int(avctx, AV1E_SET_TILE_ROWS, ctx->tile_rows);
> +
>  codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, 
> avctx->color_primaries);
>  codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace);
>  codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, 
> avctx->color_trc);
> @@ -746,6 +755,8 @@ static const AVOption options[] = {
>  { "static-thresh","A change threshold on blocks below which they 
> will be skipped by the encoder", OFFSET(static_thresh), AV_OPT_TYPE_INT, 
> { .i64 = 0 }, 0, INT_MAX, VE },
>  { "drop-threshold",   "Frame drop threshold", offsetof(AOMContext, 
> drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE },
>  { "noise-sensitivity", "Noise sensitivity", 
> OFFSET(noise_sensitivity), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 4, VE},
> +{ "tile-columns", "Number of tile columns to use, log2", 
> OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},

 Why 6? The libaom API doesn't mention a limit, just says the argument
 should be in log2 unit, and that it will be capped based on the image size.
>>>
>>> https://aomedia.googlesource.com/aom/+/1742b043e2269dc1927afe428fbf5a46493e741e/av1/av1_cx_iface.c#298
>>>  
> +{ "tile-rows", "Number of tile rows to use, log2", 
> OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},

 And for this one it says the range is [0-2].
>>>
>>> Who says it? I can pass --tile-rows=6 to aomenc.
>>
>> The doxy in the public header:
>> https://aomedia.googlesource.com/aom/+/master/aom/aomcx.h#312
> 
> I guess it wasn't fixed after
> https://aomedia.googlesource.com/aom/+/492c545fad1e1f980d23d79d0372857c60d31458^!/#F1
> 
> I don't think ffmpeg should deal with libaom documentation issues...

Seeing it's effectively a documentation issue, and that the change you
quoted was made before libaom 1.0.0 was tagged, then i guess the patch
is ok.

I reported it to libaom bug tracker as well.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/libaomenc: Add -tile-columns/-tile-rows

2018-08-31 Thread Kagami Hiiragi
On 31/08/18 18:18, James Almer wrote:
> On 8/31/2018 11:52 AM, Kagami Hiiragi wrote:
>> On 31/08/18 02:58, James Almer wrote:
>>> On 8/20/2018 2:56 PM, Kagami Hiiragi wrote:
 These options are required for multithreaded encoding, because they set
 to zero by default in av1_cx_iface.c.

 Signed-off-by: Kagami Hiiragi 

 diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
 index 9431179886..55cb7ff72e 100644
 --- a/libavcodec/libaomenc.c
 +++ b/libavcodec/libaomenc.c
 @@ -68,6 +68,8 @@ typedef struct AOMEncoderContext {
  int static_thresh;
  int drop_threshold;
  int noise_sensitivity;
 +int tile_columns;
 +int tile_rows;
  } AOMContext;
  
  static const char *const ctlidstr[] = {
 @@ -75,6 +77,8 @@ static const char *const ctlidstr[] = {
  [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL",
  [AOME_SET_ENABLEAUTOALTREF] = "AOME_SET_ENABLEAUTOALTREF",
  [AOME_SET_STATIC_THRESHOLD] = "AOME_SET_STATIC_THRESHOLD",
 +[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
 +[AV1E_SET_TILE_ROWS]= "AV1E_SET_TILE_ROWS",
  [AV1E_SET_COLOR_RANGE]  = "AV1E_SET_COLOR_RANGE",
  [AV1E_SET_COLOR_PRIMARIES]  = "AV1E_SET_COLOR_PRIMARIES",
  [AV1E_SET_MATRIX_COEFFICIENTS] = "AV1E_SET_MATRIX_COEFFICIENTS",
 @@ -449,6 +453,11 @@ static av_cold int aom_init(AVCodecContext *avctx,
  if (ctx->crf >= 0)
  codecctl_int(avctx, AOME_SET_CQ_LEVEL,  ctx->crf);
  
 +if (ctx->tile_columns >= 0)
 +codecctl_int(avctx, AV1E_SET_TILE_COLUMNS, ctx->tile_columns);
 +if (ctx->tile_rows >= 0)
 +codecctl_int(avctx, AV1E_SET_TILE_ROWS, ctx->tile_rows);
 +
  codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, avctx->color_primaries);
  codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace);
  codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, 
 avctx->color_trc);
 @@ -746,6 +755,8 @@ static const AVOption options[] = {
  { "static-thresh","A change threshold on blocks below which they 
 will be skipped by the encoder", OFFSET(static_thresh), AV_OPT_TYPE_INT, { 
 .i64 = 0 }, 0, INT_MAX, VE },
  { "drop-threshold",   "Frame drop threshold", offsetof(AOMContext, 
 drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE },
  { "noise-sensitivity", "Noise sensitivity", 
 OFFSET(noise_sensitivity), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 4, VE},
 +{ "tile-columns", "Number of tile columns to use, log2", 
 OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
>>>
>>> Why 6? The libaom API doesn't mention a limit, just says the argument
>>> should be in log2 unit, and that it will be capped based on the image size.
>>
>> https://aomedia.googlesource.com/aom/+/1742b043e2269dc1927afe428fbf5a46493e741e/av1/av1_cx_iface.c#298
>>  
 +{ "tile-rows", "Number of tile rows to use, log2", OFFSET(tile_rows), 
 AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
>>>
>>> And for this one it says the range is [0-2].
>>
>> Who says it? I can pass --tile-rows=6 to aomenc.
> 
> The doxy in the public header:
> https://aomedia.googlesource.com/aom/+/master/aom/aomcx.h#312

I guess it wasn't fixed after
https://aomedia.googlesource.com/aom/+/492c545fad1e1f980d23d79d0372857c60d31458^!/#F1

I don't think ffmpeg should deal with libaom documentation issues...
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/libaomenc: Add -tile-columns/-tile-rows

2018-08-31 Thread Derek Buitenhuis
On 31/08/2018 16:18, James Almer wrote:
> The doxy in the public header:
> https://aomedia.googlesource.com/aom/+/master/aom/aomcx.h#312
> 
> One shouldn't have to look at source code when there's documentation for
> public API, but since the latter is apparently wrong...

If it's like this, at the very least, it should be noted
where this magic number came from in libaom.c.

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


Re: [FFmpeg-devel] [PATCH] lavc/libaomenc: Add -tile-columns/-tile-rows

2018-08-31 Thread James Almer
On 8/31/2018 11:52 AM, Kagami Hiiragi wrote:
> On 31/08/18 02:58, James Almer wrote:
>> On 8/20/2018 2:56 PM, Kagami Hiiragi wrote:
>>> These options are required for multithreaded encoding, because they set
>>> to zero by default in av1_cx_iface.c.
>>>
>>> Signed-off-by: Kagami Hiiragi 
>>>
>>> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
>>> index 9431179886..55cb7ff72e 100644
>>> --- a/libavcodec/libaomenc.c
>>> +++ b/libavcodec/libaomenc.c
>>> @@ -68,6 +68,8 @@ typedef struct AOMEncoderContext {
>>>  int static_thresh;
>>>  int drop_threshold;
>>>  int noise_sensitivity;
>>> +int tile_columns;
>>> +int tile_rows;
>>>  } AOMContext;
>>>  
>>>  static const char *const ctlidstr[] = {
>>> @@ -75,6 +77,8 @@ static const char *const ctlidstr[] = {
>>>  [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL",
>>>  [AOME_SET_ENABLEAUTOALTREF] = "AOME_SET_ENABLEAUTOALTREF",
>>>  [AOME_SET_STATIC_THRESHOLD] = "AOME_SET_STATIC_THRESHOLD",
>>> +[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
>>> +[AV1E_SET_TILE_ROWS]= "AV1E_SET_TILE_ROWS",
>>>  [AV1E_SET_COLOR_RANGE]  = "AV1E_SET_COLOR_RANGE",
>>>  [AV1E_SET_COLOR_PRIMARIES]  = "AV1E_SET_COLOR_PRIMARIES",
>>>  [AV1E_SET_MATRIX_COEFFICIENTS] = "AV1E_SET_MATRIX_COEFFICIENTS",
>>> @@ -449,6 +453,11 @@ static av_cold int aom_init(AVCodecContext *avctx,
>>>  if (ctx->crf >= 0)
>>>  codecctl_int(avctx, AOME_SET_CQ_LEVEL,  ctx->crf);
>>>  
>>> +if (ctx->tile_columns >= 0)
>>> +codecctl_int(avctx, AV1E_SET_TILE_COLUMNS, ctx->tile_columns);
>>> +if (ctx->tile_rows >= 0)
>>> +codecctl_int(avctx, AV1E_SET_TILE_ROWS, ctx->tile_rows);
>>> +
>>>  codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, avctx->color_primaries);
>>>  codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace);
>>>  codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, 
>>> avctx->color_trc);
>>> @@ -746,6 +755,8 @@ static const AVOption options[] = {
>>>  { "static-thresh","A change threshold on blocks below which they 
>>> will be skipped by the encoder", OFFSET(static_thresh), AV_OPT_TYPE_INT, { 
>>> .i64 = 0 }, 0, INT_MAX, VE },
>>>  { "drop-threshold",   "Frame drop threshold", offsetof(AOMContext, 
>>> drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE },
>>>  { "noise-sensitivity", "Noise sensitivity", OFFSET(noise_sensitivity), 
>>> AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 4, VE},
>>> +{ "tile-columns", "Number of tile columns to use, log2", 
>>> OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
>>
>> Why 6? The libaom API doesn't mention a limit, just says the argument
>> should be in log2 unit, and that it will be capped based on the image size.
> 
> https://aomedia.googlesource.com/aom/+/1742b043e2269dc1927afe428fbf5a46493e741e/av1/av1_cx_iface.c#298
>  
>>> +{ "tile-rows", "Number of tile rows to use, log2", OFFSET(tile_rows), 
>>> AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
>>
>> And for this one it says the range is [0-2].
> 
> Who says it? I can pass --tile-rows=6 to aomenc.

The doxy in the public header:
https://aomedia.googlesource.com/aom/+/master/aom/aomcx.h#312

One shouldn't have to look at source code when there's documentation for
public API, but since the latter is apparently wrong...
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/libaomenc: Add -tile-columns/-tile-rows

2018-08-31 Thread Kagami Hiiragi
On 31/08/18 02:58, James Almer wrote:
> On 8/20/2018 2:56 PM, Kagami Hiiragi wrote:
>> These options are required for multithreaded encoding, because they set
>> to zero by default in av1_cx_iface.c.
>>
>> Signed-off-by: Kagami Hiiragi 
>>
>> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
>> index 9431179886..55cb7ff72e 100644
>> --- a/libavcodec/libaomenc.c
>> +++ b/libavcodec/libaomenc.c
>> @@ -68,6 +68,8 @@ typedef struct AOMEncoderContext {
>>  int static_thresh;
>>  int drop_threshold;
>>  int noise_sensitivity;
>> +int tile_columns;
>> +int tile_rows;
>>  } AOMContext;
>>  
>>  static const char *const ctlidstr[] = {
>> @@ -75,6 +77,8 @@ static const char *const ctlidstr[] = {
>>  [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL",
>>  [AOME_SET_ENABLEAUTOALTREF] = "AOME_SET_ENABLEAUTOALTREF",
>>  [AOME_SET_STATIC_THRESHOLD] = "AOME_SET_STATIC_THRESHOLD",
>> +[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
>> +[AV1E_SET_TILE_ROWS]= "AV1E_SET_TILE_ROWS",
>>  [AV1E_SET_COLOR_RANGE]  = "AV1E_SET_COLOR_RANGE",
>>  [AV1E_SET_COLOR_PRIMARIES]  = "AV1E_SET_COLOR_PRIMARIES",
>>  [AV1E_SET_MATRIX_COEFFICIENTS] = "AV1E_SET_MATRIX_COEFFICIENTS",
>> @@ -449,6 +453,11 @@ static av_cold int aom_init(AVCodecContext *avctx,
>>  if (ctx->crf >= 0)
>>  codecctl_int(avctx, AOME_SET_CQ_LEVEL,  ctx->crf);
>>  
>> +if (ctx->tile_columns >= 0)
>> +codecctl_int(avctx, AV1E_SET_TILE_COLUMNS, ctx->tile_columns);
>> +if (ctx->tile_rows >= 0)
>> +codecctl_int(avctx, AV1E_SET_TILE_ROWS, ctx->tile_rows);
>> +
>>  codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, avctx->color_primaries);
>>  codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace);
>>  codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, 
>> avctx->color_trc);
>> @@ -746,6 +755,8 @@ static const AVOption options[] = {
>>  { "static-thresh","A change threshold on blocks below which they 
>> will be skipped by the encoder", OFFSET(static_thresh), AV_OPT_TYPE_INT, { 
>> .i64 = 0 }, 0, INT_MAX, VE },
>>  { "drop-threshold",   "Frame drop threshold", offsetof(AOMContext, 
>> drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE },
>>  { "noise-sensitivity", "Noise sensitivity", OFFSET(noise_sensitivity), 
>> AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 4, VE},
>> +{ "tile-columns", "Number of tile columns to use, log2", 
>> OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
> 
> Why 6? The libaom API doesn't mention a limit, just says the argument
> should be in log2 unit, and that it will be capped based on the image size.

https://aomedia.googlesource.com/aom/+/1742b043e2269dc1927afe428fbf5a46493e741e/av1/av1_cx_iface.c#298
 
>> +{ "tile-rows", "Number of tile rows to use, log2", OFFSET(tile_rows), 
>> AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},
> 
> And for this one it says the range is [0-2].

Who says it? I can pass --tile-rows=6 to aomenc.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/libaomenc: Add -tile-columns/-tile-rows

2018-08-30 Thread James Almer
On 8/20/2018 2:56 PM, Kagami Hiiragi wrote:
> These options are required for multithreaded encoding, because they set
> to zero by default in av1_cx_iface.c.
> 
> Signed-off-by: Kagami Hiiragi 
> 
> diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
> index 9431179886..55cb7ff72e 100644
> --- a/libavcodec/libaomenc.c
> +++ b/libavcodec/libaomenc.c
> @@ -68,6 +68,8 @@ typedef struct AOMEncoderContext {
>  int static_thresh;
>  int drop_threshold;
>  int noise_sensitivity;
> +int tile_columns;
> +int tile_rows;
>  } AOMContext;
>  
>  static const char *const ctlidstr[] = {
> @@ -75,6 +77,8 @@ static const char *const ctlidstr[] = {
>  [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL",
>  [AOME_SET_ENABLEAUTOALTREF] = "AOME_SET_ENABLEAUTOALTREF",
>  [AOME_SET_STATIC_THRESHOLD] = "AOME_SET_STATIC_THRESHOLD",
> +[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
> +[AV1E_SET_TILE_ROWS]= "AV1E_SET_TILE_ROWS",
>  [AV1E_SET_COLOR_RANGE]  = "AV1E_SET_COLOR_RANGE",
>  [AV1E_SET_COLOR_PRIMARIES]  = "AV1E_SET_COLOR_PRIMARIES",
>  [AV1E_SET_MATRIX_COEFFICIENTS] = "AV1E_SET_MATRIX_COEFFICIENTS",
> @@ -449,6 +453,11 @@ static av_cold int aom_init(AVCodecContext *avctx,
>  if (ctx->crf >= 0)
>  codecctl_int(avctx, AOME_SET_CQ_LEVEL,  ctx->crf);
>  
> +if (ctx->tile_columns >= 0)
> +codecctl_int(avctx, AV1E_SET_TILE_COLUMNS, ctx->tile_columns);
> +if (ctx->tile_rows >= 0)
> +codecctl_int(avctx, AV1E_SET_TILE_ROWS, ctx->tile_rows);
> +
>  codecctl_int(avctx, AV1E_SET_COLOR_PRIMARIES, avctx->color_primaries);
>  codecctl_int(avctx, AV1E_SET_MATRIX_COEFFICIENTS, avctx->colorspace);
>  codecctl_int(avctx, AV1E_SET_TRANSFER_CHARACTERISTICS, avctx->color_trc);
> @@ -746,6 +755,8 @@ static const AVOption options[] = {
>  { "static-thresh","A change threshold on blocks below which they 
> will be skipped by the encoder", OFFSET(static_thresh), AV_OPT_TYPE_INT, { 
> .i64 = 0 }, 0, INT_MAX, VE },
>  { "drop-threshold",   "Frame drop threshold", offsetof(AOMContext, 
> drop_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE },
>  { "noise-sensitivity", "Noise sensitivity", OFFSET(noise_sensitivity), 
> AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 4, VE},
> +{ "tile-columns", "Number of tile columns to use, log2", 
> OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},

Why 6? The libaom API doesn't mention a limit, just says the argument
should be in log2 unit, and that it will be capped based on the image size.

> +{ "tile-rows", "Number of tile rows to use, log2", OFFSET(tile_rows), 
> AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE},

And for this one it says the range is [0-2].

>  { NULL }
>  };
>  
> 

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