+++ /dev/null
-/*
- * This file is a part of MAFW
- *
- * Copyright (C) 2007, 2008, 2009 Nokia Corporation, all rights reserved.
- *
- * Contact: Visa Smolander <visa.smolander@nokia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- */
-
-/*
- * test.c
- *
- * Test of the playback system
- *
- * Copyright (C) 2007 Nokia Corporation
- *
- */
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/select.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <termios.h>
-
-#include "mafw-gst-renderer.h"
-#include <libmafw/mafw-metadata.h>
-#include <libmafw/mafw-registry.h>
-
-MafwGstRenderer *gst_renderer;
-GMainLoop *loop;
-static struct termios tio_orig;
-guint seek_delta = 2;
-gfloat volume = 0.7;
-gboolean muted = FALSE;
-
-
-/**
- *@time: how long to wait, in microsecs
- *
- */
-int kbhit (int time) {
- fd_set rfds;
- struct timeval tv;
- int retval;
- char c;
-
- FD_ZERO (&rfds);
- FD_SET (0, &rfds);
-
- /* Wait up to 'time' microseconds. */
- tv.tv_sec=time / 1000;
- tv.tv_usec = (time % 1000)*1000;
-
- retval=select (1, &rfds, NULL, NULL, &tv);
- if(retval < 1) return -1;
- retval = read (0, &c, 1);
- if (retval < 1) return -1;
- return (int) c;
-}
-
-
-/**
- *
- *
- */
-static void raw_kb_enable (void) {
- struct termios tio_new;
- tcgetattr(0, &tio_orig);
-
- tio_new = tio_orig;
- tio_new.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */
- tio_new.c_cc[VMIN] = 1;
- tio_new.c_cc[VTIME] = 0;
- tcsetattr (0, TCSANOW, &tio_new);
-}
-
-static void raw_kb_disable (void)
-{
- tcsetattr (0,TCSANOW, &tio_orig);
-}
-
-static void get_position_cb(MafwRenderer* self, gint position, gpointer user_data,
- const GError* error)
-{
- guint* rpos = (guint*) user_data;
- g_return_if_fail(rpos != NULL);
-
- *rpos = position;
-}
-
-/**
- *
- *
- */
-static gboolean idle_cb (gpointer data)
-{
- gboolean ret = TRUE;
- GError *error = NULL;
-
- int c = kbhit (0);
- if (c == -1) {
- usleep (10 * 1000);
- return TRUE;
- }
-
- printf ("c = %d\n", c);
- /* '.' key */
- if (c == 46) {
- printf ("Seeking %d seconds forward\n", seek_delta);
- gint pos = 0;
-
- mafw_gst_renderer_get_position(MAFW_RENDERER(gst_renderer),
- get_position_cb, &pos);
-
- printf (" Position before seek: %d\n", pos);
- pos += seek_delta;
- mafw_gst_renderer_set_position(MAFW_RENDERER(gst_renderer), pos,
- NULL, NULL);
-
- mafw_gst_renderer_get_position(MAFW_RENDERER(gst_renderer),
- get_position_cb, &pos);
-
- printf (" Position after seek: %d\n", pos);
- }
- /* ',' key */
- else if (c == 44) {
- printf ("Seeking %d seconds backwards\n", seek_delta);
- gint pos = 0;
-
- mafw_gst_renderer_get_position(MAFW_RENDERER(gst_renderer),
- get_position_cb, &pos);
-
- printf (" Position before seek: %d\n", pos);
- pos -= seek_delta;
- mafw_gst_renderer_set_position(MAFW_RENDERER(gst_renderer), pos,
- NULL, NULL);
-
- mafw_gst_renderer_get_position(MAFW_RENDERER(gst_renderer),
- get_position_cb, &pos);
-
- printf (" Position after seek: %d\n", pos);
- }
- /* '' (space) key */
- else if (c == 32) {
- if (gst_renderer->current_state == Playing) {
- printf ("Pausing...\n");
- mafw_gst_renderer_pause(MAFW_RENDERER (gst_renderer), NULL, NULL);
- }
- else if (gst_renderer->current_state == Paused) {
- printf ("Resuming...\n");
- mafw_gst_renderer_resume(MAFW_RENDERER (gst_renderer), NULL, NULL);
- }
- }
- /* 'p' key */
- else if (c == 112) {
- printf ("Playing...\n");
- mafw_gst_renderer_play (MAFW_RENDERER (gst_renderer), NULL, NULL);
- }
- /* 's' key */
- else if (c == 115) {
- printf ("Stopping\n");
- mafw_gst_renderer_stop (MAFW_RENDERER (gst_renderer), NULL, NULL);
- }
- /* 'g' key */
- else if (c == 103) {
- printf ("Getting position\n");
- gint pos = 0;
-
- mafw_gst_renderer_get_position(MAFW_RENDERER(gst_renderer),
- get_position_cb, &pos);
-
- printf ("Current position: %d\n", pos);
- }
- /* '+' key */
- else if (c == 43) {
- volume += 0.1;
- printf ("Increasing volume to %lf\n", volume);
- mafw_extension_set_property_float(MAFW_EXTENSION(gst_renderer),
- "volume", volume);
- }
- /* '-' key */
- else if (c == 45) {
- volume -= 0.1;
- printf ("Decreasing volume to %lf\n", volume);
- mafw_extension_set_property_float(MAFW_EXTENSION(gst_renderer),
- "volume", volume);
- }
- /* 'm' key */
- else if (c == 109) {
- muted = !muted;
- printf ("(Un)Muting...\n");
- mafw_extension_set_property_boolean(MAFW_EXTENSION(gst_renderer),
- "mute", muted);
- }
- /* '?' key */
- else if (c == 63) {
- printf ("COMMANDS:\n" \
- " s\t\tStop\n" \
- " p\t\tPlay\n" \
- " space\tPause/Resume\n" \
- " +\t\tVolume up\n" \
- " -\t\tVolume down\n" \
- " m\t\tMute/Unmute\n" \
- " .\t\tSeek forward 2 sec\n" \
- " ,\t\tSeek backwards 2 sec\n" \
- " q\t\tQuit\n");
- }
- /* 'q' key */
- else if (c == 113) {
- printf ("QUIT\n");
- mafw_gst_renderer_stop (MAFW_RENDERER (gst_renderer), NULL, NULL);
- raw_kb_disable ();
- g_main_loop_quit (loop);
- ret = FALSE;
- }
- if (error) {
- printf ("Error occured during the operation\n");
- g_error_free (error);
- }
- return ret;
-}
-
-
-/**
- *
- *
- */
-static void metadata_changed (MafwGstRenderer *gst_renderer,
- GHashTable *metadata,
- gpointer user_data)
-{
- g_print("Metadata changed:\n");
- mafw_metadata_print (metadata, NULL);
-}
-
-
-/**
- *
- *
- */
-static void buffering_cb (MafwGstRenderer *gst_renderer,
- gfloat percentage,
- gpointer user_data)
-{
- g_print("Buffering: %f\n", percentage);
-}
-
-static void play_uri_cb(MafwRenderer* renderer, gpointer user_data, const GError* error)
-{
- if (error != NULL) {
- printf("Unable to play: %s\n", error->message);
- exit(1);
- }
-}
-
-/**
- *
- *
- */
-gint main(gint argc, gchar ** argv)
-{
- MafwRegistry *registry;
-
- g_type_init();
- gst_init (&argc, &argv);
-
- if (argc != 2) {
- g_print("Usage: mafw-test-player <media-uri>\n");
- exit(1);
- }
-
- raw_kb_enable();
-
- registry = MAFW_REGISTRY(mafw_registry_get_instance());
- gst_renderer = MAFW_GST_RENDERER(mafw_gst_renderer_new(registry));
- g_signal_connect (G_OBJECT (gst_renderer),
- "metadata_changed",
- G_CALLBACK (metadata_changed),
- gst_renderer);
-
- g_signal_connect (G_OBJECT (gst_renderer),
- "buffering_info",
- G_CALLBACK (buffering_cb),
- gst_renderer);
-
- mafw_renderer_play_uri(MAFW_RENDERER (gst_renderer), argv[1], play_uri_cb,
- NULL);
-
- loop = mafw_gst_renderer_get_loop(gst_renderer);
-
- g_idle_add (idle_cb, NULL);
- g_main_loop_run (loop);
-
- g_object_unref (G_OBJECT (gst_renderer));
- return 0;
-}