[vlc-commits] commit: smem: give an error message if pre-render function didn' t give a buffer ( Rafaël Carré )
git at videolan.org
git at videolan.org
Wed Oct 20 17:29:20 CEST 2010
vlc | branch: master | Rafaël Carré <rafael.carre at gmail.com> | Wed Oct 20 17:29:00 2010 +0200| [14fbb294502dd257433540dc3ab35606fbde4d20] | committer: Rafaël Carré
smem: give an error message if pre-render function didn't give a buffer
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=14fbb294502dd257433540dc3ab35606fbde4d20
---
modules/stream_out/smem.c | 19 +++++++++++++++++--
1 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/modules/stream_out/smem.c b/modules/stream_out/smem.c
index e8bca93..155745f 100644
--- a/modules/stream_out/smem.c
+++ b/modules/stream_out/smem.c
@@ -342,7 +342,7 @@ static int SendVideo( sout_stream_t *p_stream, sout_stream_id_t *id,
{
sout_stream_sys_t *p_sys = p_stream->p_sys;
int i_line, i_line_size, i_size, i_pixel_pitch;
- uint8_t* p_pixels;
+ uint8_t* p_pixels = NULL;
if( id->format->video.i_bits_per_pixel > 0 )
{
@@ -357,6 +357,14 @@ static int SendVideo( sout_stream_t *p_stream, sout_stream_id_t *id,
}
/* Calling the prerender callback to get user buffer */
p_sys->pf_video_prerender_callback( id->p_data, &p_pixels , i_size );
+
+ if (!p_pixels)
+ {
+ msg_Err( p_stream, "No buffer given!" );
+ block_ChainRelease( p_buffer );
+ return VLC_EGENERIC;
+ }
+
/* Copying data into user buffer */
if( id->format->video.i_bits_per_pixel > 0 )
{
@@ -380,13 +388,20 @@ static int SendAudio( sout_stream_t *p_stream, sout_stream_id_t *id,
{
sout_stream_sys_t *p_sys = p_stream->p_sys;
int i_size;
- uint8_t* p_pcm_buffer;
+ uint8_t* p_pcm_buffer = NULL;
int i_samples = 0;
i_size = p_buffer->i_buffer;
i_samples = i_size / ( ( id->format->audio.i_bitspersample / 8 ) * id->format->audio.i_channels );
/* Calling the prerender callback to get user buffer */
p_sys->pf_audio_prerender_callback( id->p_data, &p_pcm_buffer, i_size );
+ if (!p_pcm_buffer)
+ {
+ msg_Err( p_stream, "No buffer given!" );
+ block_ChainRelease( p_buffer );
+ return VLC_EGENERIC;
+ }
+
/* Copying data into user buffer */
vlc_memcpy( p_pcm_buffer, p_buffer->p_buffer, i_size );
/* Calling the postrender callback to tell the user his buffer is ready */
More information about the vlc-commits
mailing list