]> git.sesse.net Git - mlt/blobdiff - src/modules/vmfx/producer_pgm.c
Fix reading binary files on Windows.
[mlt] / src / modules / vmfx / producer_pgm.c
index 369f6d9e21e0e7244eac0bdc8ca9269e600eb631..c0b342c2920623c9907ed34dd949ae12e108e77b 100644 (file)
@@ -4,21 +4,21 @@
  * Author: Charles Yates <charles.yates@gmail.com>
  *
  * 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
+ * it under the terms of the GNU Lesser General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  *
  * This program 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 General Public License for more details.
+ * GNU Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
+ * You should have received a copy of the GNU Lesser General Public License
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#include "producer_pgm.h"
+#include <framework/mlt_producer.h>
 #include <framework/mlt_frame.h>
 #include <stdlib.h>
 #include <string.h>
@@ -27,7 +27,7 @@ static int read_pgm( char *name, uint8_t **image, int *width, int *height, int *
 static int producer_get_frame( mlt_producer producer, mlt_frame_ptr frame, int index );
 static void producer_close( mlt_producer parent );
 
-mlt_producer producer_pgm_init( void *resource )
+mlt_producer producer_pgm_init( mlt_profile profile, mlt_service_type type, const char *id, char *resource )
 {
        mlt_producer this = NULL;
        uint8_t *image = NULL;
@@ -45,8 +45,8 @@ mlt_producer producer_pgm_init( void *resource )
                        this->close = ( mlt_destructor )producer_close;
                        mlt_properties_set( properties, "resource", resource );
                        mlt_properties_set_data( properties, "image", image, 0, mlt_pool_release, NULL );
-                       mlt_properties_set_int( properties, "real_width", width );
-                       mlt_properties_set_int( properties, "real_height", height );
+                       mlt_properties_set_int( properties, "meta.media.width", width );
+                       mlt_properties_set_int( properties, "meta.media.height", height );
                }
                else
                {
@@ -66,7 +66,7 @@ static int read_pgm( char *name, uint8_t **image, int *width, int *height, int *
 {
        uint8_t *input = NULL;
        int error = 0;
-       FILE *f = fopen( name, "r" );
+       FILE *f = fopen( name, "rb" );
        char data[ 512 ];
 
        // Initialise
@@ -155,13 +155,13 @@ static int read_pgm( char *name, uint8_t **image, int *width, int *height, int *
 static int producer_get_image( mlt_frame this, uint8_t **buffer, mlt_image_format *format, int *width, int *height, int writable )
 {
        mlt_producer producer = mlt_frame_pop_service( this );
-       int real_width = mlt_properties_get_int( MLT_FRAME_PROPERTIES( this ), "real_width" );
-       int real_height = mlt_properties_get_int( MLT_FRAME_PROPERTIES( this ), "real_height" );
+       int real_width = mlt_properties_get_int( MLT_FRAME_PROPERTIES( this ), "meta.media.width" );
+       int real_height = mlt_properties_get_int( MLT_FRAME_PROPERTIES( this ), "meta.media.height" );
        int size = real_width * real_height;
        uint8_t *image = mlt_pool_alloc( size * 2 );
        uint8_t *source = mlt_properties_get_data( MLT_PRODUCER_PROPERTIES( producer ), "image", NULL );
 
-       mlt_properties_set_data( MLT_FRAME_PROPERTIES( this ), "image", image, size * 2, mlt_pool_release, NULL );
+       mlt_frame_set_image( this, image, size * 2, mlt_pool_release );
 
        *width = real_width;
        *height = real_height;
@@ -177,13 +177,12 @@ static int producer_get_image( mlt_frame this, uint8_t **buffer, mlt_image_forma
 static int producer_get_frame( mlt_producer producer, mlt_frame_ptr frame, int index )
 {
        // Construct a test frame
-       *frame = mlt_frame_init( );
+       *frame = mlt_frame_init( MLT_PRODUCER_SERVICE( producer ) );
 
        // Get the frames properties
        mlt_properties properties = MLT_FRAME_PROPERTIES( *frame );
 
        // Pass the data on the frame properties
-       mlt_properties_pass_list( properties, MLT_PRODUCER_PROPERTIES( producer ), "real_width,real_height" );
        mlt_properties_set_int( properties, "has_image", 1 );
        mlt_properties_set_int( properties, "progressive", 1 );
        mlt_properties_set_double( properties, "aspect_ratio", 1 );