From: Leandro Dorileo Date: Fri, 17 Jan 2014 12:41:10 +0000 (-0200) Subject: mp4: remove all the dlna stuff from plugin X-Git-Tag: accepted/tizen/generic/20140130.172709~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=395dc50400e37948cc891c3b77e8b5b988b0db12;p=platform%2Fupstream%2Flightmediascanner.git mp4: remove all the dlna stuff from plugin --- diff --git a/src/plugins/mp4/mp4.c b/src/plugins/mp4/mp4.c index 0ccd8e8..7cb7fd9 100644 --- a/src/plugins/mp4/mp4.c +++ b/src/plugins/mp4/mp4.c @@ -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); }