Encoding a single frame into H.264 via 01_video_encode

Hi! I was curious whether it is possible to encode a single YUV frame into H.264 using 01_video_encode or the multimedia API. Currently, it works when I pass in 10+ YUV frames in a single file, but whenever I only pass in one, the program breaks the pipe and segfaults. The commands and output I am receiving are shown below:

$ gst-launch-1.0 videotestsrc num-buffers=1 ! ‘video/x-raw, width=(int)1280, height=(int)720, format=(string)Y444’ ! filesink location=test_Y444.yuv

$ ./video_encode test_Y444.yuv 1280 720 H264 out_Y444.h264 --elossless -p high444

Creating Encoder in blocking mode 
Opening in BLOCKING MODE 
NvMMLiteOpen : Block : BlockType = 4 
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4 
875967048
875711833
H264: Profile = 244, Level = 51 
NVMEDIA: Need to set EMC bandwidth : 376000 
Could not read complete frame from input file
File read complete.
NVMEDIA_ENC: bBlitMode is set to TRUE 
[ERROR] (NvV4l2ElementPlane.cpp:178) <enc0> Capture Plane:Error while DQing buffer: Broken pipe
Segmentation fault (core dumped)

Hi,
We don’t validate this use-case so it may not work properly. Generally we would expect encoding frames continuously in h264/h265 encoding. For single frame encoding, you may encode to JPEG.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.