olaf neophyte and de.po updates, valgrind tweaks, delete green lady, inkscape dpi=96
[goodguy/history.git] / cinelerra-5.1 / cinelerra / iec61883output.C
index a2fe2e1a824cdfccbb0cf85b0950917389ffe784..919b95b410766bb3d07bbc8c73dbad360b2a01af 100644 (file)
@@ -74,8 +74,8 @@ IEC61883Output::~IEC61883Output()
                done = 1;
                start_lock->unlock();
                Thread::cancel();
-               Thread::join();
        }
+       Thread::join();
 
        if(buffer)
        {
@@ -97,6 +97,7 @@ IEC61883Output::~IEC61883Output()
        if(temp_frame2) delete temp_frame2;
        if(video_encoder) dv_delete(video_encoder);
        if(audio_encoder) dv_delete(audio_encoder);
+       if(encoder) dv_delete(encoder);
        if(buffer_lock) delete buffer_lock;
        if(position_lock) delete position_lock;
        if(frame) iec61883_dv_close(frame);
@@ -126,6 +127,7 @@ void IEC61883Output::reset()
        position_lock = 0;
        video_encoder = 0;
        audio_encoder = 0;
+       encoder = 0;
        audio_buffer = 0;
        audio_samples = 0;
        temp_frame = 0;
@@ -190,13 +192,13 @@ int IEC61883Output::open(int port,
 
 // Create buffers
                buffer = new char*[total_buffers];
+               bzero(buffer, sizeof(char*) * total_buffers);
                for(int i = 0; i < length; i++)
                        buffer[i] = new char[DV_PAL_SIZE];
                buffer_size = new int[total_buffers];
                buffer_valid = new int[total_buffers];
                bzero(buffer_size, sizeof(int) * total_buffers);
                bzero(buffer_valid, sizeof(int) * total_buffers);
-               bzero(buffer, sizeof(char*) * total_buffers);
                video_lock = new Condition(0, "IEC61883Output::video_lock");
                audio_lock = new Condition(0, "IEC61883Output::audio_lock");
                start_lock = new Condition(0, "IEC61883Output::start_lock");
@@ -370,14 +372,7 @@ void IEC61883Output::write_frame(VFrame *input)
                                int h = input->get_h();
 // Default to NTSC if unknown
                                if(h != 480 && h != 576) h = 480;
-
-                               temp_frame2 = new VFrame(0,
-                                       -1,
-                                       720,
-                                       h,
-                                       BC_YUV422,
-                                       -1);
-
+                               temp_frame2 = new VFrame(720, h, BC_YUV422, 0);
                        }
 
                        int norm = is_pal ? DV_PAL : DV_NTSC;