summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-10-18 18:54:05 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-10-18 18:54:05 +0000
commit57281a3170854c12ec574135603fedbbce2cbff7 (patch)
tree7799d215d322b2b70ba133061ac5568179bd8e4c /libmpcodecs
parent1ec2a1c33f9a846084c9d4286fba7543277e9711 (diff)
downloadmpv-57281a3170854c12ec574135603fedbbce2cbff7.tar.bz2
mpv-57281a3170854c12ec574135603fedbbce2cbff7.tar.xz
Use av_malloc/av_free for audio-related buffers to avoid crashes due to
insufficient alignment on systems without memalign. http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2008-October/058743.html git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27799 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/ad_twin.c2
-rw-r--r--libmpcodecs/dec_audio.c14
2 files changed, 5 insertions, 11 deletions
diff --git a/libmpcodecs/ad_twin.c b/libmpcodecs/ad_twin.c
index 58d1074682..77158f5bb1 100644
--- a/libmpcodecs/ad_twin.c
+++ b/libmpcodecs/ad_twin.c
@@ -138,7 +138,7 @@ static int init_vqf_audio_codec(sh_audio_t *sh_audio){
priv->framesize=TvqGetFrameSize();
sh_audio->audio_in_minsize=priv->framesize*in_fmt->nChannels;
sh_audio->a_in_buffer_size=4*sh_audio->audio_in_minsize;
- sh_audio->a_in_buffer=malloc(sh_audio->a_in_buffer_size);
+ sh_audio->a_in_buffer=av_malloc(sh_audio->a_in_buffer_size);
sh_audio->a_in_buffer_len=0;
diff --git a/libmpcodecs/dec_audio.c b/libmpcodecs/dec_audio.c
index 23f19ac405..947b47bbfc 100644
--- a/libmpcodecs/dec_audio.c
+++ b/libmpcodecs/dec_audio.c
@@ -74,8 +74,7 @@ static int init_audio_codec(sh_audio_t *sh_audio)
sh_audio->a_in_buffer_size = sh_audio->audio_in_minsize;
mp_msg(MSGT_DECAUDIO, MSGL_V, MSGTR_AllocatingBytesForInputBuffer,
sh_audio->a_in_buffer_size);
- sh_audio->a_in_buffer = memalign(16, sh_audio->a_in_buffer_size);
- memset(sh_audio->a_in_buffer, 0, sh_audio->a_in_buffer_size);
+ sh_audio->a_in_buffer = av_mallocz(sh_audio->a_in_buffer_size);
sh_audio->a_in_buffer_len = 0;
}
@@ -84,12 +83,11 @@ static int init_audio_codec(sh_audio_t *sh_audio)
mp_msg(MSGT_DECAUDIO, MSGL_V, MSGTR_AllocatingBytesForOutputBuffer,
sh_audio->audio_out_minsize, MAX_OUTBURST, sh_audio->a_buffer_size);
- sh_audio->a_buffer = memalign(16, sh_audio->a_buffer_size);
+ sh_audio->a_buffer = av_mallocz(sh_audio->a_buffer_size);
if (!sh_audio->a_buffer) {
mp_msg(MSGT_DECAUDIO, MSGL_ERR, MSGTR_CantAllocAudioBuf);
return 0;
}
- memset(sh_audio->a_buffer, 0, sh_audio->a_buffer_size);
sh_audio->a_buffer_len = 0;
if (!sh_audio->ad_driver->init(sh_audio)) {
@@ -306,12 +304,8 @@ void uninit_audio(sh_audio_t *sh_audio)
free(sh_audio->a_out_buffer);
sh_audio->a_out_buffer = NULL;
sh_audio->a_out_buffer_size = 0;
- if (sh_audio->a_buffer)
- free(sh_audio->a_buffer);
- sh_audio->a_buffer = NULL;
- if (sh_audio->a_in_buffer)
- free(sh_audio->a_in_buffer);
- sh_audio->a_in_buffer = NULL;
+ av_freep(&sh_audio->a_buffer);
+ av_freep(&sh_audio->a_in_buffer);
}