flac-devel libsndfile-devel libtheora-devel linux-firmware \
ivtv-firmware libvorbis-devel texinfo xz-devel lzma-devel cmake git \
autoconf automake
+# ctags patch gcc-c++ perl::XML_Parser libtiff-devel python dvdauthor
;;
"suse" | "leap")
zypper -n install nasm gcc gcc-c++ zlib-devel texinfo libpng16-devel \
double preview_start, preview_end;
// Vertical start of track view in pixels
- int64_t track_start[TOTAL_PANES];
+ int track_start[TOTAL_PANES];
// Horizontal start of view in pixels. This has to be pixels since either
// samples or seconds would require drawing in fractional pixels.
int64_t view_start[TOTAL_PANES];
int MWindowGUI::keypress_event()
{
//printf("MWindowGUI::keypress_event 1 %d\n", get_keypress());
- int result = 0;
- result = mbuttons->keypress_event();
+ int result = mbuttons->keypress_event();
+ if( result ) return result;
- if(!result)
- {
- switch(get_keypress())
- {
- case 'e':
- mwindow->toggle_editing_mode();
- result = 1;
- break;
- case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8':
- if( !alt_down() || shift_down() ) break;
- if( !mwindow->select_asset(get_keypress()-'1',1) )
- result = 1;
- break;
- case LEFT:
- if(!ctrl_down())
- {
- if (alt_down())
- {
- unlock_window();
- mbuttons->transport->handle_transport(STOP, 1, 0, 0);
- lock_window("MWindowGUI::keypress_event 1");
- mwindow->prev_edit_handle(shift_down());
- }
- else
- mwindow->move_left();
- result = 1;
- }
- break;
- case RIGHT:
- if(!ctrl_down())
- {
- if (alt_down())
- {
- unlock_window();
- mbuttons->transport->handle_transport(STOP, 1, 0, 0);
- lock_window("MWindowGUI::keypress_event 2");
- mwindow->next_edit_handle(shift_down());
- }
- else
- mwindow->move_right();
- result = 1;
- }
- break;
-
- case UP:
- if(ctrl_down() && !alt_down())
- {
- mwindow->expand_y();
- result = 1;
- }
- else
- if(!ctrl_down() && alt_down())
- {
- mwindow->expand_autos(0,1,1);
- result = 1;
- }
- else
- if(ctrl_down() && alt_down())
- {
- mwindow->expand_autos(1,1,1);
- result = 1;
- }
- else
- {
- mwindow->expand_sample();
- result = 1;
- }
- break;
-
- case DOWN:
- if(ctrl_down() && !alt_down())
- {
- mwindow->zoom_in_y();
- result = 1;
- }
- else
- if(!ctrl_down() && alt_down())
- {
- mwindow->shrink_autos(0,1,1);
- result = 1;
- }
- else
- if(ctrl_down() && alt_down())
- {
- mwindow->shrink_autos(1,1,1);
- result = 1;
- }
- else
- {
- mwindow->zoom_in_sample();
- result = 1;
- }
- break;
-
- case PGUP:
- if(!ctrl_down())
- {
- mwindow->move_up();
- result = 1;
- }
- else
- {
- mwindow->expand_t();
- result = 1;
- }
- break;
-
- case PGDN:
- if(!ctrl_down())
- {
- mwindow->move_down();
- result = 1;
- }
- else
- {
- mwindow->zoom_in_t();
- result = 1;
- }
- break;
-
-// case TAB:
-// case LEFTTAB:
-// //int cursor_x = 0;
-// int cursor_y = 0;
-// for(int i = 0; i < TOTAL_PANES; i++)
-// {
-// if(pane[i])
-// {
-// //cursor_x = pane[i]->canvas->get_relative_cursor_x();
-// cursor_y = pane[i]->canvas->get_relative_cursor_y();
-// }
-// }
-//
-//
-// if(get_keypress() == TAB)
-// {
-// // Switch the record button
-// for(Track *track = mwindow->edl->tracks->first; track; track = track->next)
-// {
-// int64_t track_x, track_y, track_w, track_h;
-// canvas->track_dimensions(track, track_x, track_y, track_w, track_h);
-//
-// if(cursor_y >= track_y &&
-// cursor_y < track_y + track_h)
-// {
-// if (track->record)
-// track->record = 0;
-// else
-// track->record = 1;
-// result = 1;
-// break;
-// }
-// }
-// }
-// else
-// {
-// Track *this_track = 0;
-// for(Track *track = mwindow->edl->tracks->first; track; track = track->next)
-// {
-// int64_t track_x, track_y, track_w, track_h;
-// canvas->track_dimensions(track, track_x, track_y, track_w, track_h);
-//
-// if(cursor_y >= track_y &&
-// cursor_y < track_y + track_h)
-// {
-// // This is our track
-// this_track = track;
-// break;
-// }
-// }
-//
-// int total_selected = mwindow->edl->tracks->total_of(Tracks::RECORD);
-//
-// // nothing previously selected
-// if(total_selected == 0)
-// {
-// mwindow->edl->tracks->select_all(Tracks::RECORD,
-// 1);
-// }
-// else
-// if(total_selected == 1)
-// {
-// // this patch was previously the only one on
-// if(this_track && this_track->record)
-// {
-// mwindow->edl->tracks->select_all(Tracks::RECORD,
-// 1);
-// }
-// // another patch was previously the only one on
-// else
-// {
-// mwindow->edl->tracks->select_all(Tracks::RECORD,
-// 0);
-// if (this_track)
-// this_track->record = 1;
-//
-// }
-// }
-// else
-// if(total_selected > 1)
-// {
-// mwindow->edl->tracks->select_all(Tracks::RECORD,
-// 0);
-// if (this_track)
-// this_track->record = 1;
-// }
-//
-// }
-//
-// update (0,
-// 1,
-// 0,
-// 0,
-// 1,
-// 0,
-// 1);
-// unlock_window();
-// mwindow->cwindow->update(0, 1, 1);
-// lock_window("TrackCanvas::keypress_event 3");
-//
-// result = 1;
-// break;
+ switch(get_keypress()) {
+ case 'e':
+ mwindow->toggle_editing_mode();
+ result = 1;
+ break;
+
+ case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8':
+ if( !alt_down() || shift_down() ) break;
+ if( !mwindow->select_asset(get_keypress()-'1',1) )
+ result = 1;
+ break;
+
+ case LEFT:
+ if( !ctrl_down() ) {
+ if( alt_down() ) {
+ unlock_window();
+ mbuttons->transport->handle_transport(STOP, 1, 0, 0);
+ lock_window("MWindowGUI::keypress_event 1");
+ mwindow->prev_edit_handle(shift_down());
+ }
+ else
+ mwindow->move_left();
+ result = 1;
}
+ break;
-// since things under cursor have changed...
- if(result)
- cursor_motion_event();
+ case RIGHT:
+ if( !ctrl_down() ) {
+ if( alt_down() ) {
+ unlock_window();
+ mbuttons->transport->handle_transport(STOP, 1, 0, 0);
+ lock_window("MWindowGUI::keypress_event 2");
+ mwindow->next_edit_handle(shift_down());
+ }
+ else
+ mwindow->move_right();
+ result = 1;
+ }
+ break;
+
+ case UP:
+ if( ctrl_down() && !alt_down() )
+ mwindow->expand_y();
+ else if( !ctrl_down() && alt_down() )
+ mwindow->expand_autos(0,1,1);
+ else if( ctrl_down() && alt_down() )
+ mwindow->expand_autos(1,1,1);
+ else
+ mwindow->expand_sample();
+ result = 1;
+ break;
+
+ case DOWN:
+ if( ctrl_down() && !alt_down() )
+ mwindow->zoom_in_y();
+ else if( !ctrl_down() && alt_down() )
+ mwindow->shrink_autos(0,1,1);
+ else if( ctrl_down() && alt_down() )
+ mwindow->shrink_autos(1,1,1);
+ else
+ mwindow->zoom_in_sample();
+ result = 1;
+ break;
+
+ case PGUP:
+ if( !ctrl_down() )
+ mwindow->move_up();
+ else
+ mwindow->expand_t();
+ result = 1;
+ break;
+
+ case PGDN:
+ if( !ctrl_down() )
+ mwindow->move_down();
+ else
+ mwindow->zoom_in_t();
+ result = 1;
+ break;
+
+ case TAB:
+ case LEFTTAB:
+ Track *this_track = 0;
+ for( int i=0; i<TOTAL_PANES; ++i ) {
+ if( (this_track = pane[i]->over_track()) != 0 ) break;
+ if( (this_track = pane[i]->over_patchbay()) != 0 ) break;
+ }
+
+ if( get_keypress() == TAB ) { // Switch the record button
+ if( this_track )
+ this_track->record = !this_track->record ? 1 : 0;
+ }
+ else {
+ int total_selected = mwindow->edl->tracks->total_of(Tracks::RECORD);
+ // all selected if nothing previously selected or
+ // if this patch was previously the only one selected and armed
+ int selected = !total_selected || (total_selected == 1 &&
+ this_track && this_track->record ) ? 1 : 0;
+ mwindow->edl->tracks->select_all(Tracks::RECORD, selected);
+ if( !selected && this_track ) this_track->record = 1;
+ }
+
+ update(0, 1, 0, 0, 1, 0, 1);
+ unlock_window();
+ mwindow->cwindow->update(0, 1, 1);
+ lock_window("TrackCanvas::keypress_event 3");
+
+ result = 1;
+ break;
}
+// since things under cursor have changed...
+ if(result)
+ cursor_motion_event();
+
return result;
}
gui->focused_pane = number;
}
-Track *TimelinePane::is_over_patchbay()
+Track *TimelinePane::over_track()
{
- if( !patchbay ) return 0;
- int cursor_x = gui->get_relative_cursor_x() - x;
- if( cursor_x < 0 || cursor_x >= w ) return 0;
- int cursor_y = gui->get_relative_cursor_y() - y;
- if( cursor_y < 0 || cursor_y >= h ) return 0;
- int no = number;
- TrackScroll *trackscroll = gui->pane[no]->trackscroll;
- if( !trackscroll )
- trackscroll = gui->pane[++no]->trackscroll;
-// left panes have patchbays, right panes have trackscroll
- int pane_y = cursor_y + trackscroll->get_position();
+ int canvas_x = canvas->get_relative_cursor_x();
+ if( canvas_x < 0 || canvas_x >= canvas->get_w() ) return 0;
+ int canvas_y = canvas->get_relative_cursor_y();
+ if( canvas_y < 0 || canvas_y >= canvas->get_h() ) return 0;
+ int pane_y = canvas_y + mwindow->edl->local_session->track_start[number];
for( Track *track=mwindow->edl->tracks->first; track; track=track->next ) {
int track_y = track->y_pixel;
if( pane_y < track_y ) continue;
return 0;
}
+Track *TimelinePane::over_patchbay()
+{
+ if( !patchbay ) return 0;
+ int patch_x = patchbay->get_relative_cursor_x() ;
+ if( patch_x < 0 || patch_x >= patchbay->get_w() ) return 0;
+ int patch_y = patchbay->get_relative_cursor_y();
+ if( patch_y < 0 || patch_y >= patchbay->get_h() ) return 0;
+// int canvas_x = patch_x + patchbay->get_x() - canvas->get_x();
+ int canvas_y = patch_y + patchbay->get_y() - canvas->get_y();
+ int pane_y = canvas_y + mwindow->edl->local_session->track_start[number];
+ for( Track *track=mwindow->edl->tracks->first; track; track=track->next ) {
+ int track_y = track->y_pixel;
+ if( pane_y < track_y ) continue;
+ track_y += track->vertical_span(mwindow->theme);
+ if( pane_y < track_y )
+ return track;
+ }
+
+ return 0;
+}
void activate();
void create_track_scroll(int view_x, int view_y, int view_w, int view_h);
void create_sample_scroll(int view_x, int view_y, int view_w, int view_h);
- Track *is_over_patchbay();
+ Track *over_track();
+ Track *over_patchbay();
MWindow *mwindow;
MWindowGUI *gui;
}
if( !*over_track )
- *over_track = pane->is_over_patchbay();
+ *over_track = pane->over_patchbay();
return 0;
}
(cursor_y = get_relative_cursor_y()) >= 0 && cursor_y < get_h() )
over_window = 1;
else {
- Track *track = pane->is_over_patchbay();
+ Track *track = pane->over_patchbay();
if( track && mwindow->session->track_highlighted == track )
over_window = 1;
}
if( max_pos < 0 ) max_pos = 0;
if( mwindow->edl->local_session->track_start[pane->number] > max_pos )
mwindow->edl->local_session->track_start[pane->number] = max_pos;
+ if( pane->number == TOP_RIGHT_PANE ) {
+ if( mwindow->edl->local_session->track_start[TOP_LEFT_PANE] > max_pos )
+ mwindow->edl->local_session->track_start[TOP_LEFT_PANE] = max_pos;
+ }
+ else if( pane->number == BOTTOM_RIGHT_PANE ) {
+ if( mwindow->edl->local_session->track_start[BOTTOM_LEFT_PANE] > max_pos )
+ mwindow->edl->local_session->track_start[BOTTOM_LEFT_PANE] = max_pos;
+ }
update_length(
mwindow->edl->get_tracks_height(mwindow->theme),
mwindow->edl->local_session->track_start[pane->number],
[ libAACdec/include libAACenc/include libSYS/include ])
PKG_3RD([ffmpeg],[yes],
- [ffmpeg-3.1.1],
+ [ffmpeg-3.1.2],
[ libavutil/libavutil.a \
libavcodec/libavcodec.a \
libpostproc/libpostproc.a \
[ . ])
PKG_3RD([x265],[yes],
- [x265_1.9],
+ [x265_2.0],
[ libx265.a ],
[ . source ])
+++ /dev/null
-#ifndef _S_H_
-#define _S_H_
-#include <cstdio>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#include "tdb.h"
-
-
-// Video_frame
-DbObj(Video_frame)
- basic_def(double,Frame_mean);
- basic_def(double,Frame_std_dev);
- basic_def(double,Frame_cx);
- basic_def(double,Frame_cy);
- basic_def(double,Frame_moment);
- varray_def(unsigned char,Frame_data);
-};
-
-DbLoc(Video_frame)
- basic_ref(double,Frame_mean);
- basic_ref(double,Frame_std_dev);
- basic_ref(double,Frame_cx);
- basic_ref(double,Frame_cy);
- basic_ref(double,Frame_moment);
- varray_ref(unsigned char,Frame_data);
-
- class ikey_Frame_weight : public Db::iKey { public:
- Video_frameObj::t_Frame_mean v_Frame_mean;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Frame_weight(ObjectLoc &loc,
- double Frame_mean, int id=-1)
- : iKey("Frame_weight",loc,cmpr),
- v_Frame_mean(Frame_mean),
- v_id(id) {}
- };
- class rkey_Frame_weight : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Frame_weight(ObjectLoc &loc) : rKey("Frame_weight",loc,cmpr) {}
- };
-
- class ikey_Frame_center : public Db::iKey { public:
- Video_frameObj::t_Frame_moment v_Frame_moment;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Frame_center(ObjectLoc &loc,
- double Frame_moment, int id=-1)
- : iKey("Frame_center",loc,cmpr),
- v_Frame_moment(Frame_moment),
- v_id(id) {}
- };
- class rkey_Frame_center : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Frame_center(ObjectLoc &loc) : rKey("Frame_center",loc,cmpr) {}
- };
-
- int Allocate();
- int Construct();
- int Destruct();
- void Deallocate();
-};
-// Timeline
-DbObj(Timeline)
- basic_def(unsigned int,Clip_id);
- basic_def(unsigned int,Sequence_no);
- basic_def(unsigned int,Frame_id);
- basic_def(unsigned int,Group);
- basic_def(double,Time_offset);
-};
-
-DbLoc(Timeline)
- basic_ref(unsigned int,Clip_id);
- basic_ref(unsigned int,Sequence_no);
- basic_ref(unsigned int,Frame_id);
- basic_ref(unsigned int,Group);
- basic_ref(double,Time_offset);
-
- class ikey_Timelines : public Db::iKey { public:
- TimelineObj::t_Frame_id v_Frame_id;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Timelines(ObjectLoc &loc,
- unsigned int Frame_id, int id=-1)
- : iKey("Timelines",loc,cmpr),
- v_Frame_id(Frame_id),
- v_id(id) {}
- };
- class rkey_Timelines : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Timelines(ObjectLoc &loc) : rKey("Timelines",loc,cmpr) {}
- };
-
- class ikey_Sequences : public Db::iKey { public:
- TimelineObj::t_Clip_id v_Clip_id;
- TimelineObj::t_Sequence_no v_Sequence_no;
- static int cmpr(char *a, char *b);
- ikey_Sequences(ObjectLoc &loc,
- unsigned int Clip_id,
- unsigned int Sequence_no)
- : iKey("Sequences",loc,cmpr),
- v_Clip_id(Clip_id),
- v_Sequence_no(Sequence_no) {}
- };
- class rkey_Sequences : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Sequences(ObjectLoc &loc) : rKey("Sequences",loc,cmpr) {}
- };
-
- int Allocate();
- int Construct();
- int Destruct();
- void Deallocate();
-};
-// Clip_set
-DbObj(Clip_set)
- sarray_def(char,Title);
- sarray_def(char,Asset_path);
- basic_def(double,Position);
- basic_def(double,Framerate);
- basic_def(double,Average_weight);
- basic_def(unsigned int,Frames);
- basic_def(unsigned int,Prefix_size);
- basic_def(unsigned int,Suffix_size);
- varray_def(unsigned char,Weights);
- basic_def(long,System_time);
- basic_def(long,Creation_time);
-};
-
-DbLoc(Clip_set)
- sarray_ref(char,Title);
- sarray_ref(char,Asset_path);
- basic_ref(double,Position);
- basic_ref(double,Framerate);
- basic_ref(double,Average_weight);
- basic_ref(unsigned int,Frames);
- basic_ref(unsigned int,Prefix_size);
- basic_ref(unsigned int,Suffix_size);
- varray_ref(unsigned char,Weights);
- basic_ref(long,System_time);
- basic_ref(long,Creation_time);
-
- class ikey_Clip_title : public Db::iKey { public:
- Clip_setObj::t_Title v_Title;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Clip_title(ObjectLoc &loc,
- const Clip_setObj::t_Title &Title, int id=-1)
- : iKey("Clip_title",loc,cmpr),
- v_Title(Title),
- v_id(id) {}
- };
- class rkey_Clip_title : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Clip_title(ObjectLoc &loc) : rKey("Clip_title",loc,cmpr) {}
- };
-
- class ikey_Clip_system_time : public Db::iKey { public:
- Clip_setObj::t_System_time v_System_time;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Clip_system_time(ObjectLoc &loc,
- long System_time, int id=-1)
- : iKey("Clip_system_time",loc,cmpr),
- v_System_time(System_time),
- v_id(id) {}
- };
- class rkey_Clip_system_time : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Clip_system_time(ObjectLoc &loc) : rKey("Clip_system_time",loc,cmpr) {}
- };
-
- class ikey_Clip_creation_time : public Db::iKey { public:
- Clip_setObj::t_Creation_time v_Creation_time;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Clip_creation_time(ObjectLoc &loc,
- long Creation_time, int id=-1)
- : iKey("Clip_creation_time",loc,cmpr),
- v_Creation_time(Creation_time),
- v_id(id) {}
- };
- class rkey_Clip_creation_time : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Clip_creation_time(ObjectLoc &loc) : rKey("Clip_creation_time",loc,cmpr) {}
- };
-
- class ikey_Clip_path_pos : public Db::iKey { public:
- Clip_setObj::t_Asset_path v_Asset_path;
- Clip_setObj::t_Position v_Position;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Clip_path_pos(ObjectLoc &loc,
- const Clip_setObj::t_Asset_path &Asset_path,
- double Position, int id=-1)
- : iKey("Clip_path_pos",loc,cmpr),
- v_Asset_path(Asset_path),
- v_Position(Position),
- v_id(id) {}
- };
- class rkey_Clip_path_pos : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Clip_path_pos(ObjectLoc &loc) : rKey("Clip_path_pos",loc,cmpr) {}
- };
-
- int Allocate();
- int Construct();
- int Destruct();
- void Deallocate();
-};
-// Clip_views
-DbObj(Clip_views)
- basic_def(unsigned int,Access_clip_id);
- basic_def(long,Access_time);
- basic_def(unsigned int,Access_count);
-};
-
-DbLoc(Clip_views)
- basic_ref(unsigned int,Access_clip_id);
- basic_ref(long,Access_time);
- basic_ref(unsigned int,Access_count);
-
- class ikey_Clip_access : public Db::iKey { public:
- Clip_viewsObj::t_Access_clip_id v_Access_clip_id;
- static int cmpr(char *a, char *b);
- ikey_Clip_access(ObjectLoc &loc,
- unsigned int Access_clip_id)
- : iKey("Clip_access",loc,cmpr),
- v_Access_clip_id(Access_clip_id) {}
- };
- class rkey_Clip_access : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Clip_access(ObjectLoc &loc) : rKey("Clip_access",loc,cmpr) {}
- };
-
- class ikey_Last_view : public Db::iKey { public:
- Clip_viewsObj::t_Access_time v_Access_time;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Last_view(ObjectLoc &loc,
- long Access_time, int id=-1)
- : iKey("Last_view",loc,cmpr),
- v_Access_time(Access_time),
- v_id(id) {}
- };
- class rkey_Last_view : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Last_view(ObjectLoc &loc) : rKey("Last_view",loc,cmpr) {}
- };
-
- class ikey_Total_views : public Db::iKey { public:
- Clip_viewsObj::t_Access_count v_Access_count;
- Clip_viewsObj::t_Access_clip_id v_Access_clip_id;
- int v_id;
- static int cmpr(char *a, char *b);
- ikey_Total_views(ObjectLoc &loc,
- unsigned int Access_count,
- unsigned int Access_clip_id, int id=-1)
- : iKey("Total_views",loc,cmpr),
- v_Access_count(Access_count),
- v_Access_clip_id(Access_clip_id),
- v_id(id) {}
- };
- class rkey_Total_views : public Db::rKey { public:
- static int cmpr(char *a, char *b);
- rkey_Total_views(ObjectLoc &loc) : rKey("Total_views",loc,cmpr) {}
- };
-
- int Allocate();
- int Construct();
- int Destruct();
- void Deallocate();
-};
-
-
-class theDb : public Db {
- int dfd, dkey, no_atime;
- int db_create();
- int db_open();
- int db_access();
-public:
- Objects objects;
- Entity Video_frame; Video_frameLoc video_frame;
- Entity Timeline; TimelineLoc timeline;
- Entity Clip_set; Clip_setLoc clip_set;
- Entity Clip_views; Clip_viewsLoc clip_views;
-
- int create(const char *dfn);
- int open(const char *dfn, int key=-1);
- int access(const char *dfn, int key=-1, int rw=0);
- void close();
- int attach(int rw=0) { return Db::attach(rw); }
- int detach() { return Db::detach(); }
-
- theDb();
- ~theDb() { finit(objects); }
-};
-
-#endif
dmsg(DBBUG_ERR,"%s\n",msg);
}
-void
-Db::dmp()
+void Db::
+dmp()
{
tdmp(); pdmp();
- printf("freeStoreIndex\n"); fdmp();
- printf("addrStoreIndex\n"); admp();
- printf("freeSpaceIndex\n"); edmp();
- printf("addrSpaceIndex\n"); bdmp();
printf("\n");
}
-void
-Db::tdmp()
+void Db::
+tdmp()
{
printf("dmp root_info->file_size %016lx\n",
root_info->file_size);
for( int idx=0; idx<root_info->indeciesUsed; ++idx ) {
IndexBase *ib = indecies[idx];
if( !ib ) continue;
- printf(" idx %d. %-24s %s pop %5ld"
+ printf(" idx %d. %-24s %s%c pop %5ld"
" root %-5d rhs %-5d ky/Dt %2d/%-2d ",
idx, &ib->st->name[0], ib->st->type==idxBin ? "bin" :
- ib->st->type==idxStr ? "str" : "???", ib->st->count,
+ ib->st->type==idxStr ? "str" : "???",
+ ib->st->key_type >= ktyBin && ib->st->key_type <= ktyDir ?
+ " *="[ib->st->key_type] : '?', ib->st->count,
ib->st->rootPageId, ib->st->rightHandSide,
ib->st->keySz, ib->st->dataSz);
printf(" free %d/",ib->st->freeBlocks);
} while( !entityIdIndex->Next(&eid,&ent.obj) );
}
-void
-Db::pdmp()
+void Db::
+pdmp()
{
printf(" root_info->pageTableUsed %d\n",root_info->pageTableUsed);
for( int pid=0; pid<root_info->pageTableUsed; ++pid ) {
printf(", pages = %d\n",n);
}
-void
-Db::fdmp()
+void Db::
+fdmp()
{
freeStoreRecord free;
if( !freeStoreIndex->First(&free,0) ) do {
} while( !freeStoreIndex->Next(&free,0) );
}
-void
-Db::admp()
+void Db::
+admp()
{
addrStoreRecord addr;
if( !addrStoreIndex->First(&addr,0) ) do {
} while( !addrStoreIndex->Next(&addr,0) );
}
-void
-Db::achk()
+void Db::
+cdmp()
+{
+ Entity e(this); EntityLoc &ent = e.ent; int ret, eid;
+ if( !(ret=entityIdIndex->First(&eid,&ent.obj)) ) do {
+ printf(" %d. %-32s %5d/%-5d %d\n",eid,ent->name,
+ ent->alloc_cache.loc.id, ent->alloc_cache.loc.offset,
+ ent->alloc_cache.avail);
+ } while( !(ret=entityIdIndex->Next(&eid,&ent.obj)) );
+}
+
+void Db::
+achk()
{
if( !indecies ) return; addrStoreRecord addr;
addrStoreRecord last; last.io_addr = 0; last.size = 0;
} while( !addrStoreIndex->Next(&addr,0) );
}
-void
-Db::fchk()
+void Db::
+fchk()
{
if( !indecies ) return; freeStoreRecord free;
freeStoreRecord last; last.size = 0; last.io_addr = 0;
} while( !freeStoreIndex->Next(&free,0) );
}
-void
-Db::edmp()
+void Db::
+edmp(AllocCache &cache)
{
freeSpaceRecord free;
if( !freeSpaceIndex->First(&free,0) ) do {
} while( !freeSpaceIndex->Next(&free,0) );
}
-void
-Db::bdmp()
+void Db::
+bdmp(AllocCache &cache)
{
addrSpaceRecord addr;
if( !addrSpaceIndex->First(&addr,0) ) do {
}
void Db::
-stats(int chk)
+stats()
{
long store_allocated=0, store_used=0;
long loaded_allocated=0, loaded_used=0;
printf(" write %8d/%-7.3f%% alloc:%-12ld used:%-12ld %7.3f%%\n",
pages_written, percent(pages_written, root_info->pageTableUsed),
written_allocated, written_used, percent(written_used, written_allocated));
- if( chk ) {
- long store_avail=0, space_avail=0;
- freeStoreRecord store;
- if( !freeStoreIndex->First(&store,0) ) do {
- store_avail += store.size;
- } while( !freeStoreIndex->Next(&store,0) );
- freeSpaceRecord space;
- if( !freeSpaceIndex->First(&space,0) ) do {
- space_avail += space.size;
- } while( !freeSpaceIndex->Next(&space,0) );
- printf(" file %-12ld", root_info->file_size);
- printf(" store %12ld/%-7.3f%% space %12ld/%-7.3f%%\n",
- store_avail, percent(store_avail, root_info->file_size),
- space_avail, percent(space_avail, root_info->file_size));
- }
#undef percent
}
if_fail( refLocate(last, op, key, cmpr) );
char *kp = 0;
if_err( db->addrRead_(last,kp) );
- if( rtnKey )
- memmove(rtnKey,kp,st->keySz);
- if( rtnData )
+ if( rtnKey && st->keySz > 0 )
+ wr_key(kp, (char*)rtnKey,st->keySz);
+ if( rtnData && st->dataSz > 0 )
memmove(rtnData,kp+st->keySz,st->dataSz);
return 0;
}
if( !rhs ) return 0; /* not a hit */
if( spp->iallocated()-slen < kdSz ) return 0; /* doesnt fit */
if( rp > kn ) memmove(kn+kdSz,kn,rp-kn); /* move data up */
- memmove(kn,key,st->keySz);
- memmove(kn+st->keySz,data,st->dataSz); /* add new key/data */
+ if( key && st->keySz > 0 )
+ wr_key(key, kn,st->keySz);
+ if( data && st->dataSz > 0 )
+ memmove(kn+st->keySz,data,st->dataSz); /* add new key/data */
spp->iused(slen + kdSz);
keyInterior = 0;
lastAccess.id = s;
void Db::IndexBinary::
makeKey(char *cp,char *key,int l,char *recd,int n)
{
- writePageId(cp,NIL);
- memmove(cp+=sizeof(pageId),key,l);
- if( recd ) memmove(cp+=l,recd,n);
+ writePageId(cp,NIL); cp += sizeof(pageId);
+ if( l > 0 ) { wr_key(key, cp,l); cp += l; }
+ if( n > 0 && recd ) memmove(cp,recd,n);
}
/***
if_fail( keyFirst(first, st->rootPageId) );
char *kp = 0;
if_err( db->addrRead_(first,kp) );
- if( rtnKey )
- memmove(rtnKey,kp,st->keySz);
- if( rtnData )
+ if( rtnKey && st->keySz > 0 )
+ wr_key(kp, (char*)rtnKey,st->keySz);
+ if( rtnData && st->dataSz > 0 )
memmove(rtnData,kp+st->keySz,st->dataSz);
{ locked by(idxLk);
lastNext = lastAccess = first; }
if_fail( keyLast(last, st->rootPageId) );
char *kp = 0;
if_err( db->addrRead_(last,kp) );
- if( rtnKey )
- memmove(rtnKey,kp,st->keySz);
- if( rtnData )
+ if( rtnKey && st->keySz > 0 )
+ wr_key(kp, (char*)rtnKey,st->keySz);
+ if( rtnData && st->dataSz > 0 )
memmove(rtnData,kp+st->keySz,st->dataSz);
{ locked by(idxLk);
lastNext = lastAccess = last; }
if_ret( ret );
if( !ret ) {
char *ky = 0;
- if( !st->keySz && rtnKey ) // rtnKey is rKey class
+ switch( st->key_type ) {
+ case ktyInd:
ky = (char *)rtnKey;
- else
+ break;
+ case ktyBin: case ktyDir:
if_err( db->addrRead_(loc,ky) );
+ break;
+ }
if_ret( keyNext(loc, ky) ); // try the hard way
}
if_err( db->addrRead_(loc,kp) );
- if( rtnKey )
- memmove(rtnKey,kp,st->keySz);
- if( rtnData )
+ if( rtnKey && st->keySz > 0 )
+ wr_key(kp, (char*)rtnKey,st->keySz);
+ if( rtnData && st->dataSz > 0 )
memmove(rtnData,kp+st->keySz,st->dataSz);
{ locked by(idxLk);
lastAccess = loc; }
IndexBinary(Db *zdb, int zidx, int ksz, int dsz, CmprFn cmpr)
: IndexBase(zdb, idxBin, zidx, ksz, dsz)
{
- compare = !cmpr && !ksz ? cmprKey : cmpr;
+ compare = cmpr;
bst = new(st+1) IndexBinaryStorage(zdb->findCmprFn(compare));
iky = new char[st->blockSize/2+1];
tky = new char[st->blockSize/2+1];
: IndexBase(zdb, *b)
{
bst = new(d) IndexBinaryStorage();
- compare = !bst->cmprId && !b->keySz ? cmprKey : cmprFns[bst->cmprId];
+ compare = cmprFns[bst->cmprId];
iky = new char[st->blockSize/2+1];
tky = new char[st->blockSize/2+1];
init();
: IndexBase(ib->db, *b)
{
bst = new(d) IndexBinaryStorage();
- compare = !bst->cmprId && !ib->st->keySz ? cmprKey : cmprFns[bst->cmprId];
+ compare = cmprFns[bst->cmprId];
init();
}
return 0;
}
+void Db::IndexBase::
+chkLastReset()
+{
+ lastOp = opFind;
+ lastAccess.id = lastDelete.id = lastInsert.id =
+ lastFind.id = lastNext.id = NIL;
+ lastAccess.offset = lastDelete.offset = lastInsert.offset =
+ lastFind.offset = lastNext.offset = 0;
+ cFindCount = cDelCount = cInsCount = 0;
+}
+
void Db::IndexBase::
chkLastInsert()
{
*/
int Db::
-objectHeapInsert(int sz,int id,int offset)
+objectHeapInsert(int sz,int id,int offset,AllocCache &cache)
{
freeSpaceRecord free;
free.size = sz; free.id = id; free.offset = offset;
*/
int Db::
-objectHeapDelete(int sz,int id,int offset)
+objectHeapDelete(int sz,int id,int offset,AllocCache &cache)
{
freeSpaceRecord free;
free.size = sz; free.id = id; free.offset = offset;
if( status == errNotFound ) return 1;
if_err( status );
}
- if_err( objectHeapDelete(find.size,find.id,find.offset) );
+ if_err( objectHeapDelete(find.size,find.id,find.offset,cache) );
loc.id = find.id;
loc.offset = find.offset ? find.offset : sizeof(pagePrefix);
Page &pg = *get_page(loc.id);
if( ofs > pg->used ) pg->used = ofs;
int sz = find.offset+find.size - ofs;
if( sz >= min_heap_allocation ) {
- //if_err( objectHeapInsert(sz,find.id,ofs) );
+ //if_err( objectHeapInsert(sz,find.id,ofs,cache) );
if_err( cache.Load(this, find.id, ofs, sz) );
}
else
int used = loc.offset + size;
int free = pg->allocated - used;
if( free >= min_heap_allocation ) {
- //if_err( objectHeapInsert(free,id,used) );
+ //if_err( objectHeapInsert(free,id,used,cache) );
if_err( cache.Load(this, id, used, free) );
}
else
* returns zero on success, error code on failure
*/
-int Db::objectFree(pgRef &loc)
+int Db::objectFree(pgRef &loc,AllocCache &cache)
{
allocPrefix *mp;
if_err( addrRead_(loc,mp) );
/* merge with prev if possible */
if( prev.id == addr.id &&
prev.offset + prev.size == addr.offset ) {
- if_err( objectHeapDelete(prev.size,prev.id,prev.offset) );
+ if_err( objectHeapDelete(prev.size,prev.id,prev.offset,cache) );
addr.offset = prev.offset;
addr.size += prev.size;
}
/* merge with next if possible */
if( addr.id == next.id &&
addr.offset + addr.size == next.offset ) {
- if_err( objectHeapDelete(next.size,next.id,next.offset) );
+ if_err( objectHeapDelete(next.size,next.id,next.offset,cache) );
addr.size += next.size;
}
/* reduce used block bytes if possible */
if( pg->used == sizeof(pagePrefix) )
pg.release();
else
- if_err( objectHeapInsert(addr.size,addr.id,addr.offset) );
+ if_err( objectHeapInsert(addr.size,addr.id,addr.offset,cache) );
return 0;
}
return pp->release();
}
+int Db::IndexBase::
+blockLoad(pageId pid)
+{
+ pgRef loc; char *op = 0;
+ loc.id = pid; loc.offset = 0;
+ return db->addrRead(loc, op);
+}
+
/*** int Db::deleteFreeBlock()
*
* Purpose: release database memory/storage
cacheFlush(Db *db)
{
if( loc.id >= 0 ) {
- if_ret( db->objectHeapInsert(avail,loc.id,loc.offset) );
+ if_ret( db->objectHeapInsert(avail,loc.id,loc.offset,*this) );
loc.id = NIL;
}
return 0;
{
if( loc.id >= 0 ) {
if( avail > sz ) {
- if_ret( db->objectHeapInsert(sz,id,ofs) );
+ if_ret( db->objectHeapInsert(sz,id,ofs,*this) );
return 0;
}
cacheFlush(db);
return 0;
}
+void Db::
+cacheDelete(AllocCache &cache)
+{
+ freeSpaceRecord free;
+ if( !freeSpaceIndex->First(&free,0) ) do {
+// printf("free=%04lx %d/%d\n", free.size,free.id,free.offset);
+ objectHeapInsert(free.size, free.id, free.offset,alloc_cache);
+ } while( !freeSpaceIndex->Next(&free,0) );
+ indecies[cache.freeIdx]->Clear();
+ indecies[cache.addrIdx]->Clear();
+ del_index(cache.freeIdx);
+ del_index(cache.addrIdx);
+ cache.freeIdx = -1;
+ cache.addrIdx = -1;
+}
+
int Db::cache_all_flush()
{
- if_err( cacheFlush() );
Entity e(this); EntityLoc &ent = e.ent; int ret;
if( !(ret=entityIdIndex->First(0,&ent.obj)) ) do {
if_err( ent.cacheFlush() );
} while( !(ret=entityIdIndex->Next(0,&ent.obj)) );
if( ret == errNotFound ) ret = 0;
if_err( ret );
+ if_err( cacheFlush() );
return 0;
}
locked by(db_info->objAlLk);
cache.cacheFlush(this);
if( loc.id < 0 ) return 0;
- if_fail( objectFree(loc) );
+ if_fail( objectFree(loc, cache) );
loc.id = NIL; loc.offset = 0;
return 0;
}
for( int idx=0; idx<root_info->indeciesUsed; ++idx ) {
IndexBase *bip = indecies[idx];
if( !bip ) continue;
+ bip->chkLastReset();
pageId r = bip->st->rootPageId;
if( r < 0 ) continue;
if( r != bip->st->rightHandSide ) continue;
if( pg->used )
if_err( pageWrite(pg) );
}
- if( force < 0 ) {
- pageDealloc(pg);
- pg->set_flags(fl_rd);
+ if( force ) {
+ if( force < 0 || pg->type < pg_index || pg->type > max_index_type ) {
+ pageDealloc(pg);
+ pg->set_flags(fl_rd);
+ }
}
}
}
}
+ // allocator
+ int fidx = get_index(".free");
+ if( fidx < 0 ) Err(errCorrupt);
+ int aidx = get_index(".addr");
+ if( aidx < 0 ) Err(errCorrupt);
+ alloc_cache.freeIdx = fidx;
+ alloc_cache.addrIdx = aidx;
+
// pageTable data
page_table_sz = root_info->pageTableUsed;
sz = pageTableHunks(page_table_sz) * pageTableHunkSize;
int id, n = db->root_info->indeciesUsed;
for( id=usrIdx; id<n; ++id ) {
IndexBase *ib = db->indecies[id];
- if( ib && ib->st->type != idxNil ) {
- int ret = 0;
- switch( ib->st->type ) {
- // copy binary index
- case idxBin: {
- IndexBinary *bidx = (IndexBinary *)ib;
+ if( !ib ) continue;
+ int ret = 0;
+ switch( ib->st->type ) {
+ // copy binary index
+ case idxBin: {
+ IndexBinary *bidx = (IndexBinary *)ib;
+ int idx = get_index(&bidx->st->name[0]);
+ if( idx < 0 ) {
int kySz = bidx->st->keySz, dtSz = bidx->st->dataSz;
- int idx = get_index(&bidx->st->name[0]);
- if( idx < 0 )
- idx = new_binary_index(&bidx->st->name[0], kySz, dtSz, bidx->compare);
+ idx = new_binary_index(&bidx->st->name[0], kySz, dtSz, bidx->compare);
if_err( idx );
- // ignore empty indecies
- if( bidx->st->rootPageId >= 0 ) {
- // entity id indecies are processed below
- if( db->entityNmIndex->Find(&ib->st->name[0],0) != 0 ) {
- IndexBinary *bip = (IndexBinary *)indecies[idx];
- // use cmprLast since index is in-order. Avoids using
- // user defined class key cmprs and compare functions.
- bip->compare = cmprLast;
- ret = bidx->keyCopy(bidx->st->rootPageId, indecies[idx]);
- bip->compare = cmprFns[bip->bst->cmprId];
- }
- }
- break; }
- // copy string index
- case idxStr: {
- IndexString *sidx = (IndexString *)ib;
+ }
+ IndexBase *bib = indecies[idx];
+ bib->st->key_type = ib->st->key_type;
+ // ignore empty indecies
+ if( bidx->st->rootPageId < 0 ) break;
+ // ignore allocator indecies
+ if( bidx->compare == Db::cmprFrSp ) break;
+ if( bidx->compare == Db::cmprAdSp ) break;
+ // entity id indecies are processed below
+ if( !db->entityNmIndex->Find(&ib->st->name[0],0) ) break;
+ IndexBinary *bip = (IndexBinary *)bib;
+ // use cmprLast since index is in-order. Avoids using
+ // user defined class key cmprs and compare functions.
+ bip->compare = cmprLast;
+ bib->st->key_type = ktyBin;
+ ret = bidx->keyCopy(bidx->st->rootPageId, bib);
+ bip->compare = cmprFns[bip->bst->cmprId];
+ bib->st->key_type = ib->st->key_type;
+ break; }
+ // copy string index
+ case idxStr: {
+ IndexString *sidx = (IndexString *)ib;
+ int idx = get_index(&sidx->st->name[0]);
+ if( idx < 0 ) {
int dtSz = sidx->st->dataSz;
- int idx = get_index(&sidx->st->name[0]);
- if( idx < 0 )
- idx = new_string_index(&sidx->st->name[0], dtSz);
+ idx = new_string_index(&sidx->st->name[0], dtSz);
if_err( idx );
- // copy key/data
- if( sidx->st->rootPageId >= 0 )
- ret = sidx->keyCopy(sidx->st->rootPageId, indecies[idx]);
- break; }
}
- if_err( ret );
- if_err( db->flush() );
- if_err( commit(-1) );
+ IndexBase *bib = indecies[idx];
+ bib->st->key_type = ib->st->key_type;
+ if( sidx->st->rootPageId < 0 ) break;
+ // copy key/data
+ ret = sidx->keyCopy(sidx->st->rootPageId, bib);
+ break; }
}
- else
- indecies[id] = 0;
+ if_err( ret );
+ if_err( db->flush() );
+ if_err( commit(-1) );
}
// copy entity indecies/data
IndexBinary *eidx = (IndexBinary *)db->entityIdIndex;
EntityObj(*(EntityObj*)dent.addr(),eid);
if_err( entityIdIndex->Insert(&eid,&nent.obj) );
if_err( entityNmIndex->Insert(&name[0],&eid) );
+ // connect entity allocator
+ char idxNm[nmSz]; memset(idxNm,0,sizeof(idxNm));
+ strncpy(idxNm,name,sizeof(idxNm)-1);
+ strncat(idxNm,".free",sizeof(idxNm)-1);
+ int fidx = get_index(idxNm);
+ if( fidx < 0 ) Err(errCorrupt);
+ memset(idxNm,0,sizeof(idxNm));
+ strncpy(idxNm,name,sizeof(idxNm)-1);
+ strncat(idxNm,".addr",sizeof(idxNm)-1);
+ int aidx = get_index(idxNm);
+ if( aidx < 0 ) Err(errCorrupt);
+ nent->alloc_cache.freeIdx = fidx;
+ nent->alloc_cache.addrIdx = aidx;
}
else if( nid == eid )
if_err( entityIdIndex->Find(&eid,&nent.obj) );
0, cmprFrSt,
cmprAdSt, cmprFrSp,
cmprAdSp, cmprOIds,
- cmprStr, cmprKey,
+ cmprKey, cmprStr,
cmprLast,
};
return 0;
}
+int Db::AllocCache::
+init_idx(Db *db,const char *nm)
+{
+ char idxNm[nmSz];
+ memset(idxNm,0,sizeof(idxNm));
+ snprintf(idxNm,sizeof(idxNm),"%s.free",nm);
+ int fidx = db->new_binary_index(idxNm, sizeof(freeSpaceRecord), 0, cmprFrSp);
+ if_ret( fidx );
+ memset(idxNm,0,sizeof(idxNm));
+ snprintf(idxNm,sizeof(idxNm),"%s.addr",nm);
+ int aidx = db->new_binary_index(idxNm, sizeof(addrSpaceRecord), 0, cmprAdSp);
+ if( aidx < 0 ) db->del_index(fidx);
+ if_ret( aidx );
+ freeIdx = fidx; addrIdx = aidx;
+ loc.id = NIL; loc.offset = 0;
+ avail = 0;
+ return 0;
+}
+
int Db::
init_idx()
{
- if_err( new_binary_index("freeStoreIndex", sizeof(freeStoreRecord), 0, cmprFrSt) );
- if_err( new_binary_index("addrStoreIndex", sizeof(addrStoreRecord), 0, cmprAdSt) );
- if_err( new_binary_index("freeSpaceIndex", sizeof(freeSpaceRecord), 0, cmprFrSp) );
- if_err( new_binary_index("addrSpaceIndex", sizeof(addrSpaceRecord), 0, cmprAdSp) );
if_err( new_binary_index("entityIdIndex", sizeof(int), sizeof(pgRef), cmprOIds) );
if_err( new_binary_index("entityNmIndex", sizeof(char[nmSz]), sizeof(int), cmprStr) );
+ if_err( new_binary_index("freeStoreIndex", sizeof(freeStoreRecord), 0, cmprFrSt) );
+ if_err( new_binary_index("addrStoreIndex", sizeof(addrStoreRecord), 0, cmprAdSt) );
+ if_err( alloc_cache.init_idx(this,"") );
return 0;
}
char name[nmSz]; memset(&name[0],0,sizeof(name));
strncpy(name,nm,sizeof(name)-1);
memmove(&ent->name[0],name,sizeof(name));
- ent->alloc_cache.init();
+ if_err( ent->alloc_cache.init_idx(this,name) );
ent->maxId = 0;
ent->recdSz = sz;
ent->count = 0;
} while( !(status=loc.NextId()) );
if( status != errNotFound )
if_err( status );
+ cacheDelete(ent->alloc_cache);
for( int i=ent->nidxs; --i>=0; ) entity.del_index_(i);
int id = ent->id;
entityIdIndex->Delete(&id);
}
int Db::Entity::
-add_index(int idx)
+add_index(int idx, int kty)
{
EntityLoc nent(this);
// construct EntityObj
nent->nidxs = nidx+1;
if_err( db->deallocate(ent.obj, db->alloc_cache) );
ent.obj = nent.obj;
+ IndexBase *ib = db->indecies[idx];
+ ib->st->key_type = kty;
return 0;
}
return 0;
}
-// get last index id on member accessed with ip
+
int Db::ObjectLoc::
-last(const char *nm,int (ObjectLoc::*ip)())
+last(Index idx, ObjectLoc &last_loc)
{
- int idx; if_ret( idx = entity->get_index(nm) );
- return last(idx, ip);
+ int id = -1;
+ if_ret( idx->Last(0,&id) );
+ if_err( last_loc.FindId(id) );
+ return 0;
}
+// get last index id on member accessed with ip
int Db::ObjectLoc::
-last(int idx,int (ObjectLoc::*ip)())
+last(const char *nm,int (ObjectLoc::*ip)())
{
+ Index idx = entity->index(nm);
+ if( !idx ) Err(errInvalid);
ObjectLoc last_loc(*this);
- int id, ret = entity->index(idx)->Last(0,&id);
- if( ret < 0 ) return ret == errNotFound ? 0 : ret;
- if_ret( entity->index(idxId)->Find((void*)&id, &last_loc.obj) );
+ int ret = last(idx, last_loc);
+ if( ret == errNotFound ) return 0;
+ if_err( ret );
return (last_loc.*ip)();
}
-// get last index unsigned id on member accessed with ip
unsigned int Db::ObjectLoc::
last(const char *nm,unsigned int (ObjectLoc::*ip)())
{
- int idx; if_ret( idx = entity->get_index(nm) );
- return last(idx, ip);
-}
-
-unsigned int Db::ObjectLoc::
-last(int idx,unsigned int (ObjectLoc::*ip)())
-{
+ Index idx = entity->index(nm);
+ if( !idx ) Err(errInvalid);
ObjectLoc last_loc(*this);
- int id, ret = entity->index(idx)->Last(0,&id);
- if( ret < 0 ) return ret == errNotFound ? 0 : ret;
- if_ret( entity->index(idxId)->Find((void*)&id, &last_loc.obj) );
+ int ret = last(idx, last_loc);
+ if( ret == errNotFound ) return 0;
+ if_err( ret );
return (last_loc.*ip)();
}
+
#define cmpr_type(nm,ty) int Db::ObjectLoc:: \
nm(const ty *ap, int asz, const ty *bp, int bsz) { \
int n = asz < bsz ? asz : bsz; \
}
#endif
-int Db::iKey::
-Find()
-{
- if( !idx ) Err(errInvalid);
- int id; if_fail( idx->Find(*this, &id) );
- if_err( loc.entity->index(idxId)->Find(&id, &loc.obj) );
- return 0;
-}
-
-int Db::iKey::
-Locate(int op)
-{
- if( !idx ) Err(errInvalid);
- int id; if_fail( idx->Locate(op, *this,0, 0,&id) );
- if_err( loc.entity->index(idxId)->Find(&id, &loc.obj) );
- return 0;
-}
-
-int Db::rKey::
-First()
-{
- if( !idx ) Err(errInvalid);
- int id; if_fail( idx->First(0,&id) );
- if_err( loc.entity->index(idxId)->Find(&id, &loc.obj) );
- return 0;
-}
-
-int Db::rKey::
-Last()
-{
- if( !idx ) Err(errInvalid);
- int id; if_fail( idx->Last(0,&id) );
- if_err( loc.entity->index(idxId)->Find(&id, &loc.obj) );
- return 0;
-}
-
-int Db::rKey::
-Next()
-{
- if( !idx ) Err(errInvalid);
- int id; if_fail( idx->Next(this,&id) );
- if_err( loc.entity->index(idxId)->Find(&id, &loc.obj) );
- return 0;
-}
-
-int Db::rKey::
-First(pgRef &pos)
-{
- if( !idx ) Err(errInvalid);
- int id; if_fail( idx->First(pos,0,&id) );
- if_err( loc.entity->index(idxId)->Find(&id, &loc.obj) );
- return 0;
-}
-
-int Db::rKey::
-Next(pgRef &pos)
-{
- if( !idx ) Err(errInvalid);
- int id; if_fail( idx->Next(pos,this,&id) );
- if_err( loc.entity->index(idxId)->Find(&id, &loc.obj) );
- return 0;
+#define KeyFn(fn) { \
+ int id = -1; \
+ if_fail( idx->fn ); \
+ if_err( loc.FindId(id) ); \
+ return 0; \
}
-int Db::rKey::
-Locate(int op)
-{
- if( !idx ) Err(errInvalid);
- int id; if_fail( idx->Locate(op, *this,0, 0,&id) );
- if_err( loc.entity->index(idxId)->Find(&id, &loc.obj) );
- return 0;
-}
+int Db::iKey::Find() KeyFn(Find(*this, &id))
+int Db::iKey::Locate(int op) KeyFn(Locate(op, *this,0, 0,&id))
+int Db::rKey::First() KeyFn(First(0,&id))
+int Db::rKey::Last() KeyFn(Last(0,&id))
+int Db::rKey::Next() KeyFn(Next(this,&id))
+int Db::rKey::First(pgRef &pos) KeyFn(First(pos,0,&id))
+int Db::rKey::Next(pgRef &pos) KeyFn(Next(pos,this,&id))
+int Db::rKey::Locate(int op) KeyFn(Locate(op, *this,0, 0,&id))
int Db::ioCmpr(const void *a, const void *b, void *c)
{
pageId *pages = new pageId[npages];
for( int i=0 ; i<npages; ++i ) pages[i] = i;
qsort_r(pages, npages, sizeof(*pages), ioCmpr, this);
- for( int i=0 ; i<npages; ++i )
- pageLoad(pages[i], *get_page(pages[i]));
+ for( int i=0 ; i<npages; ++i ) {
+ pgRef loc; char *op = 0;
+ loc.id = pages[i]; loc.offset = 0;
+ if_err( addrRead(loc, op) );
+ }
delete [] pages;
return 0;
}
+int Db::load_indecies()
+{
+ for( int i=0 ; i<indecies_sz; ++i ) {
+ Index idx = indecies[i];
+ if( !idx || idx->st->rootPageId < 0 ) continue;
+ if_err( idx->keyMap(idx->st->rootPageId, &Db::IndexBase::blockLoad) );
+ }
+ return 0;
+}
+
#include <limits.h>
#include <sys/types.h>
-#define freeStoreIndex indecies[freeStoreIdx]
-#define addrStoreIndex indecies[addrStoreIdx]
-#define freeSpaceIndex indecies[freeSpaceIdx]
-#define addrSpaceIndex indecies[addrSpaceIdx]
#define entityIdIndex indecies[entityIdIdx]
#define entityNmIndex indecies[entityNmIdx]
+#define freeStoreIndex indecies[freeStoreIdx]
+#define addrStoreIndex indecies[addrStoreIdx]
+#define freeSpaceIndex indecies[cache.freeIdx]
+#define addrSpaceIndex indecies[cache.addrIdx]
#define noThrow std::nothrow
#ifndef likely
root_info_offset=4,
root_info_extra_pages = 2,
idxNil=0, idxBin=1, idxStr=2,
+ ktyBin=0, ktyInd=1, ktyDir=2,
opDelete=-1, opFind=0, opInsert=1,
pg_unknown=0, pg_root_info=1, pg_free=2,
pg_entity=0x0100, pg_index=0x1000,
max_entity_type = pg_index-pg_entity-1,
max_index_type = 0x10000-pg_index-1,
min_heap_allocation = 32,
- freeStoreIdx = 0, addrStoreIdx = 1,
- freeSpaceIdx = 2, addrSpaceIdx = 3,
- entityIdIdx = 4, entityNmIdx = 5, usrIdx = 6,
+ entityIdIdx = 0, entityNmIdx = 1,
+ freeStoreIdx = 2, addrStoreIdx = 3,
+ freeSpaceIdx = 4, addrSpaceIdx = 5,
+ usrIdx = 6,
fl_wr=1, fl_rd=2, fl_new=4, fl_free=8,
defaultNoShm = 1,
defaultStoreBlockSize = 8192,
class IndexTypeInfo {
public:
int magic;
- int type; /* type of index */
+ short type; /* type of index */
+ short key_type;
char name[nmSz]; /* index string identifier */
};
}
int blockFree(pageId pid);
int blockRelease(pageId pid);
+ int blockLoad(pageId pid);
int deleteFreeBlocks();
+ void chkLastReset();
void chkLastInsert();
void chkLastDelete();
void chkLastFind(pgRef &last);
int Next(void *rtnKey,void *rtnData) {
return IndexBase::Next(rtnKey,rtnData);
}
-
+ void wr_key(void *kp, char *bp, int sz) {
+ switch( st->key_type ) {
+ case ktyBin: memcpy(bp,kp,sz); break;
+ case ktyDir:
+ case ktyInd: ((Key *)kp)->wr_key(bp); break;
+ }
+ }
char *ikey() { return iky; }
char *tkey() { return tky; }
public:
class AllocCache {
pgRef loc;
int avail;
+ friend class Db;
public:
int cacheFlush(Db *db);
int Get(Db *db,int &size, pgRef &ref);
void dmp() {
printf("loc: %d/%d avl: %d\n", loc.id,loc.offset,avail);
}
+ int freeIdx, addrIdx;
+ int init_idx(Db *db, const char *nm);
} alloc_cache;
- int cacheFlush() {
- return alloc_cache.cacheFlush(this);
- }
+
+ int cacheFlush() { return alloc_cache.cacheFlush(this); }
+ void cacheDelete(AllocCache &cache);
int cache_all_flush();
class PageStorage {
int _fail_(int v) { return entity->db->_fail_(v); }
#endif
- int last(int idx,int (ObjectLoc::*ip)());
+ int last(Index idx,ObjectLoc &last_loc);
int last(const char *nm,int (ObjectLoc::*ip)());
- unsigned int last(int idx,unsigned int (ObjectLoc::*ip)());
unsigned int last(const char *nm,unsigned int (ObjectLoc::*ip)());
};
ObjectLoc &loc;
Index idx;
CmprFn cmpr;
+ virtual int wr_key(char *cp) = 0;
Key(Index i, ObjectLoc &l, CmprFn c) : loc(l), idx(i), cmpr(c) {}
Key(const char *nm, ObjectLoc &l, CmprFn c) : loc(l), cmpr(c) {
idx = loc.entity->index(nm);
#endif
};
- class iKey : public Key {
- public:
- iKey(Index i, ObjectLoc &l, CmprFn c) : Key(i,l,c) {}
- iKey(const char *nm, ObjectLoc &l, CmprFn c) : Key(nm,l,c) {}
- int NextLoc(pgRef &pos) { return idx->NextLoc(pos); }
- int Find();
- int Locate(int op=keyGE);
- };
-
class rKey : public Key {
public:
rKey(Index i, ObjectLoc &l, CmprFn c) : Key(i,l,c) {}
rKey(const char *nm, ObjectLoc &l, CmprFn c) : Key(nm,l,c) {}
+ virtual int wr_key(char *cp=0) { return -1; }
int NextLoc(pgRef &pos) { return idx->NextLoc(pos); }
int First(); int First(pgRef &pos);
int Next(); int Next(pgRef &pos);
int Locate(int op=keyGE);
};
+ class iKey : protected rKey {
+ public:
+ iKey(Index i, ObjectLoc &l, CmprFn c) : rKey(i,l,c) {}
+ iKey(const char *nm, ObjectLoc &l, CmprFn c) : rKey(nm,l,c) {}
+ int NextLoc(pgRef &pos) { return idx->NextLoc(pos); }
+ int Find();
+ int Locate(int op=keyGE);
+ };
+
private:
class EntityObj : public Obj { /* entity storage */
public:
int deallocate(pgRef &obj) { return db->deallocate(obj,ent->alloc_cache); }
int deallocate(ObjectLoc &loc) { return deallocate(loc.obj); }
int get_index(const char *nm, CmprFn cmpr=0);
- int key_index(const char *nm) { return get_index(nm,Db::cmprKey); }
Index index(int i) { return db->indecies[ent->indexs[i]]; }
Index index(const char *nm) {
int idx = get_index(nm);
}
int MaxId() { return ent->maxId; }
int Count() { return ent->count; }
- int add_index(int idx);
+ int add_index(int idx, int kty=ktyBin);
int add_bindex(const char *nm,int keySz,int dataSz) {
int idx = db->new_binary_index(nm,keySz,dataSz);
- if_err( idx ); if_err( add_index(idx) );
- return 0;
+ if_err( idx ); if_err( add_index(idx,ktyBin) );
+ return idx;
}
- int add_kindex(const char *nm) { return add_bindex(nm,0,sizeof(int)); }
- int add_sindex(const char *nm,int dataSz) {
- int idx = db->new_string_index(nm,dataSz);
- if_err( idx ); if_err( add_index(idx) );
- return 0;
+ int add_ind_index(const char *nm) {
+ int idx = db->new_binary_index(nm,0,sizeof(int),Db::cmprKey);
+ if_err( idx ); if_err( add_index(idx,ktyInd) );
+ return idx;
+ }
+ int add_dir_index(const char *nm,int keySz) {
+ int idx = db->new_binary_index(nm,keySz,sizeof(int),Db::cmprKey);
+ if_err( idx ); if_err( add_index(idx,ktyDir) );
+ return idx;
+ }
+ int add_str_index(const char *nm,int dataSz) {
+ int idx = db->new_string_index(nm, dataSz);
+ if_err( idx ); if_err( add_index(idx,ktyDir) );
+ return idx;
}
int del_index_(int idx);
int del_index(int idx);
return addrWrite_(loc, vp, sizeof(allocPrefix));
}
- int objectHeapInsert(int sz,int pg,int off);
- int objectHeapDelete(int sz,int pg,int off);
+ int objectHeapInsert(int sz,int pg,int off,AllocCache &cache);
+ int objectHeapDelete(int sz,int pg,int off,AllocCache &cache);
int objectAllocate(int typ, int &size, pgRef &loc,AllocCache &cache);
- int objectFree(pgRef &loc);
+ int objectFree(pgRef &loc,AllocCache &cache);
int pgRefGet(int &size, pgRef &loc,AllocCache &cache);
int pgRefNew(int &size, pgRef &lo,AllocCache &cache);
int pgRefAllocate(int &size, pgRef &lo,AllocCache &cache);
void error(int v);
void Error(int v,const char *msg);
int load();
+ int load_indecies();
Db();
~Db();
void pdmp();
void fdmp();
void admp(); void achk(); void fchk();
- void edmp();
- void bdmp();
- void stats(int chk=1);
+ void edmp(AllocCache &cache);
+ void bdmp(AllocCache &cache);
+ void cdmp();
+ void stats();
#endif
};
root_info \
dmp \
cpdb \
- add_path_pos \
path_ls \
- dbcvt \
xtv
+# add_path_pos \
+# dbcvt \
+
all: $(TARGETS)
dbtv: dbtv.C
FILE *fp; long pos;
char line[MAX_LINE_SZ];
int no;
- iline(FILE *f) : fp(f), pos(0), no(0) {}
+ iline(FILE *f) : fp(f), pos(0), no(0) { line[0] = 0; }
iline(iline &i) {
fp = i.fp; pos = i.pos;
strcpy(line,i.line); no = i.no;
(1<<ty_media),
text_types = (1<<ty_text) |
(1<<ty_tinytext) | (1<<ty_mediumtext) | (1<<ty_longtext),
+ integer_types = (1<<ty_boolean) | (1<<ty_bit) | (1<<ty_binary) |
+ (1<<ty_tinyint) | (1<<ty_smallint) | (1<<ty_decimal) |
+ (1<<ty_mediumint) | (1<<ty_integer) | (1<<ty_bigint),
+ double_types = (1<<ty_real) | (1<<ty_double) | (1<<ty_float),
};
int is_var() { return (var_types>>ty) & 1; }
- int is_text() { return (text_types>>ty) & 1; }
+ int is_integer() { return (integer_types>>ty) & 1; }
+ int is_double() { return (double_types>>ty) & 1; }
int length, zeroed, is_null, is_autoincr, is_binary, is_unsign, has_def;
iobj *idx;
eobjs eop;
public:
string *name;
dobjs dop;
+ dobj *dobj_of(const char *knm);
- tobj() : name(0), dop(0) {}
+ tobj() : name(0) {}
~tobj() {};
};
list<tobj*> tables;
+tobj *tobj_of(const char *tnm)
+{
+ list<tobj*>::iterator it = tables.begin();
+ list<tobj*>::iterator eit = tables.end();
+ while( it!=eit && *(*it)->name!=tnm ) ++it;
+ return it == eit ? 0 : *it;
+}
-class kobj {
-public:
- string *name;
-
- kobj(string *s) : name(s) {}
- ~kobj() {};
-};
-
-typedef list<kobj> kobjs;
+dobj *tobj::dobj_of(const char *knm)
+{
+ dobjs::iterator eid = dop.end();
+ dobjs::iterator id = dop.begin();
+ while( id!=eid && *(*id)->name!=knm ) ++id;
+ return id == eid ? 0 : *id;
+}
class iobj {
public:
string *name;
- string *tbl;
- list<string *> keys;
- short unique;
- short primary;
- int length;
-
- iobj() : name(0), tbl(0), unique(0), primary(0), length(-1) {}
+ tobj *tbl;
+ dobjs keys;
+ short unique, primary;
+ int is_dir;
+ int is_direct();
+ iobj() : name(0), tbl(0), unique(0), primary(0), is_dir(-1) {}
~iobj() {};
};
list<iobj*> indecies;
-
class robj {
public:
string *name;
dp->idx = idx;
idx->name = new string(*dp->name);
idx->name->push_back('_');
- idx->tbl = new string(*dp->top->name);
+ idx->tbl = dp->top;
idx->unique = unique;
idx->primary = primary;
- idx->keys.push_back(dp->name);
+ idx->keys.push_back(dp);
indecies.push_back(idx);
return 0;
}
int ch = *tws(cp); expect('(');
for(;;) {
dobj *dp = new dobj(top);
- if( member(cp,dp) < 0 ) return -1;
+ if( member(cp,dp) < 0 ) {
+ printf(" err in %s/%s at %d\n",id->c_str(),dp->name->c_str(),cp.no);
+ delete dp;
+ return -1;
+ }
top->dop.push_back(dp);
if( (ch=*tws(cp)) == ')' ) break;
expect(',');
return 0;
}
+int iobj::is_direct()
+{
+ if( is_dir < 0 ) {
+ is_dir = 1;
+ dobjs::iterator ekey = keys.end();
+ dobjs::iterator key = keys.begin();
+ for( int i=0; key!=ekey; ++i ) {
+ dobj *dp = *key++;
+ if( dp->is_integer() ) continue;
+ if( dp->is_double() ) continue;
+ is_dir = 0; break;
+ }
+ }
+ return is_dir;
+}
+
// scan (number)
int keylen(ichar &cp, iobj *ip)
{
n = n*10 + ch; ch = *++cp;
}
ch = *tws(cp); expect(')');
- ip->length = n;
}
return 0;
}
if( !(id=tid(cp)) ) return -1;
if( *id != "On" ) return -1;
if( !(id=tid(cp)) ) return -1;
- iop->tbl = id;
+ tobj *tp = tobj_of(id->c_str());
+ if( !tp ) {
+ printf("index err On:%s at %d\n",id->c_str(),cp.no);
+ return -1;
+ }
+ iop->tbl = tp;
int ch = *tws(cp); expect('(');
if( !(id=tid(cp)) ) return -1;
- iop->keys.push_back(id);
+ dobj *dp = tp->dobj_of(id->c_str());
+ if( !dp ) {
+ printf("index err Key:%s/%s at %d\n",tp->name->c_str(),id->c_str(),cp.no);
+ return -1;
+ }
+ iop->keys.push_back(dp);
if( keylen(cp,iop) < 0 ) return -1;
while( *tws(cp) == ',' ) {
if( !(id=tid(++cp)) ) return -1;
- iop->keys.push_back(id);
+ dp = tp->dobj_of(id->c_str());
+ if( !dp ) {
+ printf("index err Key:%s/%s at %d\n",tp->name->c_str(),id->c_str(),cp.no);
+ return -1;
+ }
+ iop->keys.push_back(dp);
if( keylen(cp,iop) < 0 ) return -1;
}
ch = *tws(cp); expect(')');
iobj *iop = new iobj();
if( index(cp, iop) < 0 ) {
delete iop;
+ printf("== FAILED!\n");
return -1;
}
if( modifier == unique ) iop->unique = 1;
return -1;
}
-#if 0
-void put_args(FILE *sp, tobj *tp, iobj *ip)
-{
- list<string*>::iterator ekey=ip->keys.end();
- list<string*>::iterator key=ip->keys.begin();
- if( key == ekey ) return;
-
- for(;;) {
- const char *knm = (*key)->c_str();
-
- list<dobj*>::iterator eid = tp->dop.end();
- list<dobj*>::iterator id = tp->dop.begin();
- while( id!=eid && *(*id)->name!=knm ) ++id;
- if( id == eid ) {
- fprintf(stderr," error: cant find index key %s in %s\n",knm,tp->name->c_str());
- continue;
- }
-
- dobj *dp = *id;
- const char *nm = dp->name->c_str();
- fprintf(sp,"%s::t_%s &%s",tp->name->c_str(),nm,nm);
- if( ++key == ekey ) break;
- fprintf(sp, ", ");
- }
-}
-#endif
-
-#if 0
-void varg_dobj(FILE *sp, dobj *dp, const char *ty, int is_unsign=-1)
-{
- if( is_unsign < 0 ) is_unsign = dp->is_unsign;
- if( is_unsign > 0 ) fprintf(sp, "unsigned ");
- fprintf(sp,"%s *%s", ty, dp->name->c_str());
-}
-#else
void varg_dobj(FILE *sp, dobj *dp, const char *ty, int is_unsign=-1)
{
const char *tnm = dp->top->name->c_str();
const char *nm = dp->name->c_str();
fprintf(sp,"const %sObj::t_%s &%s", tnm, nm, nm);
}
-#endif
void arg_dobj(FILE *sp, dobj *dp, const char *ty, int is_unsign=-1)
{
void put_targs(FILE *sp, tobj *tp, iobj *ip)
{
- list<string*>::iterator ekey=ip->keys.end();
- list<string*>::iterator key=ip->keys.begin();
+ dobjs::iterator ekey=ip->keys.end();
+ dobjs::iterator key=ip->keys.begin();
- for( ; key != ekey; ) {
- const char *knm = (*key)->c_str(); ++key;
- list<dobj*>::iterator eid = tp->dop.end();
- list<dobj*>::iterator id = tp->dop.begin();
- while( id!=eid && *(*id)->name!=knm ) ++id;
- if( id == eid ) {
- fprintf(stderr," error: cant find index key %s in %s\n",knm,tp->name->c_str());
- continue;
- }
- dobj *dp = *id;
- if( dp->ty == dobj::ty_none ) {
+ while( key != ekey ) {
+ dobj *dp = *key++;
+ if( !dp || dp->ty == dobj::ty_none ) {
fprintf(stderr," %s member %s error: ty_none\n",
tp->name->c_str(),dp->name->c_str());
continue;
}
fprintf(sp," ");
arg_dobj(sp, dp);
- if( key == ekey ) continue;
+ if( key == ekey ) break;
fprintf(sp,",\n");
}
}
-void typ_dobj(FILE *sp, dobj *dp)
+const char *typ_dobj(dobj *dp)
{
const char *cp;
switch( dp->ty ) {
case dobj::ty_media: cp = "unsigned char"; break;
default: cp = "unimplemented"; break;
}
- fprintf(sp,"%s",cp);
+ return cp;
}
-void put_keys(FILE *sp, tobj *tp, iobj *ip)
+void put_keysz(FILE *sp, tobj *tp, iobj *ip)
{
- list<string*>::iterator ekey=ip->keys.end();
- list<string*>::iterator key=ip->keys.begin();
+ dobjs::iterator ekey=ip->keys.end();
+ dobjs::iterator key=ip->keys.begin();
const char *tnm = tp->name->c_str();
- for( ; key != ekey; ++key ) {
- const char *knm = (*key)->c_str();
+ while( key != ekey ) {
+ dobj *dp = *key++;
+ const char *nm = dp->name->c_str();
+ fprintf(sp," +sizeof(%sObj::t_%s)", tnm, nm);
+ }
+ if( ip->unique <= 0 ) fprintf(sp,"+sizeof(int)");
+}
- list<dobj*>::iterator eid = tp->dop.end();
- list<dobj*>::iterator id = tp->dop.begin();
- while( id!=eid && *(*id)->name!=knm ) ++id;
- if( id == eid ) {
- fprintf(stderr," error: cant find index key %s in %s\n", knm, tnm);
- continue;
- }
+void put_keys(FILE *sp, tobj *tp, iobj *ip)
+{
+ dobjs::iterator ekey = ip->keys.end();
+ dobjs::iterator key = ip->keys.begin();
+ const char *tnm = tp->name->c_str();
- dobj *dp = *id;
+ while( key != ekey ) {
+ dobj *dp = *key++;
const char *nm = dp->name->c_str();
fprintf(sp," %sObj::t_%s v_%s;\n", tnm, nm, nm);
}
void put_init(FILE *sp, tobj *tp, iobj *ip)
{
- list<string*>::iterator ekey=ip->keys.end();
- list<string*>::iterator key;
+ dobjs::iterator ekey = ip->keys.end();
+ dobjs::iterator key = ip->keys.begin();
- for( key=ip->keys.begin(); key!=ekey; ++key ) {
- const char *knm = (*key)->c_str();
-
- list<dobj*>::iterator eid = tp->dop.end();
- list<dobj*>::iterator id = tp->dop.begin();
- while( id!=eid && *(*id)->name!=knm ) ++id;
- if( id == eid ) {
- fprintf(stderr," error: cant find index key %s in %s\n",knm,tp->name->c_str());
- continue;
- }
-
- dobj *dp = *id;
+ while( key != ekey ) {
+ dobj *dp = *key++;
const char *nm = dp->name->c_str();
fprintf(sp,",\n v_%s(%s)", nm, nm);
}
}
-void put_cmpr(FILE *sp, dobj *dp)
+const char *put_cmpr(dobj *dp)
{
const char *cp;
switch( dp->ty ) {
case dobj::ty_media: cp = "media"; break;
default: cp = "unimplemented"; break;
}
- fprintf(sp,"%s",cp);
+ return cp;
}
-void put_rcmpr(FILE *sp, tobj *tp, iobj *ip)
+void put_rkey(FILE *sp, tobj *tp, iobj *ip)
{
- list<string*>::iterator ekey=ip->keys.end();
- list<string*>::iterator skey=ip->keys.begin();
- list<string*>::iterator key;
+ dobjs::iterator ekey=ip->keys.end();
+ dobjs::iterator key=ip->keys.begin();
- for( key=skey; key!=ekey; ++key ) {
- const char *knm = (*key)->c_str();
+ while( key != ekey ) {
+ dobj *dp = *key++;
+ const char *nm = dp->name->c_str();
+ fprintf(sp," if( bp ) memcpy(cp, kloc._%s(), kloc.size_%s());\n", nm, nm);
+ fprintf(sp," cp += kloc.size_%s();\n", nm);
+ }
+ if( ip->unique <= 0 ) {
+ fprintf(sp," if( bp ) memcpy(cp, kloc._id(), kloc._id_size());\n");
+ fprintf(sp," cp += kloc._id_size();\n");
+ }
+}
- list<dobj*>::iterator eid = tp->dop.end();
- list<dobj*>::iterator id = tp->dop.begin();
- while( id!=eid && *(*id)->name!=knm ) ++id;
- if( id == eid ) {
- fprintf(stderr," error: cant find index key %s in %s\n",knm,tp->name->c_str());
- continue;
- }
+void dir_rcmpr(FILE *sp, tobj *tp, iobj *ip)
+{
+ dobjs::iterator ekey=ip->keys.end();
+ dobjs::iterator key=ip->keys.begin();
+
+ while( key != ekey ) {
+ dobj *dp = *key++;
+ fprintf(sp," { %s vv", typ_dobj(dp));
+ if( dp->length > 0 ) fprintf(sp, "[%d]", dp->length);
+ fprintf(sp,"; memcpy(&vv,b,sizeof(vv)); b += sizeof(vv);\n");
+ fprintf(sp," int v = cmpr_%s", put_cmpr(dp));
+ const char *nm = dp->name->c_str();
+ fprintf(sp,"( kloc._%s(), kloc->v_%s.size(), &vv", nm, nm);
+ if( dp->length > 0 ) fprintf(sp, "[0]");
+ fprintf(sp,", sizeof(vv));\n");
+ fprintf(sp," if( v != 0 ) return v; }\n");
+ }
+ if( ip->unique <= 0 ) {
+ fprintf(sp," int vid; memcpy(&vid,b,sizeof(vid)); b += sizeof(vid);\n");
+ fprintf(sp," int v = cmpr_int(kloc._id(), kloc._id_size(), &vid, sizeof(vid));\n");
+ fprintf(sp," if( v != 0 ) return v;\n");
+ }
+}
- dobj *dp = *id;
+void ind_rcmpr(FILE *sp, tobj *tp, iobj *ip)
+{
+ fprintf(sp," int b_id; memcpy(&b_id,b,sizeof(b_id));\n");
+ fprintf(sp," if( kloc->id == b_id ) return 0;\n");
+ fprintf(sp," %sLoc vloc(kloc.entity);\n", tp->name->c_str());
+ fprintf(sp," if( vloc.FindId(b_id) )\n");
+ fprintf(sp," kloc.err_(Db::errCorrupt);\n");
+ dobjs::iterator ekey=ip->keys.end();
+ dobjs::iterator key=ip->keys.begin();
+
+ while( key != ekey ) {
+ dobj *dp = *key++;
const char *nm = dp->name->c_str();
- fprintf(sp," v = cmpr_"); put_cmpr(sp,dp);
+ fprintf(sp," { int v = cmpr_%s", put_cmpr(dp));
fprintf(sp,"( kloc._%s(), kloc->v_%s.size(),\n", nm, nm);
fprintf(sp," vloc._%s(), vloc->v_%s.size());\n", nm, nm);
- fprintf(sp," if( v != 0 ) return v;\n");
+ fprintf(sp," if( v != 0 ) return v; }\n");
}
if( ip->unique <= 0 ) {
- fprintf(sp," v = cmpr_int(kloc._id(), kloc._id_size(),\n");
+ fprintf(sp," { int v = cmpr_int(kloc._id(), kloc._id_size(),\n");
fprintf(sp," vloc._id(), vloc._id_size());\n");
- fprintf(sp," if( v != 0 ) return v;\n");
+ fprintf(sp," if( v != 0 ) return v; }\n");
}
}
-void put_icmpr(FILE *sp, tobj *tp, iobj *ip)
+void dir_icmpr(FILE *sp, tobj *tp, iobj *ip)
{
- list<string*>::iterator ekey=ip->keys.end();
- list<string*>::iterator skey=ip->keys.begin();
- list<string*>::iterator key;
+ dobjs::iterator ekey=ip->keys.end();
+ dobjs::iterator key=ip->keys.begin();
+
+ while( key != ekey ) {
+ dobj *dp = *key++;
+ fprintf(sp," { %s vv", typ_dobj(dp));
+ if( dp->length > 0 ) fprintf(sp, "[%d]", dp->length);
+ fprintf(sp,"; memcpy(&vv,b,sizeof(vv)); b += sizeof(vv);\n");
+ fprintf(sp," int v = cmpr_%s", put_cmpr(dp));
+ const char *nm = dp->name->c_str();
+ fprintf(sp,"( kp->v_%s.addr(), kp->v_%s.size(), &vv", nm, nm);
+ if( dp->length > 0 ) fprintf(sp, "[0]");
+ fprintf(sp,", sizeof(vv));\n");
+ fprintf(sp," if( v != 0 ) return v; }\n");
+ }
+ if( ip->unique <= 0 ) {
+ fprintf(sp," if( kp->v_id >= 0 ) {\n");
+ fprintf(sp," int vid; memcpy(&vid,b,sizeof(vid)); b += sizeof(vid);\n");
+ fprintf(sp," int v = cmpr_int(&kp->v_id, sizeof(kp->v_id), &vid, sizeof(vid));\n");
+ fprintf(sp," if( v != 0 ) return v;\n");
+ fprintf(sp," }\n");
+ }
+}
- for( key=skey; key!=ekey; ++key ) {
- const char *knm = (*key)->c_str();
+void ind_icmpr(FILE *sp, tobj *tp, iobj *ip)
+{
+ fprintf(sp," int b_id; memcpy(&b_id,b,sizeof(b_id)); b += sizeof(b_id);\n");
+ if( ip->unique <= 0 ) fprintf(sp," if( kp->v_id == b_id ) return 0;\n");
+ fprintf(sp," %sLoc vloc(kp->loc.entity);\n", tp->name->c_str());
+ fprintf(sp," if( vloc.FindId(b_id) )\n");
+ fprintf(sp," vloc.err_(Db::errCorrupt);\n");
- list<dobj*>::iterator eid = tp->dop.end();
- list<dobj*>::iterator id = tp->dop.begin();
- while( id!=eid && *(*id)->name!=knm ) ++id;
- if( id == eid ) {
- fprintf(stderr," error: cant find index key %s in %s\n",knm,tp->name->c_str());
- continue;
- }
+ dobjs::iterator ekey=ip->keys.end();
+ dobjs::iterator key=ip->keys.begin();
- dobj *dp = *id;
+ while( key != ekey ) {
+ dobj *dp = *key++;
const char *nm = dp->name->c_str();
- fprintf(sp," v = cmpr_"); put_cmpr(sp,dp);
+ fprintf(sp," { int v = cmpr_%s", put_cmpr(dp));
fprintf(sp,"( kp->v_%s.addr(), kp->v_%s.size(),\n", nm, nm);
fprintf(sp," vloc._%s(), vloc->v_%s.size());\n", nm, nm);
- fprintf(sp," if( v != 0 ) return v;\n");
+ fprintf(sp," if( v != 0 ) return v; }\n");
}
if( ip->unique <= 0 ) {
fprintf(sp," if( kp->v_id >= 0 ) {\n");
- fprintf(sp," v = cmpr_int(&kp->v_id, sizeof(kp->v_id),\n");
+ fprintf(sp," int v = cmpr_int(&kp->v_id, sizeof(kp->v_id),\n");
fprintf(sp," vloc._id(), vloc._id_size());\n");
fprintf(sp," if( v != 0 ) return v;\n");
fprintf(sp," }\n");
list<tobj*>::iterator eit = tables.end();
list<tobj*>::iterator it;
+ list<iobj*>::iterator sidx = indecies.begin();
+ list<iobj*>::iterator eidx = indecies.end();
+ list<iobj*>::iterator idx;
+
+ for( idx=sidx; idx!=eidx; ++idx ) {
+ iobj *ip = *idx;
+ ip->is_dir = ip->is_direct();
+ }
+
int i=0;
for( it=sit ; it!=eit; ++i, ++it ) {
tobj *tp = *it;
fprintf(sp,"};\n");
fprintf(sp,"\n");
- list<iobj*>::iterator sidx=indecies.begin();
- list<iobj*>::iterator eidx=indecies.end();
- list<iobj*>::iterator idx;
-
int j = 0, n = 0;
for( idx=sidx; idx!=eidx; ++idx ) {
- if( *(*idx)->tbl != *(*it)->name ) continue;
+ iobj *ip = *idx;
+ if( ip->tbl != tp ) continue;
++n;
- printf(" %2d.%d. %s on %s(",i,j++,
- (*idx)->name->c_str(),(*idx)->tbl->c_str());
- list<string*>::iterator skey=(*idx)->keys.begin();
- list<string*>::iterator ekey=(*idx)->keys.end();
- list<string*>::iterator key;
- for( key=skey; key!=ekey; ++key )
- printf(" %s", (*key)->c_str());
+ printf(" %2d.%d%c %s on %s(",i,j++,
+ ip->is_dir>0 ? '=' : '.',
+ ip->name->c_str(),tp->name->c_str());
+ dobjs::iterator ekey=ip->keys.end();
+ dobjs::iterator key=ip->keys.begin();
+
+ while( key != ekey ) {
+ dobj *dp = *key++;
+ printf(" %s", dp->name->c_str());
+ }
printf(" )\n");
}
if( n > 0 ) printf("\n");
}
for( idx=sidx; idx!=eidx; ++idx ) {
- if( *(*idx)->tbl != *(*it)->name ) continue;
- const char *knm = (*idx)->name->c_str();
+ iobj *ip = *idx;
+ if( ip->tbl != tp ) continue;
+ const char *knm = ip->name->c_str();
+ fprintf(sp,"\n");
+ fprintf(sp," class key_%s { public:\n", knm);
+ fprintf(sp," static const int size() { return 0");
+ put_keysz(sp, *it, ip);
+ fprintf(sp,"; }\n");
+ fprintf(sp," };\n");
fprintf(sp,"\n");
fprintf(sp," class ikey_%s : public Db::iKey { public:\n", knm);
- put_keys(sp, *it, *idx);
- fprintf(sp," static int cmpr(char *a, char *b);\n");
+ put_keys(sp, *it, ip);
+ fprintf(sp," static int icmpr(char *a, char *b);\n");
// key constructors
fprintf(sp," ikey_%s(ObjectLoc &loc,\n", knm);
- put_targs(sp, *it, *idx);
- if( (*idx)->unique <= 0 ) fprintf(sp,", int id=-1");
- fprintf(sp,")\n : iKey(\"%s\",loc,cmpr)", knm);
- put_init(sp, *it, *idx);
- if( (*idx)->unique <= 0 ) fprintf(sp,",\n v_id(id)");
+ put_targs(sp, *it, ip);
+ if( ip->unique <= 0 ) fprintf(sp,", int id=-1");
+ fprintf(sp,")\n : iKey(\"%s\",loc,icmpr)", knm);
+ put_init(sp, *it, ip);
+ if( ip->unique <= 0 ) fprintf(sp,",\n v_id(id)");
fprintf(sp," {}\n");
fprintf(sp," };\n");
fprintf(sp," class rkey_%s : public Db::rKey { public:\n", knm);
- fprintf(sp," static int cmpr(char *a, char *b);\n");
- fprintf(sp," rkey_%s(ObjectLoc &loc) : rKey(\"%s\",loc,cmpr)", knm, knm);
- fprintf(sp," {}\n");
+ fprintf(sp," static int rcmpr(char *a, char *b);\n");
+ fprintf(sp," rkey_%s(ObjectLoc &loc) : rKey(\"%s\",loc,rcmpr) {}\n", knm, knm);
+ fprintf(sp," int wr_key(char *cp=0);\n");
fprintf(sp," };\n");
}
fprintf(sp,"\n");
for( it=sit ; it!=eit; ++it ) {
tobj *tp = *it;
const char * tnm = tp->name->c_str();
- list<iobj*>::iterator sidx=indecies.begin();
- list<iobj*>::iterator eidx=indecies.end();
- list<iobj*>::iterator idx;
for( idx=sidx; idx!=eidx; ++idx ) {
- if( *(*idx)->tbl != *(*it)->name ) continue;
- const char *knm = (*idx)->name->c_str();
+ iobj *ip = *idx;
+ if( ip->tbl != tp ) continue;
+ const char *knm = ip->name->c_str();
fprintf(sp,"\n");
fprintf(sp,"int %sLoc::ikey_%s::\n", tnm, knm);
- fprintf(sp,"cmpr(char *a, char *b)\n");
+ fprintf(sp,"icmpr(char *a, char *b)\n");
fprintf(sp,"{\n");
fprintf(sp," ikey_%s *kp = (ikey_%s *)a;\n", knm, knm);
- fprintf(sp," int v = *(int*)b;\n");
- if( (*idx)->unique <= 0 ) fprintf(sp," if( kp->v_id == v ) return 0;\n");
- fprintf(sp," %sLoc vloc(kp->loc.entity);\n", tnm);
- fprintf(sp," if( vloc.FindId(v) )\n");
- fprintf(sp," vloc.err_(Db::errCorrupt);\n");
- put_icmpr(sp, tp, *idx);
+ (ip->is_dir>0 ? dir_icmpr : ind_icmpr)(sp, tp, ip);
fprintf(sp," return 0;\n");
fprintf(sp,"}\n");
- fprintf(sp,"\n");
fprintf(sp,"int %sLoc::rkey_%s::\n", tnm, knm);
- fprintf(sp,"cmpr(char *a, char *b)\n");
+ fprintf(sp,"rcmpr(char *a, char *b)\n");
fprintf(sp,"{\n");
fprintf(sp," rkey_%s *kp = (rkey_%s *)a;\n", knm, knm);
fprintf(sp," %sLoc &kloc = (%sLoc&)kp->loc;\n", tnm, tnm);
- fprintf(sp," int v = kloc->id, b_id = *(int*)b;\n");
- fprintf(sp," if( v == b_id ) return 0;\n");
- fprintf(sp," %sLoc vloc(kloc.entity);\n", tnm);
- fprintf(sp," if( vloc.FindId(b_id) )\n");
- fprintf(sp," kloc.err_(Db::errCorrupt);\n");
- put_rcmpr(sp, tp, *idx);
+ (ip->is_dir>0 ? dir_rcmpr : ind_rcmpr)(sp, tp, ip);
fprintf(sp," return 0;\n");
fprintf(sp,"}\n");
+ fprintf(sp,"int %sLoc::rkey_%s::\n", tnm, knm);
+ fprintf(sp,"wr_key(char *bp)\n");
+ fprintf(sp,"{\n");
+ fprintf(sp," char *cp = bp;\n");
+ fprintf(sp," %sLoc &kloc = (%sLoc&)loc;\n", tnm, tnm);
+ put_rkey(sp, tp, ip);
+ fprintf(sp," return cp-bp;\n");
+ fprintf(sp,"}\n");
}
fprintf(sp,"\n");
fprintf(sp,"int %sLoc::Allocate()\n", tnm);
const char *dnm = dp->name->c_str();
if( dp->is_autoincr > 0 && dp->idx ) {
const char *inm = dp->idx->name->c_str();
- fprintf(sp," { "); typ_dobj(sp, dp);
+ fprintf(sp," { %s", typ_dobj(dp));
fprintf(sp," (%sLoc::*fn)() = &%sLoc::%s;\n", tnm, tnm, dnm);
- fprintf(sp," "); typ_dobj(sp, dp);
- fprintf(sp," v = last(\"%s\",(", inm); typ_dobj(sp, dp);
+ fprintf(sp," %s", typ_dobj(dp));
+ fprintf(sp," v = last(\"%s\",(%s", inm, typ_dobj(dp));
fprintf(sp," (Db::ObjectLoc::*)())fn); %s(v+1); }\n", dnm);
}
if( dp->has_def > 0 ) {
case dobj::ty_mediumblob:
case dobj::ty_longblob:
case dobj::ty_media: {
- fprintf(sp," %s((", dnm); typ_dobj(sp,dp);
+ fprintf(sp," %s((%s", dnm, typ_dobj(dp));
fprintf(sp," *)\"%s\",%d);\n", dp->def.s->c_str(), (int)dp->def.s->size());
break; }
default:
fprintf(sp," if_err( construct() );\n");
n = 0;
for( idx=sidx; idx!=eidx; ++idx ) {
- if( *(*idx)->tbl != *(*it)->name ) continue;
- if( !n++ ) fprintf(sp," int id = this->id();\n");
- const char *knm = (*idx)->name->c_str();
+ iobj *ip = *idx;
+ if( ip->tbl != tp ) continue;
+ const char *knm = ip->name->c_str();
fprintf(sp," { rkey_%s rkey(*this);\n",knm);
- fprintf(sp," if_err( entity->index(\"%s\")->Insert(rkey,&id) ); }\n",knm);
+ fprintf(sp," if_err( entity->index(\"%s\")->Insert(rkey,(void*)_id()) ); }\n", knm);
}
fprintf(sp," if_err( insertCascade() );\n");
fprintf(sp," return 0;\n");
fprintf(sp,"{\n");
fprintf(sp," if_err( deleteProhibit() );\n");
for( idx=sidx; idx!=eidx; ++idx ) {
- if( *(*idx)->tbl != *(*it)->name ) continue;
- const char *knm = (*idx)->name->c_str();
+ iobj *ip = *idx;
+ if( ip->tbl != tp ) continue;
+ const char *knm = ip->name->c_str();
fprintf(sp," { rkey_%s rkey(*this);\n",knm);
fprintf(sp," if_err( entity->index(\"%s\")->Delete(rkey) ); }\n",knm);
}
tobj *tp = *it;
const char *tnm = tp->name->c_str();
fprintf(sp," if_ret( %s.new_entity(\"%s\", sizeof(%sObj)) );\n", tnm, tnm, tnm);
- list<iobj*>::iterator sidx=indecies.begin();
- list<iobj*>::iterator eidx=indecies.end();
- list<iobj*>::iterator idx;
for( idx=sidx; idx!=eidx; ++idx ) {
- if( *(*idx)->tbl != *(*it)->name ) continue;
- const char *nm = (*idx)->name->c_str();
- fprintf(sp," if_ret( %s.add_kindex(\"%s\") );\n", tnm, nm);
+ iobj *ip = *idx;
+ if( ip->tbl != tp ) continue;
+ const char *nm = ip->name->c_str();
+ if( ip->is_dir > 0 )
+ fprintf(sp," if_ret( %s.add_dir_index(\"%s\", %sLoc::key_%s::size()) );\n",
+ tnm, nm, tnm, nm);
+ else
+ fprintf(sp," if_ret( %s.add_ind_index(\"%s\") );\n", tnm, nm);
}
fprintf(sp,"\n");
}
tobj *tp = *it;
const char *tnm = tp->name->c_str();
fprintf(sp," if_ret( %s.get_entity(\"%s\") );\n", tnm, tnm);
- list<iobj*>::iterator sidx=indecies.begin();
- list<iobj*>::iterator eidx=indecies.end();
- list<iobj*>::iterator idx;
for( idx=sidx; idx!=eidx; ++idx ) {
- if( *(*idx)->tbl != *(*it)->name ) continue;
- const char *nm = (*idx)->name->c_str();
- fprintf(sp," if_ret( %s.key_index(\"%s\") );\n", tnm, nm);
+ iobj *ip = *idx;
+ if( ip->tbl != tp ) continue;
+ const char *nm = ip->name->c_str();
+ fprintf(sp," if_ret( %s.get_index(\"%s\") );\n", tnm, nm);
}
fprintf(sp,"\n");
}
msgstr ""
"Project-Id-Version: cinelerra 5.1\n"
"Report-Msgid-Bugs-To: cinelerra@lists.cinelerra-cv.org\n"
-"POT-Creation-Date: 2016-02-22 11:56+0100\n"
-"PO-Revision-Date: 2016-02-22 12:00+0100\n"
-"Last-Translator: good guy <goodguy@translate.google.com>\n"
-"Language-Team: it <it@li.org>\n"
-"Language: it\n"
+"POT-Creation-Date: 2016-07-25 17:48-0400\n"
+"PO-Revision-Date: 2016-07-26 00:35+0200\n"
+"Last-Translator: Nicola Ferralis <feranick@hotmail.com>\n"
+"Language-Team: feranick@hotmail.com\n"
+"Language: it_IT\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: cinelerra//preferencesthread.C:621
msgid "OK"
msgstr "OK"
-#msgstr ""
#: guicast//bcbutton.C:324 guicast//bcbutton.C:332 guicast//bcbutton.C:340
#: guicast//bcbutton.C:519 guicast//bcbutton.C:521 guicast//bcbutton.C:528
#, c-format
msgid "BC_DisplayInfo::init_window: cannot open display \"%s\".\n"
msgstr "BC_DisplayInfo::init_window: cannot open display \"%s\".\n"
-#msgstr ""
#: guicast//bcdisplayinfo.C:244
#, c-format
#: plugins/reverb/reverbwindow.C:239
msgid "File"
msgstr "File"
-#msgstr ""
#: guicast//bcfilebox.inc:43
msgid "Size"
#: guicast//bcfilebox.inc:45
msgid "Ext."
msgstr "Ext."
-#msgstr ""
#: guicast//bcnewfolder.C:60 cinelerra//newfolder.C:60
msgid "Enter the name of the folder:"
#: guicast//units.h:48 cinelerra//patchbay.C:84
msgid "Frames"
msgstr "Frames"
-#msgstr ""
#: guicast//units.h:60
msgid "Feet-frames"
"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;\n"
"without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n"
"PURPOSE. See the GNU General Public License for more details.\n"
-#msgstr ""
#: cinelerra//adcuts.C:30
#, c-format
#: cinelerra//vdeviceprefs.C:418 cinelerra//vdeviceprefs.C:429
#: cinelerra//vdeviceprefs.C:446
msgid "Device path:"
-msgstr "Percorso perif.:"
+msgstr "Percorso Disp:"
#: cinelerra//adeviceprefs.C:318 cinelerra//adeviceprefs.C:384
#: cinelerra//adeviceprefs.C:569 cinelerra//adeviceprefs.C:586
#: cinelerra//fileformat.C:89 cinelerra//formatwindow.C:48
msgid "Bits:"
msgstr "Bits:"
-#msgstr ""
#: cinelerra//adeviceprefs.C:365
msgid "Device:"
-msgstr "Periferica:"
+msgstr "Dispositivo:"
#: cinelerra//adeviceprefs.C:396
msgid "Stop playback locks up."
#: cinelerra//adeviceprefs.C:423
msgid "Server:"
msgstr "Server:"
-#msgstr ""
#: cinelerra//adeviceprefs.C:441 cinelerra//adeviceprefs.C:492
#: cinelerra//interfaceprefs.C:194 cinelerra//performanceprefs.C:202
#: cinelerra//adeviceprefs.C:472 cinelerra//vdeviceprefs.C:329
msgid "Device Path:"
-msgstr "Percorso Periferica:"
+msgstr "Percorso Dispositivo:"
#: cinelerra//adeviceprefs.C:512 cinelerra//channeledit.C:1037
#: cinelerra//vdeviceprefs.C:365
#, c-format
msgid "Plugin %d"
msgstr "Plugin %d"
-#msgstr ""
#: cinelerra//apanel.C:89 cinelerra//gwindowgui.C:57 cinelerra//mainmenu.C:233
msgid "Mute"
-msgstr "Muto"
+msgstr "Muta"
#: cinelerra//apanel.C:101
msgid "Play"
#: cinelerra//assetedit.C:225
msgid ": Asset Info"
msgstr ": Asset Info"
-#msgstr ""
#: cinelerra//assetedit.C:295
msgid ": Asset path"
#: cinelerra//assetedit.C:310
msgid "Bytes:"
-msgstr "Byte:"
+msgstr "Bytes:"
#: cinelerra//assetedit.C:339
msgid "Bitrate (bits/sec):"
-msgstr "Bitrate (bit / sec):"
+msgstr "Bitrate (bits/sec):"
#: cinelerra//assetedit.C:354 cinelerra//formattools.C:223
msgid "Audio:"
msgstr "Audio:"
-#msgstr ""
#: cinelerra//assetedit.C:362 cinelerra//assetedit.C:507
#: cinelerra//fileexr.C:598 cinelerra//fileffmpeg.C:481
#: cinelerra//assetedit.C:469 cinelerra//assetedit.C:882
msgid "Lo-Hi"
msgstr "Lo-Hi"
-#msgstr ""
#: cinelerra//assetedit.C:471 cinelerra//assetedit.C:900
msgid "Hi-Lo"
msgstr "Hi-Lo"
-#msgstr ""
#: cinelerra//assetedit.C:485
msgid "Values are unsigned"
#: cinelerra//assetedit.C:500 cinelerra//formattools.C:260
msgid "Video:"
msgstr "Video:"
-#msgstr ""
#: cinelerra//assetedit.C:518 cinelerra//setformat.C:394
msgid "Frame rate:"
#: cinelerra//assetedit.C:579
msgid "Asset's interlacing:"
-msgstr "Migliora interlaccio"
+msgstr "Interlaccio Elemento"
#: cinelerra//assetedit.C:593
msgid "Interlace correction:"
#: cinelerra//assetpopup.C:136
msgid "Info..."
-msgstr "Info ..."
+msgstr "Info..."
#: cinelerra//assetpopup.C:177
msgid "Rebuild index"
#: cinelerra//awindowgui.C:1946
msgid "Edit information on asset"
-msgstr "Edita le informazioni sull'elemento"
+msgstr "Modifica le informazioni sull'elemento"
#: cinelerra//awindowgui.C:1960
msgid "Redraw index"
#: cinelerra//batch.C:94
msgid "Ok"
msgstr "Ok"
-#msgstr ""
#: cinelerra//batch.C:98 cinelerra//batch.C:102
msgid "New file"
#: cinelerra//batchrender.C:75
msgid "Shift-B"
msgstr "Shift-B"
-#msgstr ""
#: cinelerra//batchrender.C:437 cinelerra//bdcreate.C:190
#: cinelerra//dvdcreate.C:229
#: cinelerra//batchrender.C:713
msgid ": Batch Render"
msgstr ": Batch Render"
-#msgstr ""
#: cinelerra//batchrender.C:748
msgid "Output path:"
#: cinelerra//bdcreate.C:46
msgid "Ctrl-d"
msgstr "Ctrl-d"
-#msgstr ""
#: cinelerra//bdcreate.C:85 cinelerra//dvdcreate.C:85
#, c-format
#: cinelerra//bdcreate.C:513 cinelerra//dvdcreate.C:588
msgid "Audio 5.1"
msgstr "Audio 5.1"
-#msgstr ""
#: cinelerra//bdcreate.C:523 cinelerra//dvdcreate.C:598
msgid "Aspect 16x9"
#: cinelerra//bdcreate.C:535
msgid ": Create BD"
msgstr ": Create BD"
-#msgstr ""
#: cinelerra//bdcreate.C:567 cinelerra//channeledit.C:1030
#: cinelerra//clipedit.C:188 cinelerra//dvdcreate.C:653
#: cinelerra//brender.C:280
#, c-format
msgid "BRender::set_video_map %jd: attempt to set beyond end of map %jd.\n"
-msgstr "BRender::set_video_map %jd: tentativo di impostazione oltre la mappa %jd.\n"
+msgstr "BRender::set_video_map %jd: tentativo di impostazione oltre fine della mappa %jd.\n"
#: cinelerra//browsebutton.C:50
msgid "Look for file"
#: cinelerra//canvas.C:1096
msgid "Zoom 25%"
msgstr "Zoom 25%"
-#msgstr ""
+#msgstr "Zoom 25% "
#: cinelerra//canvas.C:1097
msgid "Zoom 33%"
msgstr "Zoom 33%"
-#msgstr ""
+#msgstr "Zoom 33% "
#: cinelerra//canvas.C:1098
msgid "Zoom 50%"
msgstr "Zoom 50%"
-#msgstr ""
+#msgstr "Zoom 50% "
#: cinelerra//canvas.C:1099
msgid "Zoom 75%"
msgstr "Zoom 75%"
-#msgstr ""
+#msgstr "Zoom 75% "
#: cinelerra//canvas.C:1100 cinelerra//recordmonitor.C:858
msgid "Zoom 100%"
msgstr "Zoom 100%"
-#msgstr ""
+#msgstr "Zoom 100% "
#: cinelerra//canvas.C:1101
msgid "Zoom 150%"
msgstr "Zoom 150%"
-#msgstr ""
+#msgstr "Zoom 150% "
#: cinelerra//canvas.C:1102
msgid "Zoom 200%"
msgstr "Zoom 200%"
-#msgstr ""
+#msgstr "Zoom 200% "
#: cinelerra//canvas.C:1103
msgid "Zoom 300%"
msgstr "Zoom 300%"
-#msgstr ""
+#msgstr "Zoom 300% "
#: cinelerra//canvas.C:1104
msgid "Zoom 400%"
msgstr "Zoom 400%"
-#msgstr ""
+#msgstr "Zoom 400% "
#: cinelerra//canvas.C:1127
msgid "Zoom Auto"
#: cinelerra//channeledit.C:120
msgid "NTSC_DVB"
msgstr "NTSC_DVB"
-#msgstr ""
#: cinelerra//channeledit.C:121
msgid "CATV_DVB"
msgstr "CATV_DVB"
-#msgstr ""
#: cinelerra//channeledit.C:122
msgid "NTSC_BCAST"
#: cinelerra//channeledit.C:131
msgid "PAL_IRELAND"
msgstr "PAL_IRELAND"
-#msgstr ""
#: cinelerra//channeledit.C:132
msgid "PAL_NEWZEALAND"
msgstr "PAL_NEWZEALAND"
-#msgstr ""
#: cinelerra//channeledit.C:134 cinelerra//channeledit.C:145
msgid "ERROR"
#: cinelerra//channeledit.C:141
msgid "NTSC"
msgstr "NTSC"
-#msgstr ""
#: cinelerra//channeledit.C:142
msgid "PAL"
-msgstr "AMICO"
+msgstr "PAL"
#: cinelerra//channeledit.C:143
msgid "SECAM"
msgstr "SECAM"
-#msgstr ""
#: cinelerra//channeledit.C:151 cinelerra//fileexr.C:198
#: cinelerra//plugindialog.C:257 cinelerra//recordbatches.C:308
#: cinelerra//channeledit.C:668 cinelerra//channeledit.C:1062
msgid "Norm:"
-msgstr "Norma:"
+msgstr "Norm:"
#: cinelerra//channeledit.C:671 cinelerra//channeledit.C:1075
msgid "Input:"
#: cinelerra//channeledit.C:1055
msgid "Fine:"
-msgstr "Bene:"
+msgstr "Fine:"
#: cinelerra//channeledit.C:1523 plugins/brightness/brightnesswindow.C:54
msgid "Brightness:"
#: cinelerra//channelinfo.C:307
msgid ": ChanSearch"
msgstr ": ChanSearch"
-#msgstr ""
#: cinelerra//channelinfo.C:339 cinelerra//dbwindow.C:590
#: cinelerra//recordbatches.C:23
#: cinelerra//channelinfo.C:1333
msgid "Directory:"
msgstr "Directory:"
-#msgstr ""
#: cinelerra//channelinfo.C:1335 cinelerra//recordgui.C:156
#: cinelerra//swindow.C:145
#: cinelerra//channelinfo.C:1415
msgid "Start Cron"
msgstr "Start Cron"
-#msgstr ""
#: cinelerra//channelinfo.C:1416
msgid "Poweroff"
#: cinelerra//channelinfo.C:1791
msgid "Scan..."
msgstr "Scan..."
-#msgstr ""
#: cinelerra//channelinfo.C:1791
msgid "Shift-S"
#: cinelerra//clipedit.C:158
msgid ": Clip Info"
msgstr ": Clip Info"
-#msgstr ""
#: cinelerra//clipedit.C:196
msgid "Comments:"
#: plugins/radialblur/radialblur.C:298 plugins/swapchannels/swapchannels.C:434
#: plugins/swapchannels/swapchannels.C:453 plugins/zoomblur/zoomblur.C:310
msgid "Alpha"
-msgstr "Alfa"
+msgstr "Alpha"
#: cinelerra//commercials.C:168 cinelerra//commercials.C:578
#: cinelerra//commercials.C:797
#, c-format
msgid "ad: trk %d@%s "
msgstr "ad: trk %d@%s "
-#msgstr ""
#: cinelerra//commercials.C:682
#, c-format
msgid "trk%d edt%d asset %s"
msgstr "trk%d edt%d asset %s"
-#msgstr ""
#: cinelerra//commercials.C:692
#, c-format
msgid "scan: clip%d %f-%f"
msgstr "scan: clip%d %f-%f"
-#msgstr ""
#: cinelerra//commercials.C:700
msgid "Scanning"
#: cinelerra//compresspopup.C:38
msgid "DV"
msgstr "DV"
-#msgstr ""
#: cinelerra//compresspopup.C:39 cinelerra//file.inc:83
msgid "JPEG"
msgstr "JPEG"
-#msgstr ""
#: cinelerra//compresspopup.C:40
msgid "MJPA"
msgstr "MJPA"
-#msgstr ""
#: cinelerra//compresspopup.C:41 cinelerra//file.inc:91
msgid "PNG"
msgstr "PNG"
-#msgstr ""
#: cinelerra//compresspopup.C:42
msgid "PNG-Alpha"
msgstr "PNG-Alpha"
-#msgstr ""
#: cinelerra//compresspopup.C:43
msgid "RGB"
msgstr "RGB"
-#msgstr ""
#: cinelerra//compresspopup.C:44
msgid "RGB-Alpha"
msgstr "RGB-Alpha"
-#msgstr ""
#: cinelerra//compresspopup.C:45
msgid "YUV420"
msgstr "YUV420"
-#msgstr ""
#: cinelerra//compresspopup.C:46
msgid "YUV422"
msgstr "YUV422"
-#msgstr ""
#: cinelerra//confirmquit.C:33
msgid ": Confirm Quit"
#: cinelerra//confirmquit.C:54
msgid "( Answering \"No\" will destroy changes )"
msgstr "( Answering \"No\" will destroy changes )"
-#msgstr ""
#: cinelerra//confirmquit.C:67 cinelerra//question.C:61 cinelerra//reindex.C:92
msgid "Yes"
#: cinelerra//cropvideo.C:97 cinelerra//cwindowtool.C:362
msgid ": Crop"
msgstr ": Crop"
-#msgstr ""
#: cinelerra//cropvideo.C:110
msgid "Select a region to crop in the video output window"
#: cinelerra//cwindowgui.C:79
msgid ": Compositor"
msgstr ": Compositor"
-#msgstr ""
#: cinelerra//cwindowgui.C:616 cinelerra//cwindowgui.C:655
msgid "insert assets"
#: cinelerra//cwindowtool.C:385
msgid "W:"
msgstr "W:"
-#msgstr ""
#: cinelerra//cwindowtool.C:407
msgid "H:"
msgstr "H:"
-#msgstr ""
#: cinelerra//cwindowtool.C:466
msgid ": Color"
#: cinelerra//cwindowtool.C:1986
msgid "Disable OpenGL masking"
msgstr "Disable OpenGL masking"
-#msgstr ""
#: cinelerra//cwindowtool.C:2018
msgid ": Mask"
#: cinelerra//cwindowtool.C:2084
msgid "Press Shift to move an end point"
msgstr "Press Shift to move an end point"
-#msgstr ""
#: cinelerra//cwindowtool.C:2086
msgid "Press Ctrl to move a control point"
msgstr "Press Ctrl to move a control point"
-#msgstr ""
#: cinelerra//cwindowtool.C:2088
msgid "Press Alt to translate the mask"
#, c-format
msgid "%0.01f pixels"
msgstr "%0.01f pixels"
-#msgstr ""
#: cinelerra//dbwindow.C:202
msgid "Media DB..."
msgstr "Media DB..."
-#msgstr ""
#: cinelerra//dbwindow.C:202
msgid "Shift-M"
msgstr "Shift-M"
-#msgstr ""
#: cinelerra//dbwindow.C:558
msgid ": DbWindow"
msgstr ": DbWindow"
-#msgstr ""
#: cinelerra//dbwindow.C:587
msgid "vicon"
#: cinelerra//dbwindow.C:588
msgid "Id"
msgstr "Id"
-#msgstr ""
#: cinelerra//dbwindow.C:589
msgid "length"
#: cinelerra//dcoffset.C:57 plugins/dcoffset/dcoffset.C:59
msgid "DC Offset"
-msgstr "Regola DC"
+msgstr "Offset DC"
#: cinelerra//deleteallindexes.C:38
msgid "Delete existing indexes"
#, c-format
msgid "** %scarrier, dvb_locked %s\n"
msgstr "** %scarrier, dvb_locked %s\n"
-#msgstr ""
#: cinelerra//devicedvbinput.C:404
msgid "no "
msgstr "no "
-#msgstr ""
#: cinelerra//devicedvbinput.C:404
msgid "lock"
#: cinelerra//dvdcreate.C:45
msgid "Shift-D"
msgstr "Shift-D"
-#msgstr ""
#: cinelerra//dvdcreate.C:359
msgid "create dvd"
#: cinelerra//editpanel.C:1191
msgid "Toggle label at current position ( l )"
-msgstr "Inserire etichetta nella posizione attuale ( 1 )"
+msgstr "Inserire etichetta nella posizione attuale ( | )"
#: cinelerra//editpanel.C:1220
msgid "Fit selection to display ( f )"
-msgstr "Selezione sul display( f )"
+msgstr "Adatta selezione da visualizzare ( f )"
#: cinelerra//editpanel.C:1253
msgid "Fit all autos to display ( Alt + f )"
-msgstr "auto aggiusta display (Alt + f)"
+msgstr "Aggiusta tutti gli auto da visualizzare (Alt + f)"
#: cinelerra//editpanel.C:1302
msgid "Drag and drop editing mode"
#: cinelerra//editpopup.C:175
msgid "Match output size"
-msgstr "Aggiusta dim uscita"
+msgstr "Uguaglia dimensione in uscita"
#: cinelerra//editpopup.C:197 cinelerra//mainmenu.C:1005
#: cinelerra//mainmenu.C:1073
#: cinelerra//exportedl.C:356
msgid "No."
msgstr "No."
-#msgstr ""
#: cinelerra//exportedl.C:357
msgid "Track name"
#: cinelerra//filesndfile.C:457
msgid "Lo Hi"
msgstr "Lo Hi"
-#msgstr ""
#: cinelerra//file.C:1398 cinelerra//fileformat.C:180
#: cinelerra//filesndfile.C:442
msgid "Hi Lo"
msgstr "Hi Lo"
-#msgstr ""
#: cinelerra//file.C:1605
msgid "UNKNOWN"
"%m\n"
msgstr "Error while opening \"%s\" for writing. \n"
"%m\n"
-#msgstr ""
#: cinelerra//filedv.C:249 cinelerra//filelist.C:309 cinelerra//filelist.C:383
#: cinelerra//filetga.C:219
"%m\n"
msgstr "Error while opening \"%s\" for reading. \n"
"%m\n"
-#msgstr ""
#: cinelerra//filedv.C:389
#, c-format
#: cinelerra//filevorbis.C:362
msgid ": Audio Compression"
msgstr ": Audio Compression"
-#msgstr ""
#: cinelerra//filedv.C:1006
msgid "There are no audio options for this format"
#: cinelerra//fileffmpeg.C:321
msgid ": Audio Preset"
msgstr ": Audio Preset"
-#msgstr ""
#: cinelerra//fileffmpeg.C:371
msgid "Preset:"
msgstr "Preset:"
-#msgstr ""
#: cinelerra//fileffmpeg.C:377 cinelerra//fileffmpeg.C:517
#: cinelerra//filempeg.C:2055 cinelerra//fileogg.C:2186
msgid "Bitrate:"
msgstr "Bitrate:"
-#msgstr ""
#: cinelerra//fileffmpeg.C:382
msgid "Audio Options:"
#: cinelerra//fileffmpeg.C:454
msgid ": Video Preset"
msgstr ": Video Preset"
-#msgstr ""
#: cinelerra//fileffmpeg.C:521 cinelerra//filejpeg.C:325
#: cinelerra//filejpeglist.C:170 cinelerra//fileogg.C:2191
#: cinelerra//file.inc:73
msgid "AC3"
msgstr "AC3"
-#msgstr ""
#: cinelerra//file.inc:74
msgid "Apple/SGI AIFF"
-msgstr "Apple / SGI AIFF"
+msgstr "Apple/SGI AIFF"
#: cinelerra//file.inc:75
msgid "AVI Arne Type 1"
msgstr "AVI Arne Type 1"
-#msgstr ""
#: cinelerra//file.inc:76
msgid "AVI Avifile"
msgstr "AVI Avifile"
-#msgstr ""
#: cinelerra//file.inc:77
msgid "AVI DV Type 2"
msgstr "AVI DV Type 2"
-#msgstr ""
#: cinelerra//file.inc:78
msgid "AVI Lavtools"
msgstr "AVI Lavtools"
-#msgstr ""
#: cinelerra//file.inc:79
msgid "EXR"
msgstr "EXR"
-#msgstr ""
#: cinelerra//file.inc:80
msgid "EXR Sequence"
#: cinelerra//file.inc:81
msgid "FFMPEG"
msgstr "FFMPEG"
-#msgstr ""
#: cinelerra//file.inc:82
msgid "FLAC"
msgstr "FLAC"
-#msgstr ""
#: cinelerra//file.inc:84
msgid "JPEG Sequence"
-msgstr "JPEG Sequence"
-#msgstr ""
+msgstr "Sequenza JPEG"
#: cinelerra//file.inc:85
msgid "Microsoft WAV"
msgstr "Microsoft WAV"
-#msgstr ""
#: cinelerra//file.inc:86
msgid "MPEG Audio"
-msgstr "MPEG Audio"
-#msgstr ""
+msgstr "Audio MPEG"
#: cinelerra//file.inc:87
msgid "MPEG"
msgstr "MPEG"
-#msgstr ""
#: cinelerra//file.inc:88
msgid "MPEG Video"
-msgstr "MPEG Video"
-#msgstr ""
+msgstr "Video MPEG"
#: cinelerra//file.inc:89
msgid "OGG Theora/Vorbis"
-msgstr "Ogg Theora / Vorbis"
+msgstr "OGG Theora/Vorbis"
#: cinelerra//file.inc:90
msgid "OGG Vorbis"
msgstr "OGG Vorbis"
-#msgstr ""
#: cinelerra//file.inc:92
msgid "PNG Sequence"
-msgstr "PNG Sequence"
-#msgstr ""
+msgstr "Sequenza PNG"
#: cinelerra//file.inc:93
msgid "Raw DV"
-msgstr "Raw DV"
-#msgstr ""
+msgstr "DV Raw"
#: cinelerra//file.inc:94
msgid "Raw PCM"
-msgstr "Raw PCM"
-#msgstr ""
+msgstr "PCM raw"
#: cinelerra//file.inc:95
msgid "Sun/NeXT AU"
-msgstr "Sun / NeXT AU"
+msgstr "Sun/NeXT AU"
#: cinelerra//file.inc:96
msgid "TGA"
msgstr "TGA"
-#msgstr ""
#: cinelerra//file.inc:97
msgid "TGA Sequence"
#: cinelerra//file.inc:98
msgid "TIFF"
msgstr "TIFF"
-#msgstr ""
#: cinelerra//file.inc:99
msgid "TIFF Sequence"
#: cinelerra//file.inc:149
msgid "u Law"
-msgstr "U Legge"
+msgstr "u Law"
#: cinelerra//file.inc:150
msgid "IMA 4"
msgstr "IMA 4"
-#msgstr ""
#: cinelerra//file.inc:151
msgid "ADPCM"
msgstr "ADPCM"
-#msgstr ""
#: cinelerra//file.inc:152
msgid "Float"
#: cinelerra//file.inc:154
msgid "RGB ALPHA"
msgstr "RGB ALPHA"
-#msgstr ""
#: cinelerra//file.inc:155
msgid "PNG ALPHA"
msgstr "PNG ALPHA"
-#msgstr ""
#: cinelerra//filejpeglist.C:49
msgid "JPEGLIST"
msgstr "JPEGLIST"
-#msgstr ""
#: cinelerra//filempeg.C:150
#, c-format
#, c-format
msgid " v%d %s %dx%d"
msgstr " v%d %s %dx%d"
-#msgstr ""
#: cinelerra//filempeg.C:195
#, c-format
#, c-format
msgid " a%d %s"
msgstr " a%d %s"
-#msgstr ""
#: cinelerra//filempeg.C:209
#, c-format
#, c-format
msgid "%d interleaves\n"
msgstr "%d interleaves\n"
-#msgstr ""
#: cinelerra//filempeg.C:235
#, c-format
#, c-format
msgid " %3d. %8.3f"
msgstr " %3d. %8.3f"
-#msgstr ""
#: cinelerra//filempeg.C:256
#, c-format
#, c-format
msgid "Couldn't open %s: invalid table of contents version.\n"
msgstr "Couldn't open %s: invalid table of contents version.\n"
-#msgstr ""
#: cinelerra//filempeg.C:403
#, c-format
msgid "Couldn't open %s: table of contents out of date.\n"
msgstr "Couldn't open %s: table of contents out of date.\n"
-#msgstr ""
#: cinelerra//filempeg.C:407
#, c-format
msgid "Couldn't open %s: table of contents corrupt.\n"
msgstr "Couldn't open %s: table of contents corrupt.\n"
-#msgstr ""
#: cinelerra//filempeg.C:412
msgid "Rebuilding the table of contents\n"
msgstr "Rebuilding the table of contents\n"
-#msgstr ""
#: cinelerra//filempeg.C:422
#, c-format
msgid "Couldn't open %s: no audio or video.\n"
msgstr "Couldn't open %s: no audio or video.\n"
-#msgstr ""
#: cinelerra//filempeg.C:473
#, c-format
msgid "Couldn't open %s: failed.\n"
msgstr "Couldn't open %s: failed.\n"
-#msgstr ""
#: cinelerra//filempeg.C:597
#, c-format
"%m\n"
msgstr "Error while opening \"%s\" for writing\n"
"%m\n"
-#msgstr ""
#: cinelerra//filempeg.C:707
#, c-format
#, c-format
msgid "cant start toc/idx for file: %s\n"
msgstr "cant start toc/idx for file: %s\n"
-#msgstr ""
#: cinelerra//filempeg.C:817
msgid "cant access commercials database"
#, c-format
msgid "mpeg3_open failed: %s"
msgstr "mpeg3_open failed: %s"
-#msgstr ""
#: cinelerra//filempeg.C:959 cinelerra//filempeg.C:1187
#, c-format
#: cinelerra//filempeg.C:1843 cinelerra//filempeg.C:1851
msgid "II"
msgstr "II"
-#msgstr ""
#: cinelerra//filempeg.C:1847
msgid "III"
msgstr "III"
-#msgstr ""
#: cinelerra//filempeg.C:1977 cinelerra//new.C:391 cinelerra//setformat.C:457
msgid "Color model:"
-msgstr "Formato colore:"
+msgstr "Modello colore:"
#: cinelerra//filempeg.C:2042
msgid "Format Preset:"
#: cinelerra//filempeg.C:2139 cinelerra//filempeg.C:2147
msgid "MPEG-1"
msgstr "MPEG-1"
-#msgstr ""
#: cinelerra//filempeg.C:2143
msgid "MPEG-2"
msgstr "MPEG-2"
-#msgstr ""
#: cinelerra//filempeg.C:2196 cinelerra//filempeg.C:2206
msgid "Generic MPEG-1"
#: cinelerra//filempeg.C:2204
msgid "DVD NAV"
msgstr "DVD NAV"
-#msgstr ""
#: cinelerra//filempeg.C:2205
msgid "DVD"
msgstr "DVD"
-#msgstr ""
#: cinelerra//filempeg.C:2256 cinelerra//fileogg.C:2259
#: cinelerra//filevorbis.C:424
msgid "Fixed bitrate"
-msgstr "Bitrate ottimizzato"
+msgstr "Bitrate fissato"
#: cinelerra//filempeg.C:2270
msgid "Fixed quantization"
-msgstr "Ottimizza quantizzazione"
+msgstr " Quantizzazione fissata"
#: cinelerra//filempeg.C:2373 cinelerra//filempeg.C:2375
msgid "YUV 4:2:0"
-msgstr "YUV 4: 2: 0"
+msgstr "YUV 4:2:0"
#: cinelerra//filempeg.C:2374
msgid "YUV 4:2:2"
-msgstr "YUV 4: 2: 2"
+msgstr "YUV 4:2:2"
#: cinelerra//fileogg.C:187
#, c-format
#, c-format
msgid "FileOGG:: Error while seeking to frame's keyframe (frame: %jd, keyframe: %jd)\n"
msgstr "FileOGG:: Error while seeking to frame's keyframe (frame: %jd, keyframe: %jd)\n"
-#msgstr ""
#: cinelerra//fileogg.C:1474
#, c-format
msgid "FileOGG:: Error while seeking to keyframe, wrong keyframe number (frame: %jd, keyframe: %jd)\n"
msgstr "FileOGG:: Error while seeking to keyframe, wrong keyframe number (frame: %jd, keyframe: %jd)\n"
-#msgstr ""
#: cinelerra//fileogg.C:1502
msgid "FileOGG: Expecting keyframe, but didn't get it\n"
#, c-format
msgid "\tnext_sample_position: %jd, length: %jd\n"
msgstr "\tnext_sample_position: %jd, length: %jd\n"
-#msgstr ""
#: cinelerra//fileogg.C:1755
#, c-format
msgid "\thistory_start: %jd, length: %jd\n"
msgstr "\thistory_start: %jd, length: %jd\n"
-#msgstr ""
#: cinelerra//fileogg.C:1962
#, c-format
#: cinelerra//fileogg.C:2065 cinelerra//filevorbis.C:393
msgid "Min bitrate:"
-msgstr "Bitrate Min:"
+msgstr "Min bitrate:"
#: cinelerra//fileogg.C:2069 cinelerra//filevorbis.C:397
msgid "Avg bitrate:"
#: cinelerra//fileogg.C:2074 cinelerra//filevorbis.C:402
msgid "Max bitrate:"
-msgstr "Bitrate Max:"
+msgstr "Max bitrate:"
#: cinelerra//fileogg.C:2091
msgid "Average bitrate"
#: cinelerra//fileogg.C:2208
msgid "Keyframe frequency:"
-msgstr "Frequenza Base:"
+msgstr "Frequenza Fotogramma Chiave:"
#: cinelerra//fileogg.C:2214
msgid "Keyframe force frequency:"
-msgstr "Frequenza Base:"
+msgstr "Forza Frequenza Fotogramma Chiave:"
#: cinelerra//fileogg.C:2220 plugins/denoisemjpeg/denoisemjpeg.C:377
#: plugins/greycstoration/greycstorationwindow.C:48
#: cinelerra//fileogg.C:2273
msgid "Fixed quality"
-msgstr "Fissa qualità:"
+msgstr "Qualità fissata:"
#: cinelerra//filesndfile.C:268
#, c-format
#, c-format
msgid "FileSndFile::read_samples fd=%p temp_double=%p len=%jd asset=%p asset->channels=%d\n"
msgstr "FileSndFile::read_samples fd=%p temp_double=%p len=%jd asset=%p asset->channels=%d\n"
-#msgstr ""
#: cinelerra//filesndfile.C:418 cinelerra//formatwindow.C:169
msgid "Dither"
#: cinelerra//floatauto.C:422
msgid "Smooth"
msgstr "Smooth"
-#msgstr ""
#: cinelerra//floatauto.C:423 plugins/gradient/gradient.C:347
#: plugins/gradient/gradient.C:437
#: cinelerra//floatauto.C:424
msgid "Tangent"
msgstr "Tangent"
-#msgstr ""
#: cinelerra//floatauto.C:425
msgid "Disjoint"
msgstr "Disjoint"
-#msgstr ""
#: cinelerra//floatauto.C:427
msgid "Error"
#: cinelerra//formatpresets.C:58
msgid "User Defined"
-msgstr "Personalizzazione"
+msgstr "Personalizzato dall’utente"
#: cinelerra//formatpresets.C:68
msgid "Presets:"
#: cinelerra//formatwindow.C:66
msgid "HiLo:"
msgstr "HiLo:"
-#msgstr ""
#: cinelerra//formatwindow.C:69
msgid "LoHi:"
#: cinelerra//gwindowgui.C:49
msgid "Assets"
-msgstr "Scarica Elementi"
+msgstr "Elementi"
#: cinelerra//gwindowgui.C:50
msgid "Titles"
#: cinelerra//gwindowgui.C:51
msgid "Transitions"
-msgstr "transizioni"
+msgstr "Transizioni"
#: cinelerra//gwindowgui.C:52 cinelerra//viewmenu.C:141
msgid "Plugin Autos"
-msgstr "plugin Autos"
+msgstr "Plugin Autos"
#: cinelerra//gwindowgui.C:58 cinelerra//mainmenu.C:239
msgid "Camera X"
#: cinelerra//interfaceprefs.C:35
msgid "Drag only one edit"
-msgstr "Sposta questa modifica"
+msgstr "Sposta solo questa modifica"
#: cinelerra//interfaceprefs.C:36
msgid "Drag source only"
#: cinelerra//interfaceprefs.C:89
msgid "Time Format"
-msgstr "Formato file:"
+msgstr "Formato Orario"
#: cinelerra//interfaceprefs.C:122
msgid "Frames per foot:"
#: cinelerra//interfaceprefs.C:183
msgid "Keyframe reticle:"
msgstr "Keyframe reticle:"
-#msgstr ""
#: cinelerra//interfaceprefs.C:199
msgid "PIN:"
msgstr "PIN:"
-#msgstr ""
#: cinelerra//interfaceprefs.C:222
msgid "Clicking on edit boundaries does what:"
#: cinelerra//interfaceprefs.C:257
msgid "Max DB:"
msgstr "Max DB:"
-#msgstr ""
#: cinelerra//interfaceprefs.C:265
msgid "Theme:"
#: cinelerra//interfaceprefs.C:683
msgid "ffmpeg probe warns rebuild indexes"
msgstr "ffmpeg probe warns rebuild indexes"
-#msgstr ""
#: cinelerra//interfaceprefs.C:701
msgid "Scan for commercials during toc build"
#: cinelerra//interfaceprefs.C:715
msgid "Android Remote Control"
msgstr "Android Remote Control"
-#msgstr ""
#: cinelerra//interfaceprefs.C:766
msgid "Shell Commands"
#: cinelerra//interfaceprefs.C:835
msgid "Never"
msgstr "Never"
-#msgstr ""
#: cinelerra//interfaceprefs.C:836
msgid "Dragging"
msgstr "Dragging"
-#msgstr ""
#: cinelerra//interfaceprefs.C:837
msgid "Always"
msgstr "Always"
-#msgstr ""
#: cinelerra//keyframegui.C:50
msgid "Parameter"
#: cinelerra//keyframepopup.C:455 cinelerra//keyframepopup.C:461
msgid "change keyframe curve mode"
msgstr "change keyframe curve mode"
-#msgstr ""
#: cinelerra//keyframepopup.C:475
msgid "Edit Params..."
msgstr "Edit Params..."
-#msgstr ""
#: cinelerra//keyframepopup.C:512
msgid "Hide keyframe type"
msgstr "Hide keyframe type"
-#msgstr ""
#: cinelerra//labeledit.C:108
msgid "Label Text:"
#: cinelerra//loadfile.C:174
msgid ": Load"
msgstr ": Load"
-#msgstr ""
#: cinelerra//loadfile.C:175
msgid "Select files to load:"
#: cinelerra//mainindexes.C:192 cinelerra//threadindexer.C:137
msgid "Building Indexes..."
-msgstr "Creazione Indici..."
+msgstr "Creazione Indici in corso…"
#: cinelerra//mainmenu.C:136 cinelerra//shbtnprefs.C:152
#: plugins/svg/svgwin.C:244
#: cinelerra//mainmenu.C:179 cinelerra//new.C:282 cinelerra//setformat.C:336
msgid "Audio"
msgstr "Audio"
-#msgstr ""
#: cinelerra//mainmenu.C:188 cinelerra//new.C:310 cinelerra//setformat.C:388
msgid "Video"
msgstr "Video"
-#msgstr ""
#: cinelerra//mainmenu.C:195
msgid "Tracks"
#: cinelerra//mainmenu.C:256
msgid "Ctrl-P"
msgstr "Ctrl-P"
-#msgstr ""
#: cinelerra//mainmenu.C:257
msgid "Tile left"
#: cinelerra//mainmenu.C:564
msgid "Dump CICache"
-msgstr "Scarica CICache"
+msgstr "Scarta CICache"
#: cinelerra//mainmenu.C:574
msgid "Dump EDL"
-msgstr "Scarica EDL"
+msgstr "Scarta EDL"
#: cinelerra//mainmenu.C:588
msgid "Dump Plugins"
-msgstr "Scarica Plugins"
+msgstr "Scarta Plugins"
#: cinelerra//mainmenu.C:603
msgid "Dump Assets"
-msgstr "Scarica Elementi"
+msgstr "Scarta Elementi"
#: cinelerra//mainmenu.C:614
msgid "Undo"
#: cinelerra//mainmenu.C:632
msgid "Shift-Z"
msgstr "Shift-Z"
-#msgstr ""
#: cinelerra//mainmenu.C:647
#, c-format
#: cinelerra//mainmenu.C:653
msgid "Shift-X"
msgstr "Shift-X"
-#msgstr ""
#: cinelerra//mainmenu.C:666
msgid "Copy keyframes"
#: cinelerra//mainmenu.C:666
msgid "Shift-C"
msgstr "Shift-C"
-#msgstr ""
#: cinelerra//mainmenu.C:679
msgid "Paste keyframes"
#: cinelerra//mainmenu.C:679
msgid "Shift-V"
msgstr "Shift-V"
-#msgstr ""
#: cinelerra//mainmenu.C:692
msgid "Clear keyframes"
#: cinelerra//mainmenu.C:692
msgid "Shift-Del"
msgstr "Shift-Del"
-#msgstr ""
#: cinelerra//mainmenu.C:707
msgid "Change to linear"
#: cinelerra//mainmenu.C:722
msgid "Change to smooth"
msgstr "Change to smooth"
-#msgstr ""
#: cinelerra//mainmenu.C:736
msgid "Create curve type..."
msgstr "Create curve type..."
-#msgstr ""
#: cinelerra//mainmenu.C:794
msgid "Cut default keyframe"
#: cinelerra//mainmenu.C:794
msgid "Alt-X"
msgstr "Alt-X"
-#msgstr ""
#: cinelerra//mainmenu.C:807
msgid "Copy default keyframe"
#: cinelerra//mainmenu.C:807
msgid "Alt-c"
msgstr "Alt-c"
-#msgstr ""
#: cinelerra//mainmenu.C:820
msgid "Paste default keyframe"
#: cinelerra//mainmenu.C:820
msgid "Alt-v"
msgstr "Alt-v"
-#msgstr ""
#: cinelerra//mainmenu.C:833
msgid "Clear default keyframe"
#: cinelerra//mainmenu.C:833
msgid "Alt-Del"
msgstr "Alt-Del"
-#msgstr ""
#: cinelerra//mainmenu.C:846
msgid "Cut"
#: cinelerra//mainmenu.C:882 cinelerra//shbtnprefs.C:132
msgid "Del"
msgstr "Del"
-#msgstr ""
#: cinelerra//mainmenu.C:896
msgid "Paste silence"
#: cinelerra//mainmenu.C:896
msgid "Shift-Space"
msgstr "Shift-Space"
-#msgstr ""
#: cinelerra//mainmenu.C:909
msgid "Select All"
#: cinelerra//mainmenu.C:1059
msgid "Shift-T"
msgstr "Shift-T"
-#msgstr ""
#: cinelerra//mainmenu.C:1086
msgid "Reset Translation"
#: cinelerra//mainmenu.C:1099
msgid "Shift-U"
msgstr "Shift-U"
-#msgstr ""
#: cinelerra//mainmenu.C:1127
msgid "Delete tracks"
#: cinelerra//mainmenu.C:1151
msgid "Shift-Up"
msgstr "Shift-Up"
-#msgstr ""
#: cinelerra//mainmenu.C:1163
msgid "Move tracks down"
#: cinelerra//mainmenu.C:1163
msgid "Shift-Down"
msgstr "Shift-Down"
-#msgstr ""
#: cinelerra//mainmenu.C:1178
msgid "Concatenate tracks"
#: cinelerra//mainmenu.C:1195
msgid "Shift-L"
msgstr "Shift-L"
-#msgstr ""
#: cinelerra//mainmenu.C:1215
msgid "Add subttl"
#: cinelerra//mainmenu.C:1215
msgid "Shift-Y"
msgstr "Shift-Y"
-#msgstr ""
#: cinelerra//mainmenu.C:1228 cinelerra//swindow.C:450
msgid "paste subttl"
#: cinelerra//mainmenu.C:1464
msgid "Ctrl-1"
msgstr "Ctrl-1"
-#msgstr ""
#: cinelerra//mainmenu.C:1477
msgid "Split Y pane"
#: cinelerra//mainmenu.C:1477
msgid "Ctrl-2"
msgstr "Ctrl-2"
-#msgstr ""
#: cinelerra//mainprogress.C:169
#, c-format
msgid "%s ETA: %s"
-msgstr "%s STIMA: %s"
+msgstr "%s Stima fine del processo: %s"
#: cinelerra//manualgoto.C:120
msgid "hour min sec msec"
#, c-format
msgid ": %s"
msgstr ": %s"
-#msgstr ""
#: cinelerra//menueffects.C:469 cinelerra//packagerenderer.C:174
#: cinelerra//savefile.C:101
#, c-format
msgid "Couldn't open %s"
-msgstr "Non posso aprire %s"
+msgstr "Impossibile aprire %s"
#: cinelerra//menueffects.C:592
msgid ": Render effect"
#, c-format
msgid "put_commercial: %s"
msgstr "put_commercial: %s"
-#msgstr ""
#: cinelerra//mwindow.C:1327
#, c-format
"Images with odd dimensions may not decode properly."
msgstr "%s's resolution is %dx%d.\n"
"Images with odd dimensions may not decode properly."
-#msgstr ""
#: cinelerra//mwindow.C:1356
#, c-format
msgstr "%s's index was built for program number %d\n"
"Playback preference is %d.\n"
" Using program %d."
-#msgstr ""
#: cinelerra//mwindow.C:1402
#, c-format
msgid "Failed to open %s"
-msgstr "Fallita apertura %s"
+msgstr "Apertura %s non rieuscita"
#: cinelerra//mwindow.C:1435
msgid "'s format couldn't be determined."
"as root, run: echo 0x7fffffff > /proc/sys/kernel/shmmax\n"
"before trying to start cinelerra.\n"
"It should be at least 0x7fffffff for Cinelerra.\n"
-#msgstr ""
#: cinelerra//mwindow.C:1859
msgid "Initializing Plugins"
#: cinelerra//mwindow.C:1865
msgid "Initializing GUI"
-msgstr "Avvio GUI"
+msgstr "Inizializzazione GUI"
#: cinelerra//mwindow.C:1873
msgid "Initializing Fonts"
#: cinelerra//mwindowedit.C:316
msgid "asset to size"
-msgstr "elemento dimensione"
+msgstr "elemento a dimensione"
#: cinelerra//mwindowedit.C:337
msgid "asset to rate"
-msgstr "elemento percentuali"
+msgstr "elemento a tasso percentuale"
#: cinelerra//mwindowedit.C:359
msgid "clear"
#: cinelerra//mwindowedit.C:1049
msgid "paste effect"
msgstr "paste effect"
-#msgstr ""
#: cinelerra//mwindowedit.C:1065
msgid "move effect"
#: cinelerra//mwindowedit.C:1182
msgid "mute"
-msgstr "muto"
+msgstr "muta"
#: cinelerra//mwindowedit.C:1244
msgid "overwrite"
#: cinelerra//preferencesthread.C:218
msgid "Try FFMpeg first"
msgstr "Try FFMpeg first"
-#msgstr ""
#: cinelerra//mwindowgui.C:2402 cinelerra//mwindowgui.C:2413
#: cinelerra//preferencesthread.C:218
msgid "Try FFMpeg last"
msgstr "Try FFMpeg last"
-#msgstr ""
#: cinelerra//mwindowgui.C:2415
msgid "Changing the base codecs may require rebuilding indexes."
msgstr "Changing the base codecs may require rebuilding indexes."
-#msgstr ""
#: cinelerra//mwindow.inc:56
msgid "Cinelerra: Attach Effect"
#: cinelerra//mwindow.inc:58
msgid "Cinelerra: Audio Compression"
msgstr "Cinelerra: Audio Compression"
-#msgstr ""
#: cinelerra//mwindow.inc:59
msgid "Cinelerra: Camera"
msgstr "Cinelerra: Camera"
-#msgstr ""
#: cinelerra//mwindow.inc:60
msgid "Cinelerra: Change Effect"
#: cinelerra//mwindow.inc:62
msgid "Cinelerra: ChanSearch"
msgstr "Cinelerra: ChanSearch"
-#msgstr ""
#: cinelerra//mwindow.inc:63
msgid "Cinelerra: Clip Info"
#: cinelerra//mwindow.inc:65
msgid "Cinelerra: Compositor"
msgstr "Cinelerra: Compositor"
-#msgstr ""
#: cinelerra//mwindow.inc:66
msgid "Cinelerra: Confirm"
#: cinelerra//mwindow.inc:68
msgid "Cinelerra: Crop"
msgstr "Cinelerra: Crop"
-#msgstr ""
#: cinelerra//mwindow.inc:69
msgid "Cinelerra: DbWindow"
msgstr "Cinelerra: DbWindow"
-#msgstr ""
#: cinelerra//mwindow.inc:70
msgid "Cinelerra: Delete All Indexes"
#: cinelerra//mwindow.inc:75
msgid "Cinelerra: File Format"
msgstr "Cinelerra: File Format"
-#msgstr ""
#: cinelerra//mwindow.inc:76
msgid "Cinelerra: Levels"
#: cinelerra//mwindow.inc:77
msgid "Cinelerra: Load"
msgstr "Cinelerra: Load"
-#msgstr ""
#: cinelerra//mwindow.inc:78
msgid "Cinelerra: Loading"
#: cinelerra//mwindow.inc:80
msgid "Cinelerra: Mask"
msgstr "Cinelerra: Mask"
-#msgstr ""
#: cinelerra//mwindow.inc:81
msgid "Cinelerra: New folder"
#: cinelerra//mwindow.inc:83
msgid "Cinelerra: Path"
msgstr "Cinelerra: Path"
-#msgstr ""
#: cinelerra//mwindow.inc:84
msgid "Cinelerra: Preferences"
#: cinelerra//mwindow.inc:87
msgid "Cinelerra: Question"
msgstr "Cinelerra: Question"
-#msgstr ""
#: cinelerra//mwindow.inc:88
msgid "Cinelerra: RemoteWindow"
msgstr "Cinelerra: RemoteWindow"
-#msgstr ""
#: cinelerra//mwindow.inc:89
msgid "Cinelerra: Remove assets"
#, c-format
msgid "Cinelerra: %s"
msgstr "Cinelerra: %s"
-#msgstr ""
#: cinelerra//mwindow.inc:93
msgid "Cinelerra: Save"
msgstr "Cinelerra: Save"
-#msgstr ""
#: cinelerra//mwindow.inc:94
msgid "Cinelerra: Set edit title"
#: cinelerra//mwindow.inc:101
msgid "Cinelerra: Viewer"
msgstr "Cinelerra: Viewer"
-#msgstr ""
#: cinelerra//mwindow.inc:102
msgid "Cinelerra: Warning"
msgstr "Cinelerra: Warning"
-#msgstr ""
#: cinelerra//mwindow.inc:103 cinelerra//mwindow.inc:104 cinelerra//new.C:231
msgid "Cinelerra: New Project"
#: cinelerra//mwindow.inc:106
msgid "Cinelerra: CD Ripper"
msgstr "Cinelerra: CD Ripper"
-#msgstr ""
#: cinelerra//mwindow.inc:107
msgid "Cinelerra: Normalize"
#: cinelerra//mwindow.inc:108
msgid "Cinelerra: Resample"
msgstr "Cinelerra: Resample"
-#msgstr ""
#: cinelerra//mwindow.inc:109
msgid "Cinelerra: Time stretch"
#: cinelerra//new.C:328 cinelerra//recordgui.C:245
msgid "Framerate:"
-msgstr "Freq.fotogrammi:"
+msgstr "Freq. fotogrammi:"
#: cinelerra//new.C:354 cinelerra//setformat.C:406
msgid "Canvas size:"
-msgstr "Formato:"
+msgstr "Dimensione Tela:"
#: cinelerra//new.C:373 cinelerra//scale.C:270 cinelerra//setformat.C:474
msgid "Aspect ratio:"
#: cinelerra//new.C:401 cinelerra//setformat.C:501
msgid "Interlace mode:"
-msgstr "Interlaccio:"
+msgstr "Modo interlaccio:"
#: cinelerra//new.C:914
msgid "Auto aspect ratio"
#: cinelerra//new.C:940 cinelerra//resizetrackthread.C:212
#: cinelerra//setformat.C:924 plugins/photoscale/photoscale.C:198
msgid "Swap dimensions"
-msgstr "dimensioni Swap"
+msgstr "Scambia dimensioni"
#: cinelerra//patchgui.C:382
msgid "Play track"
#: cinelerra//patchgui.C:750
msgid "Nudge"
-msgstr "Pacca"
+msgstr "Colpetto"
#: cinelerra//patchgui.C:761 cinelerra//patchgui.C:767
msgid "nudge"
#: cinelerra//performanceprefs.C:201
msgid "Hostname:"
-msgstr "Nome host:"
+msgstr "Hostname:"
#: cinelerra//performanceprefs.C:243
msgid "Total jobs to create:"
#: cinelerra//performanceprefs.C:301
msgid "Hostname"
-msgstr "Nome host"
+msgstr "Hostname"
#: cinelerra//performanceprefs.C:302
msgid "Port"
#: cinelerra//performanceprefs.C:576
msgid "build ffmpeg marker indexes"
msgstr "build ffmpeg marker indexes"
-#msgstr ""
#: cinelerra//performanceprefs.C:599
msgid "Consolidate output files on completion"
#: cinelerra//playbackprefs.C:134
msgid "Audio Driver:"
-msgstr "Usa Driver:"
+msgstr "Driver Audio:"
#: cinelerra//playbackprefs.C:151
msgid "Video Out"
#: cinelerra//playbackprefs.C:157
msgid "Framerate achieved:"
-msgstr "Campioni in archivio:"
+msgstr "Frequenza fotogrammi archiviata: "
#: cinelerra//playbackprefs.C:166
msgid "Scaling equation: Enlarge / Reduce "
#: cinelerra//playbackprefs.C:215
msgid "Timecode offset:"
-msgstr "Taratura tempo:"
+msgstr "Offset tempo:"
#: cinelerra//playbackprefs.C:228
msgid "Video Driver:"
-msgstr "Driver Video:"
+msgstr "Video Driver:"
#: cinelerra//playbackprefs.C:284
msgid "View follows playback"
#, c-format
msgid "%s..."
msgstr "%s..."
-#msgstr ""
#: cinelerra//pluginarray.C:222
#, c-format
msgid "%s took %s"
-msgstr "%s preso %s"
+msgstr "%s ci ha messo %s"
#: cinelerra//pluginclient.C:825 cinelerra//pluginclient.C:837
msgid "tweek"
#: cinelerra//plugindialog.C:311
msgid "Plugins:"
-msgstr "Plugin:"
+msgstr "Plugins:"
#: cinelerra//plugindialog.C:339
msgid "Shared effects:"
#: cinelerra//pluginprefs.C:57
msgid "Plugin Set"
msgstr "Plugin Set"
-#msgstr ""
#: cinelerra//pluginprefs.C:59
msgid "Look for global plugins here"
#: cinelerra//preferencesthread.C:69
msgid "Shift-P"
msgstr "Shift-P"
-#msgstr ""
#: cinelerra//preferencesthread.C:318
msgid "*Playback A"
#, c-format
msgid ": %s Presets"
msgstr ": %s Presets"
-#msgstr ""
#: cinelerra//presetsgui.C:219
msgid "apply preset"
msgid ""
"Make the highlighted\n"
"clip active."
-msgstr "Creare spezzone attivo\n"
+msgstr "Attivare spezzone\n"
"evidenziato."
#: cinelerra//record.C:85
#: cinelerra//recordgui.C:294
msgid "File Capture"
msgstr "File Capture"
-#msgstr ""
#: cinelerra//recordgui.C:332
msgid "Batches:"
#: cinelerra//recordgui.C:348
msgid "Cron:"
msgstr "Cron:"
-#msgstr ""
#: cinelerra//recordgui.C:351 cinelerra//recordgui.C:983
msgid "Idle"
#: cinelerra//recordgui.C:672
msgid "Write extra frames when behind."
-msgstr "Scrivi fotogrammi supplementari in dietro."
+msgstr "Scrivi fotogrammi supplementari se in ritardo."
#: cinelerra//recordgui.C:692
msgid "poweroff when done"
#: cinelerra//recordgui.C:744
msgid "Monitor video"
-msgstr "Video Monitor"
+msgstr "Monitor video"
#: cinelerra//recordgui.C:784
msgid "Monitor audio"
msgstr "Monitor audio"
-#msgstr ""
#: cinelerra//recordgui.C:821
msgid "Audio meters"
#: cinelerra//recordgui.C:1017
msgid "ClrLbls"
msgstr "ClrLbls"
-#msgstr ""
#: cinelerra//recordgui.C:1066
msgid "Interrupt recording in progress?"
#: cinelerra//recordmonitor.C:350
msgid "00:00:00:00"
-msgstr "00: 00: 00: 00"
+msgstr "00:00:00:00"
#: cinelerra//recordmonitor.C:645
#, c-format
msgid ": Video in %d%%"
msgstr ": Video in %d%%"
-#msgstr ""
#: cinelerra//recordmonitor.C:715 cinelerra//vdeviceprefs.C:285
msgid "Swap fields"
#: cinelerra//recordprefs.C:192
msgid "Frames to record to disk at a time:"
-msgstr "Frame da scrivere sul disco alla volta:"
+msgstr "Frame da registrare sul disco alla volta:"
#: cinelerra//recordprefs.C:197
msgid "Frames to buffer in device:"
#: cinelerra//recordprefs.C:215
msgid "Size of captured frame:"
-msgstr "Dim.ne frame catturato:"
+msgstr "Dimensione frame catturato:"
#: cinelerra//recordprefs.C:228
msgid "Frame rate for recording:"
-msgstr "Freq.fotogr. registrazione:"
+msgstr "Freq. fotogr. registrazione:"
#: cinelerra//recordprefs.C:294
msgid "Record in realtime priority (root only)"
#: cinelerra//recordprefs.C:334
msgid "Realtime TOC"
msgstr "Realtime TOC"
-#msgstr ""
#: cinelerra//recordprefs.C:494
msgid "Presentation Timestamps"
#: cinelerra//recordtransport.C:251
msgid "Stop operation"
-msgstr "ferma operazione"
+msgstr "Ferma operazione"
#: cinelerra//recordtransport.C:300
msgid "Start over"
#: cinelerra//remotecontrol.C:11
msgid ": RemoteWindow"
msgstr ": RemoteWindow"
-#msgstr ""
#: cinelerra//render.C:85
msgid "Render..."
#: cinelerra//render.C:85
msgid "Shift-R"
msgstr "Shift-R"
-#msgstr ""
#: cinelerra//render.C:212
#, c-format
msgid "\r%d%% ETA: %s "
msgstr "\r%d%% ETA: %s "
-#msgstr ""
#: cinelerra//render.C:277
msgid "Already rendering"
#: cinelerra//render.C:1112
msgid ": Render"
msgstr ": Render"
-#msgstr ""
#: cinelerra//render.C:1160
msgid "Render range:"
#: cinelerra//renderfarm.C:160
msgid "RenderFarmServerThread::start_loop: socket\n"
-msgstr "RenderFarmServerThread::start_loop: presa\n"
+msgstr "RenderFarmServerThread::start_loop: socket\n"
#: cinelerra//renderfarm.C:184 cinelerra//renderfarm.C:225
#, c-format
#: cinelerra//renderfarm.C:202
msgid "RenderFarmServerThread::start_loop: socket"
-msgstr "RenderFarmServerThread::start_loop: presa"
+msgstr "RenderFarmServerThread::start_loop: socket"
#: cinelerra//renderfarm.C:215
#, c-format
#: cinelerra//renderfarmclient.C:115 cinelerra//renderfarmclient.C:140
msgid "RenderFarmClient::main_loop: socket"
-msgstr "RenderFarmClient::main_loop: presa"
+msgstr "RenderFarmClient::main_loop: socket"
#: cinelerra//renderfarmclient.C:124
#, c-format
#: cinelerra//resizetrackthread.C:136 cinelerra//resizetrackthread.C:162
#: plugins/compressor/compressor.C:886 plugins/scale/scalewin.C:68
msgid "x"
-msgstr "X"
+msgstr "x"
#: cinelerra//resizetrackthread.C:155 plugins/pitch/pitch.C:418
#: plugins/scale/scalewin.C:50
#: cinelerra//resizetrackthread.C:359 cinelerra//scale.C:90
msgid "Resize"
msgstr "Resize"
-#msgstr ""
#: cinelerra//resourcepixmap.C:641
#, c-format
msgid "ResourcePixmap::draw_audio_source: failed to check out %s for drawing.\n"
-msgstr "ResourcePixmap::draw_audio_source: non è riuscito a controllare %s per il disegno.\n"
+msgstr "ResourcePixmap::draw_audio_source: checkout disegno di %s non riuscito.\n"
#: cinelerra//savefile.C:49
msgid "Save backup"
#: cinelerra//scale.C:230 cinelerra//scale.C:234 cinelerra//setformat.C:439
msgid "W Ratio:"
-msgstr "Dim. W:"
+msgstr "Rapporto L:"
#: cinelerra//scale.C:240 cinelerra//scale.C:244 cinelerra//setformat.C:448
msgid "H Ratio:"
-msgstr "Dim. H:"
+msgstr "Rapporto A:"
#: cinelerra//scale.C:276 cinelerra//setformat.C:482
msgid ":"
msgstr ":"
-#msgstr ""
#: cinelerra//scale.C:363 plugins/scale/scalewin.C:232
msgid "Constrain ratio"
#: cinelerra//scale.C:383 cinelerra//setformat.C:853
msgid "Auto"
msgstr "Auto"
-#msgstr ""
#: cinelerra//setformat.C:50
msgid "Format..."
#: cinelerra//setformat.C:50
msgid "Shift-F"
msgstr "Shift-F"
-#msgstr ""
#: cinelerra//setformat.C:166
msgid "set format"
#, c-format
msgid "Subttl %d"
msgstr "Subttl %d"
-#msgstr ""
#: cinelerra//swindow.C:106
msgid "Load"
"== A new entry is here for illustration purposes.\n"
"* Entry 2\n"
"This is the second entry.\n"
-#msgstr ""
#: cinelerra//swindow.C:234
msgid ": Subtitle"
"%s"
msgstr "cannot open: \"%s\"\n"
"%s"
-#msgstr ""
#: cinelerra//swindow.C:977
msgid "SubTitle..."
msgstr "SubTitle..."
-#msgstr ""
#: cinelerra//swindow.C:977
msgid "Alt-y"
msgstr "Alt-y"
-#msgstr ""
#: cinelerra//threadindexer.C:91
#, c-format
#: cinelerra//vdevicebuz.C:331
msgid "Composite"
-msgstr "Composite"
-#msgstr ""
+msgstr "Composito"
#: cinelerra//vdevicebuz.C:332
msgid "S-Video"
msgstr "S-Video"
-#msgstr ""
#: cinelerra//vdevicelml.C:269
#, c-format
#: cinelerra//vdeviceprefs.C:478
msgid "Default A Display:"
msgstr "Default A Display:"
-#msgstr ""
#: cinelerra//vdeviceprefs.C:481
msgid "Default B Display:"
#: cinelerra//vdeviceprefs.C:750
msgid "Lanczos / Lanczos"
msgstr "Lanczos / Lanczos"
-#msgstr ""
#: cinelerra//videowindowgui.C:35
msgid ": Video out"
#: cinelerra//vpatchgui.C:351 plugins/overlay/overlay.C:159
msgid "Max"
msgstr "Max"
-#msgstr ""
#: cinelerra//vpatchgui.C:352 plugins/cdripper/cdripwindow.C:44
#: plugins/cdripper/cdripwindow.C:48 plugins/overlay/overlay.C:160
msgid "Min"
msgstr "Min"
-#msgstr ""
#: cinelerra//vpatchgui.C:353 plugins/denoiseseltempavg/seltempavgwindow.C:87
#: plugins/overlay/overlay.C:161 plugins/timeavg/timeavgwindow.C:208
#: cinelerra//vpatchgui.C:356 plugins/overlay/overlay.C:164
msgid "Dst"
msgstr "Dst"
-#msgstr ""
#: cinelerra//vpatchgui.C:357 plugins/overlay/overlay.C:165
msgid "DstAtop"
msgstr "DstAtop"
-#msgstr ""
#: cinelerra//vpatchgui.C:358 plugins/overlay/overlay.C:166
msgid "DstIn"
msgstr "DstIn"
-#msgstr ""
#: cinelerra//vpatchgui.C:359 plugins/overlay/overlay.C:167
msgid "DstOut"
msgstr "DstOut"
-#msgstr ""
#: cinelerra//vpatchgui.C:360 plugins/overlay/overlay.C:168
msgid "DstOver"
msgstr "DstOver"
-#msgstr ""
#: cinelerra//vpatchgui.C:361 plugins/overlay/overlay.C:169
msgid "Src"
msgstr "Src"
-#msgstr ""
#: cinelerra//vpatchgui.C:362 plugins/overlay/overlay.C:170
msgid "SrcAtop"
msgstr "SrcAtop"
-#msgstr ""
#: cinelerra//vpatchgui.C:363 plugins/overlay/overlay.C:171
msgid "SrcIn"
msgstr "SrcIn"
-#msgstr ""
#: cinelerra//vpatchgui.C:364 plugins/overlay/overlay.C:172
msgid "SrcOut"
msgstr "SrcOut"
-#msgstr ""
#: cinelerra//vpatchgui.C:365 plugins/overlay/overlay.C:173
msgid "SrcOver"
msgstr "SrcOver"
-#msgstr ""
#: cinelerra//vpatchgui.C:366 plugins/overlay/overlay.C:174
msgid "Or"
#: cinelerra//vpatchgui.C:367 plugins/overlay/overlay.C:175
msgid "Xor"
msgstr "Xor"
-#msgstr ""
#: cinelerra//vtrack.C:116
#, c-format
msgid "Video %d"
msgstr "Video %d"
-#msgstr ""
#: cinelerra//vwindow.C:98 cinelerra//vwindow.C:284
msgid "Viewer"
#, c-format
msgid ": Viewer"
msgstr ": Viewer"
-#msgstr ""
#: cinelerra//vwindowgui.C:711
#, c-format
#: cinelerra//zoombar.C:474
msgid "Zoom:"
msgstr "Zoom:"
-#msgstr ""
#: cinelerra//zoombar.C:475 plugins/titler/titlewindow.C:309
msgid "Speed:"
#: cinelerra//zoombar.C:506
msgid "Automation range"
-msgstr "Scalatura automatica"
+msgstr "Intervallo automazione"
#: cinelerra//zoombar.C:566
msgid "Selection start time"
#: plugins/audioscope/audioscope.C:319
msgid "Falling Trigger"
msgstr "Falling Trigger"
-#msgstr ""
#: plugins/audioscope/audioscope.C:373
msgid "History Size:"
#: plugins/audioscope/audioscope.C:664
msgid "AudioScope"
msgstr "AudioScope"
-#msgstr ""
#: plugins/bandslide/bandslide.C:77 plugins/bandwipe/bandwipe.C:77
#: plugins/irissquare/irissquare.C:49 plugins/slide/slide.C:94
#: plugins/bluebanana/bluebanana.C:87
msgid "Blue Banana"
msgstr "Blue Banana"
-#msgstr ""
#: plugins/bluebanana/bluebananalookups.C:64
#: plugins/bluebanana/bluebananalookups.C:72
#: plugins/bluebanana/bluebananawindow.C:1757
msgid " End Mask"
-msgstr "Fine Mask"
+msgstr "Maschera Finale"
#: plugins/bluebanana/bluebananawindow.C:1840
msgid " Mask Selection"
#: plugins/blurzoom/blurzoom.C:63
msgid "RadioacTV"
msgstr "RadioacTV"
-#msgstr ""
#: plugins/brightness/brightness.C:96 plugins/brightness/brightnesswindow.C:52
msgid "Brightness/Contrast"
#: plugins/burn/burn.C:79
msgid "BurningTV"
-msgstr "BruciatoTV"
+msgstr "BurningTV"
#: plugins/burn/burnwindow.C:54
msgid ""
"BurningTV from EffectTV\n"
"Copyright (C) 2001 FUKUCHI Kentarou"
-msgstr "BruciatoTV da EffectTV\n"
+msgstr "BurningTV da EffectTV\n"
"Copyright (C) 2001 FUKUCHI Kentarou"
#: plugins/C41/c41.C:240 plugins/colorbalance/colorbalancewindow.C:150
#: plugins/C41/c41.C:283 plugins/C41/c41.C:314
msgid "Min R:"
-msgstr "R Min:"
+msgstr "Min R:"
#: plugins/C41/c41.C:287 plugins/C41/c41.C:318
msgid "Min G:"
msgstr "Min G:"
-#msgstr ""
#: plugins/C41/c41.C:291 plugins/C41/c41.C:322
msgid "Min B:"
msgstr "Min B:"
-#msgstr ""
#: plugins/C41/c41.C:295 plugins/C41/c41.C:326
msgid "Light:"
#: plugins/C41/c41.C:299 plugins/C41/c41.C:330
msgid "Gamma G:"
msgstr "Gamma G:"
-#msgstr ""
#: plugins/C41/c41.C:303 plugins/C41/c41.C:334
msgid "Gamma B:"
msgstr "Gamma B:"
-#msgstr ""
#: plugins/C41/c41.C:311
msgid "negfix values to apply:"
#: plugins/C41/c41.C:379
msgid "C41"
msgstr "C41"
-#msgstr ""
#: plugins/cdripper/cdripper.C:53
msgid "CD Ripper"
-msgstr "Estrai CD"
+msgstr "Estrattore CD"
#: plugins/cdripper/cdripper.C:127 plugins/cdripper/cdripper.C:159
#: plugins/cdripper/cdripper.C:175 plugins/cdripper/cdripper.C:191
#: plugins/cdripper/cdripper.C:236 plugins/cdripper/cdripwindow.C:29
msgid ": CD Ripper"
msgstr ": CD Ripper"
-#msgstr ""
#: plugins/cdripper/cdripper.C:130
msgid "Can't open cdrom drive."
#: plugins/cdripper/cdripwindow.C:45 plugins/cdripper/cdripwindow.C:49
msgid "Sec"
-msgstr "Seg"
+msgstr "Sec"
#: plugins/cdripper/cdripwindow.C:66
msgid "From"
#: plugins/cdripper/cdripwindow.C:68
msgid "To"
-msgstr "per"
+msgstr "A"
#: plugins/cdripper/cdripwindow.C:71
msgid "CD Device:"
-msgstr "Dispositivo del CD:"
+msgstr "Dispositivo CD:"
#: plugins/chromakey/chromakey.C:136 plugins/diffkey/diffkey.C:298
msgid "Slope:"
-msgstr "Inclina:"
+msgstr "pendenza:"
#: plugins/chromakey/chromakey.C:140 plugins/denoisevideo/denoisevideo.C:256
#: plugins/diffkey/diffkey.C:293 plugins/histogram/histogramwindow.C:260
#: plugins/chromakeyhsv/chromakey.C:196
msgid "Key parameters:"
-msgstr "Chiave Parametri:"
+msgstr "Parametri Chiave:"
#: plugins/chromakeyhsv/chromakey.C:198
msgid "Hue Tolerance:"
#: plugins/chromakeyhsv/chromakey.C:218
msgid "In Slope:"
-msgstr "Salita:"
+msgstr "Pendenza in entrata:"
#: plugins/chromakeyhsv/chromakey.C:221
msgid "Out Slope:"
-msgstr "Discesa:"
+msgstr "Pendensa in uscita:"
#: plugins/chromakeyhsv/chromakey.C:224
msgid "Alpha Offset:"
#: plugins/chromakeyhsv/chromakey.C:232
msgid "Spill light control:"
-msgstr "Controllo puntini luminosi"
+msgstr "Riverso controlli luminosi"
#: plugins/chromakeyhsv/chromakey.C:234
msgid "Spill Threshold:"
-msgstr "Soglia Puntini:"
+msgstr "Soglia Riverso:"
#: plugins/chromakeyhsv/chromakey.C:237
msgid "Spill Compensation:"
-msgstr "Compensazione Puntini"
+msgstr "Compensazione Riverso"
#: plugins/chromakeyhsv/chromakey.C:450
msgid "Show Mask"
#: plugins/color3way/color3way.C:385
msgid "Color 3 Way"
-msgstr "Colore 3 Way"
+msgstr "Color 3 Way"
#: plugins/color3way/color3way.C:607 plugins/color3way/color3way.C:614
#: plugins/colorbalance/colorbalance.C:582
#: plugins/interpolate/interpolate.C:255
msgid "Gamma"
msgstr "Gamma"
-#msgstr ""
#: plugins/color3way/color3waywindow.C:136
msgid "Shadows"
#: plugins/colorbalance/colorbalancewindow.C:60
msgid "Magenta"
msgstr "Magenta"
-#msgstr ""
#: plugins/colorbalance/colorbalancewindow.C:64
msgid "Yellow"
#: plugins/compressor/compressor.C:1370 plugins/compressor/compressor.C:1375
msgid "Trigger"
-msgstr "Trigger"
-#msgstr ""
+msgstr "Scatto"
#: plugins/compressor/compressor.C:1371 plugins/piano/piano.C:1113
#: plugins/synthesizer/synthesizer.C:1673
#: plugins/decimate/decimate.C:257
msgid "Last frame dropped: "
-msgstr "Ultimo fotogramma aggiunto:"
+msgstr "Ultimo fotogramma rimosso:"
#: plugins/decimate/decimate.C:747
msgid "Decimate"
#: plugins/deinterlace-cv/deinterwindow-cv.C:93
msgid "Average top fields"
-msgstr "Media campi superiori"
+msgstr "Media aree superiori"
#: plugins/deinterlace-cv/deinterwindow-cv.C:95
msgid "Average bottom fields"
-msgstr "Media campi in basso"
+msgstr "Media aree in basso"
#: plugins/deinterlace-cv/deinterwindow-cv.C:99
#: plugins/deinterlace-cv/deinterwindow-cv.C:105
#: plugins/deinterlace-cv/deinterwindow-cv.C:261
msgid "Duplicate one field"
-msgstr "Duplica un area"
+msgstr "Duplica un’area"
#: plugins/deinterlace-cv/deinterwindow-cv.C:263
msgid "Average one field"
-msgstr "Media un area"
+msgstr "Media una sola area"
#: plugins/deinterlace-cv/deinterwindow-cv.C:265
msgid "Average both fields"
-msgstr "Media due aree"
+msgstr "Media entrambe aree"
#: plugins/deinterlace-cv/deinterwindow-cv.C:267
msgid "Bob & Weave"
#: plugins/denoiseseltempavg/seltempavgwindow.C:50
msgid "Frames to average"
-msgstr "Media Fotogrammi"
+msgstr "Fotogrammi da calc. media"
#: plugins/denoiseseltempavg/seltempavgwindow.C:55
msgid "Use Method:"
#: plugins/denoiseseltempavg/seltempavgwindow.C:69
msgid "R / Y"
msgstr "R / Y"
-#msgstr ""
#: plugins/denoiseseltempavg/seltempavgwindow.C:75
msgid "G / U"
msgstr "G / U"
-#msgstr ""
#: plugins/denoiseseltempavg/seltempavgwindow.C:81
msgid "B / V"
msgstr "B / V"
-#msgstr ""
#: plugins/denoiseseltempavg/seltempavgwindow.C:89
msgid "Standard Deviation"
-msgstr "Scarto quadratico medio"
+msgstr "Deviazione Standard"
#: plugins/denoiseseltempavg/seltempavgwindow.C:92
msgid "First frame in average:"
-msgstr "Primo frame nella media"
+msgstr "Primo fotogramma in media"
#: plugins/denoiseseltempavg/seltempavgwindow.C:94
msgid "Fixed offset: "
#: plugins/denoiseseltempavg/seltempavgwindow.C:106
msgid "Other Options:"
-msgstr "Altre Opzioni"
+msgstr "Altre Opzioni:"
#: plugins/denoiseseltempavg/seltempavgwindow.C:273
msgid "Reprocess frame again"
-msgstr "Riprocessa il frame nuovamente"
+msgstr "Riprocessa il fotogramma nuovamente"
#: plugins/denoiseseltempavg/seltempavgwindow.C:287
msgid "Disable subtraction"
#: plugins/dot/dot.C:82
msgid "DotTV"
msgstr "DotTV"
-#msgstr ""
#: plugins/dot/dotwindow.C:50
msgid ""
#: plugins/downsample/downsample.C:376 plugins/reframert/reframert.C:294
msgid "Downsample"
-msgstr "Ricampiona"
+msgstr "Riduci campionamento"
#: plugins/echo/echo.C:145
msgid "Level: "
#: plugins/echocancel/echocancel.C:164
msgid "OFF"
msgstr "OFF"
-#msgstr ""
#: plugins/echocancel/echocancel.C:212
msgid "default"
#: plugins/echocancel/echocancel.C:483 plugins/spectrogram/spectrogram.C:471
msgid "X Zoom:"
msgstr "X Zoom:"
-#msgstr ""
#: plugins/echocancel/echocancel.C:488 plugins/freeverb/freeverb.C:318
msgid "Damp:"
-msgstr "Nebbia:"
+msgstr "Umido:"
#: plugins/echocancel/echocancel.C:492
msgid "Cutoff Hz:"
#: plugins/echocancel/echocancel.C:501
msgid "0 Hz"
msgstr "0 Hz"
-#msgstr ""
#: plugins/echocancel/echocancel.C:723
msgid "EchoCancel"
msgstr "EchoCancel"
-#msgstr ""
#: plugins/edge/edge.C:80
msgid "Edge"
#: plugins/fieldframe/fieldframe.C:335
msgid "Fields to frames"
-msgstr "Campi per Fotogramma"
+msgstr "Campi a Fotogrammi"
#: plugins/findobject/findobject.C:199
msgid "Find Object"
#: plugins/findobject/findobjectwindow.C:145
msgid "Object layer:"
-msgstr "Uscita livello:"
+msgstr "Livello oggetto:"
#: plugins/findobject/findobjectwindow.C:154
msgid "Replacement object layer:"
-msgstr "Sostituisci il progetto corrente"
+msgstr "Sostituisci livello oggetto:"
#: plugins/findobject/findobjectwindow.C:163
msgid "Output/scene layer:"
#: plugins/findobject/findobjectwindow.C:173
msgid "Object blend amount:"
-msgstr "Scala in percentuale:"
+msgstr "Quantità miscela oggetti:"
#: plugins/findobject/findobjectwindow.C:181
msgid "Camshift VMIN:"
msgstr "Camshift VMIN:"
-#msgstr ""
#: plugins/findobject/findobjectwindow.C:188
msgid "Camshift VMAX:"
msgstr "Camshift VMAX:"
-#msgstr ""
#: plugins/findobject/findobjectwindow.C:195
msgid "Camshift SMIN:"
msgstr "Camshift SMIN:"
-#msgstr ""
#: plugins/findobject/findobjectwindow.C:337
msgid "Draw border"
-msgstr "Disegna vettori"
+msgstr "Disegna bordi"
#: plugins/findobject/findobjectwindow.C:362
msgid "Draw keypoints"
#: plugins/findobject/findobjectwindow.C:385
msgid "Replace object"
-msgstr "Sostituisci il progetto corrente"
+msgstr "Sostituisci oggetto"
#: plugins/findobject/findobjectwindow.C:410
msgid "Draw object border"
-msgstr "Disegna vettori"
+msgstr "Disegna bordo oggetti"
#: plugins/findobject/findobjectwindow.C:496
#: plugins/findobject/findobjectwindow.C:510 plugins/motion/motionwindow.C:1052
#: plugins/findobject/findobjectwindow.C:513
msgid "SURF"
msgstr "SURF"
-#msgstr ""
#: plugins/findobject/findobjectwindow.C:500
#: plugins/findobject/findobjectwindow.C:520
msgid "CAMSHIFT"
msgstr "CAMSHIFT"
-#msgstr ""
#: plugins/findobject/findobjectwindow.C:501
#: plugins/findobject/findobjectwindow.C:516
msgid "Blob"
msgstr "Blob"
-#msgstr ""
#: plugins/flash/flash.C:45
msgid "Flash"
-msgstr "Veloce"
+msgstr "Flash"
#: plugins/flip/flip.C:88
msgid "Flip"
#: plugins/rgb601/rgb601.C:54
msgid "RGB - 601"
msgstr "RGB - 601"
-#msgstr ""
#: plugins/freeverb/freeverb.C:273
msgid "Freeze"
#: plugins/freeverb/freeverb.C:459
msgid "Freeverb"
msgstr "Freeverb"
-#msgstr ""
#: plugins/freezeframe/freezeframe.C:157
msgid "Freeze Frame"
#: plugins/gradient/gradient.C:439 plugins/timefront/timefront.C:511
msgid "Log"
msgstr "Log"
-#msgstr ""
#: plugins/gradient/gradient.C:441 plugins/piano/piano.C:694
#: plugins/piano/piano.C:947 plugins/synthesizer/synthesizer.C:1019
#: plugins/greycstoration/greycstorationplugin.C:96
msgid "GreyCStoration"
-msgstr "GREYCstoration"
+msgstr "GreyCStoration"
#: plugins/greycstoration/greycstorationwindow.C:44 plugins/wave/wave.C:399
msgid "Amplitude:"
#: plugins/greycstoration/greycstorationwindow.C:52
msgid "Anisotropy:"
-msgstr "Anisotropia:"
+msgstr "Anisotropia"
#: plugins/greycstoration/greycstorationwindow.C:56
msgid "Noise scale:"
#: plugins/histogram/histogramwindow.C:593
msgid "RGB Parade off"
msgstr "RGB Parade off"
-#msgstr ""
#: plugins/histogram/histogramwindow.C:973
msgid "Split output"
#: plugins/histogram_bezier/bistogram.C:81
msgid "Histogram Bezier"
msgstr "Histogram Bezier"
-#msgstr ""
#: plugins/histogram_bezier/bistogramwindow.C:91
msgid "Input X:"
#: plugins/histogram_bezier/bistogramwindow.C:1020
msgid "Bezier"
msgstr "Bezier"
-#msgstr ""
#: plugins/holo/holo.C:83
msgid "HolographicTV"
msgstr "HolographicTV"
-#msgstr ""
#: plugins/huesaturation/huesaturation.C:571
msgid "Hue saturation"
#: plugins/ivtc/ivtc.C:36 plugins/ivtc/ivtcwindow.C:32
msgid "A B BC CD D"
-msgstr "A B BC CD D"
+msgstr "A B BC CD D"
#: plugins/ivtc/ivtc.C:37 plugins/ivtc/ivtcwindow.C:33
msgid "AB BC CD DE EF"
-msgstr "AB BC CD DE EF"
+msgstr "AB BC CD DE EF"
#: plugins/ivtc/ivtcwindow.C:62
msgid "Pattern offset:"
-msgstr "Regola modello:"
+msgstr "Offset Motivo:"
#: plugins/ivtc/ivtcwindow.C:70
msgid "Pattern:"
-msgstr "Modello:"
+msgstr "Motivo:"
#: plugins/ivtc/ivtcwindow.C:137
msgid "Automatic IVTC"
#: plugins/lens/lens.C:493
msgid "R Field of View:"
-msgstr "Compensa aggiustato:"
+msgstr "Campo visivo R:"
#: plugins/lens/lens.C:494
msgid "G Field of View:"
-msgstr "Compensa aggiustato:"
+msgstr "Campo visivo G:"
#: plugins/lens/lens.C:495
msgid "B Field of View:"
-msgstr "Compensa aggiustato:"
+msgstr "Campo visivo B:"
#: plugins/lens/lens.C:496
msgid "A Field of View:"
-msgstr "Compensa aggiustato:"
+msgstr "Campo visivo A:"
#: plugins/lens/lens.C:523
msgid "Lock"
#: plugins/lens/lens.C:530
msgid "Aspect Ratio:"
-msgstr "Dimensione:"
+msgstr "Rapporto Lung/Altezza"
#: plugins/lens/lens.C:630
msgid "Draw center"
-msgstr "Disegna vettori"
+msgstr "Disegna centro"
#: plugins/lens/lens.C:696
msgid "Lens"
#: plugins/linearblur/linearblur.C:282 plugins/motionblur/motionblur.C:251
msgid "Length:"
-msgstr "Compressione:"
+msgstr "Lunghezza:"
#: plugins/linearblur/linearblur.C:290 plugins/motionblur/motionblur.C:255
#: plugins/radialblur/radialblur.C:288 plugins/zoomblur/zoomblur.C:300
#: plugins/liveaudio/liveaudio.C:148
msgid "Live audio"
-msgstr "Audio dal vivo"
+msgstr "Audio Live"
#: plugins/liveaudio/liveaudio.C:377
msgid "Live Audio"
#: plugins/motion2point/motion.C:245
msgid "Motion 2 Point"
msgstr "Motion 2 Point"
-#msgstr ""
#: plugins/motion2point/motionwindow.C:66
msgid "Track Point 1"
#: plugins/overlayaudio/overlayaudio.C:202
msgid "Output track:"
-msgstr "Pista di uscita:"
+msgstr "Traccia di Uscita:"
#: plugins/parametric/parametric.C:275
msgid "Lowpass"
#: plugins/parametric/parametric.C:424
msgid "Freq"
msgstr "Freq"
-#msgstr ""
#: plugins/parametric/parametric.C:425
msgid "Qual"
msgstr "Qual"
-#msgstr ""
#: plugins/parametric/parametric.C:426 plugins/piano/piano.C:511
#: plugins/piano/piano.C:569 plugins/synthesizer/synthesizer.C:573
#: plugins/yuv/yuvwindow.C:43 plugins/zoomblur/zoomblur.C:292
msgid "Y:"
msgstr "Y:"
-#msgstr ""
#: plugins/perspective/perspective.C:172 plugins/perspective/perspective.C:620
msgid "Perspective"
#: plugins/perspective/perspective.C:178
msgid "Sheer"
-msgstr "Sottile"
+msgstr "Puro"
#: plugins/perspective/perspective.C:189
msgid "Perspective direction:"
#: plugins/piano/piano.C:54
msgid "Pianoesizer"
msgstr "Pianoesizer"
-#msgstr ""
#: plugins/piano/piano.C:512 plugins/piano/piano.C:571
#: plugins/synthesizer/synthesizer.C:574 plugins/synthesizer/synthesizer.C:636
#, c-format
msgid "DC"
msgstr "DC"
-#msgstr ""
#: plugins/piano/piano.C:692 plugins/piano/piano.C:945
#: plugins/piano/piano.C:1234 plugins/piano/piano.C:1301
#: plugins/synthesizer/synthesizer.C:1500
#, c-format
msgid "Sawtooth"
-msgstr "Dente di sega"
+msgstr "Sawtooth"
#: plugins/piano/piano.C:695 plugins/piano/piano.C:948
#: plugins/synthesizer/synthesizer.C:1020
#: plugins/synthesizer/synthesizer.C:1848
msgid "Zero"
msgstr "Zero"
-#msgstr ""
#: plugins/piano/piano.C:1169 plugins/synthesizer/synthesizer.C:1731
msgid "Slope"
-msgstr "Discesa"
+msgstr "Pendenza"
#: plugins/piano/piano.C:1192 plugins/piano/piano.C:1324
#: plugins/piano/piano.C:1349 plugins/synthesizer/synthesizer.C:1755
#: plugins/piano/piano.C:1431 plugins/synthesizer/synthesizer.C:2005
msgid "Fibonnacci"
msgstr "Fibonnacci"
-#msgstr ""
#: plugins/piano/piano.C:1455 plugins/synthesizer/synthesizer.C:2030
msgid "Prime"
#: plugins/polar/polar.C:285
msgid "Polar"
-msgstr "Polarità"
+msgstr "Polare"
#: plugins/polar/polarwindow.C:59
msgid "Depth"
#: plugins/zoomblur/zoomblur.C:288
msgid "X:"
msgstr "X:"
-#msgstr ""
#: plugins/radialblur/radialblur.C:383
msgid "Radial Blur"
#: plugins/reroute/reroute.C:193
msgid "Target track:"
-msgstr "Tracce condivise:"
+msgstr "Traccia Obiettivo:"
#: plugins/reroute/reroute.C:202
msgid "Operation:"
#: plugins/resample/resample.C:63
msgid ": Resample"
msgstr ": Resample"
-#msgstr ""
#: plugins/resample/resample.C:128
msgid "Resample"
#: plugins/resamplert/resamplert.C:186
msgid "ResampleRT"
msgstr "ResampleRT"
-#msgstr ""
#: plugins/reverb/reverb.C:101
msgid "Reverb"
msgstr "Reverb"
-#msgstr ""
#: plugins/reverb/reverb.C:425
#, c-format
#: plugins/reverseaudio/reverseaudio.C:170
msgid "Reverse audio"
-msgstr "Audio Inverso"
+msgstr "Inverti Audio"
#: plugins/reversevideo/reversevideo.C:178
msgid "Reverse video"
-msgstr "Video Inverso"
+msgstr "Inverti Video"
#: plugins/rgb601/rgb601window.C:55
msgid "RGB -> 601 compression"
#: plugins/rgbshift/rgbshift.C:171
msgid "R_dx:"
msgstr "R_dx:"
-#msgstr ""
#: plugins/rgbshift/rgbshift.C:174
msgid "R_dy:"
msgstr "R_dy:"
-#msgstr ""
#: plugins/rgbshift/rgbshift.C:177
msgid "G_dx:"
msgstr "G_dx:"
-#msgstr ""
#: plugins/rgbshift/rgbshift.C:180
msgid "G_dy:"
msgstr "G_dy:"
-#msgstr ""
#: plugins/rgbshift/rgbshift.C:183
msgid "B_dx:"
msgstr "B_dx:"
-#msgstr ""
#: plugins/rgbshift/rgbshift.C:186
msgid "B_dy:"
msgstr "B_dy:"
-#msgstr ""
#: plugins/rgbshift/rgbshift.C:211
msgid "RGBShift"
msgstr "RGBShift"
-#msgstr ""
#: plugins/rotate/rotate.C:310
msgid "Draw pivot"
#: plugins/rotate/rotate.C:510
msgid "Pivot (x,y):"
-msgstr "Centro (x,y):"
+msgstr "Cardine(x,y):"
#: plugins/scale/scalewin.C:202
msgid "Use fixed scale"
#: plugins/shapewipe/shapewipe.C:73
msgid "Black to White"
-msgstr "Nero > bianco"
+msgstr "Nero > Bianco"
#: plugins/shapewipe/shapewipe.C:92
msgid "Anti-aliasing"
-msgstr "Anti aliasing"
+msgstr "Anti-aliasing"
#: plugins/shapewipe/shapewipe.C:109
msgid "Preserve shape aspect ratio"
#: plugins/spectrogram/spectrogram.C:478
msgid "Freq: 0 Hz"
msgstr "Freq: 0 Hz"
-#msgstr ""
#: plugins/spectrogram/spectrogram.C:484
msgid "Amplitude: 0 dB"
#, c-format
msgid "Freq: %d Hz"
msgstr "Freq: %d Hz"
-#msgstr ""
#: plugins/spectrogram/spectrogram.C:611
#, c-format
#: plugins/swapchannels/swapchannels.C:102
#: plugins/swapchannels/swapchannels.C:211
msgid "Swap channels"
-msgstr "Rimpiazza canali"
+msgstr "Scambia canali"
#: plugins/swapchannels/swapchannels.C:104
msgid "-> Red"
#: plugins/swapchannels/swapchannels.C:116
msgid "-> Alpha"
msgstr "-> Alpha"
-#msgstr ""
#: plugins/swapframes/swapframes.C:113
msgid "Swap 0-1, 2-3, 4-5..."
#: plugins/theme_blond_cv/blondcvtheme.C:72
msgid "Blond-cv"
msgstr "Blond-cv"
-#msgstr ""
#: plugins/theme_blue_dot/bluedottheme.C:75
msgid "Blue Dot"
msgstr "Blue Dot"
-#msgstr ""
#: plugins/theme_bright/brighttheme.C:71
msgid "Bright"
#: plugins/theme_hulk/hulktheme.C:74
msgid "Hulk"
msgstr "Hulk"
-#msgstr ""
#: plugins/theme_pinklady/pinkladytheme.C:65
msgid "PinkLady"
#: plugins/theme_suv/suv.C:71
msgid "S.U.V."
msgstr "S.U.V."
-#msgstr ""
#: plugins/theme_unflat/unflattheme.C:68
msgid "UnFlat"
#: plugins/threshold/thresholdwindow.C:485
msgid "Min:"
msgstr "Min:"
-#msgstr ""
#: plugins/threshold/thresholdwindow.C:498
msgid "Max:"
msgstr "Max:"
-#msgstr ""
#: plugins/timeavg/timeavg.C:118
msgid "Time Average"
#: plugins/timefront/timefront.C:166
msgid "Time range:"
-msgstr "Intervallo tempo :"
+msgstr "Intervallo tempo:"
#: plugins/timefront/timefront.C:292
msgid "As timefront use:"
#: plugins/timefront/timefront.C:784
#, c-format
msgid "ERROR: TimeFront plugin - If you are using another track for timefront, you have to have it under shared effects\n"
-msgstr "ERRORE: TimeFront plugin - Se si sta utilizzando un'altra traccia per timefront, devi avere sotto effetti condivisa\n"
+msgstr "ERRORE: TImeFront plugin - Se stai usando un altra traccia per timefront, devi averla sotto effetti condivisi\n"
#: plugins/timefront/timefront.C:789
#, c-format
msgid "Sizes of master track and timefront track do not match\n"
-msgstr "Misure di master track e pista timefront non corrispondono\n"
+msgstr "Dimensione delle traccie master e timefront non coincidono\n"
#: plugins/timefront/timefront.C:836
#, c-format
msgid "TimeFront plugin error: ALPHA used, but project color model does not have alpha\n"
-msgstr "TimeFront errore plugin: ALPHA usato, ma modello di colore progetto non ha alpha\n"
+msgstr "Errore plugin TimeFront: ALPHA e’ stato usato, ma il modello colore nel progetto non ha alpha\n"
#: plugins/timefront/timefront.C:897
#, c-format
msgid "TimeFront plugin error: ALPHA track used, but project color model does not have alpha\n"
-msgstr "TimeFront errore plugin: ALPHA pista utilizzata, ma modello di colore progetto non ha alpha\n"
+msgstr "Errore plugin TimeFront: traccia ALPHA e’ stata usato, ma il modello colore nel progetto non ha alpha\n"
#: plugins/timefront/timefront.C:904
#, c-format
msgid "TimeFront plugin error: unsupported track_usage parameter\n"
-msgstr "Errore plug TimeFront: non supportato track_usage parametro\n"
+msgstr "Errore plugin TimeFront: parametro track_usage non supportato\n"
#: plugins/timestretch/timestretch.C:70
msgid "Use fast fourier transform"
#: plugins/timestretchrt/timestretchrt.C:199
msgid "Time Stretch RT"
msgstr "Time Stretch RT"
-#msgstr ""
#: plugins/titler/title.C:293
#, c-format
msgid "GlyphUnit::process_package FT_New_Face failed.\n"
-msgstr "GlyphUnit::process_package FT_New_Face non riuscita.\n"
+msgstr "GlyphUnit::process_package FT_New_Face failed.\n"
#: plugins/titler/title.C:317
#, c-format
msgid "GlyphUnit::process_package FT_Load_Char failed - char: %li.\n"
-msgstr "GlyphUnit::process_package FT_Load_Char failed - char: %li.\n"
-#msgstr ""
+msgstr "GlyphUnit::process_package FT_Load_Char non riuscito - char: %li.\n"
#: plugins/titler/title.C:1376
#, c-format
msgid "TitleMain::load_freetype_face %s failed.\n"
-msgstr "TitleMain::load_freetype_face %s non riuscita.\n"
+msgstr "TitleMain::load_freetype_face %s failed.\n"
#: plugins/titler/title.C:1929
msgid "No motion"
#: plugins/vocoder/vocoder.C:363
msgid "Vocoder"
msgstr "Vocoder"
-#msgstr ""
#: plugins/wave/wave.C:263
msgid "Smear"
#: plugins/wipe/wipe.C:146
msgid "Wipe"
-msgstr "Cancella"
+msgstr "Pulisci"
#: plugins/yuv/yuv.C:181 plugins/yuv/yuvwindow.C:48
msgid "U:"
msgstr "U:"
-#msgstr ""
#: plugins/yuv/yuv.C:184 plugins/yuv/yuvwindow.C:53
msgid "V:"
msgstr "V:"
-#msgstr ""
#: plugins/yuv/yuv.C:209
msgid "YUV"
msgstr "YUV"
-#msgstr ""
#: plugins/yuvshift/yuvshift.C:171
msgid "Y_dx:"
msgstr "Y_dx:"
-#msgstr ""
#: plugins/yuvshift/yuvshift.C:174
msgid "Y_dy:"
msgstr "Y_dy:"
-#msgstr ""
#: plugins/yuvshift/yuvshift.C:177
msgid "U_dx:"
msgstr "U_dx:"
-#msgstr ""
#: plugins/yuvshift/yuvshift.C:180
msgid "U_dy:"
msgstr "U_dy:"
-#msgstr ""
#: plugins/yuvshift/yuvshift.C:183
msgid "V_dx:"
msgstr "V_dx:"
-#msgstr ""
#: plugins/yuvshift/yuvshift.C:186
msgid "V_dy:"
msgstr "V_dy:"
-#msgstr ""
#: plugins/yuvshift/yuvshift.C:211
msgid "YUVShift"
msgstr "YUVShift"
-#msgstr ""
#: plugins/zoom/zoom.C:100
msgid "X Magnification:"
+++ /dev/null
-diff -ru a/source/encoder/encoder.cpp b/source/encoder/encoder.cpp
---- a/source/encoder/encoder.cpp 2016-01-24 22:16:50.000000000 -0700
-+++ b/source/encoder/encoder.cpp 2016-02-21 09:02:20.443636332 -0700
-@@ -361,7 +361,10 @@
- }
-
- if (m_threadPool)
-- m_threadPool->stopWorkers();
-+ {
-+ for (int i = 0; i < m_numPools; i++)
-+ m_threadPool[i].stopWorkers();
-+ }
- }
-
- void Encoder::destroy()