From: Antoine Cellerier Date: Mon, 6 Apr 2009 21:25:17 +0000 (+0200) Subject: Add image_Mime2Fourcc() function and use in image_ReadUrl() X-Git-Tag: 1.0.0-pre2~192 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=0f19b0dcbe69b825cf4fed10b625d72e0c1248a6;p=vlc Add image_Mime2Fourcc() function and use in image_ReadUrl() --- diff --git a/include/vlc_image.h b/include/vlc_image.h index 7dfe604be1..352ec978cb 100644 --- a/include/vlc_image.h +++ b/include/vlc_image.h @@ -72,6 +72,7 @@ VLC_EXPORT( void, image_HandlerDelete, ( image_handler_t * ) ); VLC_EXPORT( vlc_fourcc_t, image_Type2Fourcc, ( const char *psz_name ) ); VLC_EXPORT( vlc_fourcc_t, image_Ext2Fourcc, ( const char *psz_name ) ); +VLC_EXPORT( vlc_fourcc_t, image_Mime2Fourcc, ( const char *psz_mime ) ); # ifdef __cplusplus } diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 7a5c5bee66..1ef453b27d 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -162,6 +162,7 @@ httpd_UrlNewUnique image_Ext2Fourcc __image_HandlerCreate image_HandlerDelete +image_Mime2Fourcc image_Type2Fourcc InitMD5 input_Control diff --git a/src/misc/image.c b/src/misc/image.c index 9120f7cd11..86eeb452a8 100644 --- a/src/misc/image.c +++ b/src/misc/image.c @@ -236,6 +236,15 @@ static picture_t *ImageReadUrl( image_handler_t *p_image, const char *psz_url, p_block = block_New( p_image->p_parent, i_size ); stream_Read( p_stream, p_block->p_buffer, i_size ); + + if( !p_fmt_in->i_chroma ) + { + char *psz_mime = NULL; + stream_Control( p_stream, STREAM_GET_CONTENT_TYPE, &psz_mime ); + if( psz_mime ) + p_fmt_in->i_chroma = image_Mime2Fourcc( psz_mime ); + free( psz_mime ); + } stream_Delete( p_stream ); if( !p_fmt_in->i_chroma ) @@ -576,6 +585,40 @@ static const char *Fourcc2Ext( vlc_fourcc_t i_codec ) } */ +static const struct +{ + vlc_fourcc_t i_codec; + const char *psz_mime; +} mime_table[] = +{ + { VLC_FOURCC('b','m','p',' '), "image/bmp" }, + { VLC_FOURCC('b','m','p',' '), "image/x-bmp" }, + { VLC_FOURCC('b','m','p',' '), "image/x-bitmap" }, + { VLC_FOURCC('b','m','p',' '), "image/x-ms-bmp" }, + { VLC_FOURCC('p','n','m',' '), "image/x-portable-anymap" }, + { VLC_FOURCC('p','n','m',' '), "image/x-portable-bitmap" }, + { VLC_FOURCC('p','n','m',' '), "image/x-portable-graymap" }, + { VLC_FOURCC('p','n','m',' '), "image/x-portable-pixmap" }, + { VLC_FOURCC('g','i','f',' '), "image/gif" }, + { VLC_FOURCC('j','p','e','g'), "image/jpeg" }, + { VLC_FOURCC('p','c','x',' '), "image/pcx" }, + { VLC_FOURCC('p','n','g',' '), "image/png" }, + { VLC_FOURCC('t','i','f','f'), "image/tiff" }, + { VLC_FOURCC('t','g','a',' '), "iamge/x-tga" }, + { VLC_FOURCC('x','p','m',' '), "image/x-xpixmap" }, + { 0, NULL } +}; + +vlc_fourcc_t image_Mime2Fourcc( const char *psz_mime ) +{ + int i; + for( i = 0; mime_table[i].i_codec; i++ ) + if( !strcmp( psz_mime, mime_table[i].psz_mime ) ) + return mime_table[i].i_codec; + return 0; +} + + static picture_t *video_new_buffer( decoder_t *p_dec ) { p_dec->fmt_out.video.i_chroma = p_dec->fmt_out.i_codec;