diff mbox series

[FFmpeg-devel] libavcodec/qsvenc.c: Set height and width alignment when using mjpeg_qsv

Message ID 20200120094956.154224-1-jon.cook@cubicmotion.com
State Withdrawn
Headers show
Series [FFmpeg-devel] libavcodec/qsvenc.c: Set height and width alignment when using mjpeg_qsv | expand

Checks

Context Check Description
andriy/ffmpeg-patchwork success Make fate finished

Commit Message

Jon Cook Jan. 20, 2020, 9:49 a.m. UTC
From: JonCookCubic <jon.cook@cubicmotion.com>

Currently width_align and height_align are zero which cases "Error submitting the frame for encoding". This change sets the alignments.

Signed-off-by: Jon Cook <jon.cook@cubicmotion.com>
---
 libavcodec/qsvenc.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Zhong Li Jan. 21, 2020, 2:05 a.m. UTC | #1
Jon Cook <jon.cook@cubicmotion.com> 于2020年1月20日周一 下午5:58写道:
>
> From: JonCookCubic <jon.cook@cubicmotion.com>
>
> Currently width_align and height_align are zero which cases "Error submitting the frame for encoding". This change sets the alignments.

Could you help to provide detail steps (CLI and input video) to
reproduce the issue?

>
> Signed-off-by: Jon Cook <jon.cook@cubicmotion.com>
> ---
>  libavcodec/qsvenc.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
> index 9e416500e9..b18393532f 100644
> --- a/libavcodec/qsvenc.c
> +++ b/libavcodec/qsvenc.c
> @@ -470,6 +470,9 @@ static int init_video_param_jpeg(AVCodecContext *avctx, QSVEncContext *q)
>      q->param.mfx.Quality              = av_clip(avctx->global_quality, 1, 100);
>      q->param.mfx.RestartInterval      = 0;
>
> +    q->width_align = 16;
> +    q->height_align = 16;
> +

IMHO If you set the aligned value, FrameInfo.Width/Height shoule be
changed to be:

    q->param.mfx.FrameInfo.Width  = FFALIGN(avctx->width, q->width_align);
    q->param.mfx.FrameInfo.Height = FFALIGN(avctx->height, q->height_align);

>      return 0;
>  }
>
> --
> 2.20.1.windows.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-request@ffmpeg.org with subject "unsubscribe".
Jon Cook Jan. 21, 2020, 11:47 a.m. UTC | #2
Hi Zhong,

Thanks for your reply.

> IMHO If you set the aligned value, FrameInfo.Width/Height shoule
> be changed to be:
>
>    q->param.mfx.FrameInfo.Width  = FFALIGN(avctx->width, q->width_align);
>    q->param.mfx.FrameInfo.Height = FFALIGN(avctx->height,
q->height_align);

Makes sense. I'll update the patch. This is my first time making changes to
the code so forgive any mistakes as I find my way around.

> Could you help to provide detail steps (CLI and input video) to
> reproduce the issue?

The command line I'm using is below along with the output without the
changes applied. Input video is not important, any video will do. There is
a little bit more about the problem here
http://ffmpeg.org/pipermail/ffmpeg-user/2019-November/046143.html

Regards,
Jon

$ ./ffmpeg.exe -loglevel debug -y -i C:/Users/jcook/Desktop/sample.avi -c:v
 mjpeg_qsv output.mp4
ffmpeg version N-95883-ga2fbdc6898 Copyright (c) 2000-2019 the FFmpeg
developers
  built with Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27031.1
for x64
  configuration: --toolchain=msvc --target-os=win64 --arch=x86_64
--prefix=/ffmpeg --enable-shared --disable-static --enable-yasm
--enable-asm --enable-libmfx --enable-nonfree
  libavutil      56. 36.101 / 56. 36.101
  libavcodec     58. 62.100 / 58. 62.100
  libavformat    58. 35.100 / 58. 35.100
  libavdevice    58.  9.101 / 58.  9.101
  libavfilter     7. 67.100 /  7. 67.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging
level) with argument 'debug'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with
argument '1'.
Reading option '-i' ... matched as input url with argument
'C:/Users/jcook/Desktop/sample.avi'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument '
mjpeg_qsv'.
Reading option 'output.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url C:/Users/jcook/Desktop/sample.avi.
Successfully parsed a group of options.
Opening an input file: C:/Users/jcook/Desktop/sample.avi.
[NULL @ 000001E0699F8540] Opening 'C:/Users/jcook/Desktop/sample.avi' for
reading
[file @ 000001E0699D8280] Setting default whitelist 'file,crypto'
[avi @ 000001E0699F8540] Format avi probed with size=2048 and score=100
[avi @ 000001E0699D86C0] use odml:1
st:1 removing common factor 36 from timebase
[avi @ 000001E0699F8540] Before avformat_find_stream_info() pos: 4108 bytes
read:142280 seeks:5 nb_streams:2
[mpeg4 @ 000001E069A0AE00] Format yuv420p chosen by get_format().
[avi @ 000001E0699F8540] All info found
[avi @ 000001E0699F8540] After avformat_find_stream_info() pos: 16409 bytes
read:142280 seeks:5 frames:21
Input #0, avi, from 'C:/Users/jcook/Desktop/sample.avi':
  Metadata:
    encoder         : MEncoder SVN-r33148-4.0.1
  Duration: 00:00:05.56, start: 0.000000, bitrate: 540 kb/s
    Stream #0:0, 1, 1/25: Video: mpeg4 (Simple Profile), 1 reference frame
(XVID / 0x44495658), yuv420p(left), 320x240 [SAR 1:1 DAR 4:3], 0/1, 425
kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
    Stream #0:1, 20, 32/1225: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz,
stereo, fltp, 100 kb/s
Successfully opened the file.
Parsing a group of options: output url output.mp4.
Applying option c:v (codec name) with argument mjpeg_qsv.
Successfully parsed a group of options.
Opening an output file: output.mp4.
[file @ 000001E06B51B9C0] Setting default whitelist 'file,crypto'
Successfully opened the file.
detected 12 logical cores
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg4 (native) -> mjpeg (mjpeg_qsv))
  Stream #0:1 -> #0:1 (mp3 (mp3float) -> aac (native))
Press [q] to stop, [?] for help
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if
it occurs once at the start per stream)
[graph_1_in_0_1 @ 000001E069A12A40] Setting 'time_base' to value '1/44100'
[graph_1_in_0_1 @ 000001E069A12A40] Setting 'sample_rate' to value '44100'
[graph_1_in_0_1 @ 000001E069A12A40] Setting 'sample_fmt' to value 'fltp'
[graph_1_in_0_1 @ 000001E069A12A40] Setting 'channel_layout' to value '0x3'
[graph_1_in_0_1 @ 000001E069A12A40] tb:1/44100 samplefmt:fltp
samplerate:44100 chlayout:0x3
[format_out_0_1 @ 000001E069A2F800] Setting 'sample_fmts' to value 'fltp'
[format_out_0_1 @ 000001E069A2F800] Setting 'sample_rates' to value
'96000|88200|64000|48000|44100|32000|24000|22050|16000|12000|11025|8000|7350'
[AVFilterGraph @ 000001E069AA7100] query_formats: 4 queried, 9 merged, 0
already done, 0 delayed
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if
it occurs once at the start per stream)
    Last message repeated 20 times
[mpeg4 @ 000001E069A2EE00] Format yuv420p chosen by get_format().
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if
it occurs once at the start per stream)
    Last message repeated 28 times
[graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'video_size' to
value '320x240'
[graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'pix_fmt' to
value '0'
[graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'time_base' to
value '1/25'
[graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'pixel_aspect'
to value '1/1'
[graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'sws_param' to
value 'flags=2'
[graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'frame_rate' to
value '25/1'
[graph 0 input from stream 0:0 @ 000001E069A31640] w:320 h:240
pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
[format @ 000001E06BBCED80] Setting 'pix_fmts' to value 'nv12|qsv'
[auto_scaler_0 @ 000001E06BBCEE80] Setting 'flags' to value 'bicubic'
[auto_scaler_0 @ 000001E06BBCEE80] w:iw h:ih flags:'bicubic' interl:0
[format @ 000001E06BBCED80] auto-inserting filter 'auto_scaler_0' between
the filter 'Parsed_null_0' and the filter 'format'
[AVFilterGraph @ 000001E069AA7F80] query_formats: 4 queried, 2 merged, 1
already done, 0 delayed
[auto_scaler_0 @ 000001E06BBCEE80] w:320 h:240 fmt:yuv420p sar:1/1 -> w:320
h:240 fmt:nv12 sar:1/1 flags:0x4
[mjpeg_qsv @ 000001E069A01B80] Initialized an internal MFX session using
hardware accelerated implementation
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf58.35.100
    Stream #0:0, 0, 1/12800: Video: mjpeg (mjpeg_qsv), 1 reference frame
(mp4v / 0x7634706D), nv12(left), 320x240 [SAR 1:1 DAR 4:3], 0/1, q=2-31,
200 kb/s, 25 fps, 12800 tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.62.100 mjpeg_qsv
    Stream #0:1, 0, 1/44100: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz,
stereo, fltp, delay 1024, 128 kb/s
    Metadata:
      encoder         : Lavc58.62.100 aac
Clipping frame in rate conversion by 0.000008
[mjpeg_qsv @ 000001E069A01B80] Error submitting the frame for encoding.
Video encoding failed
[AVIOContext @ 000001E06B51BA80] Statistics: 0 seeks, 1 writeouts
[aac @ 000001E069A3A6C0] Qavg: 709.099
[aac @ 000001E069A3A6C0] 2 frames left in the queue on closing
[AVIOContext @ 000001E0699D1440] Statistics: 175048 bytes read, 5 seeks
Conversion failed!
Jon Cook Jan. 21, 2020, 12:30 p.m. UTC | #3
Updated patch with FrameInfo.Width and Height set as per review comments

Jon

On Tue, 21 Jan 2020 at 11:47, Jon Cook <jon.cook@cubicmotion.com> wrote:

> Hi Zhong,
>
> Thanks for your reply.
>
> > IMHO If you set the aligned value, FrameInfo.Width/Height shoule
> > be changed to be:
> >
> >    q->param.mfx.FrameInfo.Width  = FFALIGN(avctx->width, q->width_align);
> >    q->param.mfx.FrameInfo.Height = FFALIGN(avctx->height,
> q->height_align);
>
> Makes sense. I'll update the patch. This is my first time making changes
> to the code so forgive any mistakes as I find my way around.
>
> > Could you help to provide detail steps (CLI and input video) to
> > reproduce the issue?
>
> The command line I'm using is below along with the output without the
> changes applied. Input video is not important, any video will do. There is
> a little bit more about the problem here
> http://ffmpeg.org/pipermail/ffmpeg-user/2019-November/046143.html
>
> Regards,
> Jon
>
> $ ./ffmpeg.exe -loglevel debug -y -i C:/Users/jcook/Desktop/sample.avi
> -c:v  mjpeg_qsv output.mp4
> ffmpeg version N-95883-ga2fbdc6898 Copyright (c) 2000-2019 the FFmpeg
> developers
>   built with Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27031.1
> for x64
>   configuration: --toolchain=msvc --target-os=win64 --arch=x86_64
> --prefix=/ffmpeg --enable-shared --disable-static --enable-yasm
> --enable-asm --enable-libmfx --enable-nonfree
>   libavutil      56. 36.101 / 56. 36.101
>   libavcodec     58. 62.100 / 58. 62.100
>   libavformat    58. 35.100 / 58. 35.100
>   libavdevice    58.  9.101 / 58.  9.101
>   libavfilter     7. 67.100 /  7. 67.100
>   libswscale      5.  6.100 /  5.  6.100
>   libswresample   3.  6.100 /  3.  6.100
> Splitting the commandline.
> Reading option '-loglevel' ... matched as option 'loglevel' (set logging
> level) with argument 'debug'.
> Reading option '-y' ... matched as option 'y' (overwrite output files)
> with argument '1'.
> Reading option '-i' ... matched as input url with argument
> 'C:/Users/jcook/Desktop/sample.avi'.
> Reading option '-c:v' ... matched as option 'c' (codec name) with argument
> 'mjpeg_qsv'.
> Reading option 'output.mp4' ... matched as output url.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option loglevel (set logging level) with argument debug.
> Applying option y (overwrite output files) with argument 1.
> Successfully parsed a group of options.
> Parsing a group of options: input url C:/Users/jcook/Desktop/sample.avi.
> Successfully parsed a group of options.
> Opening an input file: C:/Users/jcook/Desktop/sample.avi.
> [NULL @ 000001E0699F8540] Opening 'C:/Users/jcook/Desktop/sample.avi' for
> reading
> [file @ 000001E0699D8280] Setting default whitelist 'file,crypto'
> [avi @ 000001E0699F8540] Format avi probed with size=2048 and score=100
> [avi @ 000001E0699D86C0] use odml:1
> st:1 removing common factor 36 from timebase
> [avi @ 000001E0699F8540] Before avformat_find_stream_info() pos: 4108
> bytes read:142280 seeks:5 nb_streams:2
> [mpeg4 @ 000001E069A0AE00] Format yuv420p chosen by get_format().
> [avi @ 000001E0699F8540] All info found
> [avi @ 000001E0699F8540] After avformat_find_stream_info() pos: 16409
> bytes read:142280 seeks:5 frames:21
> Input #0, avi, from 'C:/Users/jcook/Desktop/sample.avi':
>   Metadata:
>     encoder         : MEncoder SVN-r33148-4.0.1
>   Duration: 00:00:05.56, start: 0.000000, bitrate: 540 kb/s
>     Stream #0:0, 1, 1/25: Video: mpeg4 (Simple Profile), 1 reference frame
> (XVID / 0x44495658), yuv420p(left), 320x240 [SAR 1:1 DAR 4:3], 0/1, 425
> kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
>     Stream #0:1, 20, 32/1225: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz,
> stereo, fltp, 100 kb/s
> Successfully opened the file.
> Parsing a group of options: output url output.mp4.
> Applying option c:v (codec name) with argument mjpeg_qsv.
> Successfully parsed a group of options.
> Opening an output file: output.mp4.
> [file @ 000001E06B51B9C0] Setting default whitelist 'file,crypto'
> Successfully opened the file.
> detected 12 logical cores
> Stream mapping:
>   Stream #0:0 -> #0:0 (mpeg4 (native) -> mjpeg (mjpeg_qsv))
>   Stream #0:1 -> #0:1 (mp3 (mp3float) -> aac (native))
> Press [q] to stop, [?] for help
> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
> if it occurs once at the start per stream)
> [graph_1_in_0_1 @ 000001E069A12A40] Setting 'time_base' to value '1/44100'
> [graph_1_in_0_1 @ 000001E069A12A40] Setting 'sample_rate' to value '44100'
> [graph_1_in_0_1 @ 000001E069A12A40] Setting 'sample_fmt' to value 'fltp'
> [graph_1_in_0_1 @ 000001E069A12A40] Setting 'channel_layout' to value '0x3'
> [graph_1_in_0_1 @ 000001E069A12A40] tb:1/44100 samplefmt:fltp
> samplerate:44100 chlayout:0x3
> [format_out_0_1 @ 000001E069A2F800] Setting 'sample_fmts' to value 'fltp'
> [format_out_0_1 @ 000001E069A2F800] Setting 'sample_rates' to value
> '96000|88200|64000|48000|44100|32000|24000|22050|16000|12000|11025|8000|7350'
> [AVFilterGraph @ 000001E069AA7100] query_formats: 4 queried, 9 merged, 0
> already done, 0 delayed
> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
> if it occurs once at the start per stream)
>     Last message repeated 20 times
> [mpeg4 @ 000001E069A2EE00] Format yuv420p chosen by get_format().
> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
> if it occurs once at the start per stream)
>     Last message repeated 28 times
> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'video_size' to
> value '320x240'
> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'pix_fmt' to
> value '0'
> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'time_base' to
> value '1/25'
> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'pixel_aspect'
> to value '1/1'
> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'sws_param' to
> value 'flags=2'
> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'frame_rate' to
> value '25/1'
> [graph 0 input from stream 0:0 @ 000001E069A31640] w:320 h:240
> pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
> [format @ 000001E06BBCED80] Setting 'pix_fmts' to value 'nv12|qsv'
> [auto_scaler_0 @ 000001E06BBCEE80] Setting 'flags' to value 'bicubic'
> [auto_scaler_0 @ 000001E06BBCEE80] w:iw h:ih flags:'bicubic' interl:0
> [format @ 000001E06BBCED80] auto-inserting filter 'auto_scaler_0' between
> the filter 'Parsed_null_0' and the filter 'format'
> [AVFilterGraph @ 000001E069AA7F80] query_formats: 4 queried, 2 merged, 1
> already done, 0 delayed
> [auto_scaler_0 @ 000001E06BBCEE80] w:320 h:240 fmt:yuv420p sar:1/1 ->
> w:320 h:240 fmt:nv12 sar:1/1 flags:0x4
> [mjpeg_qsv @ 000001E069A01B80] Initialized an internal MFX session using
> hardware accelerated implementation
> Output #0, mp4, to 'output.mp4':
>   Metadata:
>     encoder         : Lavf58.35.100
>     Stream #0:0, 0, 1/12800: Video: mjpeg (mjpeg_qsv), 1 reference frame
> (mp4v / 0x7634706D), nv12(left), 320x240 [SAR 1:1 DAR 4:3], 0/1, q=2-31,
> 200 kb/s, 25 fps, 12800 tbn, 25 tbc
>     Metadata:
>       encoder         : Lavc58.62.100 mjpeg_qsv
>     Stream #0:1, 0, 1/44100: Audio: aac (LC) (mp4a / 0x6134706D), 44100
> Hz, stereo, fltp, delay 1024, 128 kb/s
>     Metadata:
>       encoder         : Lavc58.62.100 aac
> Clipping frame in rate conversion by 0.000008
> [mjpeg_qsv @ 000001E069A01B80] Error submitting the frame for encoding.
> Video encoding failed
> [AVIOContext @ 000001E06B51BA80] Statistics: 0 seeks, 1 writeouts
> [aac @ 000001E069A3A6C0] Qavg: 709.099
> [aac @ 000001E069A3A6C0] 2 frames left in the queue on closing
> [AVIOContext @ 000001E0699D1440] Statistics: 175048 bytes read, 5 seeks
> Conversion failed!
>
Jon Cook Jan. 21, 2020, 12:50 p.m. UTC | #4
Giving up on how to update the patch. Going to delete this ticket and
create a new one!

Jon

On Tue, 21 Jan 2020 at 12:30, Jon Cook <jon.cook@cubicmotion.com> wrote:

> Updated patch with FrameInfo.Width and Height set as per review comments
>
> Jon
>
> On Tue, 21 Jan 2020 at 11:47, Jon Cook <jon.cook@cubicmotion.com> wrote:
>
>> Hi Zhong,
>>
>> Thanks for your reply.
>>
>> > IMHO If you set the aligned value, FrameInfo.Width/Height shoule
>> > be changed to be:
>> >
>> >    q->param.mfx.FrameInfo.Width  = FFALIGN(avctx->width,
>> q->width_align);
>> >    q->param.mfx.FrameInfo.Height = FFALIGN(avctx->height,
>> q->height_align);
>>
>> Makes sense. I'll update the patch. This is my first time making changes
>> to the code so forgive any mistakes as I find my way around.
>>
>> > Could you help to provide detail steps (CLI and input video) to
>> > reproduce the issue?
>>
>> The command line I'm using is below along with the output without the
>> changes applied. Input video is not important, any video will do. There is
>> a little bit more about the problem here
>> http://ffmpeg.org/pipermail/ffmpeg-user/2019-November/046143.html
>>
>> Regards,
>> Jon
>>
>> $ ./ffmpeg.exe -loglevel debug -y -i C:/Users/jcook/Desktop/sample.avi
>> -c:v  mjpeg_qsv output.mp4
>> ffmpeg version N-95883-ga2fbdc6898 Copyright (c) 2000-2019 the FFmpeg
>> developers
>>   built with Microsoft (R) C/C++ Optimizing Compiler Version
>> 19.16.27031.1 for x64
>>   configuration: --toolchain=msvc --target-os=win64 --arch=x86_64
>> --prefix=/ffmpeg --enable-shared --disable-static --enable-yasm
>> --enable-asm --enable-libmfx --enable-nonfree
>>   libavutil      56. 36.101 / 56. 36.101
>>   libavcodec     58. 62.100 / 58. 62.100
>>   libavformat    58. 35.100 / 58. 35.100
>>   libavdevice    58.  9.101 / 58.  9.101
>>   libavfilter     7. 67.100 /  7. 67.100
>>   libswscale      5.  6.100 /  5.  6.100
>>   libswresample   3.  6.100 /  3.  6.100
>> Splitting the commandline.
>> Reading option '-loglevel' ... matched as option 'loglevel' (set logging
>> level) with argument 'debug'.
>> Reading option '-y' ... matched as option 'y' (overwrite output files)
>> with argument '1'.
>> Reading option '-i' ... matched as input url with argument
>> 'C:/Users/jcook/Desktop/sample.avi'.
>> Reading option '-c:v' ... matched as option 'c' (codec name) with
>> argument 'mjpeg_qsv'.
>> Reading option 'output.mp4' ... matched as output url.
>> Finished splitting the commandline.
>> Parsing a group of options: global .
>> Applying option loglevel (set logging level) with argument debug.
>> Applying option y (overwrite output files) with argument 1.
>> Successfully parsed a group of options.
>> Parsing a group of options: input url C:/Users/jcook/Desktop/sample.avi.
>> Successfully parsed a group of options.
>> Opening an input file: C:/Users/jcook/Desktop/sample.avi.
>> [NULL @ 000001E0699F8540] Opening 'C:/Users/jcook/Desktop/sample.avi' for
>> reading
>> [file @ 000001E0699D8280] Setting default whitelist 'file,crypto'
>> [avi @ 000001E0699F8540] Format avi probed with size=2048 and score=100
>> [avi @ 000001E0699D86C0] use odml:1
>> st:1 removing common factor 36 from timebase
>> [avi @ 000001E0699F8540] Before avformat_find_stream_info() pos: 4108
>> bytes read:142280 seeks:5 nb_streams:2
>> [mpeg4 @ 000001E069A0AE00] Format yuv420p chosen by get_format().
>> [avi @ 000001E0699F8540] All info found
>> [avi @ 000001E0699F8540] After avformat_find_stream_info() pos: 16409
>> bytes read:142280 seeks:5 frames:21
>> Input #0, avi, from 'C:/Users/jcook/Desktop/sample.avi':
>>   Metadata:
>>     encoder         : MEncoder SVN-r33148-4.0.1
>>   Duration: 00:00:05.56, start: 0.000000, bitrate: 540 kb/s
>>     Stream #0:0, 1, 1/25: Video: mpeg4 (Simple Profile), 1 reference
>> frame (XVID / 0x44495658), yuv420p(left), 320x240 [SAR 1:1 DAR 4:3], 0/1,
>> 425 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
>>     Stream #0:1, 20, 32/1225: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz,
>> stereo, fltp, 100 kb/s
>> Successfully opened the file.
>> Parsing a group of options: output url output.mp4.
>> Applying option c:v (codec name) with argument mjpeg_qsv.
>> Successfully parsed a group of options.
>> Opening an output file: output.mp4.
>> [file @ 000001E06B51B9C0] Setting default whitelist 'file,crypto'
>> Successfully opened the file.
>> detected 12 logical cores
>> Stream mapping:
>>   Stream #0:0 -> #0:0 (mpeg4 (native) -> mjpeg (mjpeg_qsv))
>>   Stream #0:1 -> #0:1 (mp3 (mp3float) -> aac (native))
>> Press [q] to stop, [?] for help
>> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
>> if it occurs once at the start per stream)
>> [graph_1_in_0_1 @ 000001E069A12A40] Setting 'time_base' to value '1/44100'
>> [graph_1_in_0_1 @ 000001E069A12A40] Setting 'sample_rate' to value '44100'
>> [graph_1_in_0_1 @ 000001E069A12A40] Setting 'sample_fmt' to value 'fltp'
>> [graph_1_in_0_1 @ 000001E069A12A40] Setting 'channel_layout' to value
>> '0x3'
>> [graph_1_in_0_1 @ 000001E069A12A40] tb:1/44100 samplefmt:fltp
>> samplerate:44100 chlayout:0x3
>> [format_out_0_1 @ 000001E069A2F800] Setting 'sample_fmts' to value 'fltp'
>> [format_out_0_1 @ 000001E069A2F800] Setting 'sample_rates' to value
>> '96000|88200|64000|48000|44100|32000|24000|22050|16000|12000|11025|8000|7350'
>> [AVFilterGraph @ 000001E069AA7100] query_formats: 4 queried, 9 merged, 0
>> already done, 0 delayed
>> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
>> if it occurs once at the start per stream)
>>     Last message repeated 20 times
>> [mpeg4 @ 000001E069A2EE00] Format yuv420p chosen by get_format().
>> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
>> if it occurs once at the start per stream)
>>     Last message repeated 28 times
>> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'video_size'
>> to value '320x240'
>> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'pix_fmt' to
>> value '0'
>> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'time_base' to
>> value '1/25'
>> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'pixel_aspect'
>> to value '1/1'
>> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'sws_param' to
>> value 'flags=2'
>> [graph 0 input from stream 0:0 @ 000001E069A31640] Setting 'frame_rate'
>> to value '25/1'
>> [graph 0 input from stream 0:0 @ 000001E069A31640] w:320 h:240
>> pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
>> [format @ 000001E06BBCED80] Setting 'pix_fmts' to value 'nv12|qsv'
>> [auto_scaler_0 @ 000001E06BBCEE80] Setting 'flags' to value 'bicubic'
>> [auto_scaler_0 @ 000001E06BBCEE80] w:iw h:ih flags:'bicubic' interl:0
>> [format @ 000001E06BBCED80] auto-inserting filter 'auto_scaler_0' between
>> the filter 'Parsed_null_0' and the filter 'format'
>> [AVFilterGraph @ 000001E069AA7F80] query_formats: 4 queried, 2 merged, 1
>> already done, 0 delayed
>> [auto_scaler_0 @ 000001E06BBCEE80] w:320 h:240 fmt:yuv420p sar:1/1 ->
>> w:320 h:240 fmt:nv12 sar:1/1 flags:0x4
>> [mjpeg_qsv @ 000001E069A01B80] Initialized an internal MFX session using
>> hardware accelerated implementation
>> Output #0, mp4, to 'output.mp4':
>>   Metadata:
>>     encoder         : Lavf58.35.100
>>     Stream #0:0, 0, 1/12800: Video: mjpeg (mjpeg_qsv), 1 reference frame
>> (mp4v / 0x7634706D), nv12(left), 320x240 [SAR 1:1 DAR 4:3], 0/1, q=2-31,
>> 200 kb/s, 25 fps, 12800 tbn, 25 tbc
>>     Metadata:
>>       encoder         : Lavc58.62.100 mjpeg_qsv
>>     Stream #0:1, 0, 1/44100: Audio: aac (LC) (mp4a / 0x6134706D), 44100
>> Hz, stereo, fltp, delay 1024, 128 kb/s
>>     Metadata:
>>       encoder         : Lavc58.62.100 aac
>> Clipping frame in rate conversion by 0.000008
>> [mjpeg_qsv @ 000001E069A01B80] Error submitting the frame for encoding.
>> Video encoding failed
>> [AVIOContext @ 000001E06B51BA80] Statistics: 0 seeks, 1 writeouts
>> [aac @ 000001E069A3A6C0] Qavg: 709.099
>> [aac @ 000001E069A3A6C0] 2 frames left in the queue on closing
>> [AVIOContext @ 000001E0699D1440] Statistics: 175048 bytes read, 5 seeks
>> Conversion failed!
>>
>
diff mbox series

Patch

diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index 9e416500e9..b18393532f 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -470,6 +470,9 @@  static int init_video_param_jpeg(AVCodecContext *avctx, QSVEncContext *q)
     q->param.mfx.Quality              = av_clip(avctx->global_quality, 1, 100);
     q->param.mfx.RestartInterval      = 0;
 
+    q->width_align = 16;
+    q->height_align = 16;
+
     return 0;
 }