Zypher's amd64 patch.
[melted] / src / modules / dv / producer_libdv.c
index 5cde8eb..cd10b89 100644 (file)
@@ -300,12 +300,12 @@ static int producer_get_image( mlt_frame this, uint8_t **buffer, mlt_image_forma
        // Parse the header for meta info
        dv_parse_header( decoder, dv_data );
        
-       // Assign width and height from properties
-       *width = mlt_properties_get_int( properties, "width" );
-       *height = mlt_properties_get_int( properties, "height" );
+       // Assign width and height according to the frame
+       *width = 720;
+       *height = dv_data[ 3 ] & 0x80 ? 576 : 480;
 
        // Extract an image of the format requested
-       if ( *format == mlt_image_yuv422 )
+       if ( *format == mlt_image_yuv422 || *format == mlt_image_yuv420p )
        {
                // Allocate an image
                uint8_t *image = mlt_pool_alloc( *width * ( *height + 1 ) * 2 );
@@ -320,8 +320,9 @@ static int producer_get_image( mlt_frame this, uint8_t **buffer, mlt_image_forma
 
                // Assign result
                *buffer = image;
+               *format = mlt_image_yuv422;
        }
-       else if ( *format == mlt_image_rgb24 )
+       else
        {
                // Allocate an image
                uint8_t *image = mlt_pool_alloc( *width * ( *height + 1 ) * 3 );
@@ -336,6 +337,7 @@ static int producer_get_image( mlt_frame this, uint8_t **buffer, mlt_image_forma
 
                // Assign result
                *buffer = image;
+               *format = mlt_image_rgb24;
        }
 
        // Return the decoder