I appreciate your interest! > Hardware frames often resize in the memory of the device or its driver. > Therefore, only a limited number of them can exist at a time. It seems > your queue is too large for that.
I have tried to resize the queue to an absolute minimum, yet the problem persisted in various OS and devices. > You probably need to copy the frame at least once. I do not understand what exactly you mean I ran the SW decoder for several hours and noticed no memory leak. Out of frustration, I tried to minimize the code, I now know that if I keep reusing a single frame (allocate it once and never free it) the problem disappears. But as soon as I try to allocate new frames for each decoded frame while using HW acceleration I start running into these issues. The code for this is very simple on the decoding side I simply: AVFrame* frame = av_frame_alloc(); ret = avcodec_receive_frame(m_codecContext, frame); av_packet_unref(m_packet); if (ret == AVERROR(EAGAIN)) { av_frame_free(&frame); continue; } else if (ret == AVERROR_EOF) { av_frame_free(&frame); break; } else if (ret != 0) { av_frame_free(&frame); break; } I skipped the processing and just call av_frame_free on the processing side. The queue for this purpose is a size of 4. Errors in linux differs from those experienced on Windows [h264 @ 0x7f93f00de580] get_buffer() failed [h264 @ 0x7f93f00de580] decode_slice_header error [h264 @ 0x7f93f00de580] no frame! Also I forgot to mention I'm using FFMpeg 5.1.3. Regards, Nikita _______________________________________________ Libav-user mailing list Libav-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/libav-user To unsubscribe, visit link above, or email libav-user-requ...@ffmpeg.org with subject "unsubscribe".