On Wed, 22 Jun 2011 16:49:46 -0400, Justin Ruggles <[email protected]> 
wrote:
> 
> In testing, the file output plugin gave a max buffer size of about 20 million
> frames, which is way more than what is really needed and causes a memory
> allocation error on my system.
> ---
> buffer_size is in frames, not bytes
> 
>  libavdevice/alsa-audio-common.c |    1 +
>  libavdevice/alsa-audio.h        |    2 ++
>  2 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/libavdevice/alsa-audio-common.c b/libavdevice/alsa-audio-common.c
> index 4c7c881..825fcb1 100644
> --- a/libavdevice/alsa-audio-common.c
> +++ b/libavdevice/alsa-audio-common.c
> @@ -137,6 +137,7 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, 
> snd_pcm_stream_t mode,
>      }
>  
>      snd_pcm_hw_params_get_buffer_size_max(hw_params, &buffer_size);
> +    buffer_size = FFMIN(buffer_size, ALSA_BUFFER_SIZE_MAX);
>      /* TODO: maybe use ctx->max_picture_buffer somehow */
>      res = snd_pcm_hw_params_set_buffer_size_near(h, hw_params, &buffer_size);
>      if (res < 0) {
> diff --git a/libavdevice/alsa-audio.h b/libavdevice/alsa-audio.h
> index 32c0742..c8c6ea4 100644
> --- a/libavdevice/alsa-audio.h
> +++ b/libavdevice/alsa-audio.h
> @@ -40,6 +40,8 @@
>          other formats */
>  #define DEFAULT_CODEC_ID AV_NE(CODEC_ID_PCM_S16BE, CODEC_ID_PCM_S16LE)
>  
> +#define ALSA_BUFFER_SIZE_MAX 32768
> +
>  typedef struct {
>      AVClass *class;
>      snd_pcm_t *h;

Ok.

-- 
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to