extern mlt_consumer consumer_null_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg );
extern mlt_filter filter_audioconvert_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg );
+extern mlt_filter filter_audiowave_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg );
extern mlt_filter filter_brightness_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg );
extern mlt_filter filter_channelcopy_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg );
extern mlt_filter filter_crop_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg );
{
MLT_REGISTER( consumer_type, "null", consumer_null_init );
MLT_REGISTER( filter_type, "audioconvert", filter_audioconvert_init );
+ MLT_REGISTER( filter_type, "audiowave", filter_audiowave_init );
MLT_REGISTER( filter_type, "brightness", filter_brightness_init );
MLT_REGISTER( filter_type, "channelcopy", filter_channelcopy_init );
MLT_REGISTER( filter_type, "channelswap", filter_channelcopy_init );
--- /dev/null
+/*
+ * filter_audiowave.c -- display audio waveform
+ * Copyright (C) 2010 Ushodaya Enterprises Limited
+ * Author: Dan Dennedy <dan@dennedy.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <framework/mlt_filter.h>
+#include <framework/mlt_frame.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/** Do it :-).
+*/
+
+static int filter_get_image( mlt_frame this, uint8_t **image, mlt_image_format *format, int *width, int *height, int writable )
+{
+ int size = *width * *height * 2;
+ *format = mlt_image_yuv422;
+ *image = mlt_pool_alloc( size );
+ mlt_properties_set_data( MLT_FRAME_PROPERTIES(this), "image", *image, size, mlt_pool_release, NULL );
+ uint8_t *wave = mlt_frame_get_waveform( this, *width, *height );
+ if ( wave )
+ {
+ uint8_t *p = *image;
+ uint8_t *q = *image + *width * *height * 2;
+ uint8_t *s = wave;
+
+ while ( p != q )
+ {
+ *p ++ = *s ++;
+ *p ++ = 128;
+ }
+ }
+ return ( wave == NULL );
+}
+
+/** Filter processing.
+*/
+
+static mlt_frame filter_process( mlt_filter this, mlt_frame frame )
+{
+ mlt_frame_push_get_image( frame, filter_get_image );
+ return frame;
+}
+
+/** Constructor for the filter.
+*/
+
+mlt_filter filter_audiowave_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg )
+{
+ mlt_filter this = mlt_filter_new( );
+ if ( this != NULL )
+ this->process = filter_process;
+ return this;
+}
+