Bug 74219 - [PATCH] xmms hides some interesting information about ogg vorbis files
Summary: [PATCH] xmms hides some interesting information about ogg vorbis files
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-11-21 23:20 UTC by Thomas E. Zander
Modified: 2005-04-21 17:15 UTC (History)
0 users

See Also:


Attachments
file.diff (4.79 KB, patch)
2004-11-21 23:20 UTC, Thomas E. Zander
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas E. Zander 2004-11-21 23:20:31 UTC
As of their nature, ogg vorbis files might contain some important information
one like to see when clicking on file info. Unfortunately, some of them are not
included in the standard distribution of xmms.
This patch to the port enables the building of xmms which all tags it can
display (via CFLAGS+=) and it also introduces a new file
extra-patch-Input-vorbis-fileinfo.c
which is enabled when using the WITH_EXTENDED_VORBIS_FILEINFO knob. This patch
includes information about the average bitrate of the file (because vorbis uses
variable bit rate encoding by default and nominal might or might not match the
actual effective bitrate) as well as information about the encoder which
created the file.
As xmms developers don't seem to be interested in offering patches to them (I'm
waiting for a response to my mail for some weeks now), I'd like to see the
additional features at least in FreeBSD.
Comment 1 Volker Stolz freebsd_committer 2004-12-09 09:54:49 UTC
Dear maintainer, please review the proposed patch!

Volker
Comment 2 Volker Stolz freebsd_committer 2004-12-09 09:55:34 UTC
State Changed
From-To: open->feedback

Forwarded PR to maintainer
Comment 3 Espen Skoglund 2005-04-08 15:24:22 UTC
Patch looks fine.  Just a few modifications:

  - Bumped revision number again
  - Include patchfile unconditionally

Similar patch also committed to the xmms cvs.

	eSk

================================================================
diff -ruN xmms.orig/Makefile xmms/Makefile
--- xmms.orig/Makefile	Mon Mar 14 18:12:12 2005
+++ xmms/Makefile	Fri Apr  8 16:07:22 2005
@@ -7,7 +7,7 @@
 
 PORTNAME=	xmms
 PORTVERSION=	1.2.10
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES+=	multimedia audio ipv6
 MASTER_SITES=	http://www.xmms.org/files/1.2.x/ \
 		ftp://ftp.sunet.se/pub/multimedia/xmms/1.2.x/
@@ -55,6 +55,10 @@
 PLIST_SUB+=	ENCODING=""
 .else
 PLIST_SUB+=	ENCODING="@comment "
+.endif
+
+.if defined(WITH_EXTENDED_VORBIS_FILEINFO)
+CFLAGS+=	-DALL_VORBIS_TAGS
 .endif
 
 .if !defined(WITHOUT_MIKMOD)
diff -ruN xmms.orig/files/patch-Input-vorbis-fileinfo.c xmms/files/patch-Input-vorbis-fileinfo.c
--- xmms.orig/files/patch-Input-vorbis-fileinfo.c	Thu Jan  1 01:00:00 1970
+++ xmms/files/patch-Input-vorbis-fileinfo.c	Fri Apr  8 15:59:23 2005
@@ -0,0 +1,108 @@
+--- Input/vorbis/fileinfo.c.orig	Thu Nov 20 14:35:34 2003
++++ Input/vorbis/fileinfo.c	Sun Nov 21 17:35:46 2004
+@@ -429,7 +429,8 @@
+ 	gchar *location;
+ 	gchar *rg_track_gain, *rg_album_gain, *rg_track_peak, *rg_album_peak;
+ 
+-	gint time, minutes, seconds, bitrate, rate, channels, filesize, i;
++	gint time, minutes, seconds, bitrate, avgbitrate, rate, channels, filesize, i;
++	gchar *vendor = "N/A";
+ 
+ 	OggVorbis_File vf;
+ 	vorbis_info *vi;
+@@ -437,10 +438,11 @@
+ 	FILE *fh;
+ 	gboolean clear_vf = FALSE;
+ 
+-	static GtkWidget *info_frame, *info_box, *bitrate_label, *rate_label;
++	static GtkWidget *info_frame, *info_box, *bitrate_label, *avgbitrate_label, *rate_label;
+ 	static GtkWidget *channel_label, *length_label, *filesize_label;
+ 	static GtkWidget *replaygain_label, *audiophilegain_label, *peak_label;
+ 	static GtkWidget *filename_entry, *tag_frame;
++	static GtkWidget *vendor_label;
+ 
+ 	g_free(vte.filename);
+ 	vte.filename = g_strdup(fn);
+@@ -721,7 +723,14 @@
+ 				      GTK_JUSTIFY_LEFT);
+ 		gtk_box_pack_start(GTK_BOX(info_box), bitrate_label, FALSE,
+ 				   FALSE, 0);
+-		
++
++		avgbitrate_label = gtk_label_new("");
++		gtk_misc_set_alignment(GTK_MISC(avgbitrate_label), 0, 0);
++		gtk_label_set_justify(GTK_LABEL(avgbitrate_label),
++				      GTK_JUSTIFY_LEFT);
++		gtk_box_pack_start(GTK_BOX(info_box), avgbitrate_label, FALSE,
++				   FALSE, 0);
++
+ 		rate_label = gtk_label_new("");
+ 		gtk_misc_set_alignment(GTK_MISC(rate_label), 0, 0);
+ 		gtk_label_set_justify(GTK_LABEL(rate_label), GTK_JUSTIFY_LEFT);
+@@ -749,6 +758,13 @@
+ 		gtk_box_pack_start(GTK_BOX(info_box), filesize_label, FALSE,
+ 				   FALSE, 0);
+ 
++		vendor_label = gtk_label_new("");
++		gtk_misc_set_alignment(GTK_MISC(vendor_label), 0, 0);
++		gtk_label_set_justify(GTK_LABEL(vendor_label),
++				      GTK_JUSTIFY_LEFT);
++		gtk_box_pack_start(GTK_BOX(info_box), vendor_label, FALSE,
++				   FALSE, 0);
++
+ 		replaygain_label = gtk_label_new("");
+ 		gtk_misc_set_alignment(GTK_MISC(replaygain_label), 0, 0);
+ 		gtk_label_set_justify(GTK_LABEL(replaygain_label),
+@@ -780,10 +796,12 @@
+ 		gtk_widget_set_sensitive(tag_frame, TRUE);		
+ 
+ 	gtk_label_set_text(GTK_LABEL(bitrate_label), "");
++	gtk_label_set_text(GTK_LABEL(avgbitrate_label), "");
+ 	gtk_label_set_text(GTK_LABEL(rate_label), "");
+ 	gtk_label_set_text(GTK_LABEL(channel_label), "");
+ 	gtk_label_set_text(GTK_LABEL(length_label), "");
+ 	gtk_label_set_text(GTK_LABEL(filesize_label), "");
++	gtk_label_set_text(GTK_LABEL(vendor_label), "");
+ 
+ 	if ((fh = fopen(vte.filename, "r")) != NULL)
+ 	{
+@@ -792,9 +810,18 @@
+ 		if (ov_open(fh, &vf, NULL, 0) == 0)
+ 		{
+ 			comment = ov_comment(&vf, -1);
++			if(comment)
++			{
++				vendor = comment->vendor;
++			}
++			else
++			{
++				vendor = (char*)"N/A";
++			}
+ 			if ((vi = ov_info(&vf, 0)) != NULL)
+ 			{
+ 				bitrate = vi->bitrate_nominal/1000;
++				avgbitrate = ov_bitrate(&vf, -1);
+ 				rate = vi->rate;
+ 				channels = vi->channels;
+ 				g_message("version: %d", vi->version);
+@@ -803,6 +830,7 @@
+ 			else
+ 			{
+ 				bitrate = 0;
++				avgbitrate = 0;
+ 				rate = 0;
+ 				channels = 0;
+ 			}
+@@ -814,10 +842,12 @@
+ 			filesize = ftell(fh);
+ 
+ 			label_set_text(bitrate_label, _("Nominal bitrate: %d kbps"), bitrate);
++			label_set_text(avgbitrate_label, _("Average bitrate: %.1f kbps"), ((float)avgbitrate)/1000);
+ 			label_set_text(rate_label, _("Samplerate: %d Hz"), rate);
+ 			label_set_text(channel_label, _("Channels: %d"), channels);
+ 			label_set_text(length_label, _("Length: %d:%.2d"), minutes, seconds);
+ 			label_set_text(filesize_label, _("File size: %d B"), filesize);
++			label_set_text(vendor_label, _("Vendor: %s"), vendor);
+ 
+ 		}
+ 		else
Comment 4 Tilman Keskinoz freebsd_committer 2005-04-21 17:14:56 UTC
State Changed
From-To: feedback->closed

committed, thanks