vlc | branch: master | Steve Lhomme <[email protected]> | Fri Feb 8 09:12:07 2019 +0100| [5d3d9c809ed9be34a2951f60d926390183e9e715] | committer: Steve Lhomme
image: read images from an es_format instead of video_format plus extra data In most cases the source was already an es_format anyway. Get rid a redundant image_ReadExt(). > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5d3d9c809ed9be34a2951f60d926390183e9e715 --- include/vlc_image.h | 5 ++--- modules/codec/oggspots.c | 2 +- modules/codec/subsusf.c | 9 +++++---- modules/codec/ttml/substtml.c | 9 +++++---- modules/demux/image.c | 9 +++++---- modules/demux/mp4/heif.c | 4 ++-- src/misc/image.c | 44 ++++++++++++++++++++----------------------- 7 files changed, 40 insertions(+), 42 deletions(-) diff --git a/include/vlc_image.h b/include/vlc_image.h index fafe0fbbd9..78a4ab98a4 100644 --- a/include/vlc_image.h +++ b/include/vlc_image.h @@ -38,7 +38,7 @@ extern "C" { struct image_handler_t { picture_t * (*pf_read) ( image_handler_t *, block_t *, - const video_format_t *, const uint8_t *, size_t, + const es_format_t *, video_format_t * ); picture_t * (*pf_read_url) ( image_handler_t *, const char *, video_format_t * ); @@ -64,8 +64,7 @@ VLC_API image_handler_t * image_HandlerCreate( vlc_object_t * ) VLC_USED; #define image_HandlerCreate( a ) image_HandlerCreate( VLC_OBJECT(a) ) VLC_API void image_HandlerDelete( image_handler_t * ); -#define image_Read( a, b, c, d ) a->pf_read( a, b, c, NULL, 0, d ) -#define image_ReadExt( a, b, c, d, e, f ) a->pf_read( a, b, c, d, e, f ) +#define image_Read( a, b, c, d ) a->pf_read( a, b, c, d ) #define image_ReadUrl( a, b, c ) a->pf_read_url( a, b, c ) #define image_Write( a, b, c, d ) a->pf_write( a, b, c, d ) #define image_WriteUrl( a, b, c, d, e ) a->pf_write_url( a, b, c, d, e ) diff --git a/modules/codec/oggspots.c b/modules/codec/oggspots.c index e39c7647df..fc54fe2b62 100644 --- a/modules/codec/oggspots.c +++ b/modules/codec/oggspots.c @@ -374,7 +374,7 @@ static picture_t* DecodePacket(decoder_t* p_dec, block_t* p_block) p_block->p_buffer += i_img_offset; p_pic = image_Read(p_sys->p_image, p_block, - &p_dec->fmt_in.video, + &p_dec->fmt_in, &p_dec->fmt_out.video); if (p_pic == NULL) { return NULL; diff --git a/modules/codec/subsusf.c b/modules/codec/subsusf.c index 9131e3f693..c02c52b52f 100644 --- a/modules/codec/subsusf.c +++ b/modules/codec/subsusf.c @@ -507,12 +507,13 @@ static int ParseImageAttachments( decoder_t *p_dec ) if( p_block != NULL ) { - video_format_t fmt_in; + es_format_t es_in; video_format_t fmt_out; memcpy( p_block->p_buffer, p_attach->p_data, p_attach->i_data ); - video_format_Init( &fmt_in, type ); + es_format_Init( &es_in, VIDEO_ES, type ); + es_in.video.i_chroma = type; video_format_Init( &fmt_out, VLC_CODEC_YUVA ); /* Find a suitable decoder module */ @@ -525,9 +526,9 @@ static int ParseImageAttachments( decoder_t *p_dec ) var_SetString( p_dec, "codec", "sdl_image" ); } - p_pic = image_Read( p_image, p_block, &fmt_in, &fmt_out ); + p_pic = image_Read( p_image, p_block, &es_in, &fmt_out ); var_Destroy( p_dec, "codec" ); - video_format_Clean( &fmt_in ); + es_format_Clean( &es_in ); video_format_Clean( &fmt_out ); } diff --git a/modules/codec/ttml/substtml.c b/modules/codec/ttml/substtml.c index 0320858788..4c8240fefe 100644 --- a/modules/codec/ttml/substtml.c +++ b/modules/codec/ttml/substtml.c @@ -1161,8 +1161,9 @@ static picture_t * picture_CreateFromPNG( decoder_t *p_dec, return NULL; video_format_t fmt_out; video_format_Init( &fmt_out, VLC_CODEC_YUVA ); - video_format_t fmt_in; - video_format_Init( &fmt_in, VLC_CODEC_PNG ); + es_format_t es_in; + es_format_Init( &es_in, VIDEO_ES, VLC_CODEC_PNG ); + es_in.video.i_chroma = es_in.i_codec; block_t *p_block = block_Alloc( i_data ); if( !p_block ) @@ -1175,12 +1176,12 @@ static picture_t * picture_CreateFromPNG( decoder_t *p_dec, image_handler_t *p_image = image_HandlerCreate( p_dec ); if( p_image ) { - p_pic = image_Read( p_image, p_block, &fmt_in, &fmt_out ); + p_pic = image_Read( p_image, p_block, &es_in, &fmt_out ); image_HandlerDelete( p_image ); } else block_Release( p_block ); p_dec->obj.flags = i_flags; - video_format_Clean( &fmt_in ); + es_format_Clean( &es_in ); video_format_Clean( &fmt_out ); return p_pic; diff --git a/modules/demux/image.c b/modules/demux/image.c index d966f96d2d..464f8f3eab 100644 --- a/modules/demux/image.c +++ b/modules/demux/image.c @@ -137,7 +137,7 @@ static block_t *Load(demux_t *demux) } static block_t *Decode(demux_t *demux, - video_format_t *fmt, vlc_fourcc_t chroma, block_t *data) + es_format_t *fmt, vlc_fourcc_t chroma, block_t *data) { image_handler_t *handler = image_HandlerCreate(demux); if (!handler) { @@ -154,8 +154,9 @@ static block_t *Decode(demux_t *demux, if (!image) return NULL; - video_format_Clean(fmt); - *fmt = decoded; + es_format_Clean(fmt); + es_format_InitFromVideo(fmt, &decoded); + video_format_Clean(&decoded); size_t size = 0; for (int i = 0; i < image->i_planes; i++) @@ -697,7 +698,7 @@ static int Open(vlc_object_t *object) vlc_fourcc_t chroma = vlc_fourcc_GetCodecFromString(VIDEO_ES, string); free(string); - data = Decode(demux, &fmt.video, chroma, data); + data = Decode(demux, &fmt, chroma, data); fmt.i_codec = fmt.video.i_chroma; } fmt.i_id = var_InheritInteger(demux, "image-id"); diff --git a/modules/demux/mp4/heif.c b/modules/demux/mp4/heif.c index e2a236f8da..18ad595e72 100644 --- a/modules/demux/mp4/heif.c +++ b/modules/demux/mp4/heif.c @@ -565,8 +565,8 @@ static int LoadGridImage( demux_t *p_demux, uint32_t i_pic_item_id, video_format_Init( &decoded, VLC_CODEC_RGBA ); fmt.video.i_chroma = fmt.i_codec; - picture_t *p_picture = image_ReadExt( handler, p_sample, &fmt.video, - fmt.p_extra, fmt.i_extra, &decoded ); + + picture_t *p_picture = image_Read( handler, p_sample, &fmt, &decoded ); image_HandlerDelete( handler ); es_format_Clean( &fmt ); diff --git a/src/misc/image.c b/src/misc/image.c index e987c98bcf..b9482b8700 100644 --- a/src/misc/image.c +++ b/src/misc/image.c @@ -60,7 +60,7 @@ static inline struct decoder_owner *dec_get_owner( decoder_t *p_dec ) } static picture_t *ImageRead( image_handler_t *, block_t *, - const video_format_t *, const uint8_t *, size_t, + const es_format_t *, video_format_t * ); static picture_t *ImageReadUrl( image_handler_t *, const char *, video_format_t * ); @@ -72,8 +72,7 @@ static int ImageWriteUrl( image_handler_t *, picture_t *, static picture_t *ImageConvert( image_handler_t *, picture_t *, const video_format_t *, video_format_t * ); -static decoder_t *CreateDecoder( image_handler_t *, const video_format_t *, - const uint8_t *, size_t ); +static decoder_t *CreateDecoder( image_handler_t *, const es_format_t * ); static void DeleteDecoder( decoder_t * ); static encoder_t *CreateEncoder( vlc_object_t *, const video_format_t *, const video_format_t * ); @@ -140,15 +139,20 @@ static void ImageQueueVideo( decoder_t *p_dec, picture_t *p_pic ) } static picture_t *ImageRead( image_handler_t *p_image, block_t *p_block, - const video_format_t *p_fmt_in, - const uint8_t *p_extra, size_t i_extra, + const es_format_t *p_es_in, video_format_t *p_fmt_out ) { picture_t *p_pic = NULL; + if ( p_es_in->i_cat != VIDEO_ES ) + { + block_Release(p_block); + return NULL; + } + /* Check if we can reuse the current decoder */ if( p_image->p_dec && - p_image->p_dec->fmt_in.i_codec != p_fmt_in->i_chroma ) + p_image->p_dec->fmt_in.i_codec != p_es_in->video.i_chroma ) { DeleteDecoder( p_image->p_dec ); p_image->p_dec = 0; @@ -157,8 +161,7 @@ static picture_t *ImageRead( image_handler_t *p_image, block_t *p_block, /* Start a decoder */ if( !p_image->p_dec ) { - p_image->p_dec = CreateDecoder( p_image, p_fmt_in, - p_extra, i_extra ); + p_image->p_dec = CreateDecoder( p_image, p_es_in ); if( !p_image->p_dec ) { block_Release(p_block); @@ -299,26 +302,26 @@ static picture_t *ImageReadUrl( image_handler_t *p_image, const char *psz_url, if( p_block == NULL ) goto error; - video_format_t fmtin; - video_format_Init( &fmtin, 0 ); /* no chroma, the MIME type of the picture will be used */ + es_format_t fmtin; + es_format_Init( &fmtin, VIDEO_ES, 0 ); /* no chroma, the MIME type of the picture will be used */ char *psz_mime = stream_MimeType( p_stream ); if( psz_mime != NULL ) { - fmtin.i_chroma = image_Mime2Fourcc( psz_mime ); + fmtin.video.i_chroma = image_Mime2Fourcc( psz_mime ); free( psz_mime ); } - if( !fmtin.i_chroma ) + if( !fmtin.video.i_chroma ) { /* Try to guess format from file name */ - fmtin.i_chroma = image_Ext2Fourcc( psz_url ); + fmtin.video.i_chroma = image_Ext2Fourcc( psz_url ); } vlc_stream_Delete( p_stream ); - p_pic = ImageRead( p_image, p_block, &fmtin, NULL, 0, p_fmt_out ); + p_pic = ImageRead( p_image, p_block, &fmtin, p_fmt_out ); - video_format_Clean( &fmtin ); + es_format_Clean( &fmtin ); return p_pic; error: @@ -658,8 +661,7 @@ static picture_t *video_new_buffer( decoder_t *p_dec ) return picture_NewFromFormat( &p_dec->fmt_out.video ); } -static decoder_t *CreateDecoder( image_handler_t *p_image, const video_format_t *fmt, - const uint8_t *p_extra, size_t i_extra ) +static decoder_t *CreateDecoder( image_handler_t *p_image, const es_format_t *fmt ) { decoder_t *p_dec; struct decoder_owner *p_owner; @@ -672,13 +674,7 @@ static decoder_t *CreateDecoder( image_handler_t *p_image, const video_format_t p_dec->p_module = NULL; - es_format_t es_fmt; - es_format_InitFromVideo( &es_fmt, fmt ); - if ( es_fmt.p_extra ) free( es_fmt.p_extra ); - es_fmt.p_extra = p_extra; - es_fmt.i_extra = i_extra; - - es_format_Copy( &p_dec->fmt_in, &es_fmt ); + es_format_Copy( &p_dec->fmt_in, fmt ); es_format_Init( &p_dec->fmt_out, VIDEO_ES, 0 ); p_dec->b_frame_drop_allowed = false; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
