mp4: remove all the dlna stuff from plugin
authorLeandro Dorileo <leandro.maciel.dorileo@intel.com>
Fri, 17 Jan 2014 12:41:10 +0000 (10:41 -0200)
committerLeandro Dorileo <leandro.maciel.dorileo@intel.com>
Wed, 29 Jan 2014 12:15:44 +0000 (10:15 -0200)
src/plugins/mp4/mp4.c

index 0ccd8e8..7cb7fd9 100644 (file)
@@ -176,48 +176,6 @@ DECL_STR(_codec_video_h261, "h261");
 DECL_STR(_codec_audio_amr, "amr");
 DECL_STR(_codec_audio_amr_wb, "amr-wb");
 
-DECL_STR(_dlna_profile_p2_sp_aac, "MPEG4_P2_MP4_SP_AAC");
-DECL_STR(_dlna_profile_p2_sp_aac_ltp, "MPEG4_P2_MP4_SP_AAC_LTP");
-DECL_STR(_dlna_profile_p2_sp_vga_aac, "MPEG4_P2_MP4_SP_VGA_AAC");
-DECL_STR(_dlna_profile_p2_sp_l2_aac, "MPEG4_P2_MP4_SP_L2_AAC");
-DECL_STR(_dlna_profile_p2_sp_l5_aac, "MPEG4_P2_MP4_SP_L5_AAC");
-DECL_STR(_dlna_profile_p2_sp_l6_aac, "MPEG4_P2_MP4_SP_L6_AAC");
-DECL_STR(_dlna_profile_h263_p0_l10_aac, "MPEG4_H263_MP4_P0_L10_AAC");
-DECL_STR(_dlna_profile_h263_p0_l10_aac_ltp, "MPEG4_H263_MP4_P0_L10_AAC_LTP");
-
-DECL_STR(_dlna_profile_aac_iso_320, "AAC_ISO_320");
-DECL_STR(_dlna_profile_aac_iso, "AAC_ISO");
-DECL_STR(_dlna_profile_aac_mult5_iso, "AAC_MULT5_ISO");
-DECL_STR(_dlna_profile_ac3, "AC3");
-DECL_STR(_dlna_profile_eac3, "EAC3");
-DECL_STR(_dlna_profile_amr_3gpp, "AMR_3GPP");
-DECL_STR(_dlna_profile_amr_wbplus, "AMR_WBplus");
-DECL_STR(_dlna_profile_avc_mp4_bl_cif15_aac_520, "AVC_MP4_BL_CIF15_AAC_520");
-DECL_STR(_dlna_profile_avc_mp4_bl_cif15_aac, "AVC_MP4_BL_CIF15_AAC");
-DECL_STR(_dlna_profile_avc_mp4_bl_l3l_sd_aac, "AVC_MP4_BL_L3L_SD_AAC");
-DECL_STR(_dlna_profile_avc_mp4_bl_l3_sd_aac, "AVC_MP4_BL_L3_SD_AAC");
-DECL_STR(_dlna_profile_avc_mp4_mp_sd_aac_mult5, "AVC_MP4_MP_SD_AAC_MULT5");
-DECL_STR(_dlna_profile_avc_mp4_mp_sd_mpeg1_l3, "AVC_MP4_MP_SD_MPEG1_L3");
-DECL_STR(_dlna_profile_avc_mp4_mp_sd_ac3, "AVC_MP4_MP_SD_AC3");
-DECL_STR(_dlna_profile_avc_mp4_mp_sd_eac3, "AVC_MP4_MP_SD_EAC3");
-DECL_STR(_dlna_profile_avc_mp4_mp_hd_720p_aac, "AVC_MP4_MP_HD_720p_AAC");
-DECL_STR(_dlna_profile_avc_mp4_mp_hd_1080i_aac, "AVC_MP4_MP_HD_1080i_AAC");
-DECL_STR(_dlna_profile_avc_mkv_mp_hd_aac_mult5, "AVC_MKV_MP_HD_AAC_MULT5");
-DECL_STR(_dlna_profile_avc_mkv_hp_hd_aac_mult5, "AVC_MKV_HP_HD_AAC_MULT5");
-DECL_STR(_dlna_profile_avc_mkv_mp_hd_ac3, "AVC_MKV_MP_HD_AC3");
-DECL_STR(_dlna_profile_avc_mkv_hp_hd_ac3, "AVC_MKV_HP_HD_AC3");
-DECL_STR(_dlna_profile_avc_mkv_mp_hd_mpeg1_l3, "AVC_MKV_MP_HD_MPEG1_L3");
-DECL_STR(_dlna_profile_avc_mkv_hp_hd_mpeg1_l3, "AVC_MKV_HP_HD_MPEG1_L3");
-DECL_STR(_dlna_profile_avc_mp4_hp_hd_eac3, "AVC_MP4_HP_HD_EAC3");
-
-DECL_STR(_dlna_mime_video, "video/mp4");
-DECL_STR(_dlna_mime_video_3gp, "video/3gpp");
-DECL_STR(_dlna_mime_video_matroska, "video/x-matroska");
-DECL_STR(_dlna_mime_audio, "audio/mp4");
-DECL_STR(_dlna_mime_audio_3gp, "audio/3gpp");
-DECL_STR(_dlna_mime_audio_dolby, "audio/vnd.dolby.dd-raw");
-DECL_STR(_dlna_mime_audio_eac3, "audio/eac3");
-
 struct type_str {
     uint8_t type;
     const struct lms_string_size *str;
@@ -609,1840 +567,6 @@ _get_container(MP4FileHandle mp4_fh)
     return _container_mp4;
 }
 
-#define DLNA_VIDEO_RES(_width, _height)                                 \
-    &(struct dlna_video_res) {.width = _width, .height = _height}       \
-
-#define DLNA_VIDEO_RES_RANGE(_wmin, _wmax, _hmin, _hmax)                \
-    &(struct dlna_video_res_range) {.width_min = _wmin,                 \
-            .width_max = _wmax, .height_min = _hmin,                    \
-            .height_max = _hmax}                                        \
-
-#define DLNA_BITRATE(_min, _max)                            \
-    &(struct dlna_bitrate) {.min = _min, .max = _max}       \
-
-#define DLNA_LEVEL(_val...)                                 \
-    &(struct dlna_level) {.levels = {_val, NULL}}           \
-
-#define DLNA_VIDEO_FRAMERATE_RANGE(_min, _max)                          \
-    &(struct dlna_video_framerate_range) {.min = _min, .max = _max}     \
-
-#define DLNA_AUDIO_RATE(_val...)                        \
-    &(struct dlna_audio_rate) {.rates = {_val}}         \
-
-#define MAX_AUDIO_LEVELS 5
-#define MAX_AUDIO_MPEG_VERSIONS 2
-#define MAX_AUDIO_RATES 9
-#define MAX_VIDEO_RULE_LEVEL 13
-
-struct dlna_bitrate {
-     unsigned int min;
-     unsigned int max;
-};
-
-struct dlna_video_framerate_range {
-    double min;
-    double max;
-};
-
-struct dlna_video_res {
-    unsigned int width;
-    unsigned int height;
-};
-
-struct dlna_video_res_range {
-    unsigned int width_min;
-    unsigned int width_max;
-    unsigned int height_min;
-    unsigned int height_max;
-};
-
-struct dlna_level {
-    const char *levels[MAX_VIDEO_RULE_LEVEL];
-};
-
-struct dlna_video_rule {
-     struct dlna_video_res *res;
-     struct dlna_video_res_range *res_range;
-     struct dlna_bitrate *bitrate;
-     struct dlna_level *levels;
-     struct dlna_video_framerate_range *framerate_range;
-};
-
-struct dlna_audio_rate {
-     unsigned int rates[MAX_AUDIO_RATES];
-};
-
-struct dlna_audio_rule {
-     const struct lms_string_size *codec;
-     const struct lms_string_size *container;
-     struct dlna_audio_rate *rates;
-     struct dlna_level *levels;
-     struct dlna_bitrate *channels;
-     struct dlna_bitrate *bitrate;
-};
-
-struct dlna_video_profile {
-     const struct lms_string_size *dlna_profile;
-     const struct lms_string_size *dlna_mime;
-     const struct dlna_video_rule *video_rules;
-     const struct dlna_audio_rule *audio_rule;
-};
-
-struct dlna_audio_profile {
-     const struct lms_string_size *dlna_profile;
-     const struct lms_string_size *dlna_mime;
-     const struct dlna_audio_rule *audio_rule;
-};
-
-static const struct dlna_video_rule _dlna_video_rule_sp_l3[] = {
-    {
-        .res = DLNA_VIDEO_RES(352, 288),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 240),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 240),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 180),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1")
-    },
-    {
-        .res = DLNA_VIDEO_RES(240, 180),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(208, 160),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 144),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 120),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 120),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 112),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 90),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(128, 96),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 288),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 240),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 240),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 180),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(240, 180),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(208, 160),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 144),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 120),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 120),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 112),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 90),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(128, 96),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 288),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 240),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 240),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 180),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(240, 180),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(208, 160),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 155),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 120),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 120),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 112),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 90),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(128, 96),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    { NULL },
-};
-
-#define DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD                         \
-    "1", "1b", "1.1", "1.2", "1.3", "2", "2.1", "2.2", "3"      \
-
-static const struct dlna_video_rule _dlna_video_rule_avc_mp4_mp_sd[] = {
-    {
-        .res = DLNA_VIDEO_RES(720, 576),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(720, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(704, 576),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(704, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(704, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(640, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(640, 360),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(544, 576),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(544, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(480, 576),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(480, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(480, 360),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(480, 270),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 576),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 288),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 240),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 240),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 180),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(240, 180),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(208, 160),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 144),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 120),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(150, 120),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 112),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 90),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    {
-        .res = DLNA_VIDEO_RES(128, 96),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MP4_MP_SD),
-    },
-    { NULL },
-};
-
-#define DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_VGA_AAC \
-    "0", "0b", "1", "2", "3"                      \
-
-static const struct dlna_video_rule _dlna_video_mpeg4_p2_mp4_sp_vga_aac[] = {
-    {
-        .res = DLNA_VIDEO_RES(640, 480),
-        .bitrate = DLNA_BITRATE(1, 3000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_VGA_AAC),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(-1, -1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(640, 360),
-        .bitrate = DLNA_BITRATE(1, 3000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_VGA_AAC),
-    },
-    { NULL },
-};
-
-#define DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_L2_ACC        \
-    "0", "0b", "1", "2"                                 \
-
-static const struct dlna_video_rule _dlna_video_mpeg4_p2_mp4_sp_l2_aac[] = {
-    {
-        .res = DLNA_VIDEO_RES(352, 288),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_L2_ACC),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 15/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 240),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_L2_ACC),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 15/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 180),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_L2_ACC),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 15/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 144),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_L2_ACC),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(128, 96),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MPEG4_P2_MP4_SP_L2_ACC),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),
-    },
-    { NULL },
-};
-
-#define DLNA_VIDEO_RULE_SP_L5                           \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(640, 480),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(640, 360),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(720, 576),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(720, 480),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(352, 288),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(352, 240),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(320, 240),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(320, 180),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(240, 180),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(208, 160),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(176, 144),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(176, 120),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 120),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 112),                \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 90),                 \
-        .bitrate = DLNA_BITRATE(1, 64000),              \
-        .levels = DLNA_LEVEL("0", "1"),                 \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(640, 480),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(640, 360),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(720, 576),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(720, 480),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(352, 288),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(352, 240),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(320, 240),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(320, 180),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(240, 180),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(208, 160),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(176, 144),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(176, 120),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 120),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 112),                \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 90),                 \
-        .bitrate = DLNA_BITRATE(1, 128000),             \
-        .levels = DLNA_LEVEL("0b", "2"),                \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(640, 480),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(640, 360),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(720, 576),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(720, 480),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(352, 288),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(352, 240),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(320, 240),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(320, 180),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(240, 180),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(208, 160),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(176, 144),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(176, 120),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 120),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 112),                \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 90),                 \
-        .bitrate = DLNA_BITRATE(1, 384000),             \
-        .levels = DLNA_LEVEL("3"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(640, 480),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5"),                      \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(640, 360),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(720, 576),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(720, 480),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(352, 288),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(352, 240),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(320, 240),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(320, 180),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(240, 180),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(208, 160),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(176, 144),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(176, 120),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 120),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 112),                \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    },                                                  \
-    {                                                   \
-        .res = DLNA_VIDEO_RES(160, 90),                 \
-        .bitrate = DLNA_BITRATE(1, 8000000),            \
-        .levels = DLNA_LEVEL("5")                       \
-    }                                                   \
-
-static const struct dlna_video_rule _dlna_video_rule_sp_l5[] = {
-    DLNA_VIDEO_RULE_SP_L5,
-    { NULL },
-};
-
-static const struct dlna_video_rule _dlna_video_rule_sp_l6[] = {
-    DLNA_VIDEO_RULE_SP_L5,
-    {
-        .res = DLNA_VIDEO_RES(1280, 720),
-        .bitrate = DLNA_BITRATE(1, 64000),
-        .levels = DLNA_LEVEL("0", "1"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(1280, 720),
-        .bitrate = DLNA_BITRATE(1, 128000),
-        .levels = DLNA_LEVEL("0b", "2"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(1280, 720),
-        .bitrate = DLNA_BITRATE(1, 384000),
-        .levels = DLNA_LEVEL("3"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(640, 480),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(720, 576),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(720, 480),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 288),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 240),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 240),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 180),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(240, 180),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(208, 160),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 144),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 120),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 120),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 112),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 90),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(1280, 720),
-        .bitrate = DLNA_BITRATE(1, 4000000),
-        .levels = DLNA_LEVEL("4a"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(1280, 720),
-        .bitrate = DLNA_BITRATE(1, 8000000),
-        .levels = DLNA_LEVEL("5"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(640, 480),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(640, 360),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(720, 576),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(720, 480),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 288),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(352, 240),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 240),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(320, 180),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(240, 180),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(208, 160),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 144),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(176, 120),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 120),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 112),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(160, 90),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    {
-        .res = DLNA_VIDEO_RES(1280, 720),
-        .bitrate = DLNA_BITRATE(1, 12000000),
-        .levels = DLNA_LEVEL("6"),
-    },
-    { NULL },
-};
-
-#define DLNA_VIDEO_RULE_H263_P0_L10             \
-    {                                           \
-        .res = DLNA_VIDEO_RES(176, 144),        \
-        .bitrate = DLNA_BITRATE(1, 64000),      \
-        .levels = DLNA_LEVEL("0")               \
-    },                                          \
-    {                                           \
-        .res = DLNA_VIDEO_RES(128, 96),         \
-        .bitrate = DLNA_BITRATE(1, 64000),      \
-        .levels = DLNA_LEVEL("0")               \
-    }                                           \
-
-static const struct dlna_video_rule _dlna_video_rule_mpeg4_h263_mp4_p0_l10_aac[] = {
-    DLNA_VIDEO_RULE_H263_P0_L10,
-    { NULL },
-};
-
-static const struct dlna_video_rule _dlna_video_rule_mpeg4_h263_mp4_p0_l10_aac_ltp[] = {
-    DLNA_VIDEO_RULE_H263_P0_L10,
-    { NULL },
-};
-
-#define DLNA_VIDEO_LEVELS_CIF                   \
-    "1", "1b", "1.1", "1.2"                     \
-
-#define DLNA_VIDEO_RULES_AVC_MP4_BL_CIF15                               \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(352, 288),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 15/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(352, 240),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 18/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(320, 240),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 20/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(320, 180),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 26/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(240, 180),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(208, 160),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(176, 144),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(176, 120),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(160, 120),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(160, 112),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(160, 90),                                 \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(128, 96),                                 \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(240, 135),                                \
-        .bitrate = DLNA_BITRATE(1, 384000),                             \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_CIF),                    \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    }                                                                   \
-
-static const struct dlna_video_rule _dlna_video_rule_avc_mp4_bl_cif15_aac_520[] = {
-    DLNA_VIDEO_RULES_AVC_MP4_BL_CIF15,
-    { NULL },
-};
-
-static const struct dlna_video_rule _dlna_video_rule_avc_mp4_bl_cif15_aac[] = {
-    DLNA_VIDEO_RULES_AVC_MP4_BL_CIF15,
-    { NULL },
-};
-
-#define DLNA_VIDEO_RULES_BL_L3L_SD_AAC                          \
-    "1", "1b", "1.1", "1.2", "1.3", "2", "2.1", "2.2", "3"      \
-
-// common between l3 and l3l sd aac
-#define DLNA_VIDEO_RULES_L3_L3L_SD_AAC                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(720, 576),                                \
-        .bitrate = DLNA_BITRATE(1, 4500000),                            \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_RULES_BL_L3L_SD_AAC),           \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 25/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(720, 480),                                \
-        .bitrate = DLNA_BITRATE(1, 4500000),                            \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_RULES_BL_L3L_SD_AAC),           \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30000/1001), \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(640, 480),                                \
-        .bitrate = DLNA_BITRATE(1, 4500000),                            \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_RULES_BL_L3L_SD_AAC),           \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    },                                                                  \
-    {                                                                   \
-        .res = DLNA_VIDEO_RES(640, 360),                                \
-        .bitrate = DLNA_BITRATE(1, 4500000),                            \
-        .levels = DLNA_LEVEL(DLNA_VIDEO_RULES_BL_L3L_SD_AAC),           \
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),       \
-    }                                                                   \
-
-static const struct dlna_video_rule _dlna_video_rule_avc_mp4_bl_l3l_sd_aac[] = {
-    DLNA_VIDEO_RULES_L3_L3L_SD_AAC,
-    { NULL },
-};
-
-static const struct dlna_video_rule _dlna_video_rule_avc_mp4_bl_l3_sd_aac[] = {
-    DLNA_VIDEO_RULES_L3_L3L_SD_AAC,
-    { NULL },
-};
-
-#define DLNA_VIDEO_LEVELS_SD_EAC3                               \
-    "1", "1b", "1.1", "1.2", "1.3", "2", "2.1", "2.2", "3"      \
-
-static const struct dlna_video_rule _dlna_video_rule_avc_mp4_mp_sd_eac3[] = {
-    {
-        .res = DLNA_VIDEO_RES(864, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_SD_EAC3),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 25/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(720, 576),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_SD_EAC3),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 50/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(720, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_SD_EAC3),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 60/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(640, 480),
-        .bitrate = DLNA_BITRATE(1, 10000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_SD_EAC3),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),
-    },
-};
-
-#define DLNA_VIDEO_LEVELS_MP_HD_720P                                    \
-    "1", "1b", "1.1", "1.2", "1.3", "2", "2.1", "2.2", "3", "3.1"       \
-
-static const struct dlna_video_rule _dlna_video_rule_avc_mp4_mp_hd_720p_aac[] = {
-    {
-        .res = DLNA_VIDEO_RES(1280, 720),
-        .bitrate = DLNA_BITRATE(1, 14000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MP_HD_720P),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(640, 480),
-        .bitrate = DLNA_BITRATE(1, 14000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MP_HD_720P),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 60/1),
-    },
-};
-
-#define DLNA_VIDEO_LEVELS_MP_HD_1080I                                   \
-    "1", "1b", "1.1", "1.2", "1.3", "2", "2.1", "2.2", "3", "3.1", "3.2", "4" \
-
-static const struct dlna_video_rule _dlna_video_rule_avc_mp4_mp_hd_1080i_aac[] = {
-    {
-        .res = DLNA_VIDEO_RES(1920, 1080),
-        .bitrate = DLNA_BITRATE(1, 20000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MP_HD_1080I),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),
-    },
-    {
-        .res = DLNA_VIDEO_RES(1280, 720),
-        .bitrate = DLNA_BITRATE(1, 20000000),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_MP_HD_1080I),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 60/1),
-    },
-};
-
-#define DLNA_VIDEO_LEVELS_AVC_MKV_HP_HD                                 \
-    "1", "1b", "1.1", "1.2", "1.3", "2", "2.1", "2.2", "3", "3.1", "3.2", "4" \
-
-static const struct dlna_video_rule _dlna_video_avc_mkv_hp_hd[] = {
-    {
-        .res_range = DLNA_VIDEO_RES_RANGE(1, 1920, 1, 1152),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MKV_HP_HD),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 60/1),
-    },
-    {
-        .res_range = DLNA_VIDEO_RES_RANGE(1, 1920, 1, 1152),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MKV_HP_HD),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 50/1),
-    },
-    {
-        .res_range = DLNA_VIDEO_RES_RANGE(1, 1920, 1, 1152),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MKV_HP_HD),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 25/1),
-    },
-    {
-        .res_range = DLNA_VIDEO_RES_RANGE(1, 1920, 1, 1080),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MKV_HP_HD),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 30/1),
-    },
-    {
-        .res_range = DLNA_VIDEO_RES_RANGE(1, 1920, 1, 1080),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MKV_HP_HD),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 60/1),
-    },
-    {
-        .res_range = DLNA_VIDEO_RES_RANGE(1, 1280, 1, 720),
-        .levels = DLNA_LEVEL(DLNA_VIDEO_LEVELS_AVC_MKV_HP_HD),
-        .framerate_range = DLNA_VIDEO_FRAMERATE_RANGE(0/1, 60/1),
-    },
-};
-
-// mpeg4
-static const struct dlna_audio_rule _dlna_audio_mpeg4_p2_mp4_sp_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(1, 216000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_mpeg4_p2_mp4_sp_aac_ltp = {
-    .codec = &_codec_audio_mpeg4aac_ltp,
-    .bitrate = DLNA_BITRATE(1, 216000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_mpeg4_p2_mp4_sp_vga_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(1, 256000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_mpeg4_p2_mp4_sp_l2_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(1, 128000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_mpeg4_p2_mp4_sp_l5_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_mpeg4_p2_mp4_sp_l6_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_mpeg4_h263_mp4_p0_l10_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(1, 86000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_mpeg4_h263_mp4_p0_l10_aac_ltp = {
-    .codec = &_codec_audio_mpeg4aac_ltp,
-    .bitrate = DLNA_BITRATE(1, 86000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-// avc
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_bl_cif15_aac_520 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(1, 128000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_bl_cif15_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(1, 200000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_bl_l3l_sd_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(1, 256000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_bl_l3_sd_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(1, 256000),
-    .levels = DLNA_LEVEL("1", "2"),
-    .channels = DLNA_BITRATE(1, 2),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_mp_sd_aac_mult5 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(0,1440000),
-    .levels = DLNA_LEVEL("1", "2", "4"),
-    .channels = DLNA_BITRATE(1, 6),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_mp_sd_mpeg1_l3 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(32000, 32000),
-    .channels = DLNA_BITRATE(1, 2),
-    .rates = DLNA_AUDIO_RATE(32000, 44100, 48000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_mp_sd_ac3 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(64000, 64000),
-    .channels = DLNA_BITRATE(1, 6),
-    .rates = DLNA_AUDIO_RATE(32000, 44100, 48000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_mp_sd_eac3 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(0, 3024000),
-    .channels = DLNA_BITRATE(1, 6),
-    .rates = DLNA_AUDIO_RATE(32000, 44100, 48000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_mp_hd_720p_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(0, 576000),
-    .channels = DLNA_BITRATE(1, 2),
-    .rates = DLNA_AUDIO_RATE(8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mp4_mp_hd_1080i_aac = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(0, 576000),
-    .channels = DLNA_BITRATE(1, 2),
-    .rates = DLNA_AUDIO_RATE(8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mkv_mp_hd_aac_mult5 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(0, 1440000),
-    .channels = DLNA_BITRATE(1, 6),
-    .rates = DLNA_AUDIO_RATE(8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000),
-    .levels = DLNA_LEVEL("1", "2", "4"),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mkv_mp_hd_ac3 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .bitrate = DLNA_BITRATE(0, 1440000),
-    .channels = DLNA_BITRATE(1, 6),
-    .rates = DLNA_AUDIO_RATE(32000, 44100, 48000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_avc_mkv_mp_hd_mpeg1_l3 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .channels = DLNA_BITRATE(1, 2),
-    .rates = DLNA_AUDIO_RATE(32000, 44100, 48000),
-    .bitrate = DLNA_BITRATE(32000, 320000),
-};
-
-static const  struct dlna_video_profile _dlna_video_profile_rules[] = {
-    // mpeg4
-    {
-        .dlna_profile = &_dlna_profile_p2_sp_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_sp_l3,
-        .audio_rule = &_dlna_audio_mpeg4_p2_mp4_sp_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_p2_sp_aac_ltp,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_sp_l3,
-        .audio_rule = &_dlna_audio_mpeg4_p2_mp4_sp_aac_ltp,
-    },
-    {
-        .dlna_profile = &_dlna_profile_p2_sp_vga_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_mpeg4_p2_mp4_sp_vga_aac,
-        .audio_rule = &_dlna_audio_mpeg4_p2_mp4_sp_vga_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_p2_sp_l2_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_mpeg4_p2_mp4_sp_l2_aac,
-        .audio_rule = &_dlna_audio_mpeg4_p2_mp4_sp_l2_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_p2_sp_l5_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_sp_l5,
-        .audio_rule = &_dlna_audio_mpeg4_p2_mp4_sp_l5_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_p2_sp_l6_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_sp_l6,
-        .audio_rule = &_dlna_audio_mpeg4_p2_mp4_sp_l6_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_h263_p0_l10_aac,
-        .dlna_mime = &_dlna_mime_video_3gp,
-        .video_rules = _dlna_video_rule_mpeg4_h263_mp4_p0_l10_aac,
-        .audio_rule = &_dlna_audio_mpeg4_h263_mp4_p0_l10_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_h263_p0_l10_aac_ltp,
-        .dlna_mime = &_dlna_mime_video_3gp,
-        .video_rules = _dlna_video_rule_mpeg4_h263_mp4_p0_l10_aac_ltp,
-        .audio_rule = &_dlna_audio_mpeg4_h263_mp4_p0_l10_aac_ltp,
-    },
-    // avc
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_bl_cif15_aac_520,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_bl_cif15_aac_520,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_bl_cif15_aac_520,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_bl_cif15_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_bl_cif15_aac,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_bl_cif15_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_bl_l3l_sd_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_bl_l3l_sd_aac,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_bl_l3l_sd_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_bl_l3_sd_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_bl_l3_sd_aac,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_bl_l3_sd_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_mp_sd_aac_mult5,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_mp_sd,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_mp_sd_aac_mult5,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_mp_sd_mpeg1_l3,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_mp_sd,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_mp_sd_mpeg1_l3,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_mp_sd_ac3,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_mp_sd,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_mp_sd_ac3,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_mp_sd_eac3,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_mp_sd_eac3,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_mp_sd_eac3,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_mp_hd_720p_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_mp_hd_720p_aac,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_mp_hd_720p_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mp4_mp_hd_720p_aac,
-        .dlna_mime = &_dlna_mime_video,
-        .video_rules = _dlna_video_rule_avc_mp4_mp_hd_1080i_aac,
-        .audio_rule = &_dlna_audio_rule_avc_mp4_mp_hd_1080i_aac,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mkv_mp_hd_aac_mult5,
-        .dlna_mime = &_dlna_mime_video_matroska,
-        .video_rules = _dlna_video_avc_mkv_hp_hd,
-        .audio_rule = &_dlna_audio_rule_avc_mkv_mp_hd_aac_mult5,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mkv_hp_hd_aac_mult5, // same rules as mp
-        .dlna_mime = &_dlna_mime_video_matroska,
-        .video_rules = _dlna_video_avc_mkv_hp_hd,
-        .audio_rule = &_dlna_audio_rule_avc_mkv_mp_hd_aac_mult5,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mkv_mp_hd_ac3,
-        .dlna_mime = &_dlna_mime_video_matroska,
-        .video_rules = _dlna_video_avc_mkv_hp_hd,
-        .audio_rule = &_dlna_audio_rule_avc_mkv_mp_hd_ac3,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mkv_hp_hd_ac3, // same rules as mp
-        .dlna_mime = &_dlna_mime_video_matroska,
-        .video_rules = _dlna_video_avc_mkv_hp_hd,
-        .audio_rule = &_dlna_audio_rule_avc_mkv_mp_hd_ac3,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mkv_mp_hd_mpeg1_l3,
-        .dlna_mime = &_dlna_mime_video_matroska,
-        .video_rules = _dlna_video_avc_mkv_hp_hd,
-        .audio_rule = &_dlna_audio_rule_avc_mkv_mp_hd_mpeg1_l3,
-    },
-    {
-        .dlna_profile = &_dlna_profile_avc_mkv_hp_hd_mpeg1_l3, // same rules as mp
-        .dlna_mime = &_dlna_mime_video_matroska,
-        .video_rules = _dlna_video_avc_mkv_hp_hd,
-        .audio_rule = &_dlna_audio_rule_avc_mkv_mp_hd_mpeg1_l3,
-    },
-};
-
-#define DLNA_AUDIO_RULE_AAC_ISO                                         \
-    .codec = &_codec_audio_mpeg4aac_lc,                                 \
-    .channels = DLNA_BITRATE(1, 2),                                     \
-    .rates = DLNA_AUDIO_RATE(8000, 11025, 12000, 16000,                 \
-                22050, 24000, 32000, 44100, 48000),                     \
-    .bitrate = DLNA_BITRATE(0, 576000)                                  \
-
-static const struct dlna_audio_rule _dlna_audio_rule_aac_iso = {
-    DLNA_AUDIO_RULE_AAC_ISO,
-    .container = &_container_mp4,
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_aac_iso_3gp = {
-    DLNA_AUDIO_RULE_AAC_ISO,
-    .container = &_container_3gp,
-};
-
-#define DLNA_AUDIO_RULE_AAC_ISO_320                                     \
-    .codec = &_codec_audio_mpeg4aac_lc,                                 \
-    .channels = DLNA_BITRATE(1, 2),                                     \
-    .rates = DLNA_AUDIO_RATE(8000, 11025, 12000, 16000,                 \
-                22050, 24000, 32000, 44100, 48000),                     \
-    .bitrate = DLNA_BITRATE(0, 320000)                                  \
-
-static const struct dlna_audio_rule _dlna_audio_rule_aac_iso_320 = {
-    DLNA_AUDIO_RULE_AAC_ISO_320,
-    .container = &_container_mp4,
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_aac_iso_320_3gp = {
-    DLNA_AUDIO_RULE_AAC_ISO_320,
-    .container = &_container_3gp,
-};
-
-#define DLNA_AUDIO_RULE_AAC_MULT5_ISO                                   \
-    .codec = &_codec_audio_mpeg4aac_lc,                                 \
-    .channels = DLNA_BITRATE(1, 6),                                     \
-    .rates = DLNA_AUDIO_RATE(8000, 11025, 12000, 16000,                 \
-                22050, 24000, 32000, 44100, 48000),                     \
-    .bitrate = DLNA_BITRATE(0, 1440000)                                 \
-
-static const struct dlna_audio_rule _dlna_audio_rule_aac_mult5_iso = {
-    DLNA_AUDIO_RULE_AAC_MULT5_ISO,
-    .container = &_container_mp4,
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_aac_mult5_iso_3gp = {
-    DLNA_AUDIO_RULE_AAC_MULT5_ISO,
-    .container = &_container_3gp,
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_ac3 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .channels = DLNA_BITRATE(1, 6),
-    .rates = DLNA_AUDIO_RATE(32000, 44100, 48000),
-    .bitrate = DLNA_BITRATE(64000, 64000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_eac3 = {
-    .codec = &_codec_audio_mpeg4aac_lc,
-    .channels = DLNA_BITRATE(1, 6),
-    .rates = DLNA_AUDIO_RATE(32000, 44100, 48000),
-    .bitrate = DLNA_BITRATE( 32000, 6144000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_amr_3gpp = {
-    .codec = &_codec_audio_amr,
-    .container = &_container_3gp,
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_amr = {
-    .codec = &_codec_audio_amr,
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_amr_wbplus = {
-    .codec = &_codec_audio_amr_wb,
-    .rates = DLNA_AUDIO_RATE(8000, 16000, 24000, 32000, 48000),
-};
-
-static const struct dlna_audio_rule _dlna_audio_rule_amr_wbplus_3gp = {
-    .codec = &_codec_audio_amr_wb,
-    .container = &_container_3gp,
-    .rates = DLNA_AUDIO_RATE(8000, 16000, 24000, 32000, 48000),
-};
-
-//_dlna_profile_aac_mult5_iso
-static const  struct dlna_audio_profile _dlna_audio_profile_rules[] = {
-    {
-        .dlna_profile = &_dlna_profile_aac_iso,
-        .dlna_mime = &_dlna_mime_audio,
-        .audio_rule = &_dlna_audio_rule_aac_iso,
-    },
-    {
-        .dlna_profile = &_dlna_profile_aac_iso,
-        .dlna_mime = &_dlna_mime_audio_3gp,
-        .audio_rule = &_dlna_audio_rule_aac_iso_3gp,
-    },
-    {
-        .dlna_profile = &_dlna_profile_aac_iso_320,
-        .dlna_mime = &_dlna_mime_audio,
-        .audio_rule = &_dlna_audio_rule_aac_iso_320,
-    },
-    {
-        .dlna_profile = &_dlna_profile_aac_iso_320,
-        .dlna_mime = &_dlna_mime_audio_3gp,
-        .audio_rule = &_dlna_audio_rule_aac_iso_320_3gp,
-    },
-    {
-        .dlna_profile = &_dlna_profile_aac_mult5_iso,
-        .dlna_mime = &_dlna_mime_audio,
-        .audio_rule = &_dlna_audio_rule_aac_mult5_iso,
-    },
-    {
-        .dlna_profile = &_dlna_profile_aac_mult5_iso,
-        .dlna_mime = &_dlna_mime_audio_3gp,
-        .audio_rule = &_dlna_audio_rule_aac_mult5_iso_3gp,
-    },
-    {
-        .dlna_profile = &_dlna_profile_ac3,
-        .dlna_mime = &_dlna_mime_audio_dolby,
-        .audio_rule = &_dlna_audio_rule_ac3,
-    },
-    {
-        .dlna_profile = &_dlna_profile_eac3,
-        .dlna_mime = &_dlna_mime_audio_eac3,
-        .audio_rule = &_dlna_audio_rule_eac3,
-    },
-    {
-        .dlna_profile = &_dlna_profile_amr_3gpp,
-        .dlna_mime = &_dlna_mime_audio_3gp,
-        .audio_rule = &_dlna_audio_rule_amr_3gpp,
-    },
-    {
-        .dlna_profile = &_dlna_profile_amr_3gpp,
-        .dlna_mime = &_dlna_mime_audio,
-        .audio_rule = &_dlna_audio_rule_amr,
-    },
-    {
-        .dlna_profile = &_dlna_profile_amr_wbplus,
-        .dlna_mime = &_dlna_mime_audio,
-        .audio_rule = &_dlna_audio_rule_amr_wbplus,
-    },
-    {
-        .dlna_profile = &_dlna_profile_amr_wbplus,
-        .dlna_mime = &_dlna_mime_audio_3gp,
-        .audio_rule = &_dlna_audio_rule_amr_wbplus_3gp,
-    },
-    { NULL }
-};
-
-static bool
-_string_vector_has_value(const char **list, const char *wanted)
-{
-    int i;
-    const char *curr;
-
-    for (i = 0, curr = list[i]; curr != NULL; i++, curr = list[i]) {
-        if (!strcmp(curr, wanted)) return true;
-    }
-
-    return false;
-}
-
-static bool
-_uint_vector_has_value(const unsigned int *list, unsigned int wanted)
-{
-    int i;
-    unsigned int curr;
-
-    for (i = 0, curr = list[i]; curr != INT32_MAX; i++, curr = list[i])
-      if (curr == wanted) return true;
-
-    return false;
-}
-
-static void
-_fill_audio_dlna_profile(struct lms_audio_info *info)
-{
-    int i = 0;
-
-    while (true) {
-        const struct dlna_audio_profile *curr = _dlna_audio_profile_rules + i;
-        const struct dlna_audio_rule *rule;
-
-        if (curr->dlna_profile == NULL && curr->dlna_mime == NULL &&
-            curr->audio_rule == NULL)
-            break;
-
-        i++;
-        rule = curr->audio_rule;
-
-        if (rule->bitrate && (info->bitrate < rule->bitrate->min ||
-                              info->bitrate > rule->bitrate->max))
-            continue;
-
-        if (rule->rates &&
-            !_uint_vector_has_value(rule->rates->rates, info->sampling_rate))
-            continue;
-
-        if (rule->channels &&
-            (info->channels < rule->channels->min ||
-             info->channels > rule->channels->max))
-            continue;
-
-        if (rule->codec && strcmp(rule->codec->str, info->codec.str))
-            continue;
-
-        if (rule->container && strcmp(rule->container->str, info->container.str))
-            continue;
-
-        info->dlna_mime = *curr->dlna_mime;
-        info->dlna_profile = *curr->dlna_profile;
-        break;
-    }
-}
-
-static const struct dlna_video_profile *
-_get_video_dlna_profile(const struct lms_stream_audio_info *audio,
-                        const struct lms_stream *audio_stream,
-                        const struct lms_stream_video_info *video,
-                        const struct lms_stream *video_stream)
-{
-    int i, length;
-    const struct dlna_video_profile *curr;
-    char *level;
-
-    level = strstr(video_stream->codec.str, "-l");
-    length = sizeof(_dlna_video_profile_rules) / sizeof(struct dlna_video_profile);
-
-    for (i = 0, curr = &_dlna_video_profile_rules[i]; i < length; i++,
-             curr = &_dlna_video_profile_rules[i]) {
-        const struct dlna_video_rule *video_rule;
-        const struct dlna_audio_rule *audio_rule;
-        const struct dlna_video_rule *r;
-
-        audio_rule = curr->audio_rule;
-        r = curr->video_rules;
-
-        if (audio_rule->bitrate && (audio->bitrate < audio_rule->bitrate->min ||
-                                    audio->bitrate > audio_rule->bitrate->max))
-            continue;
-
-        if (audio_rule->rates &&
-            !_uint_vector_has_value(audio_rule->rates->rates,
-                                    audio->sampling_rate))
-            continue;
-
-        if (audio_rule->channels &&
-            (audio->channels < audio_rule->channels->min ||
-             audio->channels > audio_rule->channels->max))
-            continue;
-
-        if (audio_rule->codec &&
-            strcmp(audio_stream->codec.str, audio_rule->codec->str))
-            continue;
-
-        while (true) {
-            video_rule = r++;
-
-            if (!video_rule->res && !video_rule->bitrate &&
-                !video_rule->levels && !video_rule->framerate_range)
-                break;
-
-            if (video_rule->res && (video->width != video_rule->res->width &&
-                                    video->height != video_rule->res->height))
-                continue;
-
-            if (video_rule->res_range &&
-                !(video->width >= video_rule->res_range->width_min &&
-                  video->width <= video_rule->res_range->width_max &&
-                  video->height >= video_rule->res_range->height_min &&
-                  video->height <= video_rule->res_range->height_max))
-                continue;
-
-            if (video_rule->framerate_range &&
-                !(video->framerate >= video_rule->framerate_range->min &&
-                  video->framerate <= video_rule->framerate_range->max))
-                continue;
-
-            if (video_rule->bitrate &&
-                !(video->bitrate >= video_rule->bitrate->min &&
-                  video->bitrate <= video_rule->bitrate->max))
-                continue;
-
-            if (video_rule->levels &&
-                !_string_vector_has_value(video_rule->levels->levels,
-                                          level + 2))
-                continue;
-
-            return curr;
-        }
-    }
-
-    return NULL;
-}
-
-static void
-_fill_video_dlna_profile(struct lms_video_info *info)
-{
-    const struct dlna_video_profile *profile;
-    const struct lms_stream *s, *audio_stream, *video_stream;
-    const struct lms_stream_audio_info *audio;
-    const struct lms_stream_video_info *video;
-
-    audio_stream = video_stream = NULL;
-    audio = NULL;
-    video = NULL;
-
-    for (s = info->streams; s; s = s->next) {
-        if (s->type == LMS_STREAM_TYPE_VIDEO) {
-            video = &s->video;
-            video_stream = s;
-            if (audio) break;
-        } else if (s->type == LMS_STREAM_TYPE_AUDIO) {
-            audio = &s->audio;
-            audio_stream = s;
-            if (video) break;
-        }
-    }
-
-    profile = _get_video_dlna_profile(audio, audio_stream, video, video_stream);
-    if (!profile) return;
-
-    info->dlna_profile = *profile->dlna_profile;
-    info->dlna_mime = *profile->dlna_mime;
-}
-
 static int
 _parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
 {
@@ -2561,8 +685,6 @@ _parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_in
         audio_info.container = _get_container(mp4_fh);
         audio_info.trackno = info.trackno;
 
-        _fill_audio_dlna_profile(&audio_info);
-
         r = lms_db_audio_add(plugin->audio_db, &audio_info);
     } else {
         video_info.id = finfo->id;
@@ -2570,8 +692,6 @@ _parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_in
         video_info.artist = info.artist;
         video_info.container = _get_container(mp4_fh);
 
-        _fill_video_dlna_profile(&video_info);
-
         r = lms_db_video_add(plugin->video_db, &video_info);
     }