[Libav-user] dshow capture / av_dict_set_int / audio_buffer_size

ffmpeg at mxwendler.net ffmpeg at mxwendler.net
Sat Apr 13 15:06:01 EEST 2024


Hi all,

For an audio/video capturing tool we open live capture devices with the 
following code:

AVFormatContext* ic = nullptr;
const AVInputFormat *iformat = av_find_input_format("dshow");
AVDictionary *options = nullptr;
av_dict_set_int(&options, "audio_buffer_size", 50, 0);
av_dict_set(&options, "framerate", "30", 0);
av_dict_set(&options, "video_size", "640x360", 0);
av_dict_set(&options, "sample_rate", "48000", 0);

auto err = avformat_open_input(&ic, "video=Integrated 
Camera:audio=Microphone Array", iformat, &options);

Audio *sample_rate*, *framerate* and *video_size* are correctly set, but 
the audio_buffer_size setting is ignored, resulting in a strong audio 
delay. Is there something wrong in the way we set it? The documentation 
says, the value is given in milliseconds (not sample size).

If audio_buffer_size cannot be set for all devices, is there an api call 
(or struct member) where we can get the currently active audio buffer 
size, so we can correct this else where?

Looking at the source (dshow.c) indicated that the audio_buffer_size is 
a member of priv_data / dshow_ctx struct, so there is no way to access 
it, i fear

https://ffmpeg.org/doxygen/trunk/dshow_8c_source.html


Question also asked here:
https://stackoverflow.com/questions/78243455/libav-audio-latency-cannot-set-audio-buffer-size

Best regards,
Heiner






More information about the Libav-user mailing list