]> git.sesse.net Git - mlt/commitdiff
+ Corrections for uncompressed video sources
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Tue, 3 Oct 2006 19:34:15 +0000 (19:34 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Tue, 3 Oct 2006 19:34:15 +0000 (19:34 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@931 d19143bc-622f-0410-bfdd-b5b2a6649095

src/modules/avformat/producer_avformat.c

index 4dd162fada3258535edb1a539749b847ca75da0e..ef1b871c923728e3ac3a8f7a28bfa65033088f0f 100644 (file)
@@ -242,8 +242,7 @@ static int producer_open( mlt_producer this, char *file )
        }
 
        // Now attempt to open the file
-       error = av_open_input_file( &context, file, format, 0, params );
-       error = error < 0;
+       error = av_open_input_file( &context, file, format, 0, params ) < 0;
        
        // Cleanup AVFormatParameters
        free( standard );
@@ -511,13 +510,13 @@ static int producer_get_image( mlt_frame frame, uint8_t **buffer, mlt_image_form
                if ( !strcmp( codec_context->codec->name, "mjpeg" ) )
                        must_decode = 0;
 
-               memset( &pkt, 0, sizeof( pkt ) );
+               av_init_packet( &pkt );
 
                // Construct an AVFrame for YUV422 conversion
                if ( av_frame == NULL )
                {
-                       av_frame = calloc( 1, sizeof( AVFrame ) );
-                       mlt_properties_set_data( properties, "av_frame", av_frame, 0, free, NULL );
+                       av_frame = avcodec_alloc_frame( );
+                       mlt_properties_set_data( properties, "av_frame", av_frame, 0, av_free, NULL );
                }
 
                while( ret >= 0 && !got_picture )
@@ -557,30 +556,30 @@ static int producer_get_image( mlt_frame frame, uint8_t **buffer, mlt_image_form
                                }
                        }
 
-                       // We're finished with this packet regardless
-                       av_free_packet( &pkt );
-               }
-
-               // Now handle the picture if we have one
-               if ( got_picture )
-               {
-                       mlt_properties_set_int( frame_properties, "progressive", !av_frame->interlaced_frame );
-                       mlt_properties_set_int( frame_properties, "top_field_first", av_frame->top_field_first );
+                       // Now handle the picture if we have one
+                       if ( got_picture )
+                       {
+                               mlt_properties_set_int( frame_properties, "progressive", !av_frame->interlaced_frame );
+                               mlt_properties_set_int( frame_properties, "top_field_first", av_frame->top_field_first );
 
-                       convert_image( av_frame, *buffer, codec_context->pix_fmt, *format, *width, *height );
+                               convert_image( av_frame, *buffer, codec_context->pix_fmt, *format, *width, *height );
 
-                       mlt_properties_set_data( frame_properties, "image", *buffer, size, (mlt_destructor)mlt_pool_release, NULL );
+                               mlt_properties_set_data( frame_properties, "image", *buffer, size, (mlt_destructor)mlt_pool_release, NULL );
 
-                       if ( current_time == 0 && source_fps != 0 )
-                       {
-                               double fps = mlt_properties_get_double( properties, "fps" );
-                               current_time = ceil( source_fps * ( double )position / fps ) * ( 1 / source_fps );
-                               mlt_properties_set_double( properties, "_current_time", current_time );
-                       }
-                       else
-                       {
-                               mlt_properties_set_double( properties, "_current_time", current_time );
+                               if ( current_time == 0 && source_fps != 0 )
+                               {
+                                       double fps = mlt_properties_get_double( properties, "fps" );
+                                       current_time = ceil( source_fps * ( double )position / fps ) * ( 1 / source_fps );
+                                       mlt_properties_set_double( properties, "_current_time", current_time );
+                               }
+                               else
+                               {
+                                       mlt_properties_set_double( properties, "_current_time", current_time );
+                               }
                        }
+
+                       // We're finished with this packet regardless
+                       av_free_packet( &pkt );
                }
        }
        
@@ -805,7 +804,7 @@ static int producer_get_audio( mlt_frame frame, int16_t **buffer, mlt_audio_form
                int got_audio = 0;
                int16_t *temp = mlt_pool_alloc( sizeof( int16_t ) * AVCODEC_MAX_AUDIO_FRAME_SIZE );
 
-               memset( &pkt, 0, sizeof( pkt ) );
+               av_init_packet( &pkt );
 
                while( ret >= 0 && !got_audio )
                {