X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fvideo_filter%2Fblendbench.c;h=9edb24248dc34a213e405d3139bfffd755922a70;hb=f94ced49be133b70eb1932f2d4b50fd7947b8612;hp=f21d6f412ad2c041d03d5f57f2362213c9f9aac1;hpb=f1dd920e8c38070f7e246ed0cf43ec28c26c8b49;p=vlc diff --git a/modules/video_filter/blendbench.c b/modules/video_filter/blendbench.c index f21d6f412a..9edb24248d 100644 --- a/modules/video_filter/blendbench.c +++ b/modules/video_filter/blendbench.c @@ -4,7 +4,7 @@ * Copyright (C) 2007 the VideoLAN team * $Id$ * - * Author: Søren Bøg + * Author: Søren Bøg * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,12 +29,13 @@ # include "config.h" #endif -#include +#include +#include #include -#include +#include -#include "vlc_filter.h" -#include "vlc_image.h" +#include +#include /***************************************************************************** * Local prototypes @@ -60,7 +61,7 @@ static picture_t *Filter( filter_t *, picture_t * ); #define BASE_CHROMA_TEXT N_("Chroma for the base image") #define BASE_CHROMA_LONGTEXT N_("Chroma which the base image will be loaded in") -#define BLEND_IMAGE_TEXT N_("Image which will be blended.") +#define BLEND_IMAGE_TEXT N_("Image which will be blended") #define BLEND_IMAGE_LONGTEXT N_("The image blended onto the base image") #define BLEND_CHROMA_TEXT N_("Chroma for the blend image") @@ -69,35 +70,35 @@ static picture_t *Filter( filter_t *, picture_t * ); #define CFG_PREFIX "blendbench-" -vlc_module_begin(); - set_description( _("Blending benchmark filter") ); - set_shortname( _("blendbench" )); - set_category( CAT_VIDEO ); - set_subcategory( SUBCAT_VIDEO_VFILTER ); - set_capability( "video filter2", 0 ); +vlc_module_begin () + set_description( N_("Blending benchmark filter") ) + set_shortname( N_("Blendbench" )) + set_category( CAT_VIDEO ) + set_subcategory( SUBCAT_VIDEO_VFILTER ) + set_capability( "video filter2", 0 ) - set_section( N_("Benchmarking"), NULL ); - add_integer( CFG_PREFIX "loops", 1000, NULL, LOOPS_TEXT, - LOOPS_LONGTEXT, VLC_FALSE ); + set_section( N_("Benchmarking"), NULL ) + add_integer( CFG_PREFIX "loops", 1000, LOOPS_TEXT, + LOOPS_LONGTEXT, false ) add_integer_with_range( CFG_PREFIX "alpha", 128, 0, 255, NULL, ALPHA_TEXT, - ALPHA_LONGTEXT, VLC_FALSE ); + ALPHA_LONGTEXT, false ) - set_section( N_("Base image"), NULL ); - add_file( CFG_PREFIX "base-image", NULL, NULL, BASE_IMAGE_TEXT, - BASE_IMAGE_LONGTEXT, VLC_FALSE ); - add_string( CFG_PREFIX "base-chroma", "I420", NULL, BASE_CHROMA_TEXT, - BASE_CHROMA_LONGTEXT, VLC_FALSE ); + set_section( N_("Base image"), NULL ) + add_loadfile( CFG_PREFIX "base-image", NULL, BASE_IMAGE_TEXT, + BASE_IMAGE_LONGTEXT, false ) + add_string( CFG_PREFIX "base-chroma", "I420", BASE_CHROMA_TEXT, + BASE_CHROMA_LONGTEXT, false ) - set_section( N_("Blend image"), NULL ); - add_file( CFG_PREFIX "blend-image", NULL, NULL, BLEND_IMAGE_TEXT, - BLEND_IMAGE_LONGTEXT, VLC_FALSE ); - add_string( CFG_PREFIX "blend-chroma", "YUVA", NULL, BLEND_CHROMA_TEXT, - BLEND_CHROMA_LONGTEXT, VLC_FALSE ); + set_section( N_("Blend image"), NULL ) + add_loadfile( CFG_PREFIX "blend-image", NULL, BLEND_IMAGE_TEXT, + BLEND_IMAGE_LONGTEXT, false ) + add_string( CFG_PREFIX "blend-chroma", "YUVA", BLEND_CHROMA_TEXT, + BLEND_CHROMA_LONGTEXT, false ) - set_callbacks( Create, Destroy ); -vlc_module_end(); + set_callbacks( Create, Destroy ) +vlc_module_end () -static const char *ppsz_filter_options[] = { +static const char *const ppsz_filter_options[] = { "loops", "alpha", "base-image", "base-chroma", "blend-image", "blend-chroma", NULL }; @@ -107,7 +108,7 @@ static const char *ppsz_filter_options[] = { *****************************************************************************/ struct filter_sys_t { - vlc_bool_t b_done; + bool b_done; int i_loops, i_alpha; picture_t *p_base_image; @@ -117,8 +118,8 @@ struct filter_sys_t vlc_fourcc_t i_blend_chroma; }; -static int LoadImage( vlc_object_t *p_this, picture_t **pp_pic, - vlc_fourcc_t i_chroma, char *psz_file, const char *psz_name ) +static int blendbench_LoadImage( vlc_object_t *p_this, picture_t **pp_pic, + vlc_fourcc_t i_chroma, char *psz_file, const char *psz_name ) { image_handler_t *p_image; video_format_t fmt_in, fmt_out; @@ -131,7 +132,8 @@ static int LoadImage( vlc_object_t *p_this, picture_t **pp_pic, *pp_pic = image_ReadUrl( p_image, psz_file, &fmt_in, &fmt_out ); image_HandlerDelete( p_image ); - if( *pp_pic == NULL ) { + if( *pp_pic == NULL ) + { msg_Err( p_this, "Unable to load %s image", psz_name ); return VLC_EGENERIC; } @@ -150,17 +152,15 @@ static int Create( vlc_object_t *p_this ) { filter_t *p_filter = (filter_t *)p_this; filter_sys_t *p_sys; - char *psz_temp; + char *psz_temp, *psz_cmd; /* Allocate structure */ p_filter->p_sys = malloc( sizeof( filter_sys_t ) ); if( p_filter->p_sys == NULL ) - { - msg_Err( p_filter, "out of memory" ); return VLC_ENOMEM; - } + p_sys = p_filter->p_sys; - p_sys->b_done = VLC_FALSE; + p_sys->b_done = false; p_filter->pf_video_filter = Filter; @@ -177,17 +177,21 @@ static int Create( vlc_object_t *p_this ) psz_temp = var_CreateGetStringCommand( p_filter, CFG_PREFIX "base-chroma" ); p_sys->i_base_chroma = VLC_FOURCC( psz_temp[0], psz_temp[1], psz_temp[2], psz_temp[3] ); - LoadImage( p_this, &p_sys->p_base_image, p_sys->i_base_chroma, - var_CreateGetStringCommand( p_filter, CFG_PREFIX "base-image" ), - "Base" ); + psz_cmd = var_CreateGetStringCommand( p_filter, CFG_PREFIX "base-image" ); + blendbench_LoadImage( p_this, &p_sys->p_base_image, p_sys->i_base_chroma, + psz_cmd, "Base" ); + free( psz_temp ); + free( psz_cmd ); psz_temp = var_CreateGetStringCommand( p_filter, CFG_PREFIX "blend-chroma" ); p_sys->i_blend_chroma = VLC_FOURCC( psz_temp[0], psz_temp[1], psz_temp[2], psz_temp[3] ); - LoadImage( p_this, &p_sys->p_blend_image, p_sys->i_blend_chroma, - var_CreateGetStringCommand( p_filter, CFG_PREFIX "blend-image" ), - "Blend" ); + psz_cmd = var_CreateGetStringCommand( p_filter, CFG_PREFIX "blend-image" ); + blendbench_LoadImage( p_this, &p_sys->p_blend_image, p_sys->i_blend_chroma, + psz_cmd, "Blend" ); + free( psz_temp ); + free( psz_cmd ); return VLC_SUCCESS; } @@ -200,8 +204,8 @@ static void Destroy( vlc_object_t *p_this ) filter_t *p_filter = (filter_t *)p_this; filter_sys_t *p_sys = p_filter->p_sys; - p_sys->p_base_image->pf_release( p_sys->p_base_image ); - p_sys->p_blend_image->pf_release( p_sys->p_blend_image ); + picture_Release( p_sys->p_base_image ); + picture_Release( p_sys->p_blend_image ); } /***************************************************************************** @@ -210,30 +214,38 @@ static void Destroy( vlc_object_t *p_this ) static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) { filter_sys_t *p_sys = p_filter->p_sys; + filter_t *p_blend; if( p_sys->b_done ) - { return p_pic; - } - filter_t *p_blend; - - p_blend = vlc_object_create( p_filter, VLC_OBJECT_FILTER ); + p_blend = vlc_object_create( p_filter, sizeof(filter_t) ); + if( !p_blend ) + { + picture_Release( p_pic ); + return NULL; + } vlc_object_attach( p_blend, p_filter ); p_blend->fmt_out.video = p_sys->p_base_image->format; p_blend->fmt_in.video = p_sys->p_blend_image->format; - p_blend->p_module = module_Need( p_blend, "video blending", 0, 0 ); + p_blend->p_module = module_need( p_blend, "video blending", NULL, false ); + if( !p_blend->p_module ) + { + picture_Release( p_pic ); + vlc_object_release( p_blend ); + return NULL; + } mtime_t time = mdate(); for( int i_iter = 0; i_iter < p_sys->i_loops; ++i_iter ) { - p_blend->pf_video_blend( p_blend, p_sys->p_base_image, - p_sys->p_base_image, p_sys->p_blend_image, 0, - 0, p_sys->i_alpha ); + p_blend->pf_video_blend( p_blend, + p_sys->p_base_image, p_sys->p_blend_image, + 0, 0, p_sys->i_alpha ); } time = mdate() - time; - msg_Info( p_filter, "Blended %d images in %f sec.", p_sys->i_loops, + msg_Info( p_filter, "Blended %d images in %f sec", p_sys->i_loops, time / 1000000.0f ); msg_Info( p_filter, "Speed is: %f images/second, %f pixels/second", (float) p_sys->i_loops / time * 1000000, @@ -241,11 +253,10 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) p_sys->p_blend_image->p[Y_PLANE].i_visible_pitch * p_sys->p_blend_image->p[Y_PLANE].i_visible_lines ); - module_Unneed( p_blend, p_blend->p_module ); + module_unneed( p_blend, p_blend->p_module ); - vlc_object_detach( p_blend ); vlc_object_release( p_blend ); - p_sys->b_done = VLC_TRUE; + p_sys->b_done = true; return p_pic; }