Added aac_adts support to muxer 44/58444/1 accepted/tizen/mobile/20160204.061945 accepted/tizen/tv/20160204.062004 accepted/tizen/wearable/20160204.062025 submit/tizen/20160204.005333
authorMahesh Kondiparthi <kd.mahesh@samsung.com>
Mon, 1 Feb 2016 06:06:16 +0000 (11:36 +0530)
committerMahesh Kondiparthi <kd.mahesh@samsung.com>
Mon, 1 Feb 2016 06:06:41 +0000 (11:36 +0530)
Enhanced the testsuite to demux mp4(aac) and feed to mediamuxer for aac_adts

Change-Id: I8ab346868dc44a47700a4734069ff244ea49944a
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

index 636869d..ed570a7 100755 (executable)
@@ -79,7 +79,8 @@ typedef enum {
        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_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_CONTAINER_FORMAT_AMR_WB = MEDIA_FORMAT_AMR_WB,       /**< The mediamuxer output format is AMR_WB container */
+       MEDIAMUXER_CONTAINER_FORMAT_AAC_ADTS = MEDIA_FORMAT_CONTAINER_AAC_ADTS  /**< The mediamuxer output format is AAC_ADTS container */
 } mediamuxer_output_format_e;
 
 /**
index 41edf3d..b928d82 100644 (file)
@@ -86,7 +86,8 @@ int mediamuxer_set_data_sink(mediamuxer_h muxer, char *path, mediamuxer_output_f
                && format != MEDIAMUXER_CONTAINER_FORMAT_3GP
                && format != MEDIAMUXER_CONTAINER_FORMAT_WAV
                && format != MEDIAMUXER_CONTAINER_FORMAT_AMR_NB
-               && format != MEDIAMUXER_CONTAINER_FORMAT_AMR_WB) {
+               && format != MEDIAMUXER_CONTAINER_FORMAT_AMR_WB
+               && format != MEDIAMUXER_CONTAINER_FORMAT_AAC_ADTS) {
                MX_E("Unsupported Container format: %d \n", format);
                handle->muxer_state = MEDIAMUXER_STATE_NONE;
                return MEDIAMUXER_ERROR_INVALID_PARAMETER;
index c7f4459..15ff0b7 100644 (file)
@@ -193,6 +193,8 @@ static int gst_muxer_add_track(MMHandleType pHandle,
                                || mimetype == MEDIA_FORMAT_AMR_NB))
                        || (mx_handle_gst->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_WAV
                                && (mimetype == MEDIA_FORMAT_PCM))
+                       || (mx_handle_gst->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AAC_ADTS
+                               && (mimetype == MEDIA_FORMAT_AAC))
                        || (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
@@ -420,6 +422,7 @@ 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
+               && gst_handle->muxed_format != MEDIAMUXER_CONTAINER_FORMAT_AAC_ADTS
                && 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\n");
@@ -435,6 +438,8 @@ 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_AAC_ADTS)
+                       gst_handle->muxer = gst_element_factory_make("avmux_adts", "avmux_adts");
                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");
@@ -524,8 +529,10 @@ 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_PCM || (mimetype == MEDIA_FORMAT_AMR_NB && gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_3GP))
-                                                       MX_I("Do Nothing, as there is no need of parser for wav & 3pg(amr-nb) \n");
+                                                else if (mimetype == MEDIA_FORMAT_PCM
+                                                       || (mimetype == MEDIA_FORMAT_AAC && gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AAC_ADTS)
+                                                       || (mimetype == MEDIA_FORMAT_AMR_NB && gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_3GP))
+                                                        MX_I("Do Nothing, as there is no need of parser for wav, 3gp(amr-nb) and AAC_ADTS\n");
                                                else if (mimetype == MEDIA_FORMAT_AMR_NB || mimetype == MEDIA_FORMAT_AMR_WB)
                                                        current->parser = gst_element_factory_make("amrparse", str_parser);
                                        } else {
@@ -539,8 +546,10 @@ mx_ret_e _gst_create_pipeline(mxgst_handle_t *gst_handle)
                                        }
 
                                        gst_bin_add_many(GST_BIN(gst_handle->pipeline), current->appsrc, NULL);
-                                       if (mimetype == MEDIA_FORMAT_PCM || (mimetype == MEDIA_FORMAT_AMR_NB && gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_3GP)) {
-                                               MX_I("Do Nothing, as there is no need of parser for wav & 3pg(amr-nb) \n");
+                                       if (mimetype == MEDIA_FORMAT_PCM
+                                               || (mimetype == MEDIA_FORMAT_AAC && gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AAC_ADTS)
+                                               || (mimetype == MEDIA_FORMAT_AMR_NB && gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_3GP)) {
+                                               MX_I("Do Nothing, as there is no need of parser for wav and AAC_ADTS\n");
                                        } else {
                                                if (!current->parser) {
                                                        MX_E("One element (audio-parser) could not be created. Exiting.\n");
@@ -565,6 +574,7 @@ mx_ret_e _gst_create_pipeline(mxgst_handle_t *gst_handle)
 #endif
                                        /* For wav, wavenc is muxer */
                                        if (gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_WAV
+                                               || gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AAC_ADTS
                                                || gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AMR_NB
                                                || gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_AMR_WB
                                                || (gst_handle->muxed_format == MEDIAMUXER_CONTAINER_FORMAT_3GP && mimetype == MEDIA_FORMAT_AMR_NB)) {
index 3153b62..90fbe26 100644 (file)
@@ -158,6 +158,9 @@ int test_mediamuxer_set_data_sink()
        } else if (strncmp(data_sink, "42", 2) == 0) {
                op_uri = "MuxTest_wb.amr";
                ret = mediamuxer_set_data_sink(myMuxer, op_uri, MEDIAMUXER_CONTAINER_FORMAT_AMR_WB);
+       } else if (strncmp(data_sink, "51", 2) == 0) {
+               op_uri = "MuxTest_adts.aac";
+               ret = mediamuxer_set_data_sink(myMuxer, op_uri, MEDIAMUXER_CONTAINER_FORMAT_AAC_ADTS);
        } else {
                g_print("Invalid option choosen. Only the displayed options are valid\n");
                ret = MEDIAMUXER_ERROR_INVALID_PARAMETER;
@@ -198,7 +201,8 @@ int test_mediamuxer_add_track_video()
                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, "31", 2) == 0
-               || strncmp(data_sink, "41", 2) == 0 || strncmp(data_sink, "42", 2) == 0) {
+               || strncmp(data_sink, "41", 2) == 0 || strncmp(data_sink, "42", 2) == 0
+               || strncmp(data_sink, "51", 2) == 0) {
                g_print("Add video track is invalid for wav/amr\n");
                return 1;
        }
@@ -252,6 +256,9 @@ int test_mediamuxer_add_track_audio()
        } else if (strncmp(data_sink, "42", 2) == 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");
+       } else if (strncmp(data_sink, "51", 2) == 0) {
+               if (media_format_set_audio_mime(media_format_a, MEDIA_FORMAT_AAC) == MEDIA_FORMAT_ERROR_INVALID_OPERATION)
+                       g_print("Problem during media_format_set_audio_mime operation for aac-adts audio\n");
        }
 
        if (validate_with_codec) {
@@ -481,7 +488,8 @@ static void displaymenu(void)
                g_print("(11) mp4 (h264+AAC) (12) mp4 (h263+AAC) (13) mp4 (mpeg4+AAC) \
                        \n(21) 3gp (h264+AAC) (22) 3gp (h263+AAC) (23) 3gp (h264+AMR) (23) 3gp (h263+AMR) \
                        \n(31) wav \
-                       \n(41) amr-nb (42) amr-wb \n");
+                       \n(41) amr-nb (42) amr-wb \
+                       \n(51) aac (adts)\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) {