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

Jon Cook jon.cook at cubicmotion.com
Tue Jan 21 14:30:15 EET 2020


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 at 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!
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-libavcodec-qsvenc.c-Set-height-and-width-alignment-w.patch
Type: application/octet-stream
Size: 1175 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20200121/f84fafd2/attachment.obj>


More information about the ffmpeg-devel mailing list