summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeandro Dorileo <leandro.maciel.dorileo@intel.com>2014-01-17 10:41:10 -0200
committerLeandro Dorileo <leandro.maciel.dorileo@intel.com>2014-01-29 10:15:44 -0200
commit395dc50400e37948cc891c3b77e8b5b988b0db12 (patch)
treee5a1af61ccd88a46dd1aab9678859da911da3a70
parente5b4a5b9d25b61a45b971e9d099dab2b0145f020 (diff)
downloadlightmediascanner-395dc50400e37948cc891c3b77e8b5b988b0db12.tar.gz
lightmediascanner-395dc50400e37948cc891c3b77e8b5b988b0db12.tar.bz2
lightmediascanner-395dc50400e37948cc891c3b77e8b5b988b0db12.zip
mp4: remove all the dlna stuff from plugin
-rw-r--r--src/plugins/mp4/mp4.c1880
1 files changed, 0 insertions, 1880 deletions
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);
}