
ffmpegtk es un frontend para ffmpeg. Sirve para recodificar y cambiar formatos a archivos de video y audio. La idea es no tener que usar ffmpeg desde la linea de comandos. No es que esté en contra de la linea de comandos, sino que a veces se hace difícil recordar los argumentos de cada programa. Es un proyecto que empezé y nunca terminé (al igual que MediaBash, y GigaBash que nombré en el post anterior, y que muchísimos otros), pero como, aunque esté incompleto, funciona, voy a publicarlo.
Está escrito en C y GTK. Para compilarlo hay que tener instaladas las bibliotecas de desarrollo de GTK, guardar el código en un archivo de nombre ffmpegtk.c y usar el comando:
gcc -Wall -g ffmpegtk.c -o ffmpegtk $(pkg-config --cflags gtk+-2.0) $(pkg-config --libs gtk+-2.0)
Licencia WTFPL
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
#include
#include
#include
#include
void checkboxActionHide (GtkWidget * caller, GtkWidget * argument)
{
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(caller)))
gtk_widget_show(argument);
else
gtk_widget_hide(argument);
}
void checkboxActionShow (GtkWidget * caller, GtkWidget * argument)
{
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(caller)))
gtk_widget_hide(argument);
else
gtk_widget_show(argument);
}
void infoButtonAction(GtkWidget * caller, GtkWidget * argument)
{
gtk_widget_show(argument);
}
void encodeButtonAction(GtkWidget * caller, GtkWidget ** optionsArray)
{
GtkWidget * entryInputFile=optionsArray[1];
GtkWidget * formatCombobox=optionsArray[2];
GtkWidget * entryOutputFile=optionsArray[3];
GtkWidget * filesizelimitCheckbox=optionsArray[20];
GtkWidget * filesizelimitSpin=optionsArray[22];
GtkWidget * durationlimitCheckbox=optionsArray[30];
GtkWidget * durationlimitSpinHours=optionsArray[31];
GtkWidget * durationlimitSpinMinutes=optionsArray[32];
GtkWidget * durationlimitSpinSeconds=optionsArray[33];
GtkWidget * durationlimitSpinMiliseconds=optionsArray[34];
GtkWidget * starttimeCheckbox=optionsArray[40];
GtkWidget * starttimeSpinHours=optionsArray[41];
GtkWidget * starttimeSpinMinutes=optionsArray[42];
GtkWidget * starttimeSpinSeconds=optionsArray[43];
GtkWidget * starttimeSpinMiliseconds=optionsArray[44];
GtkWidget * enablevideoCheckbox=optionsArray[50];
GtkWidget * copyVideoCheckbox=optionsArray[51];
GtkWidget * videoBitrateSpin=optionsArray[52];
GtkWidget * videoFpsSpin=optionsArray[53];
GtkWidget * videoCodecCombobox=optionsArray[54];
GtkWidget * videoResolutionCheckbox=optionsArray[55];
GtkWidget * videoResolutionXSpin=optionsArray[56];
GtkWidget * videoResolutionYSpin=optionsArray[57];
GtkWidget * enableaudioCheckbox=optionsArray[60];
GtkWidget * copyAudioCheckbox=optionsArray[61];
GtkWidget * audioBitrateSpin=optionsArray[62];
GtkWidget * audioChannelsSpin=optionsArray[63];
GtkWidget * audioRateCombobox=optionsArray[64];
GtkWidget * audioCodecCombobox=optionsArray[65];
GtkWidget * titleCheckbox=optionsArray[70];
GtkWidget * titleEntry=optionsArray[71];
GtkWidget * authorCheckbox=optionsArray[72];
GtkWidget * authorEntry=optionsArray[73];
GtkWidget * trackCheckbox=optionsArray[74];
GtkWidget * trackSpin=optionsArray[75];
GtkWidget * albumCheckbox=optionsArray[76];
GtkWidget * albumEntry=optionsArray[77];
GtkWidget * yearCheckbox=optionsArray[78];
GtkWidget * yearSpin=optionsArray[79];
GtkWidget * commentCheckbox=optionsArray[80];
GtkWidget * commentEntry=optionsArray[81];
GtkWidget * copyrightCheckbox=optionsArray[82];
GtkWidget * copyrightEntry=optionsArray[83];
char commandLine[1024];
char tempString[512];
commandLine[0]=”;
strcat(commandLine, “xterm -hold -e ffmpeg -y “);
//input
if(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(entryInputFile)) && strcmp(gtk_entry_get_text(GTK_ENTRY(entryOutputFile)), “” ) )
{
strcat(commandLine, “-i ‘”);
strcat(commandLine, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(entryInputFile)));
strcat(commandLine, “‘ “);
}
//format
if( strcmp( (char *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(formatCombobox)), “Default” ) )
{
strcat(commandLine, “-f “);
strcat(commandLine, (char *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(formatCombobox)));
strcat(commandLine, ” “);
}
//filesize
if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(filesizelimitCheckbox)) )
{
strcat(commandLine, “-fs “);
sprintf(tempString, “%d”, (gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(filesizelimitSpin))*1024) );
strcat(commandLine, tempString);
strcat(commandLine, ” “);
}
//duration
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(durationlimitCheckbox)))
{
strcat(commandLine, “-t “);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(durationlimitSpinHours)) );
strcat(commandLine, tempString);
strcat(commandLine, “:”);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(durationlimitSpinMinutes)) );
strcat(commandLine, tempString);
strcat(commandLine, “:”);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(durationlimitSpinSeconds)) );
strcat(commandLine, tempString);
strcat(commandLine, “.”);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(durationlimitSpinMiliseconds)) );
strcat(commandLine, tempString);
strcat(commandLine, ” “);
}
//start time
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(starttimeCheckbox)))
{
strcat(commandLine, “-ss “);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(starttimeSpinHours)) );
strcat(commandLine, tempString);
strcat(commandLine, “:”);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(starttimeSpinMinutes)) );
strcat(commandLine, tempString);
strcat(commandLine, “:”);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(starttimeSpinSeconds)) );
strcat(commandLine, tempString);
strcat(commandLine, “.”);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(starttimeSpinMiliseconds)) );
strcat(commandLine, tempString);
strcat(commandLine, ” “);
}
//video
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enablevideoCheckbox)))
{
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(copyVideoCheckbox)))
{
strcat(commandLine, “-vcodec copy “);
}
else
{
//video bitrate
strcat(commandLine, “-b “);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(videoBitrateSpin)) );
strcat(commandLine, tempString);
strcat(commandLine, “k “);
//video fps
strcat(commandLine, “-r “);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(videoFpsSpin)) );
strcat(commandLine, tempString);
strcat(commandLine, ” “);
//video resolution
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(videoResolutionCheckbox)))
{
strcat(commandLine, “-s “);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(videoResolutionXSpin)) );
strcat(commandLine, tempString);
strcat(commandLine, “x”);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(videoResolutionYSpin)) );
strcat(commandLine, tempString);
strcat(commandLine, ” “);
}
//video codec
if(strcmp( (char *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(videoCodecCombobox)), “Default” ))
{
strcat(commandLine, “-vcodec “);
strcat(commandLine, (char *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(videoCodecCombobox)));
strcat(commandLine, ” “);
}
}
}
else
strcat(commandLine, “-vn “);
//audio
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(enableaudioCheckbox)))
{
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(copyAudioCheckbox)))
{
strcat(commandLine, “-acodec copy “);
}
else
{
//audio bitrate
strcat(commandLine, “-ab “);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(audioBitrateSpin)));
strcat(commandLine, tempString);
strcat(commandLine, “k “);
//audio channels
strcat(commandLine, “-ac “);
sprintf(tempString, “%d”, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(audioChannelsSpin)));
strcat(commandLine, tempString);
strcat(commandLine, ” “);
//audio rate
strcat(commandLine, “-ar “);
strcat(commandLine, gtk_combo_box_get_active_text(GTK_COMBO_BOX(audioRateCombobox)));
strcat(commandLine, ” “);
//audio codec
if(strcmp( (char *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(audioCodecCombobox)), “Default” ))
{
strcat(commandLine, “-acodec “);
strcat(commandLine, (char *) gtk_combo_box_get_active_text(GTK_COMBO_BOX(audioCodecCombobox)));
strcat(commandLine, ” “);
}
}
}
else
{
strcat(commandLine, “-an “);
}
//title
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(titleCheckbox)))
{
strcat(commandLine, “-title ‘”);
strcat(commandLine, gtk_entry_get_text(GTK_ENTRY(titleEntry)));
strcat(commandLine, “‘ “);
}
//author
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authorCheckbox)))
{
strcat(commandLine, “-author ‘”);
strcat(commandLine, gtk_entry_get_text(GTK_ENTRY(authorEntry)));
strcat(commandLine, “‘ “);
}
//track
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(trackCheckbox)))
{
sprintf(tempString, “-track %d “, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(trackSpin)));
strcat(commandLine, tempString);
}
//album
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(albumCheckbox)))
{
strcat(commandLine, “-album ‘”);
strcat(commandLine, gtk_entry_get_text(GTK_ENTRY(albumEntry)));
strcat(commandLine, “‘ “);
}
//year
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(yearCheckbox)))
{
sprintf(tempString, “-year %d “, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(yearSpin)));
strcat(commandLine, tempString);
}
//comment
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(commentCheckbox)))
{
strcat(commandLine, “-comment ‘”);
strcat(commandLine, gtk_entry_get_text(GTK_ENTRY(commentEntry)));
strcat(commandLine, “‘ “);
}
//copyright
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(copyrightCheckbox)))
{
strcat(commandLine, “-copyright ‘”);
strcat(commandLine, gtk_entry_get_text(GTK_ENTRY(copyrightEntry)));
strcat(commandLine, “‘ “);
}
//output
if(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(entryInputFile)) && strcmp(gtk_entry_get_text(GTK_ENTRY(entryOutputFile)), “” ) )
{
strcat(commandLine, “‘”);
strcat(commandLine, gtk_entry_get_text(GTK_ENTRY(entryOutputFile)));
strcat(commandLine, “‘”);
}
else
return;
printf(“command: %s\n”, commandLine);
strcat(commandLine, “&”);
system(commandLine);
}
void drawMainWindow()
{
GtkWidget * optionsArray[90];
GtkWidget * mainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
GtkWidget * mainBox = gtk_vbox_new(0, 4);
GtkWidget * labelInputFile = gtk_label_new(“Input File:”);
GtkWidget * entryInputFile = gtk_file_chooser_button_new(“Input File”, GTK_FILE_CHOOSER_ACTION_OPEN);
GtkWidget * formatBox = gtk_hbox_new(0, 0);
GtkWidget * formatLabel = gtk_label_new(“File format:”);
GtkWidget * formatCombobox = gtk_combo_box_entry_new_text();
GtkWidget * infoButton = gtk_button_new_with_label(“Set info”);
GtkWidget * filesizelimitBox = gtk_vbox_new(0, 0);
GtkWidget * filesizelimitCheckbox = gtk_check_button_new_with_label(“File size limit:”);
GtkWidget * filesizelimitBoxChild = gtk_hbox_new(0, 0);
GtkWidget * filesizelimitSpin = gtk_spin_button_new_with_range(1, 99999999, 1);
GtkWidget * filesizelimitLabel = gtk_label_new(“KiB”);
GtkWidget * durationlimitBox = gtk_vbox_new(0, 0);
GtkWidget * durationlimitCheckbox = gtk_check_button_new_with_label(“Duration limit:”);
GtkWidget * durationlimitBoxChild = gtk_hbox_new(0, 0);
GtkWidget * durationlimitSpinHours = gtk_spin_button_new_with_range(0, 99, 1);
GtkWidget * durationlimitLabel2 = gtk_label_new(“:”);
GtkWidget * durationlimitSpinMinutes = gtk_spin_button_new_with_range(0, 60, 1);
GtkWidget * durationlimitLabel3 = gtk_label_new(“:”);
GtkWidget * durationlimitSpinSeconds = gtk_spin_button_new_with_range(0, 60, 1);
GtkWidget * durationlimitLabel4 = gtk_label_new(“.”);
GtkWidget * durationlimitSpinMiliseconds = gtk_spin_button_new_with_range(0, 999, 1);
GtkWidget * starttimeBox = gtk_vbox_new(0, 0);
GtkWidget * starttimeCheckbox = gtk_check_button_new_with_label(“Custom start time:”);
GtkWidget * starttimeBoxChild = gtk_hbox_new(0, 0);
GtkWidget * starttimeSpinHours = gtk_spin_button_new_with_range(0, 99, 1);
GtkWidget * starttimeLabel2 = gtk_label_new(“:”);
GtkWidget * starttimeSpinMinutes = gtk_spin_button_new_with_range(0, 60, 1);
GtkWidget * starttimeLabel3 = gtk_label_new(“:”);
GtkWidget * starttimeSpinSeconds = gtk_spin_button_new_with_range(0, 60, 1);
GtkWidget * starttimeLabel4 = gtk_label_new(“.”);
GtkWidget * starttimeSpinMiliseconds = gtk_spin_button_new_with_range(0, 999, 1);
GtkWidget * hbox = gtk_hbox_new(0, 4);
GtkWidget * videoBox = gtk_vbox_new(0, 4);
GtkWidget * videoLabel = gtk_label_new(“Video options:”);
GtkWidget * enablevideoCheckbox = gtk_check_button_new_with_label(“Enable video”);
GtkWidget * videoOptionsBox = gtk_vbox_new(0, 4);
GtkWidget * copyVideoCheckbox = gtk_check_button_new_with_label(“Copy video stream”);
GtkWidget * videoOptionsBoxChild = gtk_vbox_new(0, 4);
GtkWidget * videoBitrateBox = gtk_hbox_new(0, 0);
GtkWidget * videoBitrateLabel1 = gtk_label_new(“Bitrate:”);
GtkWidget * videoBitrateSpin = gtk_spin_button_new_with_range(1, 99999999, 1);
GtkWidget * videoBitrateLabel2 = gtk_label_new(“Kb/s”);
GtkWidget * videoFpsBox = gtk_hbox_new(0, 0);
GtkWidget * videoFpsLabel1 = gtk_label_new(“Frame rate:”);
GtkWidget * videoFpsSpin = gtk_spin_button_new_with_range(1, 99999999, 1);
GtkWidget * videoFpsLabel2 = gtk_label_new(“FPS”);
GtkWidget * videoCodecBox = gtk_hbox_new(0, 0);
GtkWidget * videoCodecLabel = gtk_label_new(“Codec:”);
GtkWidget * videoCodecCombobox = gtk_combo_box_entry_new_text();
GtkWidget * videoResolutionBox = gtk_vbox_new(0,0);
GtkWidget * videoResolutionCheckbox = gtk_check_button_new_with_label(“Custom video size”);
GtkWidget * videoResolutionBoxChild = gtk_hbox_new(0,0);
GtkWidget * videoResolutionXSpin = gtk_spin_button_new_with_range(1, 99999999, 1);
GtkWidget * videoResolutionLabel = gtk_label_new(“X”);
GtkWidget * videoResolutionYSpin = gtk_spin_button_new_with_range(1, 99999999, 1);
GtkWidget * audioBox = gtk_vbox_new(0, 4);
GtkWidget * audioLabel = gtk_label_new(“Audio options:”);
GtkWidget * enableaudioCheckbox = gtk_check_button_new_with_label(“Enable audio”);
GtkWidget * audioOptionsBox = gtk_vbox_new(0, 4);
GtkWidget * copyAudioCheckbox = gtk_check_button_new_with_label(“Copy audio stream”);
GtkWidget * audioOptionsBoxChild = gtk_vbox_new(0, 4);
GtkWidget * audioBitrateBox = gtk_hbox_new(0, 0);
GtkWidget * audioBitrateLabel1 = gtk_label_new(“Bitrate:”);
GtkWidget * audioBitrateSpin = gtk_spin_button_new_with_range(1, 99999999, 1);
GtkWidget * audioBitrateLabel2 = gtk_label_new(“Kb/s”);
GtkWidget * audioChannelsBox = gtk_hbox_new(0, 0);
GtkWidget * audioChannelsLabel = gtk_label_new(“Channels:”);
GtkWidget * audioChannelsSpin = gtk_spin_button_new_with_range(1, 16, 1);
GtkWidget * audioRateBox = gtk_vbox_new(0, 0);
GtkWidget * audioRateLabel = gtk_label_new(“Sampling frequency (Hz):”);
GtkWidget * audioRateCombobox = gtk_combo_box_entry_new_text();
GtkWidget * audioCodecBox = gtk_hbox_new(0, 0);
GtkWidget * audioCodecLabel = gtk_label_new(“Codec:”);
GtkWidget * audioCodecCombobox = gtk_combo_box_entry_new_text();
GtkWidget * labelOutputFile = gtk_label_new(“Output File:”);
GtkWidget * entryOutputFile = gtk_entry_new();
GtkWidget * buttonEncode = gtk_button_new_with_label (“Encode!”);
GtkWidget * infoWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
GtkWidget * infoMainBox = gtk_vbox_new(0, 4);
GtkWidget * titleBox = gtk_vbox_new(0, 0);
GtkWidget * titleCheckbox = gtk_check_button_new_with_label(“Title”);
GtkWidget * titleEntry = gtk_entry_new();
GtkWidget * authorBox = gtk_vbox_new(0, 0);
GtkWidget * authorCheckbox = gtk_check_button_new_with_label(“Author”);
GtkWidget * authorEntry = gtk_entry_new();
GtkWidget * copyrightBox = gtk_vbox_new(0, 0);
GtkWidget * copyrightCheckbox = gtk_check_button_new_with_label(“Copyright”);
GtkWidget * copyrightEntry = gtk_entry_new();
GtkWidget * commentBox = gtk_vbox_new(0, 0);
GtkWidget * commentCheckbox = gtk_check_button_new_with_label(“Comment”);
GtkWidget * commentEntry = gtk_entry_new();
GtkWidget * albumBox = gtk_vbox_new(0, 0);
GtkWidget * albumCheckbox = gtk_check_button_new_with_label(“Album”);
GtkWidget * albumEntry = gtk_entry_new();
GtkWidget * trackBox = gtk_vbox_new(0, 0);
GtkWidget * trackCheckbox = gtk_check_button_new_with_label(“Track number”);
GtkWidget * trackSpin = gtk_spin_button_new_with_range(1, 999, 1);
GtkWidget * yearBox = gtk_vbox_new(0, 0);
GtkWidget * yearCheckbox = gtk_check_button_new_with_label(“Year”);
GtkWidget * yearSpin = gtk_spin_button_new_with_range(1, 9999, 1);
gtk_container_add (GTK_CONTAINER(mainWindow), mainBox);
gtk_box_pack_start(GTK_BOX(mainBox), labelInputFile, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), entryInputFile, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), formatBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(formatBox), formatLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(formatBox), formatCombobox, FALSE, FALSE, 0);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “Default”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “3g2″);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “3gp”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “aiff”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “amr”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “asf”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “au”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “avi”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “dv”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “dvd”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “flv”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “gif”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “ipod”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “matroska”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “mov”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “mp2″);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “mp3″);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “mp4″);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “mpeg”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “ogg”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “psp”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “rm”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “svcd”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “swf”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “vcd”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “vob”);
gtk_combo_box_append_text(GTK_COMBO_BOX(formatCombobox), “wav”);
gtk_combo_box_set_active(GTK_COMBO_BOX(formatCombobox), 0);
gtk_box_pack_start(GTK_BOX(formatBox), infoButton, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), filesizelimitBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(filesizelimitBox), filesizelimitCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(filesizelimitBox), filesizelimitBoxChild, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(filesizelimitBoxChild), filesizelimitSpin, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(filesizelimitBoxChild), filesizelimitLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), durationlimitBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBox), durationlimitCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBox), durationlimitBoxChild, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBoxChild), durationlimitSpinHours, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBoxChild), durationlimitLabel2, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBoxChild), durationlimitSpinMinutes, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBoxChild), durationlimitLabel3, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBoxChild), durationlimitSpinSeconds, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBoxChild), durationlimitLabel4, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(durationlimitBoxChild), durationlimitSpinMiliseconds, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), starttimeBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBox), starttimeCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBox), starttimeBoxChild, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBoxChild), starttimeSpinHours, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBoxChild), starttimeLabel2, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBoxChild), starttimeSpinMinutes, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBoxChild), starttimeLabel3, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBoxChild), starttimeSpinSeconds, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBoxChild), starttimeLabel4, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(starttimeBoxChild), starttimeSpinMiliseconds, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), gtk_hseparator_new(), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), videoBox, TRUE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoBox), videoLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoBox), enablevideoCheckbox, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enablevideoCheckbox), TRUE);
gtk_box_pack_start(GTK_BOX(videoBox), videoOptionsBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoOptionsBox), copyVideoCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoOptionsBox), videoOptionsBoxChild, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoOptionsBoxChild), videoBitrateBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoBitrateBox), videoBitrateLabel1, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoBitrateBox), videoBitrateSpin, FALSE, FALSE, 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(videoBitrateSpin), 200);
gtk_box_pack_start(GTK_BOX(videoBitrateBox), videoBitrateLabel2, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoOptionsBoxChild), videoFpsBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoFpsBox), videoFpsLabel1, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoFpsBox), videoFpsSpin, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoFpsBox), videoFpsLabel2, FALSE, FALSE, 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(videoFpsSpin), 25);
gtk_box_pack_start(GTK_BOX(videoOptionsBoxChild), videoResolutionBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoResolutionBox), videoResolutionCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoResolutionBox), videoResolutionBoxChild, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoResolutionBoxChild), videoResolutionXSpin, FALSE, FALSE, 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(videoResolutionXSpin), 640);
gtk_box_pack_start(GTK_BOX(videoResolutionBoxChild), videoResolutionLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoResolutionBoxChild), videoResolutionYSpin, FALSE, FALSE, 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(videoResolutionYSpin), 480);
gtk_box_pack_start(GTK_BOX(videoOptionsBoxChild), videoCodecBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoCodecBox), videoCodecLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(videoCodecBox), videoCodecCombobox, FALSE, FALSE, 0);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “Default”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “dvvideo”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “ffv1″);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “ffvhuff”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “flashsv”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “flv”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “gif”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “h261″);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “h263″);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “h263p”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “huffyuv”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “libdirac”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “libtheora”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “libx264″);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “libxvid”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “ljpeg”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “mjpeg”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “mpeg1video”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “mpeg2video”);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “mpeg4″);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “msmpeg4″);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “wmv1″);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “wmv2″);
gtk_combo_box_append_text(GTK_COMBO_BOX(videoCodecCombobox), “zlib”);
gtk_combo_box_set_active(GTK_COMBO_BOX(videoCodecCombobox), 0);
gtk_box_pack_start(GTK_BOX(hbox), gtk_vseparator_new(), TRUE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), audioBox, 1, 0, 0);
gtk_box_pack_start(GTK_BOX(audioBox), audioLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioBox), enableaudioCheckbox, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableaudioCheckbox), TRUE);
gtk_box_pack_start(GTK_BOX(audioBox), audioOptionsBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioOptionsBox), copyAudioCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioOptionsBox), audioOptionsBoxChild, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioOptionsBoxChild), audioBitrateBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioBitrateBox), audioBitrateLabel1, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioBitrateBox), audioBitrateSpin, FALSE, FALSE, 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(audioBitrateSpin), 64);
gtk_box_pack_start(GTK_BOX(audioBitrateBox), audioBitrateLabel2, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioOptionsBoxChild), audioChannelsBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioChannelsBox), audioChannelsLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioChannelsBox), audioChannelsSpin, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioOptionsBoxChild), audioRateBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioRateBox), audioRateLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioRateBox), audioRateCombobox, FALSE, FALSE, 0);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioRateCombobox), “8000″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioRateCombobox), “11025″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioRateCombobox), “16000″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioRateCombobox), “22050″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioRateCombobox), “32000″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioRateCombobox), “44100″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioRateCombobox), “48000″);
gtk_combo_box_set_active(GTK_COMBO_BOX(audioRateCombobox), 5);
gtk_box_pack_start(GTK_BOX(audioOptionsBoxChild), audioCodecBox, FALSE, FALSE, 0 );
gtk_box_pack_start(GTK_BOX(audioCodecBox), audioCodecLabel, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(audioCodecBox), audioCodecCombobox, FALSE, FALSE, 0);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “Default”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “ac3″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “alac”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “flac”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “g726″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “libamr_nb”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “libamr_wb”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “libfaac”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “libgsm”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “libmp3lame”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “libvorbis”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “mp2″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “vorbis”);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “wmav1″);
gtk_combo_box_append_text(GTK_COMBO_BOX(audioCodecCombobox), “wmav2″);
gtk_combo_box_set_active(GTK_COMBO_BOX(audioCodecCombobox), 0);
gtk_box_pack_start(GTK_BOX(mainBox), gtk_hseparator_new(), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), labelOutputFile, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), entryOutputFile, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainBox), buttonEncode, TRUE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(infoWindow), infoMainBox);
gtk_box_pack_start(GTK_BOX(infoMainBox),titleBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(titleBox), titleCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(titleBox), titleEntry, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(infoMainBox),authorBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(authorBox), authorCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(authorBox), authorEntry, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(infoMainBox),trackBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(trackBox), trackCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(trackBox), trackSpin, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(infoMainBox),albumBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(albumBox), albumCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(albumBox), albumEntry, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(infoMainBox),yearBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(yearBox), yearCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(yearBox), yearSpin,FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(infoMainBox), commentBox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(commentBox), commentCheckbox,FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(commentBox), commentEntry,FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(infoMainBox),copyrightBox ,FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(copyrightBox), copyrightCheckbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(copyrightBox), copyrightEntry, FALSE, FALSE, 0);
gtk_signal_connect(GTK_OBJECT (mainWindow), “delete_event”, GTK_SIGNAL_FUNC (gtk_exit), NULL);
gtk_signal_connect(GTK_OBJECT (infoWindow), “delete_event”, GTK_SIGNAL_FUNC (gtk_widget_hide), NULL);
gtk_signal_connect(GTK_OBJECT (durationlimitCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), durationlimitBoxChild);
gtk_signal_connect(GTK_OBJECT (starttimeCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), starttimeBoxChild);
gtk_signal_connect(GTK_OBJECT (filesizelimitCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), filesizelimitBoxChild);
gtk_signal_connect(GTK_OBJECT (videoResolutionCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), videoResolutionBoxChild);
gtk_signal_connect(GTK_OBJECT (enablevideoCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), videoOptionsBox);
gtk_signal_connect(GTK_OBJECT (enableaudioCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), audioOptionsBox);
gtk_signal_connect(GTK_OBJECT (titleCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), titleEntry);
gtk_signal_connect(GTK_OBJECT (authorCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), authorEntry);
gtk_signal_connect(GTK_OBJECT (trackCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), trackSpin);
gtk_signal_connect(GTK_OBJECT (albumCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), albumEntry);
gtk_signal_connect(GTK_OBJECT (yearCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), yearSpin);
gtk_signal_connect(GTK_OBJECT (commentCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), commentEntry);
gtk_signal_connect(GTK_OBJECT (copyrightCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionHide), copyrightEntry);
gtk_signal_connect(GTK_OBJECT (copyVideoCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionShow), videoOptionsBoxChild);
gtk_signal_connect(GTK_OBJECT (copyAudioCheckbox), “toggled”, GTK_SIGNAL_FUNC (checkboxActionShow), audioOptionsBoxChild);
optionsArray[1]=entryInputFile;
optionsArray[2]=formatCombobox;
optionsArray[20]=filesizelimitCheckbox;
optionsArray[22]=filesizelimitSpin;
optionsArray[30]=durationlimitCheckbox;
optionsArray[31]=durationlimitSpinHours;
optionsArray[32]=durationlimitSpinMinutes;
optionsArray[33]=durationlimitSpinSeconds;
optionsArray[34]=durationlimitSpinMiliseconds;
optionsArray[40]=starttimeCheckbox;
optionsArray[41]=starttimeSpinHours;
optionsArray[42]=starttimeSpinMinutes;
optionsArray[43]=starttimeSpinSeconds;
optionsArray[44]=starttimeSpinMiliseconds;
optionsArray[50]=enablevideoCheckbox;
optionsArray[51]=copyVideoCheckbox;
optionsArray[52]=videoBitrateSpin;
optionsArray[53]=videoFpsSpin;
optionsArray[54]=videoCodecCombobox;
optionsArray[55]=videoResolutionCheckbox;
optionsArray[56]=videoResolutionXSpin;
optionsArray[57]=videoResolutionYSpin;
optionsArray[60]=enableaudioCheckbox;
optionsArray[61]=copyAudioCheckbox;
optionsArray[62]=audioBitrateSpin;
optionsArray[63]=audioChannelsSpin;
optionsArray[64]=audioRateCombobox;
optionsArray[65]=audioCodecCombobox;
optionsArray[70]=titleCheckbox;
optionsArray[71]=titleEntry;
optionsArray[72]=authorCheckbox;
optionsArray[73]=authorEntry;
optionsArray[74]=trackCheckbox;
optionsArray[75]=trackSpin;
optionsArray[76]=albumCheckbox;
optionsArray[77]=albumEntry;
optionsArray[78]=yearCheckbox;
optionsArray[79]=yearSpin;
optionsArray[80]=commentCheckbox;
optionsArray[81]=commentEntry;
optionsArray[82]=copyrightCheckbox;
optionsArray[83]=copyrightEntry;
optionsArray[3]=entryOutputFile;
gtk_signal_connect(GTK_OBJECT (infoButton), “clicked”, GTK_SIGNAL_FUNC(infoButtonAction), infoWindow);
gtk_signal_connect(GTK_OBJECT (buttonEncode), “clicked”, GTK_SIGNAL_FUNC(encodeButtonAction), optionsArray);
gtk_widget_show_all (mainWindow);
gtk_widget_show_all (infoMainBox);
gtk_widget_hide(durationlimitBoxChild);
gtk_widget_hide(starttimeBoxChild);
gtk_widget_hide(filesizelimitBoxChild);
gtk_widget_hide(videoResolutionBoxChild);
gtk_widget_hide(titleEntry);
gtk_widget_hide(authorEntry);
gtk_widget_hide(albumEntry);
gtk_widget_hide(commentEntry);
gtk_widget_hide(copyrightEntry);
gtk_widget_hide(trackSpin);
gtk_widget_hide(yearSpin);
gtk_main();
}
int main (int argc, char *argv[])
{
gtk_init (&argc, &argv);
drawMainWindow();
return(0);
}










