[rygel-gst-0-10-media-engine] cleanup
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel-gst-0-10-media-engine] cleanup
- Date: Fri, 21 Dec 2012 09:11:25 +0000 (UTC)
commit e46d88bf7924284920b5ecb6eaf3791c0e0bee3e
Author: Murray Cumming <murrayc murrayc com>
Date: Fri Dec 21 10:11:18 2012 +0100
cleanup
src/rygel-l16-transcoder.c | 6 +-
src/rygel-mp2ts-transcoder.c | 250 +++++++++++++-----------------------------
2 files changed, 83 insertions(+), 173 deletions(-)
---
diff --git a/src/rygel-l16-transcoder.c b/src/rygel-l16-transcoder.c
index 272a35d..13fc530 100644
--- a/src/rygel-l16-transcoder.c
+++ b/src/rygel-l16-transcoder.c
@@ -69,6 +69,10 @@ rygel_l16_transcoder_real_add_resource (RygelTranscoder* base, GUPnPDIDLLiteItem
RygelL16Transcoder * self = RYGEL_L16_TRANSCODER (base);
GError * inner_error = NULL;
+ g_return_val_if_fail (didl_item != NULL, NULL);
+ g_return_val_if_fail (item != NULL, NULL);
+ g_return_val_if_fail (manager != NULL, NULL);
+
GUPnPDIDLLiteResource* resource =
RYGEL_TRANSCODER_CLASS (rygel_l16_transcoder_parent_class)->add_resource (RYGEL_TRANSCODER (self), didl_item, item, manager, &inner_error);
if (!inner_error) {
@@ -77,7 +81,7 @@ rygel_l16_transcoder_real_add_resource (RygelTranscoder* base, GUPnPDIDLLiteItem
}
if (!resource) {
- return resource;
+ return NULL;
}
gupnp_didl_lite_resource_set_sample_freq (resource, RYGEL_L16_TRANSCODER_FREQUENCY);
diff --git a/src/rygel-mp2ts-transcoder.c b/src/rygel-mp2ts-transcoder.c
index 5562afd..23d989b 100644
--- a/src/rygel-mp2ts-transcoder.c
+++ b/src/rygel-mp2ts-transcoder.c
@@ -23,6 +23,10 @@
#include "rygel-mp2ts-transcoder.h"
+/**
+ * Transcoder for mpeg transport stream containing mpeg 2 video and mp2 audio.
+ */
+
G_DEFINE_TYPE (RygelMP2TSTranscoder, rygel_mp2_ts_transcoder, RYGEL_TYPE_VIDEO_TRANSCODER)
#define RYGEL_TYPE_MP2_TS_PROFILE (rygel_mp2_ts_profile_get_type ())
@@ -31,8 +35,6 @@ struct _RygelMP2TSTranscoderPrivate {
RygelMP2TSProfile profile;
};
-GType rygel_mp2_ts_profile_get_type (void) G_GNUC_CONST;
-
#define RYGEL_MP2_TS_TRANSCODER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RYGEL_TYPE_MP2_TS_TRANSCODER, RygelMP2TSTranscoderPrivate))
#define RYGEL_MP2_TS_TRANSCODER_VIDEO_BITRATE 1500
@@ -41,8 +43,6 @@ GType rygel_mp2_ts_profile_get_type (void) G_GNUC_CONST;
#define RYGEL_MP2_TS_TRANSCODER_AUDIO_FORMAT "audio/mpeg,mpegversion=1,layer=2"
#define RYGEL_MP2_TS_TRANSCODER_BASE_VIDEO_FORMAT "video/mpeg,mpegversion=2,systemstream=false"
#define RYGEL_MP2_TS_TRANSCODER_RESTRICTION_TEMPLATE "video/x-raw-yuv,framerate=(fraction)%d/1,width=%d,height=%d"
-RygelMP2TSTranscoder* rygel_mp2_ts_transcoder_new (RygelMP2TSProfile profile);
-RygelMP2TSTranscoder* rygel_mp2_ts_transcoder_construct (GType object_type, RygelMP2TSProfile profile);
static GUPnPDIDLLiteResource* rygel_mp2_ts_transcoder_real_add_resource (RygelTranscoder* base, GUPnPDIDLLiteItem* didl_item, RygelMediaItem* item, RygelTranscodeManager* manager, GError** error);
static guint rygel_mp2_ts_transcoder_real_get_distance (RygelTranscoder* base, RygelMediaItem* item);
@@ -53,199 +53,105 @@ static const gint RYGEL_MP2_TS_TRANSCODER_HEIGHT[2] = {576, 720};
static const gint RYGEL_MP2_TS_TRANSCODER_FRAME_RATE[2] = {25, 30};
static const gchar* RYGEL_MP2_TS_TRANSCODER_PROFILES[2] = {"MPEG_TS_SD_EU_ISO", "MPEG_TS_HD_NA_ISO"};
-GType rygel_mp2_ts_profile_get_type (void) {
- static volatile gsize rygel_mp2_ts_profile_type_id__volatile = 0;
- if (g_once_init_enter (&rygel_mp2_ts_profile_type_id__volatile)) {
- static const GEnumValue values[] = {{RYGEL_MP2_TS_PROFILE_SD, "RYGEL_MP2_TS_PROFILE_SD", "sd"}, {RYGEL_MP2_TS_PROFILE_HD, "RYGEL_MP2_TS_PROFILE_HD", "hd"}, {0, NULL, NULL}};
- GType rygel_mp2_ts_profile_type_id;
- rygel_mp2_ts_profile_type_id = g_enum_register_static ("RygelMP2TSProfile", values);
- g_once_init_leave (&rygel_mp2_ts_profile_type_id__volatile, rygel_mp2_ts_profile_type_id);
- }
- return rygel_mp2_ts_profile_type_id__volatile;
-}
+RygelMP2TSTranscoder* rygel_mp2_ts_transcoder_construct (GType object_type, RygelMP2TSProfile profile) {
+ RygelMP2TSTranscoder * self;
+ gchar* restriction_template;
+ restriction_template = g_strdup_printf (
+ RYGEL_MP2_TS_TRANSCODER_RESTRICTION_TEMPLATE,
+ RYGEL_MP2_TS_TRANSCODER_FRAME_RATE,
+ RYGEL_MP2_TS_TRANSCODER_WIDTH,
+ RYGEL_MP2_TS_TRANSCODER_HEIGHT);
+
+ self = RYGEL_MP2_TS_TRANSCODER (rygel_video_transcoder_construct (object_type,
+ "video/mpeg", RYGEL_MP2_TS_TRANSCODER_PROFILES[profile],
+ RYGEL_MP2_TS_TRANSCODER_AUDIO_BITRATE,
+ RYGEL_MP2_TS_TRANSCODER_VIDEO_BITRATE,
+ RYGEL_MP2_TS_TRANSCODER_CONTAINER,
+ RYGEL_MP2_TS_TRANSCODER_AUDIO_FORMAT,
+ RYGEL_MP2_TS_TRANSCODER_BASE_VIDEO_FORMAT,
+ "mpg",
+ restriction_template));
+
+ g_free (restriction_template);
+
+ self->priv->profile = profile;
-RygelMP2TSTranscoder* rygel_mp2_ts_transcoder_construct (GType object_type, RygelMP2TSProfile profile) {
- RygelMP2TSTranscoder * self = NULL;
- RygelMP2TSProfile _tmp0_;
- const gchar* _tmp1_;
- RygelMP2TSProfile _tmp2_;
- gint _tmp3_;
- RygelMP2TSProfile _tmp4_;
- gint _tmp5_;
- RygelMP2TSProfile _tmp6_;
- gint _tmp7_;
- gchar* _tmp8_ = NULL;
- gchar* _tmp9_;
- RygelMP2TSProfile _tmp10_;
- _tmp0_ = profile;
- _tmp1_ = RYGEL_MP2_TS_TRANSCODER_PROFILES[_tmp0_];
- _tmp2_ = profile;
- _tmp3_ = RYGEL_MP2_TS_TRANSCODER_FRAME_RATE[_tmp2_];
- _tmp4_ = profile;
- _tmp5_ = RYGEL_MP2_TS_TRANSCODER_WIDTH[_tmp4_];
- _tmp6_ = profile;
- _tmp7_ = RYGEL_MP2_TS_TRANSCODER_HEIGHT[_tmp6_];
- _tmp8_ = g_strdup_printf (RYGEL_MP2_TS_TRANSCODER_RESTRICTION_TEMPLATE, _tmp3_, _tmp5_, _tmp7_);
- _tmp9_ = _tmp8_;
- self = (RygelMP2TSTranscoder*) rygel_video_transcoder_construct (object_type, "video/mpeg", _tmp1_, RYGEL_MP2_TS_TRANSCODER_AUDIO_BITRATE, RYGEL_MP2_TS_TRANSCODER_VIDEO_BITRATE, RYGEL_MP2_TS_TRANSCODER_CONTAINER, RYGEL_MP2_TS_TRANSCODER_AUDIO_FORMAT, RYGEL_MP2_TS_TRANSCODER_BASE_VIDEO_FORMAT, "mpg", _tmp9_);
- _g_free0 (_tmp9_);
- _tmp10_ = profile;
- self->priv->profile = _tmp10_;
return self;
}
-
-RygelMP2TSTranscoder* rygel_mp2_ts_transcoder_new (RygelMP2TSProfile profile) {
+RygelMP2TSTranscoder*
+rygel_mp2_ts_transcoder_new (RygelMP2TSProfile profile) {
return rygel_mp2_ts_transcoder_construct (RYGEL_TYPE_MP2_TS_TRANSCODER, profile);
}
-
-static GUPnPDIDLLiteResource* rygel_mp2_ts_transcoder_real_add_resource (RygelTranscoder* base, GUPnPDIDLLiteItem* didl_item, RygelMediaItem* item, RygelTranscodeManager* manager, GError** error) {
- RygelMP2TSTranscoder * self;
- GUPnPDIDLLiteResource* result = NULL;
- GUPnPDIDLLiteItem* _tmp0_;
- RygelMediaItem* _tmp1_;
- RygelTranscodeManager* _tmp2_;
- GUPnPDIDLLiteResource* _tmp3_ = NULL;
- GUPnPDIDLLiteResource* resource;
- RygelMP2TSProfile _tmp4_;
- gint _tmp5_;
- RygelMP2TSProfile _tmp6_;
- gint _tmp7_;
+static GUPnPDIDLLiteResource*
+rygel_mp2_ts_transcoder_real_add_resource (RygelTranscoder* base, GUPnPDIDLLiteItem* didl_item, RygelMediaItem* item, RygelTranscodeManager* manager, GError** error) {
+ RygelMP2TSTranscoder * self = RYGEL_MP2_TS_TRANSCODER (base);
GError * inner_error = NULL;
- self = (RygelMP2TSTranscoder*) base;
+
g_return_val_if_fail (didl_item != NULL, NULL);
g_return_val_if_fail (item != NULL, NULL);
g_return_val_if_fail (manager != NULL, NULL);
- _tmp0_ = didl_item;
- _tmp1_ = item;
- _tmp2_ = manager;
- _tmp3_ = RYGEL_TRANSCODER_CLASS (rygel_mp2_ts_transcoder_parent_class)->add_resource ((RygelTranscoder*) G_TYPE_CHECK_INSTANCE_CAST (self, RYGEL_TYPE_VIDEO_TRANSCODER, RygelVideoTranscoder), _tmp0_, _tmp1_, _tmp2_, &inner_error);
- resource = _tmp3_;
- if (inner_error != NULL) {
+
+ GUPnPDIDLLiteResource* resource =
+ RYGEL_TRANSCODER_CLASS (rygel_mp2_ts_transcoder_parent_class)->add_resource (RYGEL_TRANSCODER (self), didl_item, item, manager, &inner_error);
+ if (!inner_error) {
g_propagate_error (error, inner_error);
return NULL;
}
- if (resource == NULL) {
- result = NULL;
- _g_object_unref0 (resource);
- return result;
+
+ if (!resource) {
+ return NULL;
}
- _tmp4_ = self->priv->profile;
- _tmp5_ = RYGEL_MP2_TS_TRANSCODER_WIDTH[_tmp4_];
- gupnp_didl_lite_resource_set_width (resource, _tmp5_);
- _tmp6_ = self->priv->profile;
- _tmp7_ = RYGEL_MP2_TS_TRANSCODER_HEIGHT[_tmp6_];
- gupnp_didl_lite_resource_set_height (resource, _tmp7_);
- gupnp_didl_lite_resource_set_bitrate (resource, ((RYGEL_MP2_TS_TRANSCODER_VIDEO_BITRATE + RYGEL_MP2_TS_TRANSCODER_AUDIO_BITRATE) * 1000) / 8);
- result = resource;
- return result;
-}
+ gupnp_didl_lite_resource_set_width (resource, RYGEL_MP2_TS_TRANSCODER_WIDTH[self->priv->profile]);
+ gupnp_didl_lite_resource_set_height (resource, RYGEL_MP2_TS_TRANSCODER_HEIGHT[self->priv->profile]);
+ gupnp_didl_lite_resource_set_bitrate (resource,
+ ((RYGEL_MP2_TS_TRANSCODER_VIDEO_BITRATE + RYGEL_MP2_TS_TRANSCODER_AUDIO_BITRATE) * 1000) / 8);
-static gpointer _g_object_ref0 (gpointer self) {
- return self ? g_object_ref (self) : NULL;
+ return resource;
}
+static guint
+rygel_mp2_ts_transcoder_real_get_distance (RygelTranscoder* base, RygelMediaItem* item) {
+ RygelMP2TSTranscoder * self = RYGEL_MP2_TS_TRANSCODER (base);
-static guint rygel_mp2_ts_transcoder_real_get_distance (RygelTranscoder* base, RygelMediaItem* item) {
- RygelMP2TSTranscoder * self;
- guint result = 0U;
- RygelMediaItem* _tmp0_;
- RygelMediaItem* _tmp2_;
- RygelVideoItem* _tmp3_;
RygelVideoItem* video_item;
- RygelMediaItem* _tmp4_;
- guint _tmp5_ = 0U;
guint distance;
- RygelVideoItem* _tmp6_;
- gint _tmp7_;
- gint _tmp8_;
- RygelVideoItem* _tmp14_;
- gint _tmp15_;
- gint _tmp16_;
- RygelVideoItem* _tmp24_;
- gint _tmp25_;
- gint _tmp26_;
- self = (RygelMP2TSTranscoder*) base;
+ guint bitrate;
+ guint width;
+ guint height;
+
g_return_val_if_fail (item != NULL, 0U);
- _tmp0_ = item;
- if (!RYGEL_IS_VIDEO_ITEM (_tmp0_)) {
- guint _tmp1_;
- _tmp1_ = G_MAXUINT;
- result = _tmp1_;
- return result;
- }
- _tmp2_ = item;
- _tmp3_ = _g_object_ref0 (RYGEL_IS_VIDEO_ITEM (_tmp2_) ? ((RygelVideoItem*) _tmp2_) : NULL);
- video_item = _tmp3_;
- _tmp4_ = item;
- _tmp5_ = RYGEL_TRANSCODER_CLASS (rygel_mp2_ts_transcoder_parent_class)->get_distance ((RygelTranscoder*) G_TYPE_CHECK_INSTANCE_CAST (self, RYGEL_TYPE_VIDEO_TRANSCODER, RygelVideoTranscoder), _tmp4_);
- distance = _tmp5_;
- _tmp6_ = video_item;
- _tmp7_ = rygel_audio_item_get_bitrate ((RygelAudioItem*) _tmp6_);
- _tmp8_ = _tmp7_;
- if (_tmp8_ > 0) {
- guint _tmp9_;
- RygelVideoItem* _tmp10_;
- gint _tmp11_;
- gint _tmp12_;
- gint _tmp13_ = 0;
- _tmp9_ = distance;
- _tmp10_ = video_item;
- _tmp11_ = rygel_audio_item_get_bitrate ((RygelAudioItem*) _tmp10_);
- _tmp12_ = _tmp11_;
- _tmp13_ = abs (_tmp12_ - RYGEL_MP2_TS_TRANSCODER_VIDEO_BITRATE);
- distance = _tmp9_ + _tmp13_;
+
+ if (!RYGEL_IS_VIDEO_ITEM (item)) {
+ return G_MAXUINT;
}
- _tmp14_ = video_item;
- _tmp15_ = rygel_visual_item_get_width ((RygelVisualItem*) _tmp14_);
- _tmp16_ = _tmp15_;
- if (_tmp16_ > 0) {
- guint _tmp17_;
- RygelVideoItem* _tmp18_;
- gint _tmp19_;
- gint _tmp20_;
- RygelMP2TSProfile _tmp21_;
- gint _tmp22_;
- gint _tmp23_ = 0;
- _tmp17_ = distance;
- _tmp18_ = video_item;
- _tmp19_ = rygel_visual_item_get_width ((RygelVisualItem*) _tmp18_);
- _tmp20_ = _tmp19_;
- _tmp21_ = self->priv->profile;
- _tmp22_ = RYGEL_MP2_TS_TRANSCODER_WIDTH[_tmp21_];
- _tmp23_ = abs (_tmp20_ - _tmp22_);
- distance = _tmp17_ + _tmp23_;
+
+ video_item = RYGEL_VIDEO_ITEM (item);
+ distance = 0;
+
+ bitrate = rygel_video_item_get_bits_per_sample (video_item);
+ if(bitrate > 0) {
+ distance += abs(bitrate - RYGEL_MP2_TS_TRANSCODER_VIDEO_BITRATE);
+ }
+
+ width = rygel_video_item_get_width (video_item);
+ if(width > 0) {
+ distance += abs(width - RYGEL_MP2_TS_TRANSCODER_WIDTH[self->priv->profile]);
}
- _tmp24_ = video_item;
- _tmp25_ = rygel_visual_item_get_height ((RygelVisualItem*) _tmp24_);
- _tmp26_ = _tmp25_;
- if (_tmp26_ > 0) {
- guint _tmp27_;
- RygelVideoItem* _tmp28_;
- gint _tmp29_;
- gint _tmp30_;
- RygelMP2TSProfile _tmp31_;
- gint _tmp32_;
- gint _tmp33_ = 0;
- _tmp27_ = distance;
- _tmp28_ = video_item;
- _tmp29_ = rygel_visual_item_get_height ((RygelVisualItem*) _tmp28_);
- _tmp30_ = _tmp29_;
- _tmp31_ = self->priv->profile;
- _tmp32_ = RYGEL_MP2_TS_TRANSCODER_HEIGHT[_tmp31_];
- _tmp33_ = abs (_tmp30_ - _tmp32_);
- distance = _tmp27_ + _tmp33_;
+
+ height = rygel_video_item_get_height (video_item);
+ if(height > 0) {
+ distance += abs(height - RYGEL_MP2_TS_TRANSCODER_HEIGHT[self->priv->profile]);
}
- result = distance;
- _g_object_unref0 (video_item);
- return result;
-}
+ return distance;
+}
-static void rygel_mp2_ts_transcoder_class_init (RygelMP2TSTranscoderClass * klass) {
+static void
+rygel_mp2_ts_transcoder_class_init (RygelMP2TSTranscoderClass * klass) {
rygel_mp2_ts_transcoder_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (RygelMP2TSTranscoderPrivate));
RYGEL_TRANSCODER_CLASS (klass)->add_resource = rygel_mp2_ts_transcoder_real_add_resource;
@@ -254,16 +160,16 @@ static void rygel_mp2_ts_transcoder_class_init (RygelMP2TSTranscoderClass * klas
}
-static void rygel_mp2_ts_transcoder_init (RygelMP2TSTranscoder * self) {
+static void
+rygel_mp2_ts_transcoder_init (RygelMP2TSTranscoder * self) {
self->priv = RYGEL_MP2_TS_TRANSCODER_GET_PRIVATE (self);
}
-
-static void rygel_mp2_ts_transcoder_finalize (GObject* obj) {
+static void
+rygel_mp2_ts_transcoder_finalize (GObject* obj) {
RygelMP2TSTranscoder * self;
self = RYGEL_MP2_TS_TRANSCODER (obj);
G_OBJECT_CLASS (rygel_mp2_ts_transcoder_parent_class)->finalize (obj);
}
-
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]