/* === M A C R O S ========================================================= */
-/* === G L O B A L S ======================================================= */
+#define CUSTOM_VCODEC _("Custom Video Codec")
+/* === G L O B A L S ======================================================= */
+//! Allowed video codecs
+/*! \warning This variable is linked to allowed_video_codecs_description,
+ * if you change this you must change the other acordingly.
+ * \warning These codecs are linked to the filename extensions for
+ * mod_ffmpeg. If you change this you must change the others acordingly.
+ */
+const char* allowed_video_codecs[] =
+{
+ "flv", "h263p", "huffyuv", "libtheora", "libx264", "libxvid",
+ "mjpeg", "mpeg1video", "mpeg2video", "mpeg4", "msmpeg4",
+ "msmpeg4v1", "msmpeg4v2", "wmv1", "wmv2", "customvc", NULL
+};
+
+//! Allowed video codecs description.
+/*! \warning This variable is linked to allowed_video_codecs,
+ * if you change this you must change the other acordingly.
+ */
+const char* allowed_video_codecs_description[] =
+{
+ _("Flash Video (FLV) / Sorenson Spark / Sorenson H.263."),
+ _("H.263+ / H.263-1998 / H.263 version 2."),
+ _("Huffyuv / HuffYUV."),
+ _("libtheora Theora."),
+ _("libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10."),
+ _("libxvidcore MPEG-4 part 2."),
+ _("MJPEG (Motion JPEG)."),
+ _("raw MPEG-1 video."),
+ _("raw MPEG-2 video."),
+ _("MPEG-4 part 2."),
+ _("MPEG-4 part 2 Microsoft variant version 3."),
+ _("MPEG-4 part 2 Microsoft variant version 1."),
+ _("MPEG-4 part 2 Microsoft variant version 2."),
+ _("Windows Media Video 7."),
+ _("Windows Media Video 8."),
+ CUSTOM_VCODEC,
+ NULL
+};
/* === P R O C E D U R E S ================================================= */
/* === M E T H O D S ======================================================= */
Dialog_TargetParam::Dialog_TargetParam(synfig::TargetParam &tparam)
{
- set_title("TargetParam Dialog");
+ set_title(_("TargetParam Dialog"));
set_tparam(tparam);
+ // Custom Video Codec Entry
+ Gtk::Label* custom_label(manage(new Gtk::Label(CUSTOM_VCODEC)));
+ custom_label->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
+ get_vbox()->pack_start(*custom_label, true, true, 0);
+ customvcodec=Gtk::manage(new Gtk::Entry());
+ get_vbox()->pack_start(*customvcodec, true, true, 0);
// Available Video Codecs Combo Box Text.
vcodec = Gtk::manage(new Gtk::ComboBoxText());
Gtk::Label* label(manage(new Gtk::Label(_("Available Video Codecs:"))));
label->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
get_vbox()->pack_start(*label, true, true, 0);
- vcodec->append_text("flv");
- vcodec->append_text("h263p");
- vcodec->append_text("huffyuv");
- vcodec->append_text("libtheora");
- vcodec->append_text("libx264");
- vcodec->append_text("libxvid");
- vcodec->append_text("mjpeg");
- vcodec->append_text("mpeg2video");
- vcodec->append_text("mpeg4");
- vcodec->append_text("msmpeg4");
- vcodec->append_text("msmpeg4v1");
- vcodec->append_text("msmpeg4v2");
- vcodec->append_text("wmv1");
- vcodec->append_text("wmv2");
- vcodec->set_active_text(get_tparam().video_codec);
+ // Appends the codec descriptions to the Combo Box
+ for (int i = 0; allowed_video_codecs[i] != NULL &&
+ allowed_video_codecs_description[i] != NULL; i++)
+ vcodec->append_text(allowed_video_codecs_description[i]);
+ //Adds the Combo Box to the vertical box
get_vbox()->pack_start(*vcodec, true, true, 0);
+ // Connect the signal change to the handler
+ vcodec->signal_changed().connect(sigc::mem_fun(*this, &Dialog_TargetParam::on_vcodec_change));
+ // By defaut, set the active text to the Custom Video Codec
+ vcodec->set_active_text(CUSTOM_VCODEC);
+ customvcodec->set_text("customvc");
+ //Compare the passed vcodec to the available and set it active if found
+ bool foundvcodec=false;
+ for (int i = 0; allowed_video_codecs[i] != NULL &&
+ allowed_video_codecs_description[i] != NULL; i++)
+ if(!get_tparam().video_codec.compare(allowed_video_codecs[i]))
+ {
+ vcodec->set_active_text(allowed_video_codecs_description[i]);
+ customvcodec->set_text(allowed_video_codecs[i]);
+ foundvcodec = true;
+ }
//Bitrate Spin Button
Gtk::Adjustment* bradj(manage(new class Gtk::Adjustment(double(tparam.bitrate), 10.0,1000.0)));
void
Dialog_TargetParam::on_ok()
{
- tparam_.video_codec=vcodec->get_active_text();
+ std::string codecnamed = vcodec->get_active_text();
+ for (int i = 0; allowed_video_codecs[i] != NULL &&
+ allowed_video_codecs_description[i] != NULL; i++)
+ if(!codecnamed.compare(allowed_video_codecs_description[i]))
+ tparam_.video_codec=allowed_video_codecs[i];
tparam_.bitrate=bitrate->get_value();
hide();
}
hide();
}
+void
+Dialog_TargetParam::on_vcodec_change()
+{
+ std::string codecnamed = vcodec->get_active_text();
+ for (int i = 0; allowed_video_codecs[i] != NULL &&
+ allowed_video_codecs_description[i] != NULL; i++)
+ if(!codecnamed.compare(allowed_video_codecs_description[i]))
+ customvcodec->set_text(allowed_video_codecs[i]);
+}
+
Dialog_TargetParam::~Dialog_TargetParam()
{
}