X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_output%2Fsnapshot.c;h=fb0b9cf7ce124ac4c7a73e687e5502b619bc54c2;hb=9d65e77152039fcb91ff55e8a590bafc17f642c0;hp=e2eefee82f6519300cf2dc51c9ee809a199c07e9;hpb=fe087a38282e93addb25fa9598393e40ea233b09;p=vlc diff --git a/modules/video_output/snapshot.c b/modules/video_output/snapshot.c index e2eefee82f..fb0b9cf7ce 100644 --- a/modules/video_output/snapshot.c +++ b/modules/video_output/snapshot.c @@ -18,16 +18,16 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /***************************************************************************** - * This module is a pseudo video output the offers the possibility to + * This module is a pseudo video output that offers the possibility to * keep a cache of low-res snapshots. * The snapshot structure is defined in include/snapshot.h * In order to access the current snapshot cache, object variables are used: * snapshot-list-pointer : the pointer on the first element in the list - * snapshot-datasize : size of a snapshot + * snapshot-datasize : size of a snapshot * (also available in snapshot_t->i_datasize) * snapshot-cache-size : size of the cache list * @@ -38,12 +38,16 @@ /***************************************************************************** * Preamble *****************************************************************************/ -#include -#include -#include -#include -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include /***************************************************************************** * Local prototypes @@ -52,36 +56,38 @@ static int Create ( vlc_object_t * ); static void Destroy ( vlc_object_t * ); static int Init ( vout_thread_t * ); +static void End ( vout_thread_t * ); static void Display ( vout_thread_t *, picture_t * ); /***************************************************************************** * Module descriptor *****************************************************************************/ -#define WIDTH_TEXT N_( "snapshot width" ) -#define WIDTH_LONGTEXT N_( "Set the width of the snapshot image." ) +#define WIDTH_TEXT N_( "Snapshot width" ) +#define WIDTH_LONGTEXT N_( "Width of the snapshot image." ) -#define HEIGHT_TEXT N_( "snapshot height" ) -#define HEIGHT_LONGTEXT N_( "Set the height of the snapshot image." ) +#define HEIGHT_TEXT N_( "Snapshot height" ) +#define HEIGHT_LONGTEXT N_( "Height of the snapshot image." ) -#define CHROMA_TEXT N_( "chroma" ) -#define CHROMA_LONGTEXT N_( "Set the desired chroma for the snapshot image (a 4 character string)." ) +#define CHROMA_TEXT N_( "Chroma" ) +#define CHROMA_LONGTEXT N_( "Output chroma for the snapshot image " \ + "(a 4 character string, like \"RV32\")." ) -#define CACHE_TEXT N_( "cache size (number of images)" ) -#define CACHE_LONGTEXT N_( "Set the cache size (number of images to keep)." ) +#define CACHE_TEXT N_( "Cache size (number of images)" ) +#define CACHE_LONGTEXT N_( "Snapshot cache size (number of images to keep)." ) vlc_module_begin( ); - set_description( _( "snapshot module" ) ); + set_description( N_( "Snapshot module" ) ); set_shortname( N_("Snapshot") ); set_category( CAT_VIDEO ); set_subcategory( SUBCAT_VIDEO_VOUT ); set_capability( "video output", 1 ); - add_integer( "snapshot-width", 320, NULL, WIDTH_TEXT, WIDTH_LONGTEXT, VLC_FALSE ); - add_integer( "snapshot-height", 200, NULL, HEIGHT_TEXT, HEIGHT_LONGTEXT, VLC_FALSE ); - add_string( "snapshot-chroma", "RV32", NULL, CHROMA_TEXT, CHROMA_LONGTEXT, VLC_TRUE ); - add_integer( "snapshot-cache-size", 50, NULL, CACHE_TEXT, CACHE_LONGTEXT, VLC_TRUE ); + add_integer( "snapshot-width", 320, NULL, WIDTH_TEXT, WIDTH_LONGTEXT, false ); + add_integer( "snapshot-height", 200, NULL, HEIGHT_TEXT, HEIGHT_LONGTEXT, false ); + add_string( "snapshot-chroma", "RV32", NULL, CHROMA_TEXT, CHROMA_LONGTEXT, true ); + add_integer( "snapshot-cache-size", 50, NULL, CACHE_TEXT, CACHE_LONGTEXT, true ); set_callbacks( Create, Destroy ); vlc_module_end(); @@ -119,7 +125,7 @@ static int Create( vlc_object_t *p_this ) var_Create( p_vout, "snapshot-list-pointer", VLC_VAR_ADDRESS ); p_vout->pf_init = Init; - p_vout->pf_end = NULL; + p_vout->pf_end = End; p_vout->pf_manage = NULL; p_vout->pf_render = NULL; p_vout->pf_display = Display; @@ -149,7 +155,7 @@ static int Init( vout_thread_t *p_vout ) { if( strlen( psz_chroma ) < 4 ) { - msg_Err( p_vout, "snapshot-chroma should be 4 characters long." ); + msg_Err( p_vout, "snapshot-chroma should be 4 characters long" ); return VLC_EGENERIC; } i_chroma = VLC_FOURCC( psz_chroma[0], psz_chroma[1], @@ -313,6 +319,14 @@ static int Init( vout_thread_t *p_vout ) return VLC_SUCCESS; } +/***************************************************************************** + * End: terminate video thread output method + *****************************************************************************/ +static void End( vout_thread_t *p_vout ) +{ + (void)p_vout; +} + /***************************************************************************** * Destroy: destroy video thread ***************************************************************************** @@ -321,23 +335,15 @@ static int Init( vout_thread_t *p_vout ) static void Destroy( vlc_object_t *p_this ) { vout_thread_t *p_vout = ( vout_thread_t * )p_this; - vlc_object_t *p_vlc; int i_index; + var_Destroy( p_vout->p_sys->p_input, "snapshot-id" ); + vlc_object_release( p_vout->p_sys->p_input ); var_Destroy( p_this, "snapshot-width" ); var_Destroy( p_this, "snapshot-height" ); var_Destroy( p_this, "snapshot-datasize" ); - p_vlc = vlc_object_find( p_this, VLC_OBJECT_ROOT, FIND_PARENT ); - if( p_vlc ) - { - /* UnRegister the snapshot vout module at the root level */ - /* var_Destroy (p_vlc, "snapshot-id"); */ - var_Destroy( p_this->p_libvlc, "snapshot-id" ); - vlc_object_release( p_vlc ); - } - for( i_index = 0 ; i_index < p_vout->p_sys->i_size ; i_index++ ) { free( p_vout->p_sys->p_list[ i_index ]->p_data ); @@ -377,9 +383,8 @@ static void Display( vout_thread_t *p_vout, picture_t *p_pic ) i_index = p_vout->p_sys->i_index; - p_vout->p_vlc->pf_memcpy( p_vout->p_sys->p_list[i_index]->p_data, - p_pic->p->p_pixels, - p_vout->p_sys->i_datasize ); + vlc_memcpy( p_vout->p_sys->p_list[i_index]->p_data, p_pic->p->p_pixels, + p_vout->p_sys->i_datasize ); i_date = snapshot_GetMovietime( p_vout );