Andrea, can yo apply thus patch, load/play/encode file with this patch
applied and post output?

for me it prints twice  "1" and then consistently "8" (my num. of cores)
diff --git a/cinelerra-5.1/cinelerra/audiopulse.C 
b/cinelerra-5.1/cinelerra/audiopulse.C
index 78db1875..72bfc9a7 100644
--- a/cinelerra-5.1/cinelerra/audiopulse.C
+++ b/cinelerra-5.1/cinelerra/audiopulse.C
@@ -205,6 +205,11 @@ int AudioPulse::read_buffer(char *buffer, int size)
 
 int AudioPulse::output_wait()
 {
+
+       if( !dsp_out && init_output() ) {
+               return 1;
+       }
+       
        int error = 0;
        pa_usec_t latency = pa_simple_get_latency((pa_simple*)dsp_out, &error);
        int64_t udelay = latency;
@@ -248,4 +253,5 @@ int AudioPulse::interrupt_playback()
        return 0;
 }
 
+
 #endif
diff --git a/cinelerra-5.1/cinelerra/audiopulse.h 
b/cinelerra-5.1/cinelerra/audiopulse.h
index 1739c256..5416fabf 100644
--- a/cinelerra-5.1/cinelerra/audiopulse.h
+++ b/cinelerra-5.1/cinelerra/audiopulse.h
@@ -43,6 +43,9 @@ public:
        int output_wait();
        int flush_device();
        int interrupt_playback();
+       
+       //int get_output()
+       //int get_input()
 
 // the pulse audio handles
        void *dsp_out;
@@ -53,6 +56,8 @@ public:
        int64_t buffer_position;
        int64_t timer_position;
        int64_t frag_usecs, period_usecs;
+       
+private:
        Timer *timer;
        Mutex *timer_lock;
 
diff --git a/cinelerra-5.1/cinelerra/ci b/cinelerra-5.1/cinelerra/ci
index bc987833..22858982 120000
--- a/cinelerra-5.1/cinelerra/ci
+++ b/cinelerra-5.1/cinelerra/ci
@@ -1 +1 @@
-../bin/cinelerra
\ No newline at end of file
+../bin/cin
\ No newline at end of file
diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C
index 63144ec1..6323b23c 100644
--- a/cinelerra-5.1/cinelerra/ffmpeg.C
+++ b/cinelerra-5.1/cinelerra/ffmpeg.C
@@ -3664,7 +3664,10 @@ int FFMPEG::ff_interlace(int stream)
 
 
 int FFMPEG::ff_cpus()
+
 {
+       printf("filebase cpu %i \n", file_base->file->cpus);
+       
        return !file_base ? 1 : file_base->file->cpus;
 }
 
diff --git a/cinelerra-5.1/cinelerra/file.C b/cinelerra-5.1/cinelerra/file.C
index b8a5ed3d..50bae683 100644
--- a/cinelerra-5.1/cinelerra/file.C
+++ b/cinelerra-5.1/cinelerra/file.C
@@ -292,8 +292,8 @@ int File::can_scale_input(Asset *asset)
 
 int File::set_processors(int cpus)   // Set the number of cpus for certain 
codecs
 {
-       if( cpus > 8 )          // mpegvideo max_threads = 16, more causes errs
-               cpus = 8;       //  8 cpus ought to decode just about anything
+       if( cpus > 16 )         // mpegvideo max_threads = 16, more causes errs
+               cpus = 16;      //  8 cpus ought to decode just about anything
 // Set all instances so gets work.
        this->cpus = cpus;
 
diff --git a/cinelerra-5.1/cinelerra/mwindow.C 
b/cinelerra-5.1/cinelerra/mwindow.C
index c4371646..b0e064ed 100644
--- a/cinelerra-5.1/cinelerra/mwindow.C
+++ b/cinelerra-5.1/cinelerra/mwindow.C
@@ -5348,6 +5348,7 @@ int MWindow::get_cpus(int out_w, int out_h)
        int cpus = out_w*out_h/0x80000 + 1;
        if( cpus > preferences->processors )
                cpus = preferences->processors;
+       printf("cpus from mwindow: %i \n", cpus);
        return cpus;
 }
 int MWindow::get_cpus()
-- 
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to