[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