Which system do you use? Android, Ubuntu, OOWOW or others?
Ubuntu
Which version of system do you use? Please provide the version of the system here:
$ uname -a
Linux Khadas 5.15.137 #1.7.5 SMP PREEMPT Thu Sep 25 22:27:48 CST 2025 aarch64 aarch64 aarch64 GNU/Linux
$ cat /etc/fenix-release
# PLEASE DO NOT EDIT THIS FILE
BOARD=VIM3L
VENDOR=Amlogic
VERSION=1.7.5
ARCH=arm64
INITRD_ARCH=arm64
INSTALL_TYPE=EMMC
IMAGE_VERSION=1.7.5-250925
################ GIT VERSION ################
UBOOT_GIT_VERSION=khadas-vims-u-boot-2015.01-5.15-v1.7.5-release
LINUX_GIT_VERSION=khadas-vims-linux-5.15-v1.7.5-release
FENIX_GIT_VERSION=v1.7.5
#############################################
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
$ apt info gstreamer-aml
Package: gstreamer-aml
Version: 0.6-202406
Priority: optional
Section: kernel
Maintainer: Khadas <hello@khadas.com>
Installed-Size: 1,024 B
Depends: libion, libge2d, libmultienc | libamvenc, gst-aml-drmbufferpool-plugins
Download-Size: 603 kB
APT-Manual-Installed: yes
APT-Sources: http://dl.khadas.com/repos/vim3l noble/main arm64 Packages
Description: gstreamer-aml.
Please describe your issue below:
I’m unable to use a gstreamer pipeline to encode a 60fps live source because the amlvenc element is limiting the framerate to max 30fps even though the hardware encoder supports 60fps.
The specs for the VIM3L state it supports H.264/H.265 1080P@60fps hardware encoding. Following the instructions for H.265 encoding here VIM4 Hardware Encoding [Khadas Docs] I’m able to use the amvenc_test tool to encode an NV12 test file at average framerate of 73fps:
$ amvenc_test test.nv12 dump3.h265 1920 1080 60 60 6000000 100 1 0 2 5
src_url is : test.nv12 ;
out_url is : dump3.h265 ;
width is : 1920 ;
height is : 1080 ;
gop is : 60 ;
frmrate is : 60 ;
bitrate is : 6000000 ;
frm_num is : 100 ;
fmt is : 1 ;
buf_type is : 0 ;
num_planes is : 2 ;
codec is : 5 ;
codec is H265
Set log level to 1
[selectHW:105] selectEncoder
[selectHW:134] amvenc_265 present
[amvenc_265_load_Module:40] amvenc_ports w420 initModule!
Set log level to 4
25.5: rbsp_stop_one_bit: 1
25.4: rbsp_alignment_zero_bit: 0
25.3: rbsp_alignment_zero_bit: 0
25.2: rbsp_alignment_zero_bit: 0
25.1: rbsp_alignment_zero_bit: 0
[Total time: 1799497 us], [IO time: 429750 us]
[Encode Total time: 1369747 us], [avgTime: 13697 us], [avgfps: 73]
[amvenc_265_unload_Module:369] Unloading encoder api lib
However when I try to use the amlvenc gstreamer element to encode a 60fps live source, it drops frames resulting in a ~30fps capture. And if I try to set the framerate property explicitly to 60, it’s rejected because the element defines the maximum to be 30:
$ gst-inspect-1.0 amlvenc
...
framerate : framerate(fps)
flags: readable, writable
Integer. Range: 0 - 30 Default: 30
$ gst-launch-1.0 videotestsrc is-live=true ! video/x-raw,format=NV12,width=1920,height=1080,framerate=60/1 ! amlvenc bitrate=6000 framerate=60 ! h265parse ! filesink location=test.h265
(gst-launch-1.0:3856): GLib-GObject-CRITICAL **: 17:12:26.942: value "60" of type 'gint' is invalid or out of range for property 'framerate' of type 'gint'
How can I get the gstreamer pipeline to encode at the full speed/framerate that the hardware supports?
Post a console log of your issue below:
2026-07-24T15:21:22.042Z Khadas I recordings_metrics Recordings metrics: video dropped buffers: 243, video dropped duration in ms: 5533, audio dropped buffers: 0, audio dropped duration in ms: 0, recording duration in s: 10