summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2012-04-27 23:59:35 +0200
committerJens Georg <mail@jensge.org>2012-05-17 11:43:00 +0200
commit2bb5ad338a14785cc00b761e117b57dc829c613a (patch)
tree71c1012276001e71d177715e471fc99a18487e02
parent84ba7a5ee91810864668314c2c51c88bf486b4ed (diff)
downloadrygel-2bb5ad338a14785cc00b761e117b57dc829c613a.tar.gz
core: Fix DLNA bitrates using presets
Also cunningly work around bgo#672439 by not providing a preset for mpeg2enc. https://bugzilla.gnome.org/show_bug.cgi?id=675234
-rw-r--r--common.am3
-rw-r--r--configure.ac2
-rw-r--r--data/Makefile.am20
-rw-r--r--data/presets/GstLameMP3Enc.prs7
-rw-r--r--data/presets/GstMP4Mux.prs7
-rw-r--r--data/presets/GstTwoLame.prs6
-rw-r--r--data/presets/GstX264Enc.prs7
-rw-r--r--data/presets/ffenc_aac.prs9
-rw-r--r--data/presets/ffenc_mp2.prs6
-rw-r--r--data/presets/ffenc_mpeg2video.prs6
-rw-r--r--data/presets/ffenc_wmav1.prs6
-rw-r--r--data/presets/ffenc_wmv1.prs6
-rw-r--r--src/rygel/rygel-aac-transcoder.vala1
-rw-r--r--src/rygel/rygel-audio-transcoder.vala4
-rw-r--r--src/rygel/rygel-avc-transcoder.vala1
-rw-r--r--src/rygel/rygel-build-config.vapi3
-rw-r--r--src/rygel/rygel-main.vala5
-rw-r--r--src/rygel/rygel-transcoder.vala4
-rw-r--r--src/rygel/rygel-video-transcoder.vala2
19 files changed, 95 insertions, 10 deletions
diff --git a/common.am b/common.am
index cbbcffd0..880307fa 100644
--- a/common.am
+++ b/common.am
@@ -4,12 +4,14 @@ sysconfigdir = $(shareddir)
desktopdir = $(shareddir)
plugindir = $(abs_top_builddir)/src/plugins
icondir = $(shareddir)/icons/32x32
+presetdir = $(shareddir)/presets
else
shareddir = $(datadir)/rygel
sysconfigdir = $(sysconfdir)
desktopdir = $(datadir)/applications
plugindir = $(libdir)/rygel-1.0
icondir = $(datadir)/icons/hicolor/32x32/apps
+presetdir = $(shareddir)/presets
endif
smallicondir = $(shareddir)/icons/48x48
@@ -30,6 +32,7 @@ AM_CFLAGS = \
-I$(rygeldir) \
-DDATA_DIR='"$(shareddir)"' -DSYS_CONFIG_DIR='"$(sysconfigdir)"'\
-DPLUGIN_DIR='"$(plugindir)"' -DDESKTOP_DIR='"$(desktopdir)"'\
+ -DPRESET_DIR='"$(presetdir)"'\
-include config.h
RYGEL_COMMON_LIBS = \
diff --git a/configure.ac b/configure.ac
index 3cc5e82b..797c5e64 100644
--- a/configure.ac
+++ b/configure.ac
@@ -35,7 +35,7 @@ GUPNP_REQUIRED=0.17.1
GUPNP_AV_REQUIRED=0.9.0
GUPNP_DLNA_REQUIRED=0.5.0
GUPNP_VALA_REQUIRED=0.10.2
-GSTREAMER_REQUIRED=0.10.35
+GSTREAMER_REQUIRED=0.10.36
GSTPBU_REQUIRED=0.10.35
GIO_REQUIRED=2.26
GEE_REQUIRED=0.5.2
diff --git a/data/Makefile.am b/data/Makefile.am
index f8b3e893..244fa068 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,9 +1,9 @@
+include ../common.am
+
SUBDIRS = xml icons
sysconf_DATA = rygel.conf
-shareddir = $(datadir)/rygel
-
if BUILD_UI
dist_shared_DATA = rygel-preferences.ui
endif
@@ -18,16 +18,24 @@ $(dbusservice_DATA): $(dbusservice_in_files) Makefile
@sed -e "s|\@bindir\@|$(bindir)|" $< > $@
# Rule to create the .desktop files
-desktopdir = $(datadir)/applications
desktop_in_files = rygel.desktop.in rygel-preferences.desktop.in
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@
+preset_DATA = $(srcdir)/presets/ffenc_aac.prs \
+ $(srcdir)/presets/ffenc_mp2.prs \
+ $(srcdir)/presets/ffenc_mpeg2video.prs \
+ $(srcdir)/presets/ffenc_wmav1.prs \
+ $(srcdir)/presets/ffenc_wmv1.prs \
+ $(srcdir)/presets/GstLameMP3Enc.prs \
+ $(srcdir)/presets/GstMP4Mux.prs \
+ $(srcdir)/presets/GstTwoLame.prs \
+ $(srcdir)/presets/GstX264Enc.prs
+
CLEANFILES = $(dbusservice_DATA) $(desktop_DATA)
EXTRA_DIST = $(dbusservice_in_files) \
$(desktop_in_files) \
$(sysconf_DATA) \
- $(pixmaps_DATA)
-
+ $(pixmaps_DATA) \
+ $(presets_DATA)
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/data/presets/GstLameMP3Enc.prs b/data/presets/GstLameMP3Enc.prs
new file mode 100644
index 00000000..15d0b5dd
--- /dev/null
+++ b/data/presets/GstLameMP3Enc.prs
@@ -0,0 +1,7 @@
+[_presets_]
+version=0.10
+element-name=GstLameMP3Enc
+
+[Rygel DLNA preset]
+target=1
+bitrate=256
diff --git a/data/presets/GstMP4Mux.prs b/data/presets/GstMP4Mux.prs
new file mode 100644
index 00000000..8c54280f
--- /dev/null
+++ b/data/presets/GstMP4Mux.prs
@@ -0,0 +1,7 @@
+[_presets_]
+version=0.10
+element-name=GstMP4Mux
+
+[Rygel DLNA preset]
+streamable=true
+faststart=true
diff --git a/data/presets/GstTwoLame.prs b/data/presets/GstTwoLame.prs
new file mode 100644
index 00000000..afe83990
--- /dev/null
+++ b/data/presets/GstTwoLame.prs
@@ -0,0 +1,6 @@
+[_presets_]
+version=0.10
+element-name=GstTwoLame
+
+[Rygel DLNA preset]
+bitrate=256
diff --git a/data/presets/GstX264Enc.prs b/data/presets/GstX264Enc.prs
new file mode 100644
index 00000000..5b2383c5
--- /dev/null
+++ b/data/presets/GstX264Enc.prs
@@ -0,0 +1,7 @@
+[_presets_]
+version=0.10
+element-name=GstX264Enc
+
+[Rygel AVC_MP4_BL_CIF15_AAC_520]
+preset=1
+bitrate=1200
diff --git a/data/presets/ffenc_aac.prs b/data/presets/ffenc_aac.prs
new file mode 100644
index 00000000..1afed865
--- /dev/null
+++ b/data/presets/ffenc_aac.prs
@@ -0,0 +1,9 @@
+[_presets_]
+version=0.10
+element-name=ffenc_aac
+
+[Rygel DLNA preset]
+bitrate=64000
+
+[Rygel AAC_ISO_320 preset]
+bitrate=256000
diff --git a/data/presets/ffenc_mp2.prs b/data/presets/ffenc_mp2.prs
new file mode 100644
index 00000000..588af1b9
--- /dev/null
+++ b/data/presets/ffenc_mp2.prs
@@ -0,0 +1,6 @@
+[_presets_]
+version=0.10
+element-name=ffenc_mp2
+
+[Rygel DLNA preset]
+bitrate=256000
diff --git a/data/presets/ffenc_mpeg2video.prs b/data/presets/ffenc_mpeg2video.prs
new file mode 100644
index 00000000..e0c415a8
--- /dev/null
+++ b/data/presets/ffenc_mpeg2video.prs
@@ -0,0 +1,6 @@
+[_presets_]
+version=0.10
+element-name=ffenc_mpeg2video
+
+[Rygel DLNA preset]
+bitrate=3000000
diff --git a/data/presets/ffenc_wmav1.prs b/data/presets/ffenc_wmav1.prs
new file mode 100644
index 00000000..c28a00e7
--- /dev/null
+++ b/data/presets/ffenc_wmav1.prs
@@ -0,0 +1,6 @@
+[_presets_]
+version=0.10
+element-name=ffenc_wmav1
+
+[Rygel DLNA preset]
+bitrate=64000
diff --git a/data/presets/ffenc_wmv1.prs b/data/presets/ffenc_wmv1.prs
new file mode 100644
index 00000000..6434df44
--- /dev/null
+++ b/data/presets/ffenc_wmv1.prs
@@ -0,0 +1,6 @@
+[_presets_]
+version=0.10
+element-name=ffenc_wmv1
+
+[Rygel DLNA preset]
+bitrate=1200000
diff --git a/src/rygel/rygel-aac-transcoder.vala b/src/rygel/rygel-aac-transcoder.vala
index 71f74fad..19e672a2 100644
--- a/src/rygel/rygel-aac-transcoder.vala
+++ b/src/rygel/rygel-aac-transcoder.vala
@@ -34,5 +34,6 @@ internal class Rygel.AACTranscoder : Rygel.AudioTranscoder {
public AACTranscoder () {
base ("audio/3gpp", "AAC_ISO_320", BITRATE, CONTAINER, CODEC, "3gp");
+ this.preset = "Rygel AAC_ISO_320 preset";
}
}
diff --git a/src/rygel/rygel-audio-transcoder.vala b/src/rygel/rygel-audio-transcoder.vala
index eead8242..8ff88a45 100644
--- a/src/rygel/rygel-audio-transcoder.vala
+++ b/src/rygel/rygel-audio-transcoder.vala
@@ -97,7 +97,7 @@ internal class Rygel.AudioTranscoder : Rygel.Transcoder {
protected override EncodingProfile get_encoding_profile () {
var enc_audio_profile = new EncodingAudioProfile (audio_codec_format,
- null,
+ this.preset,
null,
1);
enc_audio_profile.set_name ("audio");
@@ -106,7 +106,7 @@ internal class Rygel.AudioTranscoder : Rygel.Transcoder {
var enc_container_profile = new EncodingContainerProfile ("container",
null,
container_format,
- null);
+ this.preset);
enc_container_profile.add_profile (enc_audio_profile);
return enc_container_profile;
diff --git a/src/rygel/rygel-avc-transcoder.vala b/src/rygel/rygel-avc-transcoder.vala
index cb4dbe80..d1a4e615 100644
--- a/src/rygel/rygel-avc-transcoder.vala
+++ b/src/rygel/rygel-avc-transcoder.vala
@@ -47,6 +47,7 @@ internal class Rygel.AVCTranscoder : Rygel.VideoTranscoder {
VIDEO_CAPS,
"mp4",
RESTRICTIONS);
+ this.preset = "Rygel AVC_MP4_BL_CIF15_AAC_520 preset";
}
public override DIDLLiteResource? add_resource (DIDLLiteItem didl_item,
diff --git a/src/rygel/rygel-build-config.vapi b/src/rygel/rygel-build-config.vapi
index 9b331a03..bbf0ceba 100644
--- a/src/rygel/rygel-build-config.vapi
+++ b/src/rygel/rygel-build-config.vapi
@@ -57,4 +57,7 @@ public class Rygel.BuildConfig {
[CCode (cname = "LOCALEDIR")]
public static const string LOCALEDIR;
+
+ [CCode (cname = "PRESET_DIR")]
+ public static const string PRESET_DIR;
}
diff --git a/src/rygel/rygel-main.vala b/src/rygel/rygel-main.vala
index 6217f19a..0b7cd473 100644
--- a/src/rygel/rygel-main.vala
+++ b/src/rygel/rygel-main.vala
@@ -25,6 +25,9 @@ using Gee;
using GUPnP;
using Posix;
+[CCode (cname="gst_preset_set_app_dir")]
+extern bool gst_preset_set_app_dir (string app_dir);
+
public class Rygel.Main : Object {
private static int PLUGIN_TIMEOUT = 5;
@@ -59,6 +62,8 @@ public class Rygel.Main : Object {
Unix.signal_add (SIGHUP, () => { this.restart (); return true; });
Unix.signal_add (SIGINT, () => { this.exit (0); return false; });
Unix.signal_add (SIGTERM, () => { this.exit (0); return false; });
+
+ gst_preset_set_app_dir (BuildConfig.PRESET_DIR);
}
public void exit (int exit_code) {
diff --git a/src/rygel/rygel-transcoder.vala b/src/rygel/rygel-transcoder.vala
index 63a71b25..2071bfb0 100644
--- a/src/rygel/rygel-transcoder.vala
+++ b/src/rygel/rygel-transcoder.vala
@@ -32,9 +32,13 @@ internal abstract class Rygel.Transcoder : GLib.Object {
public string mime_type { get; protected set; }
public string dlna_profile { get; protected set; }
public string extension { get; protected set; }
+ public string preset { get;
+ protected set;
+ default = DEFAULT_ENCODING_PRESET; }
private const string DECODE_BIN = "decodebin2";
private const string ENCODE_BIN = "encodebin";
+ private const string DEFAULT_ENCODING_PRESET = "Rygel DLNA preset";
dynamic Element decoder;
dynamic Element encoder;
diff --git a/src/rygel/rygel-video-transcoder.vala b/src/rygel/rygel-video-transcoder.vala
index 15f1928b..f01da21b 100644
--- a/src/rygel/rygel-video-transcoder.vala
+++ b/src/rygel/rygel-video-transcoder.vala
@@ -95,7 +95,7 @@ internal class Rygel.VideoTranscoder : Rygel.AudioTranscoder {
var enc_video_profile = new EncodingVideoProfile
(this.video_codec_format,
- null,
+ this.preset,
this.video_restrictions,
1);
enc_video_profile.set_name ("video");