libzmpeg3 layer3 tweak, listbox selection fix, vicon emtpy video fixes
authorGood Guy <good1.2guy@gmail.com>
Sat, 28 Jul 2018 23:24:46 +0000 (17:24 -0600)
committerGood Guy <good1.2guy@gmail.com>
Sat, 28 Jul 2018 23:24:46 +0000 (17:24 -0600)
cinelerra-5.1/cinelerra/awindowgui.C
cinelerra-5.1/guicast/bclistbox.C
cinelerra-5.1/guicast/vicon.C
cinelerra-5.1/libzmpeg3/audio/layer3.C

index e7f8e7bee9daf24980b67d1314079838394ab733..505f32f16cd2c191e3b8d6d19c01dbaedf76fcf1 100644 (file)
@@ -134,6 +134,15 @@ VFrame *AssetVIcon::frame()
                temp->draw_line(x,0, x,vh);
                return temp;
        }
+       int ww = picon->gui->vicon_thread->view_w;
+       int hh = picon->gui->vicon_thread->view_h;
+       if( !asset->video_data ) {
+               if( !temp ) {
+                       temp = new VFrame(0, -1, ww, hh, BC_RGB888, -1);
+                       temp->clear_frame();
+               }
+               return temp;
+       }
        if( seq_no >= images.size() ) {
                MWindow *mwindow = picon->mwindow;
                File *file = mwindow->video_cache->check_out(asset, mwindow->edl, 1);
@@ -143,8 +152,6 @@ VFrame *AssetVIcon::frame()
                }
                if( !temp )
                        temp = new VFrame(0, -1, asset->width, asset->height, BC_RGB888, -1);
-               int ww = picon->gui->vicon_thread->view_w;
-               int hh = picon->gui->vicon_thread->view_h;
                while( seq_no >= images.size() ) {
                        file->set_layer(0);
                        int64_t pos = images.size() / picon->gui->vicon_thread->refresh_rate * frame_rate;
index b10cdf0860c7a22aceb2ee9f5844fff3a4524383..320e98bc4d701269e2fa636f02556a2bc4c419c6 100644 (file)
@@ -2093,8 +2093,7 @@ int BC_ListBox::get_cursor_item(ArrayList<BC_ListBoxItem*> *data, int cursor_x,
                                return j;
                        }
                }
-               if( display_format == LISTBOX_ICONS ) return -1;
-               } // fall through
+               return -1; }
        case LISTBOX_TEXT:
                if( !gui ) break;
 // Text is treed
index 1f80bc470c40799c84067557e1938ba769ff4591..d726265030e57ffb1c13adf536c9f193f3a8553e 100644 (file)
@@ -43,6 +43,8 @@ add_image(VFrame *frm, int ww, int hh, int vcmdl)
 void VIcon::
 draw_vframe(VIconThread *vt, BC_WindowBase *wdw, int x, int y)
 {
+       VFrame *vfrm = frame();
+       if( !vfrm ) return;
        int sx0 = 0, sx1 = sx0 + vt->view_w;
        int sy0 = 0, sy1 = sy0 + vt->view_h;
        int dx0 = x, dx1 = dx0 + vw;
@@ -54,7 +56,7 @@ draw_vframe(VIconThread *vt, BC_WindowBase *wdw, int x, int y)
        int sw = sx1 - sx0, sh = sy1 - sy0;
        int dw = dx1 - dx0, dh = dy1 - dy0;
        if( dw > 0 && dh > 0 && sw > 0 && sh > 0 )
-               wdw->draw_vframe(frame(), dx0,dy0, dw,dh, sx0,sy0, sw,sh);
+               wdw->draw_vframe(vfrm, dx0,dy0, dw,dh, sx0,sy0, sw,sh);
 }
 
 void VIconThread::
@@ -184,6 +186,7 @@ ViewPopup::~ViewPopup()
 
 void ViewPopup::draw_vframe(VFrame *frame)
 {
+       if( !frame ) return;
        BC_WindowBase::draw_vframe(frame, 0,0, get_w(),get_h());
 }
 
index 984bb053609bc1d7d92f2ea955734a3ab17d0dc5..b0eb290976dd8009cf7913798e37c8c1ac35d2c7 100644 (file)
@@ -791,7 +791,7 @@ do_layer3(uint8_t *zframe, int zframe_size, float **zoutput, int render)
 //zmsg(" 7\n");
     /* Step back */
     if( sideinfo.main_data_begin >= 512 ) return output_offset;
-    if( sideinfo.main_data_begin ) {
+//  if( sideinfo.main_data_begin ) {  /* apparently, zero is legal */
       prev_len = sideinfo.main_data_begin;
       uint8_t *prev = prev_bsbuf + prev_framesize - prev_len;
 //zmsgs(" 7 %ld %d %ld\n", ssize, sideinfo.main_data_begin, prev_framesize);
@@ -799,7 +799,7 @@ do_layer3(uint8_t *zframe, int zframe_size, float **zoutput, int render)
       memcpy(ptr, prev, prev_len);
       past_framesize += prev_framesize;
     }
-  }
+//}
   if( ptr && past_framesize >= prev_len ) {
     stream->use_ptr(ptr);
     for( gr=0; gr<granules; ++gr ) {