Fixed a bug about setting the video frame rate 94/244794/6
authorHyunil <hyunil46.park@samsung.com>
Thu, 24 Sep 2020 08:10:41 +0000 (17:10 +0900)
committerHyunil <hyunil46.park@samsung.com>
Tue, 29 Sep 2020 01:43:29 +0000 (10:43 +0900)
- Invalid value was being set.
- To get a valid video frame rate, use media_format_get_video_frame_rate()

[Issue Type] Bug fix
[Version] 0.1.122

Change-Id: I25be4ac4996ed33b897d6e5177f695bf9a257369
Signed-off-by: Hyunil <hyunil46.park@samsung.com>
include/media_streamer_util.h
packaging/capi-media-streamer.spec
src/media_streamer_gst.c
test/media_streamer_test.c

index 7e8f4c1..80e318d 100644 (file)
@@ -196,6 +196,8 @@ typedef struct _media_streamer_wl_info_s {
 #define DEFAULT_ADAPTIVE_SOURCE             "hlsdemux"
 #define DEFAULT_ADAPTIVE_SINK               "hlssink"
 
+#define DEFAULT_VIDEO_FRAME_RATE            30
+
 /* WebRTC */
 #define WEBRTC_PEER_ANSWER                  "answer"
 #define WEBRTC_PEER_OFFER                   "offer"
index 1bb8510..14d0b2d 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-streamer
 Summary:    A Media Streamer API
-Version:    0.1.121
+Version:    0.1.122
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 921b5c2..7e595ec 100644 (file)
@@ -2471,11 +2471,12 @@ GstCaps *ms_create_caps_from_fmt(media_format_h fmt, const char *node_name)
        GstCaps *caps = NULL;
        gchar *caps_name = NULL;
        media_format_mimetype_e mime;
-       int width, height, avg_bps, max_bps, channel, samplerate, bit;
+       int width, height, channel, samplerate;
+       int frame_rate = DEFAULT_VIDEO_FRAME_RATE;
 
        ms_debug_fenter();
 
-       if (!media_format_get_audio_info(fmt, &mime, &channel, &samplerate, &bit, &avg_bps)) {
+       if (!media_format_get_audio_info(fmt, &mime, &channel, &samplerate, NULL, NULL)) {
                if (MEDIA_FORMAT_RAW == (mime & MEDIA_FORMAT_RAW)) {
                        caps = gst_caps_new_simple("audio/x-raw", "format", G_TYPE_STRING, ms_convert_audio_mime_to_string_format(mime), NULL);
                } else if (MEDIA_FORMAT_ENCODED == (mime & MEDIA_FORMAT_ENCODED)) {
@@ -2489,14 +2490,21 @@ GstCaps *ms_create_caps_from_fmt(media_format_h fmt, const char *node_name)
                caps_name = gst_caps_to_string(caps);
                ms_info("Creating Audio Caps from media format [%s]", caps_name);
 
-       } else if (!media_format_get_video_info(fmt, &mime, &width, &height, &avg_bps, &max_bps)) {
+       } else if (!media_format_get_video_info(fmt, &mime, &width, &height, NULL, NULL)) {
+               if (media_format_get_video_frame_rate(fmt, &frame_rate))
+                       ms_warning("Failed to get video frame rate.");
+               if (frame_rate == 0) {
+                       ms_info("Video frame rate is not set by user.");
+                       frame_rate = DEFAULT_VIDEO_FRAME_RATE;
+               }
+               ms_info("Video frame rate will be set %d.", frame_rate);
                if (MEDIA_FORMAT_RAW == (mime & MEDIA_FORMAT_RAW))
-                       caps = gst_caps_new_simple("video/x-raw", "framerate", GST_TYPE_FRACTION, max_bps,
-                                       avg_bps, "format", G_TYPE_STRING, ms_convert_video_mime_to_string_format(mime, node_name),
+                       caps = gst_caps_new_simple("video/x-raw", "framerate", GST_TYPE_FRACTION, frame_rate,
+                                       1, "format", G_TYPE_STRING, ms_convert_video_mime_to_string_format(mime, node_name),
                                        "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
                else if (MEDIA_FORMAT_ENCODED == (mime & MEDIA_FORMAT_ENCODED))
-                       caps = gst_caps_new_simple(ms_convert_video_mime_to_string_format(mime, node_name), "framerate", GST_TYPE_FRACTION, max_bps,
-                                                       avg_bps, "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
+                       caps = gst_caps_new_simple(ms_convert_video_mime_to_string_format(mime, node_name), "framerate", GST_TYPE_FRACTION, frame_rate,
+                                                       1, "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
                caps_name = gst_caps_to_string(caps);
                ms_info("Creating Video Caps from media format [%s]", caps_name);
 
index 4d9a176..bff8f47 100644 (file)
@@ -140,8 +140,7 @@ typedef enum {
 
 #define VIDEO_WIDTH       352
 #define VIDEO_HIGHT       288
-#define VIDEO_AVG_BPS     1
-#define VIDEO_MAX_BPS     3
+#define VIDEO_FRAME_RATE  30
 #define AUDIO_CHANNEL     1
 #define AUDIO_SAMPLERATE  8000
 
@@ -451,8 +450,7 @@ static void create_formats(void)
 
        media_format_set_video_width(vfmt_i420, VIDEO_WIDTH);
        media_format_set_video_height(vfmt_i420, VIDEO_HIGHT);
-       media_format_set_video_avg_bps(vfmt_i420, VIDEO_AVG_BPS);
-       media_format_set_video_max_bps(vfmt_i420, VIDEO_MAX_BPS);
+       media_format_set_video_frame_rate(vfmt_i420, VIDEO_FRAME_RATE);
 
        /* Define encoded video format */
        media_format_create(&vfmt_encoded);
@@ -461,8 +459,7 @@ static void create_formats(void)
 
        media_format_set_video_width(vfmt_encoded, VIDEO_WIDTH);
        media_format_set_video_height(vfmt_encoded, VIDEO_HIGHT);
-       media_format_set_video_avg_bps(vfmt_encoded, VIDEO_AVG_BPS);
-       media_format_set_video_max_bps(vfmt_encoded, VIDEO_MAX_BPS);
+       media_format_set_video_frame_rate(vfmt_encoded, VIDEO_FRAME_RATE);
 
        media_format_create(&vfmt_vp8);
        if (media_format_set_video_mime(vfmt_vp8, MEDIA_FORMAT_VP8) != MEDIA_FORMAT_ERROR_NONE)
@@ -470,8 +467,7 @@ static void create_formats(void)
 
        media_format_set_video_width(vfmt_vp8, VIDEO_WIDTH);
        media_format_set_video_height(vfmt_vp8, VIDEO_HIGHT);
-       media_format_set_video_avg_bps(vfmt_vp8, VIDEO_AVG_BPS);
-       media_format_set_video_max_bps(vfmt_vp8, VIDEO_MAX_BPS);
+       media_format_set_video_frame_rate(vfmt_vp8, VIDEO_FRAME_RATE);
 
        /* Define encoded video format for adaptive stream */
        media_format_create(&vfmt_h264);
@@ -480,8 +476,7 @@ static void create_formats(void)
 
        media_format_set_video_width(vfmt_h264, VIDEO_WIDTH);
        media_format_set_video_height(vfmt_h264, VIDEO_HIGHT);
-       media_format_set_video_avg_bps(vfmt_h264, VIDEO_AVG_BPS);
-       media_format_set_video_max_bps(vfmt_h264, VIDEO_MAX_BPS);
+       media_format_set_video_frame_rate(vfmt_h264, VIDEO_FRAME_RATE);
 
        /* Define audio raw format */
        media_format_create(&afmt_pcm);