{"action":"created","comment":{"url":"https://api.github.com/repos/sdroege/gst-player/pulls/comments/28782822","id":28782822,"diff_hunk":"@@ -0,0 +1,649 @@\n+#include \"gstplayer-media-info.h\"\n+#include \"gstplayer-media-info-private.h\"\n+\n+/* Per-stream information */\n+G_DEFINE_TYPE (GstPlayerStreamInfo, gst_player_stream_info, G_TYPE_OBJECT);\n+\n+static void\n+gst_player_stream_info_init (GstPlayerStreamInfo * sinfo)\n+{\n+  sinfo->stream_index = -1;\n+}\n+\n+static void\n+gst_player_stream_info_finalize (GObject * object)\n+{\n+  GstPlayerStreamInfo *sinfo = GST_PLAYER_STREAM_INFO (object);\n+\n+  if (sinfo->caps)\n+    gst_caps_unref (sinfo->caps);\n+\n+  if (sinfo->tags)\n+    gst_tag_list_unref (sinfo->tags);\n+\n+  G_OBJECT_CLASS (gst_player_stream_info_parent_class)->finalize (object);\n+}\n+\n+static void\n+gst_player_stream_info_class_init (GObjectClass * klass)\n+{\n+  klass->finalize = gst_player_stream_info_finalize;\n+}\n+\n+/**\n+ * gst_player_stream_info_get_stream_index:\n+ * @info: a #GstPlayerStreamInfo\n+ *\n+ * Returns: the stream index of this stream.\n+ */\n+gint\n+gst_player_stream_info_get_stream_index (const GstPlayerStreamInfo *info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_STREAM_INFO (info));\n+\n+  return info->stream_index;\n+}\n+\n+/**\n+ * gst_player_stream_info_get_stream_type_nick:\n+ * @info: a #GstPlayerStreamInfo\n+ *\n+ * Returns: a human readable name for the stream type of the given @info (ex : \"audio\",\n+ * \"video\",...).\n+ */\n+const gchar*\n+gst_player_stream_info_get_stream_type_nick (const GstPlayerStreamInfo *info)\n+{\n+  g_return_val_if_fail (GST_IS_PLAYER_STREAM_INFO (info), NULL);\n+\n+  if (GST_IS_PLAYER_VIDEO_INFO (info))\n+    return \"video\";\n+\n+  if (GST_IS_PLAYER_AUDIO_INFO (info))\n+    return \"audio\";\n+\n+  if (GST_IS_PLAYER_SUBTITLE_INFO (info))\n+    return \"subtitle\";\n+\n+  return NULL;\n+}\n+\n+/**\n+ * gst_player_stream_info_get_tags:\n+ * @info: a #GstPlayerStreamInfo\n+ *\n+ * Returns: (transfer none): the tags contained in this stream.\n+ */\n+GstTagList*\n+gst_player_stream_info_get_stream_tags (const GstPlayerStreamInfo *info)\n+{\n+  g_return_val_if_fail (GST_IS_PLAYER_STREAM_INFO (info), NULL);\n+\n+  return info->tags;\n+}\n+\n+/**\n+ * gst_player_stream_info_get_caps:\n+ * @info: a #GstPlayerStreamInfo\n+ *\n+ * Returns: (transfer none): the #GstCaps of the stream.\n+ */\n+GstCaps*\n+gst_player_stream_info_get_stream_caps (const GstPlayerStreamInfo *info)\n+{\n+  g_return_val_if_fail (GST_IS_PLAYER_STREAM_INFO (info), NULL);\n+\n+  return info->caps;\n+}\n+\n+/* Video information */\n+G_DEFINE_TYPE (GstPlayerVideoInfo, gst_player_video_info,\n+    GST_TYPE_PLAYER_STREAM_INFO);\n+\n+static void\n+gst_player_video_info_init (GstPlayerVideoInfo * info)\n+{\n+  info->width = -1;\n+  info->height = -1;\n+  info->framerate_num = 0;\n+  info->framerate_denom = 1;\n+  info->par_num = 1;\n+  info->par_denom = 1;\n+}\n+\n+static void\n+gst_player_video_info_class_init (GObjectClass * klass)\n+{\n+  /* nothing to do here */\n+}\n+\n+/**\n+ * gst_player_video_info_get_width:\n+ * @info: a #GstPlayerVideoInfo\n+ *\n+ * Returns: the width of video in #GstPlayerVideoInfo.\n+ */\n+gint\n+gst_player_video_info_get_width (const GstPlayerVideoInfo *info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_VIDEO_INFO (info));\n+\n+  return info->width;\n+}\n+\n+/**\n+ * gst_player_video_info_get_height:\n+ * @info: a #GstPlayerVideoInfo\n+ *\n+ * Returns: the height of video in #GstPlayerVideoInfo.\n+ */\n+gint\n+gst_player_video_info_get_height (const GstPlayerVideoInfo *info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_VIDEO_INFO (info));\n+\n+  return info->height;\n+}\n+\n+/**\n+ * gst_player_video_info_get_framerate_num:\n+ * @info: a #GstPlayerVideoInfo\n+ *\n+ */\n+void\n+gst_player_video_info_get_framerate (const GstPlayerVideoInfo *info,\n+  gint *fps_n, gint *fps_d)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_VIDEO_INFO (info));\n+\n+  *fps_n = info->framerate_num;\n+  *fps_d = info->framerate_denom;\n+}\n+\n+/**\n+ * gst_player_video_info_get_pixel_aspect_ratio:\n+ * @info: a #GstPlayerVideoInfo\n+ *\n+ */\n+void\n+gst_player_video_info_get_pixel_aspect_ratio (const GstPlayerVideoInfo *info,\n+  guint *par_d, guint *par_n)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_VIDEO_INFO (info));\n+\n+  *par_n = info->par_num;\n+  *par_d = info->par_denom;\n+}\n+\n+/**\n+ * gst_player_video_info_get_bitrate:\n+ * @info: a #GstPlayerVideoInfo\n+ *\n+ * Returns: the current bitrate of video in #GstPlayerVideoInfo.\n+ */\n+gint\n+gst_player_video_info_get_bitrate (const GstPlayerVideoInfo* info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_VIDEO_INFO (info));\n+\n+  return info->bitrate;\n+}\n+\n+/**\n+ * gst_player_video_info_get_max_bitrate:\n+ * @info: a #GstPlayerVideoInfo\n+ *\n+ * Returns: the maximum bitrate of video in #GstPlayerVideoInfo.\n+ */\n+gint\n+gst_player_video_info_get_max_bitrate (const GstPlayerVideoInfo* info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_VIDEO_INFO (info));\n+\n+  return info->max_bitrate;\n+}\n+\n+/* Audio information */\n+G_DEFINE_TYPE (GstPlayerAudioInfo, gst_player_audio_info,\n+    GST_TYPE_PLAYER_STREAM_INFO);\n+\n+static void\n+gst_player_audio_info_init (GstPlayerAudioInfo * info)\n+{\n+  /* nothing to do here */\n+}\n+\n+static void\n+gst_player_audio_info_finalize (GObject * object)\n+{\n+  GstPlayerAudioInfo *info = GST_PLAYER_AUDIO_INFO (object);\n+\n+  g_free (info->language);\n+\n+  G_OBJECT_CLASS (gst_player_audio_info_parent_class)->finalize (object);\n+}\n+\n+static void\n+gst_player_audio_info_class_init (GObjectClass * klass)\n+{\n+  klass->finalize = gst_player_audio_info_finalize;\n+}\n+\n+/**\n+ * gst_player_audio_info_get_language:\n+ * @info: a #GstPlayerAudioInfo\n+ *\n+ * Returns: the language of the stream, or NULL if unknown.\n+ */\n+const gchar*\n+gst_player_audio_info_get_language(const GstPlayerAudioInfo* info)\n+{\n+  g_return_val_if_fail (GST_IS_PLAYER_AUDIO_INFO (info), NULL);\n+\n+ return info->language;\n+}\n+\n+/**\n+ * gst_player_audio_info_get_channels:\n+ * @info: a #GstPlayerAudioInfo\n+ *\n+ * Returns: the number of audio channels in #GstPlayerAudioInfo.\n+ */\n+gint\n+gst_player_audio_info_get_channels (const GstPlayerAudioInfo *info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_AUDIO_INFO (info));\n+\n+  return info->channels;\n+}\n+\n+/**\n+ * gst_player_audio_info_get_sample_rate:\n+ * @info: a #GstPlayerAudioInfo\n+ *\n+ * Returns: the audio sample rate in #GstPlayerAudioInfo.\n+ */\n+gint\n+gst_player_audio_info_get_sample_rate (const GstPlayerAudioInfo *info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_AUDIO_INFO (info));\n+\n+  return info->sample_rate;\n+}\n+\n+/**\n+ * gst_player_audio_info_get_bitrate:\n+ * @info: a #GstPlayerAudioInfo\n+ *\n+ * Returns: the audio bitrate in #GstPlayerAudioInfo.\n+ */\n+gint\n+gst_player_audio_info_get_bitrate (const GstPlayerAudioInfo* info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_AUDIO_INFO (info));\n+\n+  return info->bitrate;\n+}\n+\n+/**\n+ * gst_player_audio_info_get_max_bitrate:\n+ * @info: a #GstPlayerAudioInfo\n+ *\n+ * Returns: the audio maximum bitrate in #GstPlayerAudioInfo.\n+ */\n+gint\n+gst_player_audio_info_get_max_bitrate (const GstPlayerAudioInfo* info)\n+{\n+  g_return_if_fail (GST_IS_PLAYER_AUDIO_INFO (info));\n+\n+  return info->max_bitrate;\n+}\n+\n+/* Subtitle information */\n+G_DEFINE_TYPE (GstPlayerSubtitleInfo, gst_player_subtitle_info,\n+    GST_TYPE_PLAYER_STREAM_INFO);\n+\n+static void\n+gst_player_subtitle_info_init (GstPlayerSubtitleInfo * info)\n+{\n+  /* nothing to do */\n+}\n+\n+static void\n+gst_player_subtitle_info_finalize (GObject * object)\n+{\n+  GstPlayerSubtitleInfo *info = GST_PLAYER_SUBTITLE_INFO (object);\n+\n+  g_free (info->language);\n+\n+  G_OBJECT_CLASS (gst_player_subtitle_info_parent_class)->finalize (object);\n+}\n+\n+static void\n+gst_player_subtitle_info_class_init (GObjectClass * klass)\n+{\n+  klass->finalize = gst_player_subtitle_info_finalize;\n+}\n+\n+/**\n+ * gst_player_subtitle_get_language:\n+ * @info: a #GstPlayerSubtitleInfo\n+ *\n+ * Returns: the language of the stream, or NULL if unknown.\n+ */\n+const gchar*\n+gst_player_subtitle_get_language( const GstPlayerSubtitleInfo* info)\n+{\n+  g_return_val_if_fail (GST_IS_PLAYER_SUBTITLE_INFO (info), NULL);\n+\n+  return info->language;\n+}\n+\n+/* Global media information */\n+G_DEFINE_TYPE (GstPlayerMediaInfo, gst_player_media_info, G_TYPE_OBJECT);\n+\n+static void\n+gst_player_media_info_init (GstPlayerMediaInfo * info)\n+{\n+  info->duration = -1;\n+}\n+\n+static void\n+gst_player_media_info_finalize (GObject * object)\n+{\n+  GstPlayerMediaInfo  *info = GST_PLAYER_MEDIA_INFO (object);\n+\n+  g_free (info->uri);\n+\n+  if (info->stream_list)\n+    g_list_free_full (info->stream_list, g_object_unref);\n+\n+  G_OBJECT_CLASS (gst_player_media_info_parent_class)->finalize (object);\n+}\n+\n+static void\n+gst_player_media_info_class_init (GstPlayerMediaInfoClass * klass)\n+{\n+  GObjectClass  *oclass = (GObjectClass *) klass;\n+\n+  oclass->finalize = gst_player_media_info_finalize;\n+}\n+\n+static GstPlayerVideoInfo*\n+gst_player_video_info_new (void)\n+{\n+  return g_object_new (GST_TYPE_PLAYER_VIDEO_INFO, NULL);\n+}\n+\n+static GstPlayerAudioInfo*\n+gst_player_audio_info_new (void)\n+{\n+  return g_object_new (GST_TYPE_PLAYER_AUDIO_INFO, NULL);\n+}\n+\n+static GstPlayerSubtitleInfo*\n+gst_player_subtitle_info_new (void)\n+{\n+  return g_object_new (GST_TYPE_PLAYER_SUBTITLE_INFO, NULL);\n+}\n+\n+static GstPlayerStreamInfo*\n+gst_player_video_info_copy (GstPlayerVideoInfo *ref)\n+{\n+  GstPlayerVideoInfo *ret;\n+\n+  ret = gst_player_video_info_new ();\n+\n+  ret->width = ref->width;\n+  ret->height  = ref->height;\n+  ret->framerate_num = ref->framerate_num;\n+  ret->framerate_denom = ref->framerate_denom;\n+  ret->par_num = ref->par_num;\n+  ret->par_denom = ref->par_denom;\n+  ret->bitrate = ref->bitrate;\n+  ret->max_bitrate = ref->max_bitrate;\n+\n+  return (GstPlayerStreamInfo*) ret;\n+}\n+\n+static GstPlayerStreamInfo*\n+gst_player_audio_info_copy (GstPlayerAudioInfo *ref)\n+{\n+  GstPlayerAudioInfo *ret;\n+\n+  ret = gst_player_audio_info_new ();\n+\n+  ret->sample_rate = ref->sample_rate;\n+  ret->channels = ref->channels;\n+  ret->bitrate = ref->bitrate;\n+  ret->max_bitrate = ref->max_bitrate;\n+\n+  if (ref->language)\n+    ret->language = g_strdup (ref->language);\n+\n+  return (GstPlayerStreamInfo*) ret;\n+}\n+\n+static GstPlayerStreamInfo*\n+gst_player_subtitle_info_copy (GstPlayerSubtitleInfo *ref)\n+{\n+  GstPlayerSubtitleInfo *ret;\n+\n+  ret = gst_player_subtitle_info_new ();\n+  if (ref->language)\n+    ret->language = g_strdup (ref->language);\n+\n+  return (GstPlayerStreamInfo*) ret;\n+}\n+\n+GstPlayerStreamInfo*\n+gst_player_stream_info_copy (GstPlayerStreamInfo *ref)\n+{\n+  GstPlayerStreamInfo *info = NULL;\n+\n+  if (GST_IS_PLAYER_VIDEO_INFO(ref))\n+    info = gst_player_video_info_copy ((GstPlayerVideoInfo*)ref);\n+\n+  if (GST_IS_PLAYER_AUDIO_INFO(ref))\n+    info = gst_player_audio_info_copy ((GstPlayerAudioInfo*)ref);\n+\n+  if (GST_IS_PLAYER_SUBTITLE_INFO(ref))\n+    info = gst_player_subtitle_info_copy ((GstPlayerSubtitleInfo*)ref);\n+\n+  info->stream_index = ref->stream_index;\n+  if (ref->tags)\n+    info->tags = gst_tag_list_copy (ref->tags);\n+  if (ref->caps)\n+    info->caps = gst_caps_copy (ref->caps);\n+\n+  return info;\n+}\n+\n+GstPlayerMediaInfo*\n+gst_player_media_info_copy (GstPlayerMediaInfo* ref)\n+{\n+  GList *l;\n+  GstPlayerMediaInfo *info;\n+\n+  if (!ref)\n+    return NULL;\n+\n+  info = gst_player_media_info_new (ref->uri);\n+\n+  for (l = ref->stream_list; l != NULL; l = l->next)\n+    info->stream_list = g_list_append (info->stream_list,\n+                  gst_player_stream_info_copy((GstPlayerStreamInfo*)l->data));\n+\n+  return info;\n+}\n+\n+GstPlayerStreamInfo*\n+gst_player_stream_info_new (gint stream_index, GType type)\n+{\n+  GstPlayerStreamInfo *info = NULL;\n+\n+  if (type == GST_TYPE_PLAYER_AUDIO_INFO)\n+    info = (GstPlayerStreamInfo*) gst_player_audio_info_new ();\n+\n+  if (type == GST_TYPE_PLAYER_VIDEO_INFO)\n+    info = (GstPlayerStreamInfo*) gst_player_video_info_new ();\n+\n+  if (type == GST_TYPE_PLAYER_SUBTITLE_INFO)\n+    info = (GstPlayerStreamInfo*) gst_player_subtitle_info_new ();\n+\n+  info->stream_index = stream_index;\n+\n+  return info;\n+}\n+\n+GstPlayerMediaInfo*\n+gst_player_media_info_new (const gchar *uri)\n+{\n+  GstPlayerMediaInfo *info;\n+\n+  info = g_object_new (GST_TYPE_PLAYER_MEDIA_INFO, NULL);\n+  if (uri)\n+    info->uri = g_strdup (uri);","path":"lib/gst/player/gstplayer-media-info.c","position":506,"original_position":506,"commit_id":"276e6ee6d32c28b3020f2f81c0bc55dda1ffc00e","original_commit_id":"276e6ee6d32c28b3020f2f81c0bc55dda1ffc00e","user":{"login":"sdroege","id":301846,"avatar_url":"https://avatars.githubusercontent.com/u/301846?v=3","gravatar_id":"","url":"https://api.github.com/users/sdroege","html_url":"https://github.com/sdroege","followers_url":"https://api.github.com/users/sdroege/followers","following_url":"https://api.github.com/users/sdroege/following{/other_user}","gists_url":"https://api.github.com/users/sdroege/gists{/gist_id}","starred_url":"https://api.github.com/users/sdroege/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sdroege/subscriptions","organizations_url":"https://api.github.com/users/sdroege/orgs","repos_url":"https://api.github.com/users/sdroege/repos","events_url":"https://api.github.com/users/sdroege/events{/privacy}","received_events_url":"https://api.github.com/users/sdroege/received_events","type":"User","site_admin":false},"body":"I think this must be called with a valid URI, add a g_return_val_if_fail(uri != NULL, NULL) at the top :)","created_at":"2015-04-21T14:29:18Z","updated_at":"2015-04-21T14:29:18Z","html_url":"https://github.com/sdroege/gst-player/pull/17#discussion_r28782822","pull_request_url":"https://api.github.com/repos/sdroege/gst-player/pulls/17","_links":{"self":{"href":"https://api.github.com/repos/sdroege/gst-player/pulls/comments/28782822"},"html":{"href":"https://github.com/sdroege/gst-player/pull/17#discussion_r28782822"},"pull_request":{"href":"https://api.github.com/repos/sdroege/gst-player/pulls/17"}}},"pull_request":{"url":"https://api.github.com/repos/sdroege/gst-player/pulls/17","id":33719174,"html_url":"https://github.com/sdroege/gst-player/pull/17","diff_url":"https://github.com/sdroege/gst-player/pull/17.diff","patch_url":"https://github.com/sdroege/gst-player/pull/17.patch","issue_url":"https://api.github.com/repos/sdroege/gst-player/issues/17","number":17,"state":"open","locked":false,"title":"mediainfo-v3","user":{"login":"codomania","id":3385272,"avatar_url":"https://avatars.githubusercontent.com/u/3385272?v=3","gravatar_id":"","url":"https://api.github.com/users/codomania","html_url":"https://github.com/codomania","followers_url":"https://api.github.com/users/codomania/followers","following_url":"https://api.github.com/users/codomania/following{/other_user}","gists_url":"https://api.github.com/users/codomania/gists{/gist_id}","starred_url":"https://api.github.com/users/codomania/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codomania/subscriptions","organizations_url":"https://api.github.com/users/codomania/orgs","repos_url":"https://api.github.com/users/codomania/repos","events_url":"https://api.github.com/users/codomania/events{/privacy}","received_events_url":"https://api.github.com/users/codomania/received_events","type":"User","site_admin":false},"body":"Your review feedback is addressed in this patch set.","created_at":"2015-04-21T00:24:44Z","updated_at":"2015-04-21T14:29:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e617a6c81e624d96a47747eb84f1a143b514ff95","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/sdroege/gst-player/pulls/17/commits","review_comments_url":"https://api.github.com/repos/sdroege/gst-player/pulls/17/comments","review_comment_url":"https://api.github.com/repos/sdroege/gst-player/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sdroege/gst-player/issues/17/comments","statuses_url":"https://api.github.com/repos/sdroege/gst-player/statuses/276e6ee6d32c28b3020f2f81c0bc55dda1ffc00e","head":{"label":"codomania:mediainfo-v3","ref":"mediainfo-v3","sha":"276e6ee6d32c28b3020f2f81c0bc55dda1ffc00e","user":{"login":"codomania","id":3385272,"avatar_url":"https://avatars.githubusercontent.com/u/3385272?v=3","gravatar_id":"","url":"https://api.github.com/users/codomania","html_url":"https://github.com/codomania","followers_url":"https://api.github.com/users/codomania/followers","following_url":"https://api.github.com/users/codomania/following{/other_user}","gists_url":"https://api.github.com/users/codomania/gists{/gist_id}","starred_url":"https://api.github.com/users/codomania/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codomania/subscriptions","organizations_url":"https://api.github.com/users/codomania/orgs","repos_url":"https://api.github.com/users/codomania/repos","events_url":"https://api.github.com/users/codomania/events{/privacy}","received_events_url":"https://api.github.com/users/codomania/received_events","type":"User","site_admin":false},"repo":{"id":32486247,"name":"gst-player","full_name":"codomania/gst-player","owner":{"login":"codomania","id":3385272,"avatar_url":"https://avatars.githubusercontent.com/u/3385272?v=3","gravatar_id":"","url":"https://api.github.com/users/codomania","html_url":"https://github.com/codomania","followers_url":"https://api.github.com/users/codomania/followers","following_url":"https://api.github.com/users/codomania/following{/other_user}","gists_url":"https://api.github.com/users/codomania/gists{/gist_id}","starred_url":"https://api.github.com/users/codomania/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codomania/subscriptions","organizations_url":"https://api.github.com/users/codomania/orgs","repos_url":"https://api.github.com/users/codomania/repos","events_url":"https://api.github.com/users/codomania/events{/privacy}","received_events_url":"https://api.github.com/users/codomania/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/codomania/gst-player","description":"GStreamer Playback API","fork":true,"url":"https://api.github.com/repos/codomania/gst-player","forks_url":"https://api.github.com/repos/codomania/gst-player/forks","keys_url":"https://api.github.com/repos/codomania/gst-player/keys{/key_id}","collaborators_url":"https://api.github.com/repos/codomania/gst-player/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/codomania/gst-player/teams","hooks_url":"https://api.github.com/repos/codomania/gst-player/hooks","issue_events_url":"https://api.github.com/repos/codomania/gst-player/issues/events{/number}","events_url":"https://api.github.com/repos/codomania/gst-player/events","assignees_url":"https://api.github.com/repos/codomania/gst-player/assignees{/user}","branches_url":"https://api.github.com/repos/codomania/gst-player/branches{/branch}","tags_url":"https://api.github.com/repos/codomania/gst-player/tags","blobs_url":"https://api.github.com/repos/codomania/gst-player/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/codomania/gst-player/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/codomania/gst-player/git/refs{/sha}","trees_url":"https://api.github.com/repos/codomania/gst-player/git/trees{/sha}","statuses_url":"https://api.github.com/repos/codomania/gst-player/statuses/{sha}","languages_url":"https://api.github.com/repos/codomania/gst-player/languages","stargazers_url":"https://api.github.com/repos/codomania/gst-player/stargazers","contributors_url":"https://api.github.com/repos/codomania/gst-player/contributors","subscribers_url":"https://api.github.com/repos/codomania/gst-player/subscribers","subscription_url":"https://api.github.com/repos/codomania/gst-player/subscription","commits_url":"https://api.github.com/repos/codomania/gst-player/commits{/sha}","git_commits_url":"https://api.github.com/repos/codomania/gst-player/git/commits{/sha}","comments_url":"https://api.github.com/repos/codomania/gst-player/comments{/number}","issue_comment_url":"https://api.github.com/repos/codomania/gst-player/issues/comments{/number}","contents_url":"https://api.github.com/repos/codomania/gst-player/contents/{+path}","compare_url":"https://api.github.com/repos/codomania/gst-player/compare/{base}...{head}","merges_url":"https://api.github.com/repos/codomania/gst-player/merges","archive_url":"https://api.github.com/repos/codomania/gst-player/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/codomania/gst-player/downloads","issues_url":"https://api.github.com/repos/codomania/gst-player/issues{/number}","pulls_url":"https://api.github.com/repos/codomania/gst-player/pulls{/number}","milestones_url":"https://api.github.com/repos/codomania/gst-player/milestones{/number}","notifications_url":"https://api.github.com/repos/codomania/gst-player/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/codomania/gst-player/labels{/name}","releases_url":"https://api.github.com/repos/codomania/gst-player/releases{/id}","created_at":"2015-03-18T21:49:34Z","updated_at":"2015-03-20T21:16:03Z","pushed_at":"2015-04-21T00:17:21Z","git_url":"git://github.com/codomania/gst-player.git","ssh_url":"git@github.com:codomania/gst-player.git","clone_url":"https://github.com/codomania/gst-player.git","svn_url":"https://github.com/codomania/gst-player","homepage":null,"size":602,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"sdroege:master","ref":"master","sha":"377fe95bcd584b7720061914c798ea52d9ec8dd9","user":{"login":"sdroege","id":301846,"avatar_url":"https://avatars.githubusercontent.com/u/301846?v=3","gravatar_id":"","url":"https://api.github.com/users/sdroege","html_url":"https://github.com/sdroege","followers_url":"https://api.github.com/users/sdroege/followers","following_url":"https://api.github.com/users/sdroege/following{/other_user}","gists_url":"https://api.github.com/users/sdroege/gists{/gist_id}","starred_url":"https://api.github.com/users/sdroege/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sdroege/subscriptions","organizations_url":"https://api.github.com/users/sdroege/orgs","repos_url":"https://api.github.com/users/sdroege/repos","events_url":"https://api.github.com/users/sdroege/events{/privacy}","received_events_url":"https://api.github.com/users/sdroege/received_events","type":"User","site_admin":false},"repo":{"id":22641202,"name":"gst-player","full_name":"sdroege/gst-player","owner":{"login":"sdroege","id":301846,"avatar_url":"https://avatars.githubusercontent.com/u/301846?v=3","gravatar_id":"","url":"https://api.github.com/users/sdroege","html_url":"https://github.com/sdroege","followers_url":"https://api.github.com/users/sdroege/followers","following_url":"https://api.github.com/users/sdroege/following{/other_user}","gists_url":"https://api.github.com/users/sdroege/gists{/gist_id}","starred_url":"https://api.github.com/users/sdroege/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sdroege/subscriptions","organizations_url":"https://api.github.com/users/sdroege/orgs","repos_url":"https://api.github.com/users/sdroege/repos","events_url":"https://api.github.com/users/sdroege/events{/privacy}","received_events_url":"https://api.github.com/users/sdroege/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sdroege/gst-player","description":"GStreamer Playback API","fork":false,"url":"https://api.github.com/repos/sdroege/gst-player","forks_url":"https://api.github.com/repos/sdroege/gst-player/forks","keys_url":"https://api.github.com/repos/sdroege/gst-player/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sdroege/gst-player/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sdroege/gst-player/teams","hooks_url":"https://api.github.com/repos/sdroege/gst-player/hooks","issue_events_url":"https://api.github.com/repos/sdroege/gst-player/issues/events{/number}","events_url":"https://api.github.com/repos/sdroege/gst-player/events","assignees_url":"https://api.github.com/repos/sdroege/gst-player/assignees{/user}","branches_url":"https://api.github.com/repos/sdroege/gst-player/branches{/branch}","tags_url":"https://api.github.com/repos/sdroege/gst-player/tags","blobs_url":"https://api.github.com/repos/sdroege/gst-player/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sdroege/gst-player/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sdroege/gst-player/git/refs{/sha}","trees_url":"https://api.github.com/repos/sdroege/gst-player/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sdroege/gst-player/statuses/{sha}","languages_url":"https://api.github.com/repos/sdroege/gst-player/languages","stargazers_url":"https://api.github.com/repos/sdroege/gst-player/stargazers","contributors_url":"https://api.github.com/repos/sdroege/gst-player/contributors","subscribers_url":"https://api.github.com/repos/sdroege/gst-player/subscribers","subscription_url":"https://api.github.com/repos/sdroege/gst-player/subscription","commits_url":"https://api.github.com/repos/sdroege/gst-player/commits{/sha}","git_commits_url":"https://api.github.com/repos/sdroege/gst-player/git/commits{/sha}","comments_url":"https://api.github.com/repos/sdroege/gst-player/comments{/number}","issue_comment_url":"https://api.github.com/repos/sdroege/gst-player/issues/comments{/number}","contents_url":"https://api.github.com/repos/sdroege/gst-player/contents/{+path}","compare_url":"https://api.github.com/repos/sdroege/gst-player/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sdroege/gst-player/merges","archive_url":"https://api.github.com/repos/sdroege/gst-player/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sdroege/gst-player/downloads","issues_url":"https://api.github.com/repos/sdroege/gst-player/issues{/number}","pulls_url":"https://api.github.com/repos/sdroege/gst-player/pulls{/number}","milestones_url":"https://api.github.com/repos/sdroege/gst-player/milestones{/number}","notifications_url":"https://api.github.com/repos/sdroege/gst-player/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sdroege/gst-player/labels{/name}","releases_url":"https://api.github.com/repos/sdroege/gst-player/releases{/id}","created_at":"2014-08-05T11:33:57Z","updated_at":"2015-04-14T13:25:18Z","pushed_at":"2015-04-21T00:24:45Z","git_url":"git://github.com/sdroege/gst-player.git","ssh_url":"git@github.com:sdroege/gst-player.git","clone_url":"https://github.com/sdroege/gst-player.git","svn_url":"https://github.com/sdroege/gst-player","homepage":null,"size":813,"stargazers_count":10,"watchers_count":10,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"open_issues_count":4,"forks":11,"open_issues":4,"watchers":10,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sdroege/gst-player/pulls/17"},"html":{"href":"https://github.com/sdroege/gst-player/pull/17"},"issue":{"href":"https://api.github.com/repos/sdroege/gst-player/issues/17"},"comments":{"href":"https://api.github.com/repos/sdroege/gst-player/issues/17/comments"},"review_comments":{"href":"https://api.github.com/repos/sdroege/gst-player/pulls/17/comments"},"review_comment":{"href":"https://api.github.com/repos/sdroege/gst-player/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sdroege/gst-player/pulls/17/commits"},"statuses":{"href":"https://api.github.com/repos/sdroege/gst-player/statuses/276e6ee6d32c28b3020f2f81c0bc55dda1ffc00e"}}}}