Index: gtk2_ardour/audio_clock.cc
===================================================================
--- gtk2_ardour/audio_clock.cc	(revision 1146)
+++ gtk2_ardour/audio_clock.cc	(working copy)
@@ -58,7 +58,7 @@
 	10   /* Audio Frame */
 };
 
-AudioClock::AudioClock (const string& name, bool allow_edit, bool duration, bool with_extras) 
+AudioClock::AudioClock (const string& name, bool allow_edit, bool duration, bool with_info) 
 	: is_duration (duration),
 	  editable (allow_edit),
 	  colon1 (":"),
@@ -75,9 +75,48 @@
 	ops_menu = 0;
 	dragging = false;
 	
+	if (with_info) {
+		frames_upper_info_label = manage (new Label);
+		frames_lower_info_label = manage (new Label);
+		smpte_upper_info_label = manage (new Label);
+		smpte_lower_info_label = manage (new Label);
+		bbt_upper_info_label = manage (new Label);
+		bbt_lower_info_label = manage (new Label);
+		
+		frames_upper_info_label->set_name ("AudioClockFramesUpperInfo");
+		frames_lower_info_label->set_name ("AudioClockFramesLowerInfo");
+		smpte_upper_info_label->set_name ("AudioClockSMPTEUpperInfo");
+		smpte_lower_info_label->set_name ("AudioClockSMPTELowerInfo");
+		bbt_upper_info_label->set_name ("AudioClockBBTUpperInfo");
+		bbt_lower_info_label->set_name ("AudioClockBBTLowerInfo");
+
+		frames_info_box.pack_start (*frames_upper_info_label, true, true);
+		frames_info_box.pack_start (*frames_lower_info_label, true, true);
+		smpte_info_box.pack_start (*smpte_upper_info_label, true, true);
+		smpte_info_box.pack_start (*smpte_lower_info_label, true, true);
+		bbt_info_box.pack_start (*bbt_upper_info_label, true, true);
+		bbt_info_box.pack_start (*bbt_lower_info_label, true, true);
+		
+	} else {
+		frames_upper_info_label = 0;
+		frames_lower_info_label = 0;
+		smpte_upper_info_label = 0;
+		smpte_lower_info_label = 0;
+		bbt_upper_info_label = 0;
+		bbt_lower_info_label = 0;
+	}	
+	
 	audio_frames_ebox.add (audio_frames_label);
-	frames_packer_hbox.set_border_width (2);
-	frames_packer_hbox.pack_start (audio_frames_ebox, false, false);
+	
+	frames_packer.set_homogeneous (false);
+	frames_packer.set_border_width (2);
+	frames_packer.pack_start (audio_frames_ebox, false, false);
+	
+	if (with_info) {
+		frames_packer.pack_start (frames_info_box, false, false, 5);
+	}
+	
+	frames_packer_hbox.pack_start (frames_packer, true, false);
 
 	hours_ebox.add (hours_label);
 	minutes_ebox.add (minutes_label);
@@ -100,6 +139,10 @@
 	smpte_packer.pack_start (colon3, false, false);
 	smpte_packer.pack_start (frames_ebox, false, false);
 
+	if (with_info) {
+		smpte_packer.pack_start (smpte_info_box, false, false, 5);
+	}
+
 	smpte_packer_hbox.pack_start (smpte_packer, true, false);
 
 	bbt_packer.set_homogeneous (false);
@@ -110,34 +153,8 @@
 	bbt_packer.pack_start (b2, false, false);
 	bbt_packer.pack_start (ticks_ebox, false, false);
 
-	if (with_extras) {
-
-		framerate_label = manage (new Label);
-		pullup_label = manage (new Label);
-
-		framerate_label->set_name ("BBTMeterLabel");
-		pullup_label->set_name ("BBTTempoLabel");
-
-		rate_pullup_box.pack_start (*framerate_label, true, true);
-		rate_pullup_box.pack_start (*pullup_label, true, true);
-
-		smpte_packer.pack_start (rate_pullup_box, false,false, 5);
-
-		meter_label = manage (new Label);
-		tempo_label = manage (new Label);
-
-		meter_label->set_name ("BBTMeterLabel");
-		tempo_label->set_name ("BBTTempoLabel");
-
-		tempo_meter_box.pack_start (*meter_label, true, true);
-		tempo_meter_box.pack_start (*tempo_label, true, true);
-
-		bbt_packer.pack_start (tempo_meter_box, false, false, 5);
-	} else {
-		framerate_label = 0;
-		pullup_label = 0;
-		meter_label = 0;
-		tempo_label = 0;
+	if (with_info) {
+		bbt_packer.pack_start (bbt_info_box, false, false, 5);
 	}
 
 	bbt_packer_hbox.pack_start (bbt_packer, true, false);
@@ -404,6 +421,21 @@
 	char buf[32];
 	snprintf (buf, sizeof (buf), "%u", when);
 	audio_frames_label.set_text (buf);
+	nframes_t rate;
+	
+	if (frames_lower_info_label || frames_upper_info_label) {
+		rate = session->frame_rate();
+		
+		if (fmod (rate, 1000.0) == 0.0) {
+			sprintf (buf, "%uK  ", rate/1000);
+		} else {
+			sprintf (buf, "%.1fK", rate/1000.0f);
+		}
+		
+		frames_upper_info_label->set_text (buf);
+		sprintf (buf, " ");
+		frames_lower_info_label->set_text (buf);
+	}
 }	
 
 void
@@ -481,19 +513,25 @@
 		frames_label.set_text (buf);
 		last_frames = smpte.frames;
 	}
-
-	if (framerate_label) {
-		sprintf (buf, "%-5.2f", Config->get_smpte_frames_per_second());
-		framerate_label->set_text (buf);
-
-		float x = Config->get_video_pullup();
-
-		if (x == 0.0) {
-			pullup_label->set_text (_("none"));
+	
+	if (smpte_lower_info_label || smpte_upper_info_label) {
+		float smpte_frames = Config->get_smpte_frames_per_second();
+		
+		if ( fmod(smpte_frames, 1.0) == 0.0) {
+			sprintf (buf, "%u", int (smpte_frames));
 		} else {
-			sprintf (buf, "%-6.4f", x);
-			pullup_label->set_text (buf);
+			sprintf (buf, "%.2f", smpte_frames);
 		}
+		
+		smpte_upper_info_label->set_text (buf);
+		
+		if (Config->get_smpte_drop_frames()) {
+			sprintf (buf, "DF");
+		} else {
+			sprintf (buf, "NDF");
+		}
+		
+		smpte_lower_info_label->set_text (buf);
 	}
 }
 
@@ -511,12 +549,12 @@
 	sprintf (buf, "%04" PRIu32, bbt.ticks);
 	ticks_label.set_text (buf);
 	
-	if (meter_label) {
+	if (bbt_lower_info_label || bbt_upper_info_label) {
 		TempoMap::Metric m (session->tempo_map().metric_at (when));
 		sprintf (buf, "%-5.2f", m.tempo().beats_per_minute());
-		tempo_label->set_text (buf);
+		bbt_lower_info_label->set_text (buf);
 		sprintf (buf, "%g|%g", m.meter().beats_per_bar(), m.meter().note_divisor());
-		meter_label->set_text (buf);
+		bbt_upper_info_label->set_text (buf);
 	}
 }
 
Index: gtk2_ardour/audio_clock.h
===================================================================
--- gtk2_ardour/audio_clock.h	(revision 1146)
+++ gtk2_ardour/audio_clock.h	(working copy)
@@ -43,7 +43,7 @@
 		Off
 	};
 	
-	AudioClock (const string& name, bool editable, bool is_duration = false, bool with_tempo_meter = false);
+	AudioClock (const string& name, bool editable, bool is_duration = false, bool with_info = false);
 
 	Mode mode() const { return _mode; }
 	
@@ -75,6 +75,7 @@
 	Gtk::HBox   bbt_packer;
 
 	Gtk::HBox   frames_packer_hbox;
+	Gtk::HBox   frames_packer;
        
 	enum Field {
 		SMPTE_Hours,
@@ -112,11 +113,6 @@
 	Gtk::Label  frames_label;
 	Gtk::Label  colon1, colon2, colon3;
 
-	Gtk::Label*  framerate_label;
-	Gtk::Label*  pullup_label;
-
-	Gtk::VBox   rate_pullup_box;
-
 	Gtk::Label  ms_hours_label;
 	Gtk::Label  ms_minutes_label;
 	Gtk::Label  ms_seconds_label;
@@ -128,11 +124,19 @@
 	Gtk::Label  b1;
 	Gtk::Label  b2;
 
-	Gtk::Label*  tempo_label;
-	Gtk::Label*  meter_label;
+	Gtk::Label*  frames_upper_info_label;
+	Gtk::Label*  frames_lower_info_label;
 
-	Gtk::VBox   tempo_meter_box;
+	Gtk::Label*  smpte_upper_info_label;
+	Gtk::Label*  smpte_lower_info_label;
+	
+	Gtk::Label*  bbt_upper_info_label;
+	Gtk::Label*  bbt_lower_info_label;
 
+	Gtk::VBox   frames_info_box;
+	Gtk::VBox   smpte_info_box;
+	Gtk::VBox   bbt_info_box;
+
 	Gtk::EventBox  clock_base;
 	Gtk::Frame     clock_frame;
 
Index: gtk2_ardour/ardour2_ui.rc
===================================================================
--- gtk2_ardour/ardour2_ui.rc	(revision 1146)
+++ gtk2_ardour/ardour2_ui.rc	(working copy)
@@ -503,7 +503,7 @@
 
 style "tempo_meter_clock_display"
 {
-	font_name = "sans 8"
+	font_name = "sans 7"
 	fg[NORMAL] = { 1.0, 1.0, 1.0 }
 	fg[ACTIVE] = { 1.0, 1.0, 0.0 }
 	fg[SELECTED] = { 1.0, 0, 0 }
@@ -1060,8 +1060,12 @@
 widget "*BigClockDisplay" style "big_clock_display"
 widget "*TransportClockDisplay" style "transport_clock_display"
 widget "*SecondaryClockDisplay" style "transport_clock_display"
-widget "*BBTTempoLabel" style "tempo_meter_clock_display"
-widget "*BBTMeterLabel" style "tempo_meter_clock_display"
+widget "*AudioClockFramesUpperInfo" style "tempo_meter_clock_display"
+widget "*AudioClockFramesLowerInfo" style "tempo_meter_clock_display"
+widget "*AudioClockSMPTEUpperInfo" style "tempo_meter_clock_display"
+widget "*AudioClockSMPTELowerInfo" style "tempo_meter_clock_display"
+widget "*AudioClockBBTUpperInfo" style "tempo_meter_clock_display"
+widget "*AudioClockBBTLowerInfo" style "tempo_meter_clock_display"
 widget "*SelectionStartClock" style "default_clock_display"
 widget "*SelectionEndClock" style "default_clock_display"
 widget "*EditCursorClock" style "default_clock_display"
