Added amr support to muxer 69/53469/2
authorMahesh Kondiparthi <kd.mahesh@samsung.com>
Mon, 7 Dec 2015 07:14:50 +0000 (12:44 +0530)
committerMahesh Kondiparthi <kd.mahesh@samsung.com>
Mon, 7 Dec 2015 07:21:53 +0000 (12:51 +0530)
    Support to both amr-nb and amr-wb is added
    Enhanced the testsuite to add demux amr-nb and demux amr-wb.
    Removed calling gst_element_get_state() from pause as the state is known to be PLAYING

Change-Id: I096a14c705f4237d4083dc32fc4133f54e17372a
Signed-off-by: Mahesh Kondiparthi <kd.mahesh@samsung.com
include/mediamuxer.h
src/mediamuxer.c
src/port_gst/mediamuxer_port_gst.c
test/mediamuxer_test.c
test/mediamuxer_test_gst.c

index a8c09a7..296b4a2 100755 (executable)
@@ -81,7 +81,9 @@ typedef enum {
 typedef enum {
        MEDIAMUXER_CONTAINER_FORMAT_MP4 = MEDIA_FORMAT_CONTAINER_MP4,   /**< The mediamuxer output format is MP4 container */
        MEDIAMUXER_CONTAINER_FORMAT_3GP = MEDIA_FORMAT_CONTAINER_3GP,   /**< The mediamuxer output format is 3GP container */
-       MEDIAMUXER_CONTAINER_FORMAT_WAV = MEDIA_FORMAT_CONTAINER_WAV    /**< The mediamuxer output format is WAV container */
+       MEDIAMUXER_CONTAINER_FORMAT_WAV = MEDIA_FORMAT_CONTAINER_WAV,   /**< The mediamuxer output format is WAV container */
+       MEDIAMUXER_CONTAINER_FORMAT_AMR_NB = MEDIA_FORMAT_AMR_NB,       /**< The mediamuxer output format is ARM_NB container */
+       MEDIAMUXER_CONTAINER_FORMAT_AMR_WB = MEDIA_FORMAT_AMR_WB        /**< The mediamuxer output format is AMR_WB container */
 } mediamuxer_output_format_e;
 
 /**
index 3568674..ab595dc 100644 (file)
@@ -85,7 +85,9 @@ int mediamuxer_set_data_sink(mediamuxer_h muxer, char *path, mediamuxer_output_f
 
        if (format != MEDIAMUXER_CONTAINER_FORMAT_MP4
                && format != MEDIAMUXER_CONTAINER_FORMAT_3GP
-               && format != MEDIAMUXER_CONTAINER_FORMAT_WAV) {
+               && format != MEDIAMUXER_CONTAINER_FORMAT_WAV
+               && format != MEDIAMUXER_CONTAINER_FORMAT_AMR_NB
+               && format != MEDIAMUXER_CONTAINER_FORMAT_AMR_WB) {
                MX_E("Unsupported Container format: %d \n", format);
                return MEDIAMUXER_ERROR_INVALID_PARAMETER;
        }
index 651c05d..98c49f2 100644 (file)
@@ -194,7 +194,11 @@ static int gst_muxer_add_track(MMHandleType pHandle,
                                && (mimetype == MEDIA_FORMAT_AAC_LC || mimetype == MEDIA_FORMAT_AAC_HE || mimetype == MEDIA_FORMAT_AAC_HE_PS
                                || mimetype == MEDIA_FORMAT_AMR_NB))
                        || (mx_handle_gst->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_WAV
-                               && (mimetype == MEDIA_FORMAT_PCM))) {
+                               && (mimetype == MEDIA_FORMAT_PCM))
+                       || (mx_handle_gst->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AMR_NB
+                               && (mimetype == MEDIA_FORMAT_AMR_NB))
+                       || (mx_handle_gst->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AMR_WB
+                               && (mimetype == MEDIA_FORMAT_AMR_WB))) {
 
                        current->track_index = 1 + NO_OF_TRACK_TYPES*(mx_handle_gst->track_info.audio_track_cnt);
                        (mx_handle_gst->track_info.audio_track_cnt)++;
@@ -417,8 +421,10 @@ mx_ret_e _gst_create_pipeline(mxgst_handle_t *gst_handle)
 
        if (gst_handle->muxed_format != MEDIAMUXER_CONTAINER_FORMAT_MP4
                && gst_handle->muxed_format != MEDIAMUXER_CONTAINER_FORMAT_3GP
-               && gst_handle->muxed_format != MEDIAMUXER_CONTAINER_FORMAT_WAV) {
-               MX_E("Unsupported format. Currently supports only MP4, 3GP & WAV");
+               && gst_handle->muxed_format != MEDIAMUXER_CONTAINER_FORMAT_WAV
+               && gst_handle->muxed_format != MEDIAMUXER_CONTAINER_FORMAT_AMR_NB
+               && gst_handle->muxed_format != MEDIAMUXER_CONTAINER_FORMAT_AMR_WB) {
+               MX_E("Unsupported container-format. Currently suports only MP4, 3GP, WAV & AMR");
                ret = MEDIAMUXER_ERROR_INVALID_PATH;
                goto ERROR;
        } else {
@@ -431,6 +437,9 @@ mx_ret_e _gst_create_pipeline(mxgst_handle_t *gst_handle)
                        /* gst_handle->muxer = gst_element_factory_make("qtmux", "qtmux"); */
                else if (gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_WAV)
                        gst_handle->muxer = gst_element_factory_make("wavenc", "wavenc");
+               else if (gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AMR_NB
+                       || gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AMR_WB)
+                       gst_handle->muxer = gst_element_factory_make("avmux_amr", "avmux_amr");
 
                if ((!gst_handle->pipeline) || (!gst_handle->muxer) || (!gst_handle->sink)) {
                        MX_E("One element could not be created. Exiting.\n");
@@ -516,7 +525,7 @@ mx_ret_e _gst_create_pipeline(mxgst_handle_t *gst_handle)
                                                MEDIA_FORMAT_ERROR_INVALID_OPERATION) {
                                                if (mimetype == MEDIA_FORMAT_AAC_LC || mimetype == MEDIA_FORMAT_AAC_HE || mimetype == MEDIA_FORMAT_AAC_HE_PS)
                                                        current->parser = gst_element_factory_make("aacparse", str_parser);
-                                               else if (mimetype == MEDIA_FORMAT_AMR_NB)
+                                               else if (mimetype == MEDIA_FORMAT_AMR_NB || mimetype == MEDIA_FORMAT_AMR_WB)
                                                        current->parser = gst_element_factory_make("amrparse", str_parser);
                                                else if (mimetype == MEDIA_FORMAT_PCM)
                                                        MX_I("Do Nothing, as there is no need of parser for wav\n");
@@ -554,7 +563,10 @@ mx_ret_e _gst_create_pipeline(mxgst_handle_t *gst_handle)
                                        gst_app_src_set_stream_type((GstAppSrc *)current->appsrc,
                                                GST_APP_STREAM_TYPE_STREAM);
 #endif
-                                       if (gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_WAV) {      /* wavenc is muxer */
+                                       /* For wav, wavenc is muxer */
+                                       if (gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_WAV
+                                               || gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AMR_NB
+                                               || gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AMR_WB) {
                                                gst_element_link(current->appsrc, gst_handle->muxer);
                                        } else {
                                                gst_element_link(current->appsrc, current->parser);
@@ -1179,20 +1191,11 @@ static int gst_muxer_pause(MMHandleType pHandle)
        int ret = MX_ERROR_NONE;
        MEDIAMUXER_CHECK_NULL(pHandle);
        mxgst_handle_t *gst_handle = (mxgst_handle_t *) pHandle;
-       GstState state;
 
        MX_I("gst_muxer_pause setting pipeline to pause");
-       gst_element_get_state(gst_handle->pipeline, &state, NULL, GST_CLOCK_TIME_NONE);
-
-       if (state == GST_STATE_PLAYING) {
-               if (gst_element_set_state(gst_handle->pipeline, GST_STATE_PAUSED)
-                       == GST_STATE_CHANGE_FAILURE) {
-                       MX_I("Setting pipeline to pause failed");
-                       ret = MX_ERROR_INVALID_ARGUMENT;
-               }
-       } else {
-               MX_I("pipeline is not in playing, PAUSE is intended to pause a playing pipeline. \
-                       exiting with out state change");
+       if (gst_element_set_state(gst_handle->pipeline, GST_STATE_PAUSED)
+               == GST_STATE_CHANGE_FAILURE) {
+               MX_I("Setting pipeline to pause failed");
                ret = MX_ERROR_INVALID_ARGUMENT;
        }
        MEDIAMUXER_FLEAVE();
index f23d01c..90a220f 100644 (file)
@@ -85,7 +85,7 @@ static int bitrate = DEFAULT_BITRATE;
 int iseos_codec = 0;
 bool validate_with_codec = false;
 bool validate_multitrack = false;
-char file_mp4[MAX_INPUT_SIZE];
+char media_file[MAX_INPUT_SIZE];
 char data_sink[MAX_INPUT_SIZE];
 bool have_mp4 = false;
 bool have_vid_track = false;
@@ -95,7 +95,7 @@ int track_index_aud;
 int track_index_aud2;
 
 int demux_mp4();
-int demux_wav();
+int demux_audio();
 void mediacodec_process_all(void);
 void input_raw_filepath(char *filename);
 void mediacodec_config_set_codec(int codecid, int flag);
@@ -143,8 +143,16 @@ int test_mediamuxer_set_data_sink()
        } else if (strncmp(data_sink, "5", 1) == 0 || strncmp(data_sink, "wav", 3) == 0) {
                op_uri = "MuxTest.wav";
                ret = mediamuxer_set_data_sink(myMuxer, op_uri, MEDIAMUXER_CONTAINER_FORMAT_WAV);
+       } else if (strncmp(data_sink, "6", 1) == 0 || strncmp(data_sink, "amr-nb", 6) == 0) {
+               op_uri = "MuxTest_nb.amr";
+               ret = mediamuxer_set_data_sink(myMuxer, op_uri, MEDIAMUXER_CONTAINER_FORMAT_AMR_NB);
+       } else if (strncmp(data_sink, "7", 1) == 0 || strncmp(data_sink, "amr-wb", 6) == 0) {
+               op_uri = "MuxTest_wb.amr";
+               ret = mediamuxer_set_data_sink(myMuxer, op_uri, MEDIAMUXER_CONTAINER_FORMAT_AMR_WB);
        }
 
+       g_print("\nFile will be saved to: %s\n", op_uri);
+
        if (ret != MEDIAMUXER_ERROR_NONE)
                g_print("mediamuxer_set_data_sink is failed\n");
        return ret;
@@ -174,8 +182,9 @@ int test_mediamuxer_add_track_video()
        } else if (strncmp(data_sink, "4", 1) == 0) {
                if (media_format_set_video_mime(media_format, MEDIA_FORMAT_H263) == MEDIA_FORMAT_ERROR_INVALID_OPERATION)
                        g_print("Problem during media_format_set_audio_mime operation\n");
-       } else if (strncmp(data_sink, "5", 1) == 0) {
-               g_print("Add video track is invalid for wav\n");
+       } else if (strncmp(data_sink, "5", 1) == 0
+               || strncmp(data_sink, "6", 1) == 0 || strncmp(data_sink, "7", 1) == 0) {
+               g_print("Add video track is invalid for wav/amr\n");
                return 1;
        }
 
@@ -219,16 +228,23 @@ int test_mediamuxer_add_track_audio()
        } else if (strncmp(data_sink, "2", 1) == 0 || strncmp(data_sink, "3gp", 3) == 0
                        || strncmp(data_sink, "3", 1) == 0) {
                if (media_format_set_audio_mime(media_format_a, MEDIA_FORMAT_AAC_LC) == MEDIA_FORMAT_ERROR_INVALID_OPERATION)
-                       g_print("Problem during media_format_set_audio_mime operation\n");
+                       g_print("Problem during media_format_set_audio_mime operation, for AAC in 3GP\n");
        } else if (strncmp(data_sink, "4", 1) == 0) {
                if (media_format_set_audio_mime(media_format_a, MEDIA_FORMAT_AMR_NB) == MEDIA_FORMAT_ERROR_INVALID_OPERATION)
-                       g_print("Problem during media_format_set_audio_mime operation\n");
+                       g_print("Problem during media_format_set_audio_mime operation for AMR_NB in 3GP\n");
        } else if (strncmp(data_sink, "5", 1) == 0) {
                if (media_format_set_audio_mime(media_format_a, MEDIA_FORMAT_PCM) == MEDIA_FORMAT_ERROR_INVALID_OPERATION)
-                       g_print("Problem during media_format_set_audio_mime operation\n");
+                       g_print("Problem during media_format_set_audio_mime operation for PCM in WAV\n");
+       } else if (strncmp(data_sink, "6", 1) == 0) {
+               if (media_format_set_audio_mime(media_format_a, MEDIA_FORMAT_AMR_NB) == MEDIA_FORMAT_ERROR_INVALID_OPERATION)
+                       g_print("Problem during media_format_set_audio_mime operation for amr-nb audio\n");
+       } else if (strncmp(data_sink, "7", 1) == 0) {
+               if (media_format_set_audio_mime(media_format_a, MEDIA_FORMAT_AMR_WB) == MEDIA_FORMAT_ERROR_INVALID_OPERATION)
+                       g_print("Problem during media_format_set_audio_mime operation for amr-wb audio\n");
        }
 
 
+
        if (validate_with_codec) {
                if (media_format_set_audio_channel(media_format_a, channel) == MEDIA_FORMAT_ERROR_INVALID_OPERATION)
                        g_print("Problem during media_format_set_audio_channel operation\n");
@@ -282,9 +298,12 @@ int test_mediamuxer_write_sample()
        if (validate_with_codec) {
                /* Test muxer with codec */
                mediacodec_process_all();
-       } else if (strncmp(data_sink, "5", 1) == 0 || strncmp(data_sink, "wav", 3)) {
-               demux_wav();
+       } else if (strncmp(data_sink, "5", 1) == 0 || strncmp(data_sink, "wav", 3) == 0
+               || strncmp(data_sink, "6", 1) == 0
+               || strncmp(data_sink, "7", 1) == 0 || strncmp(data_sink, "amr", 3) == 0) {
+               demux_audio();
        } else {
+
                demux_mp4();
        }
        return 0;
@@ -458,7 +477,7 @@ static void displaymenu(void)
                }
        } else if (g_menu_state == CURRENT_STATUS_DATA_SINK) {
                g_print("*** input the datasink container format:\n");
-               g_print("(1) mp4 \n(2) 3gp (h264 + AAC) \n(3) 3gp (h263 + AAC) \n(4) 3gp (h263 + AMR) \n(5) wav\n");
+               g_print("(1) mp4 \n(2) 3gp (h264 + AAC) \n(3) 3gp (h263 + AAC) \n(4) 3gp (h263 + AMR) \n(5) wav \n(6) amr-nb \n(7) amr-wb \n");
        } else if (g_menu_state == CURRENT_STATUS_RAW_VIDEO_FILENAME) {
                g_print("*** input raw video file name");
        } else if (g_menu_state == CURRENT_STATUS_SET_VENC_INFO) {
@@ -490,7 +509,7 @@ static void interpret(char *cmd)
                }
        case CURRENT_STATUS_MP4_FILENAME: {
                        input_filepath(cmd);
-                       strncpy(file_mp4, cmd, MAX_INPUT_SIZE - 1);
+                       strncpy(media_file, cmd, MAX_INPUT_SIZE - 1);
                        g_menu_state = CURRENT_STATUS_MAINMENU;
                        break;
                }
index 6fc9cf0..98d0bd8 100644 (file)
@@ -45,7 +45,7 @@ extern mediamuxer_h myMuxer;
 extern bool validate_multitrack;
 extern char media_file[2048];
 extern char data_sink[2048];
-extern char file_mp4[2048];
+extern char media_file[2048];
 extern bool have_aud_track;
 extern bool have_vid_track;
 const gchar *new_pad_type_aud = NULL; /* demuxer pad type for audio */
@@ -110,9 +110,14 @@ static void __audio_app_sink_callback(GstElement *sink, CustomData *data)
                                        g_print("media_format_set_audio_mime failed\n");
                                        return;
                                }
-                       } else if (g_str_has_prefix(new_pad_type_aud, "audio/AMR")
-                               || g_str_has_prefix(new_pad_type_aud, "audio/x-amr-wb-sh")
-                               || g_str_has_prefix(new_pad_type_aud, "audio/x-amr-nb-sh")) {
+                       } else if (g_str_has_prefix(new_pad_type_aud, "audio/AMR-WB")) {
+                               g_print("For amr-wb, setting encoded media type as MEDIA_FORMAT_AMR_WB\n");
+                               if (media_format_set_audio_mime(audfmt, MEDIA_FORMAT_AMR_WB)) {
+                                       g_print("media_format_set_audio_mime failed\n");
+                                       return;
+                               }
+                       } else if (g_str_has_prefix(new_pad_type_aud, "audio/AMR")) {
+                               g_print("For amr-nb, setting encoded media type as MEDIA_FORMAT_AMR_NB\n");
                                if (media_format_set_audio_mime(audfmt, MEDIA_FORMAT_AMR_NB)) {
                                        g_print("media_format_set_audio_mime failed\n");
                                        return;
@@ -158,6 +163,14 @@ static void __audio_app_sink_callback(GstElement *sink, CustomData *data)
                                aud_caps = "audio/x-raw, format=(string)S16LE, layout=(string)interleaved, channels=(int)2, channel-mask=(bitmask)0x0000000000000003, rate=(int)44100";
                                /* no need to set the rest of the parameters for wav */
                                goto SET_CAPS;
+                       } else if (strncmp(data_sink, "6", 1) == 0 || strncmp(data_sink, "amr-nb", 6) == 0) {
+                               /* ToDo: Query caps from amrparse src pad */
+                               aud_caps = "audio/AMR, channels=1, rate=8000";
+                               goto SET_CAPS;
+                       } else if (strncmp(data_sink, "7", 1) == 0 || strncmp(data_sink, "amr-wb", 6) == 0) {
+                               /* ToDo: Query caps from amrparse src pad */
+                               aud_caps = "audio/AMR-WB, channels=1, rate=16000";
+                               goto SET_CAPS;
                        }
 
                        if (media_packet_set_pts(aud_pkt, buffer->pts)) {
@@ -313,12 +326,13 @@ static void __video_app_sink_callback(GstElement *sink, CustomData *data)
 }
 
 /* demuxer audio appsink eos callback */
-static void __audio_app_sink_eos_callback(GstElement *sink, CustomData *data)
+void __audio_app_sink_eos_callback(GstElement *sink, CustomData *data)
 {
+       g_print("__audio_app_sink_eos_callback, closing track_index = %d\n", track_index_aud);
        mediamuxer_close_track(myMuxer, track_index_aud);
        if (validate_multitrack)
                mediamuxer_close_track(myMuxer, track_index_aud2);
-       g_print("Encoded Audio EOS cb reached \n");
+       g_print("audio EOS cb reached \n");
        aud_eos = 1;
        if (!have_vid_track || vid_eos == 1)
                g_main_loop_quit(data->loop);
@@ -436,19 +450,19 @@ static gboolean __bus_call(GstBus *bus, GstMessage *mesg, gpointer data)
 }
 
 
-/* Demux wav file and generate raw data */
-int demux_wav()
+/* Demux audio (wav/amr) file and generate raw data */
+int demux_audio()
 {
        CustomData data;
        GMainLoop *loop_dmx;
        GstBus *bus;
        guint watch_id_for_bus;
 
-       g_print("Start of _demux_wav()\n");
+       g_print("Start of _demux_audio()\n");
 
-       if (access(file_mp4, F_OK) == -1) {
-               /* wav file doesn't exist */
-               g_print("Invalid wav file path.");
+       if (access(media_file, F_OK) == -1) {
+               /* wav/amr file doesn't exist */
+               g_print("wav/amr Invalid file path.");
                return -1;
        }
 
@@ -456,10 +470,19 @@ int demux_wav()
        loop_dmx = g_main_loop_new(NULL, FALSE);
        data.loop = loop_dmx;
        new_pad_type_aud = "audio/x-wav"; /* Update to aid cb. */
-       /* Create gstreamer elements for demuxer*/
+       /* Create gstreamer elements for demuxer */
        data.pipeline = gst_pipeline_new("DemuxerPipeline");
        data.source = gst_element_factory_make("filesrc", "file-source");
-       data.demuxer = gst_element_factory_make("wavparse", "wavparse");
+       if (strncmp(data_sink, "5", 1) == 0 || strncmp(data_sink, "wav", 3) == 0) {
+               data.demuxer = gst_element_factory_make("wavparse", "wavparse");
+               new_pad_type_aud = "audio/x-wav";       /* Update to aid cb */
+       } else if (strncmp(data_sink, "6", 1) == 0) {
+               data.demuxer = gst_element_factory_make("amrparse", "amrparse");
+               new_pad_type_aud = "audio/AMR"; /* Update to aid cb */
+       } else if (strncmp(data_sink, "7", 1) == 0 || strncmp(data_sink, "amr-wb", 6) == 0) {
+               data.demuxer = gst_element_factory_make("amrparse", "amrparse");
+               new_pad_type_aud = "audio/AMR-WB";      /* Update to aid cb */
+       }
        data.audioqueue = gst_element_factory_make("queue", "audio-queue");
        data.audio_appsink = gst_element_factory_make("appsink", "encoded_audio_appsink");
 
@@ -477,7 +500,7 @@ int demux_wav()
        gst_bin_add_many(GST_BIN(data.pipeline), data.source, data.demuxer, data.audioqueue, data.audio_appsink, NULL);
 
        /* we set the input filename to the source element */
-       g_object_set(G_OBJECT(data.source), "location", file_mp4, NULL);
+       g_object_set(G_OBJECT(data.source), "location", media_file, NULL);
 
        /* we link the elements together */
        if (!gst_element_link_many(data.source, data.demuxer, data.audioqueue, data.audio_appsink, NULL)) {
@@ -489,12 +512,12 @@ int demux_wav()
        g_signal_connect(data.audio_appsink, "new-sample", G_CALLBACK(__audio_app_sink_callback), &data);
        g_signal_connect(data.audio_appsink, "eos", G_CALLBACK(__audio_app_sink_eos_callback), &data);
 
-       /* No demuxer callback for wav, playing the pipeline*/
-       g_print("Now playing: %s\n", file_mp4);
+       /* No demuxer callback for wav, playing the pipeline */
+       g_print("Now playing: %s\n", media_file);
        gst_element_set_state(data.pipeline, GST_STATE_PLAYING);
 
        /* Run the loop till quit */
-       g_print("gst-wav-pipeline - Running...\n");
+       g_print("gst-wav/amr-pipeline -Running...\n");
        g_main_loop_run(loop_dmx);
 
        /* Done with gst-loop. Free resources */
@@ -504,7 +527,7 @@ int demux_wav()
        gst_object_unref(GST_OBJECT(data.pipeline));
        g_source_remove(watch_id_for_bus);
        g_main_loop_unref(loop_dmx);
-       g_print("End of demux_wav()\n");
+       g_print("End of demux_audio()\n");
        return 0;
 }
 
@@ -518,7 +541,7 @@ int demux_mp4()
 
        g_print("Start of _demux_mp4()\n");
 
-       if (access(file_mp4, F_OK) == -1) {
+       if (access(media_file, F_OK) == -1) {
                /* mp4 file doesn't exist */
                g_print("mp4 Invalid file path.");
                return -1;
@@ -555,7 +578,7 @@ int demux_mp4()
                data.audioqueue, data.videoqueue, data.audio_appsink, data.video_appsink, NULL);
 
        /* we set the input filename to the source element */
-       g_object_set(G_OBJECT(data.source), "location", file_mp4, NULL);
+       g_object_set(G_OBJECT(data.source), "location", media_file, NULL);
 
        /* we link the elements together */
        gst_element_link(data.source, data.demuxer);
@@ -564,7 +587,7 @@ int demux_mp4()
        g_signal_connect(data.demuxer, "pad-added", G_CALLBACK(__on_pad_added), &data);
 
        /* Play the pipeline */
-       g_print("Now playing : %s\n", file_mp4);
+       g_print("Now playing : %s\n", media_file);
        gst_element_set_state(data.pipeline, GST_STATE_PLAYING);
 
        /* Run the loop till quit */