mirror of https://github.com/mpv-player/mpv
10l, we should really, really use lzo1x_decompress_safe instead of lzo1x_decompress
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18069 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
ed8211b89c
commit
eae97616d5
|
@ -27,7 +27,7 @@ void decode_nuv( unsigned char *encoded, int encoded_size,
|
||||||
unsigned char *decoded, int width, int height)
|
unsigned char *decoded, int width, int height)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
unsigned int out_len;
|
unsigned int out_len = width * height + ( width * height ) / 2;
|
||||||
struct rtframeheader *encodedh = ( struct rtframeheader* ) encoded;
|
struct rtframeheader *encodedh = ( struct rtframeheader* ) encoded;
|
||||||
static unsigned char *buffer = 0; /* for RTJpeg with LZO decompress */
|
static unsigned char *buffer = 0; /* for RTJpeg with LZO decompress */
|
||||||
#ifdef KEEP_BUFFER
|
#ifdef KEEP_BUFFER
|
||||||
|
@ -56,7 +56,7 @@ void decode_nuv( unsigned char *encoded, int encoded_size,
|
||||||
{
|
{
|
||||||
#ifdef KEEP_BUFFER
|
#ifdef KEEP_BUFFER
|
||||||
if (!previous_buffer)
|
if (!previous_buffer)
|
||||||
previous_buffer = ( unsigned char * ) malloc ( width * height + ( width * height ) / 2 );
|
previous_buffer = ( unsigned char * ) malloc ( out_len );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (((encodedh->comptype == '2') ||
|
if (((encodedh->comptype == '2') ||
|
||||||
|
@ -74,20 +74,20 @@ void decode_nuv( unsigned char *encoded, int encoded_size,
|
||||||
switch(encodedh->comptype)
|
switch(encodedh->comptype)
|
||||||
{
|
{
|
||||||
case '0': /* raw YUV420 */
|
case '0': /* raw YUV420 */
|
||||||
memcpy(decoded, encoded + 12, width*height*3/2);
|
memcpy(decoded, encoded + 12, out_len);
|
||||||
break;
|
break;
|
||||||
case '1': /* RTJpeg */
|
case '1': /* RTJpeg */
|
||||||
RTjpeg_decompressYUV420 ( ( __s8 * ) encoded + 12, decoded );
|
RTjpeg_decompressYUV420 ( ( __s8 * ) encoded + 12, decoded );
|
||||||
break;
|
break;
|
||||||
case '2': /* RTJpeg with LZO */
|
case '2': /* RTJpeg with LZO */
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
buffer = ( unsigned char * ) malloc ( width * height + ( width * height ) / 2 );
|
buffer = ( unsigned char * ) malloc ( out_len );
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
{
|
{
|
||||||
mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Nuppelvideo: error decompressing\n");
|
mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Nuppelvideo: error decompressing\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
r = lzo1x_decompress ( encoded + 12, encodedh->packetlength, buffer, &out_len, NULL );
|
r = lzo1x_decompress_safe ( encoded + 12, encodedh->packetlength, buffer, &out_len, NULL );
|
||||||
if ( r != LZO_E_OK )
|
if ( r != LZO_E_OK )
|
||||||
{
|
{
|
||||||
mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Nuppelvideo: error decompressing\n");
|
mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Nuppelvideo: error decompressing\n");
|
||||||
|
@ -96,7 +96,7 @@ void decode_nuv( unsigned char *encoded, int encoded_size,
|
||||||
RTjpeg_decompressYUV420 ( ( __s8 * ) buffer, decoded );
|
RTjpeg_decompressYUV420 ( ( __s8 * ) buffer, decoded );
|
||||||
break;
|
break;
|
||||||
case '3': /* raw YUV420 with LZO */
|
case '3': /* raw YUV420 with LZO */
|
||||||
r = lzo1x_decompress ( encoded + 12, encodedh->packetlength, decoded, &out_len, NULL );
|
r = lzo1x_decompress_safe ( encoded + 12, encodedh->packetlength, decoded, &out_len, NULL );
|
||||||
if ( r != LZO_E_OK )
|
if ( r != LZO_E_OK )
|
||||||
{
|
{
|
||||||
mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Nuppelvideo: error decompressing\n");
|
mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Nuppelvideo: error decompressing\n");
|
||||||
|
|
|
@ -119,7 +119,8 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags)
|
||||||
);
|
);
|
||||||
|
|
||||||
/* decompress the frame */
|
/* decompress the frame */
|
||||||
r = lzo1x_decompress (data, len, tmp, &w, priv->wrkmem);
|
w = sh->bih->biSizeImage;
|
||||||
|
r = lzo1x_decompress_safe (data, len, tmp, &w, priv->wrkmem);
|
||||||
free(tmp);
|
free(tmp);
|
||||||
|
|
||||||
if (r != LZO_E_OK) {
|
if (r != LZO_E_OK) {
|
||||||
|
@ -154,7 +155,8 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = lzo1x_decompress (data, len, mpi->planes[0], &w, priv->wrkmem);
|
w = mpi->w * mpi->h;
|
||||||
|
r = lzo1x_decompress_safe (data, len, mpi->planes[0], &w, priv->wrkmem);
|
||||||
if (r != LZO_E_OK) {
|
if (r != LZO_E_OK) {
|
||||||
/* this should NEVER happen */
|
/* this should NEVER happen */
|
||||||
mp_msg (MSGT_DECVIDEO, MSGL_ERR,
|
mp_msg (MSGT_DECVIDEO, MSGL_ERR,
|
||||||
|
|
Loading…
Reference in New Issue