[FFmpeg-trac] #6156(avdevice:reopened): Issue with FFMPEG ALSA CPU usage
FFmpeg
trac at avcodec.org
Sat Apr 28 04:29:52 EEST 2018
#6156: Issue with FFMPEG ALSA CPU usage
------------------------------------+------------------------------------
Reporter: mushm0m | Owner:
Type: defect | Status: reopened
Priority: normal | Component: avdevice
Version: git-master | Resolution:
Keywords: alsa | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+------------------------------------
Comment (by kainz):
So after having done some profiling runs on ffmpeg, I think it's just
ffmpeg's processing loop causing most of the cpu use in this case, via
smaller buffers (but large enough to make malloc/free expensive) and an
accordingly larger amount of allocations.
I added some debugging code to print the selected ALSA pcm hw buffer size,
and compared profiling runs between ffmpeg with alsa-direct and ffmpeg
with alsa-jack. What happens is on the raspberrypi hardware, the i2s/pcm
input has a 128KB buffer, and ffmpeg ends up allocating/deallocating this
on every frame. For comparison, the alsapulse plugin ends up using a 1MB
buffer, but provides larger frames, so the allocations dont happen as
often.
Given all of the interactions above, I'm not really sure how best to
mitigate this, and my usecase was aggravated by trying to combine the
above with a concurrent v4l2 capture, which has proven challenging for
other people with ffmpeg in the past.
If the above behavior is considered a design bug, I suppose I could help
find and/or test a solution to it, but I think the fix would end up going
deep into the ffmpeg/libavcodec/transcoding code base, probably more than
is comfortable. Otherwise, I suppose this is really an unfortunate
sideeffect of the hardware implementation.
An easy mitigation could be to add a commandline argument(s?) to tell the
alsa demuxer to limit the buffer(or periods etc) sizes to better match the
platform vs what the drivers report as the maximum permissible values.
Thoughts?
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6156#comment:11>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list