Skip to content

ScaleFilter Assertions [FIX included in this issue] #20

Description

@AnAlpaca

Hi to all involved, I really enjoy using your package.

I just recently came across an issue where the width and height of some videos had odd numbers an the error that through was

[executeThumbnailGenerationLinux] Stderr:  width not divisible by 2 (447x800)
 [vost#0:0/libx264 @ 0000022e5adaec80] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.

The code I ran that affected this was:

        FilterChain(
          inputs: [videoStream.videoOnly],
          filters: [
            if ((aspectRatio ?? 0) >= 1) ScaleFilter(width: 800, height: -1),
            if ((aspectRatio ?? 0) < 1) ScaleFilter(width: -1, height: 800),
          ],
          outputs: [outputStream.videoOnly],
        ),
      );

What i realized is that using ffmpegg on the cli allows you to use '-2" for width or height which ensures that these issues dont happen.
Therefore I just ended up extended the the Filter class and simply changed your assert statements from "-1" to "-2".

See my version below:

  PageMeScaleFilter({
    this.width,
    this.height,
    this.eval,
    this.interl,
    this.swsFlags,
    this.param0,
    this.param1,
    this.size,
  })  : assert(width == null || width >= -2),
        assert(height == null || height >= -2),
        assert(eval == null || eval == 'init' || eval == 'frame'),
        assert(interl == null || interl == 1 || interl == 0 || interl == -1);

This completely solves my issue, so I was wondering if you would like me to submit a PR with the changes.

Have a great day.
Cheers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions