[Libav-user] How to use rkmpp decoder?
Mark Thompson
sw at jkqxz.net
Tue Apr 17 00:15:35 EEST 2018
On 16/04/18 07:58, Anton Prikazchikov wrote:
>
>> Can you give more detail about your setup and the input stream?
>
> I have firefly RK3399.
>
> OS:
> Linux localhost 4.4.120 #2 SMP Mon Apr 9 10:08:10 +04 2018 aarch64 aarch64 aarch64 GNU/Linux
> No LSB modules are available.
> Distributor ID: Ubuntu
> Description: Ubuntu 16.04.3 LTS
> Release: 16.04
> Codename: xenial
>
> I have installed rockchip kernel from git master branch.
>
> ffmpeg:
> ffmpeg version N-90453-g44000b7 Copyright (c) 2000-2018 the FFmpeg developers
> built with gcc 5.4.0 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 20160609
> configuration: --prefix=/usr/local --enable-libx264 --enable-libdrm --enable-rkmpp --enable-version3 --enable-gpl
> libavutil 56. 12.100 / 56. 12.100
> libavcodec 58. 16.100 / 58. 16.100
> libavformat 58. 10.100 / 58. 10.100
> libavdevice 58. 2.100 / 58. 2.100
> libavfilter 7. 13.100 / 7. 13.100
> libswscale 5. 0.102 / 5. 0.102
> libswresample 3. 0.101 / 3. 0.101
> libpostproc 55. 0.100 / 55. 0.100
>
> I tried this command:
> sudo ffmpeg -v 55 -c:v h264_rkmpp -i ./4k.h264 -an -frames:v 100 out.h264
>
> And received:
> ...
> [h264_rkmpp @ 0x1024c380] Initializing RKMPP decoder.
> mpi: mpp version: 5849089 author: Herman Chen [mpp]: Add temporally patch for blocking issue
> hal_h264d_api: hal_h264d_init mpp_buffer_group_get_internal used ion In
> mpp_rt: NOT found ion allocator
> mpp_rt: found drm allocator
> [h264_rkmpp @ 0x1024c380] RKMPP decoder initialized successfully.
> Stream mapping:
> Stream #0:0 -> #0:0 (h264 (h264_rkmpp) -> h264 (libx264))
> Press [q] to stop, [?] for help
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [AVBSFContext @ 0x102ddf30] The input looks like it is Annex B already
> [h264_rkmpp @ 0x1024c380] Wrote 35 bytes to decoder
> [h264_rkmpp @ 0x1024c380] Wrote 43028 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 99 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 40 bytes to decoder
> [h264_rkmpp @ 0x1024c380] Timeout when trying to get a frame from MPP
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 126 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 32 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 50 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 32 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 49 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 33 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 77 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 41 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 64 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 33 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 48 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 33 bytes to decoder
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 52 bytes to decoder
> [h264_rkmpp @ 0x1024c380] Timeout when trying to get a frame from MPP
> cur_dts is invalid (this is harmless if it occurs once at the start per stream)
> [h264_rkmpp @ 0x1024c380] Wrote 37 bytes to decoder
> ...
>
> Also i have checked again my built mpp. The command for the test:
> sudo ./mpi_dec_test -i ./4k.h264 -o 1080.yuv -w 1920 -h 1080 -t 7
>
> And have received good video file without errors.
I don't see anything funny there. Does it fail in the same way with all H.264 files (including ones in a proper container with timestamps)? What about H.265, VP8 or VP9 (which I think should all be supported on RK3399)?
> Maybe do i have to add "--extra-ldflags='-L/usr/local/lib -lmali-midgard-r13p0-fbdev'"?
Shouldn't be relevant - that's me forcing it to link against a specific graphics driver binary so that OpenCL interop works.
- Mark
More information about the Libav-user
mailing list