[0.6.94] Fix bug for getting audio bitrate
[platform/core/multimedia/libmm-player.git] / src / mm_player_priv.c
index cab514a..a0d7bcd 100644 (file)
@@ -1960,32 +1960,43 @@ do {    \
 } while (0)
 
 #define MMPLAYER_UPDATE_TAG_UINT(gsttag, attribute, playertag) \
-if (gst_tag_list_get_uint(tag_list, gsttag, &v_uint)) { \
-       if (v_uint) { \
-               if (!strncmp(gsttag, GST_TAG_BITRATE, strlen(GST_TAG_BITRATE))) { \
-                       if (player->updated_bitrate_count == 0) \
-                               mm_attrs_set_int_by_name(attribute, "content_audio_bitrate", v_uint); \
-                       if (player->updated_bitrate_count < MM_PLAYER_STREAM_COUNT_MAX) { \
-                               player->bitrate[player->updated_bitrate_count] = v_uint;\
-                               player->total_bitrate += player->bitrate[player->updated_bitrate_count]; \
-                               player->updated_bitrate_count++; \
-                               mm_attrs_set_int_by_name(attribute, playertag, player->total_bitrate);\
-                               SECURE_LOGD("update bitrate %d[bps] of stream #%d.\n", v_uint, player->updated_bitrate_count);\
-                       } \
-               } else if (!strncmp(gsttag, GST_TAG_MAXIMUM_BITRATE, strlen(GST_TAG_MAXIMUM_BITRATE))) {\
-                       if (player->updated_maximum_bitrate_count < MM_PLAYER_STREAM_COUNT_MAX) {\
-                               player->maximum_bitrate[player->updated_maximum_bitrate_count] = v_uint;\
-                               player->total_maximum_bitrate += player->maximum_bitrate[player->updated_maximum_bitrate_count]; \
-                               player->updated_maximum_bitrate_count++; \
-                               mm_attrs_set_int_by_name(attribute, playertag, player->total_maximum_bitrate); \
-                               SECURE_LOGD("update maximum bitrate %d[bps] of stream #%d\n", v_uint, player->updated_maximum_bitrate_count);\
+do {   \
+       if (gst_tag_list_get_uint(tag_list, gsttag, &v_uint)) { \
+               if (v_uint) { \
+                       int i = 0; \
+                       gchar *tag_list_str = NULL; \
+                       MMPlayerTrackType track_type = MM_PLAYER_TRACK_TYPE_AUDIO; \
+                       tag_list_str = gst_tag_list_to_string(tag_list); \
+                       if (tag_list_str && strstr(tag_list_str, "audio")) \
+                               track_type = MM_PLAYER_TRACK_TYPE_AUDIO; \
+                       else if (tag_list_str && strstr(tag_list_str, "video")) \
+                               track_type = MM_PLAYER_TRACK_TYPE_VIDEO; \
+                       else \
+                               track_type = MM_PLAYER_TRACK_TYPE_TEXT; \
+                       if (!strncmp(gsttag, GST_TAG_BITRATE, strlen(GST_TAG_BITRATE))) { \
+                               if (track_type == MM_PLAYER_TRACK_TYPE_AUDIO) \
+                                       mm_attrs_set_int_by_name(attribute, "content_audio_bitrate", v_uint); \
+                               player->bitrate[track_type] = v_uint; \
+                               player->total_bitrate = 0; \
+                               for (i = 0; i < MM_PLAYER_STREAM_COUNT_MAX; i++) \
+                                       player->total_bitrate += player->bitrate[i]; \
+                               mm_attrs_set_int_by_name(attribute, playertag, player->total_bitrate); \
+                               SECURE_LOGD("update bitrate %d[bps] of stream #%d.\n", v_uint, (int)track_type); \
+                       } else if (!strncmp(gsttag, GST_TAG_MAXIMUM_BITRATE, strlen(GST_TAG_MAXIMUM_BITRATE))) { \
+                               player->maximum_bitrate[track_type] = v_uint; \
+                               player->total_maximum_bitrate = 0; \
+                               for (i = 0; i < MM_PLAYER_STREAM_COUNT_MAX; i++) \
+                                       player->total_maximum_bitrate += player->maximum_bitrate[i]; \
+                               mm_attrs_set_int_by_name(attribute, playertag, player->total_maximum_bitrate);\
+                               SECURE_LOGD("update maximum bitrate %d[bps] of stream #%d\n", v_uint, (int)track_type);\
+                       } else { \
+                               mm_attrs_set_int_by_name(attribute, playertag, v_uint); \
                        } \
-               } else { \
-                       mm_attrs_set_int_by_name(attribute, playertag, v_uint); \
+                       v_uint = 0;\
+                       g_free(tag_list_str); \
                } \
-               v_uint = 0;\
        } \
-}
+} while (0)
 
 #define MMPLAYER_UPDATE_TAG_DATE(gsttag, attribute, playertag) \
 if (gst_tag_list_get_date(tag_list, gsttag, &date)) {\
@@ -10918,9 +10929,7 @@ __mmplayer_initialize_next_play(mm_player_t *player)
        player->play_subtitle = FALSE;
        player->adjust_subtitle_pos = 0;
 
-       player->updated_bitrate_count = 0;
        player->total_bitrate = 0;
-       player->updated_maximum_bitrate_count = 0;
        player->total_maximum_bitrate = 0;
 
        _mmplayer_track_initialize(player);
@@ -12015,9 +12024,7 @@ __mmplayer_release_misc(mm_player_t* player)
 
        player->doing_seek = FALSE;
 
-       player->updated_bitrate_count = 0;
        player->total_bitrate = 0;
-       player->updated_maximum_bitrate_count = 0;
        player->total_maximum_bitrate = 0;
 
        player->not_found_demuxer = 0;