summaryrefslogtreecommitdiff
path: root/dlna/profiles
diff options
context:
space:
mode:
Diffstat (limited to 'dlna/profiles')
-rw-r--r--dlna/profiles/aac.cpp8
-rw-r--r--dlna/profiles/ac3.cpp85
-rw-r--r--dlna/profiles/amr.cpp8
-rw-r--r--dlna/profiles/atrac3plus.cpp8
-rw-r--r--dlna/profiles/container.cpp117
-rw-r--r--dlna/profiles/jpeg.cpp11
-rw-r--r--dlna/profiles/lpcm.cpp8
-rw-r--r--dlna/profiles/mpa.cpp121
-rw-r--r--dlna/profiles/mpeg1.cpp15
-rw-r--r--dlna/profiles/mpeg2.cpp216
-rw-r--r--dlna/profiles/mpeg4_p10.cpp148
-rw-r--r--dlna/profiles/mpeg4_p2.cpp129
-rw-r--r--dlna/profiles/png.cpp11
-rw-r--r--dlna/profiles/wma.cpp8
-rw-r--r--dlna/profiles/wmv9.cpp8
15 files changed, 901 insertions, 0 deletions
diff --git a/dlna/profiles/aac.cpp b/dlna/profiles/aac.cpp
new file mode 100644
index 0000000..e2b77e2
--- /dev/null
+++ b/dlna/profiles/aac.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_aac.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:31
+ */
+
+#include "profiles/aac.h"
diff --git a/dlna/profiles/ac3.cpp b/dlna/profiles/ac3.cpp
new file mode 100644
index 0000000..0b7841e
--- /dev/null
+++ b/dlna/profiles/ac3.cpp
@@ -0,0 +1,85 @@
+/*
+ * File: profiles_ac3.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:04
+ */
+
+#include "profiles/ac3.h"
+#include "util.h"
+#include "avdetector.h"
+
+DLNAProfile DLNA_PROFILE_AC3 = { "AC3" , "audio/vnd.dolby.dd-raw" };
+
+/**
+ * Accepted audio bitrates
+ *
+ * This are all accepted audio bitrates of this profile
+ * The standard says 64Kbps - 640Kbps. However, 32Kbps is used as
+ * lower limit to accept low bitrate streams in ATSC and DVB broadcast streams.
+ */
+AcceptedBitrates DLNA_BITRATES_AC3 = { true, {Kbps(32), Kbps(448)}};
+AcceptedBitrates DLNA_BITRATES_XAC3 = { true, {Kbps(64), Kbps(640)}};
+
+/**
+ * Accepted audio channel layouts
+ *
+ * This are all accepted audio channel layouts including LFE.
+ * Though the LFE is optional and not explicitly mentioned in the documents to be supported
+ * by this profile, it is supported by this plugin as it makes no sense to do not.
+ * However, this may result in difficulties on some players if they follow the standard correctly
+ *
+ */
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_AC3 = { 5, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20, CHANNEL_LAYOUT_21,
+ CHANNEL_LAYOUT_22, CHANNEL_LAYOUT_30, CHANNEL_LAYOUT_31,
+ CHANNEL_LAYOUT_32, CHANNEL_LAYOUT_10_1, CHANNEL_LAYOUT_20_1,
+ CHANNEL_LAYOUT_21_1, CHANNEL_LAYOUT_22_1, CHANNEL_LAYOUT_30_1,
+ CHANNEL_LAYOUT_31_1, CHANNEL_LAYOUT_5_1
+ }, true };
+
+/**
+ * Accepted audio sample rates
+ *
+ * This are all accepted audio sample rates
+ * In ATSC systems only 48kHz are supported, the other two sample rates were
+ * removed from standard. However, I do not specialice here if there is no
+ * real reason for.
+ */
+AcceptedSamplingRates DLNA_SAMPLINGRATES_AC3 = {{ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_XAC3 = {{ KHz(48) }};
+
+AudioPortionProfile cAC3Profiler::probeAudioProfile(AVFormatContext* FormatCtx){
+ AVCodecContext* AudioCodec = cCodecToolKit::getFirstCodecContext(FormatCtx, CODEC_TYPE_AUDIO);
+
+ if(AudioCodec->codec_id == CODEC_ID_AC3){
+ // VBR
+ if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_AC3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_AC3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_AC3, AudioCodec)){
+ return DLNA_APP_AC3;
+ }
+ else if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_XAC3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_AC3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_XAC3, AudioCodec)){
+ return DLNA_APP_XAC3;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+}
+
+DLNAProfile* cAC3Profiler::probeDLNAProfile(AVFormatContext* FormatCtx){
+ AudioPortionProfile Profile = AC3Profiler.probeAudioProfile(FormatCtx);
+ if(Profile==DLNA_APP_AC3 || Profile==DLNA_APP_XAC3){
+ return &DLNA_PROFILE_AC3;
+ }
+ else {
+ return NULL;
+ }
+}
+
+cAC3Profiler AC3Profiler; \ No newline at end of file
diff --git a/dlna/profiles/amr.cpp b/dlna/profiles/amr.cpp
new file mode 100644
index 0000000..8c7696f
--- /dev/null
+++ b/dlna/profiles/amr.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_amr.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:05
+ */
+
+#include "profiles/amr.h"
diff --git a/dlna/profiles/atrac3plus.cpp b/dlna/profiles/atrac3plus.cpp
new file mode 100644
index 0000000..95f28fd
--- /dev/null
+++ b/dlna/profiles/atrac3plus.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_atrac3plus.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:06
+ */
+
+#include "profiles/atrac3plus.h" \ No newline at end of file
diff --git a/dlna/profiles/container.cpp b/dlna/profiles/container.cpp
new file mode 100644
index 0000000..a4418ef
--- /dev/null
+++ b/dlna/profiles/container.cpp
@@ -0,0 +1,117 @@
+/*
+ * File: container.cpp
+ * Author: savop
+ *
+ * Created on 8. Januar 2010, 11:45
+ */
+
+#include "profiles/container.h"
+#include "../../common.h"
+#include <vdr/remux.h>
+
+#define DLNA_MPEG_TS_SIZE_ISO TS_SIZE
+#define DLNA_MPEG_TS_SIZE 192
+
+enum VideoFormats {
+ FORMAT_MPEG1,
+ FORMAT_MPEG2,
+ FORMAT_MP4,
+#ifdef WITH_WINDOWS_MEDIA
+ FORMAT_WMF,
+#endif
+};
+
+static const struct VideoFormatMapping {
+ const char* name;
+ VideoFormats format;
+} VideoFormatMap[] = {
+ { "mpeg", FORMAT_MPEG2 },
+ { "mpegts", FORMAT_MPEG2 },
+#ifdef WITH_WINDOWS_MEDIA
+ { "asf", FORMAT_WMF }
+#endif
+};
+
+VideoContainerProfile cContainerDetector::detect(AVFormatContext* Ctx){
+ if(Ctx && Ctx->iformat){
+ for(int i=0; VideoFormatMap[i].name; i++){
+ if(!strcasecmp(VideoFormatMap[i].name,Ctx->iformat->name))
+ switch(VideoFormatMap[i].format){
+ case FORMAT_MPEG1:
+ return cContainerDetector::detectMPEG1Container(Ctx);
+ case FORMAT_MPEG2:
+ return cContainerDetector::detectMPEG2Container(Ctx);
+ case FORMAT_MP4:
+ return cContainerDetector::detectMP4Container(Ctx);
+#ifdef WITH_WINDOWS_MEDIA
+ case FORMAT_WMF:
+ return cContainerDetector::detectWMFContainer(Ctx);
+#endif
+ default:
+ break;
+ }
+ }
+ ERROR("AVDetector: Unsupported input format \"%s\"", Ctx->iformat->name);
+ }
+ else {
+ ERROR("AVDetector: Input format not found");
+ }
+ return DLNA_VCP_UNKNOWN;
+}
+
+VideoContainerProfile cContainerDetector::detectMPEG2Container(AVFormatContext* Ctx){
+
+ uint8_t buf[5*1024];
+ int len;
+ int64_t pos;
+ int PaketSize = 0;
+ VideoContainerProfile VCP = DLNA_VCP_UNKNOWN;
+
+ /* read the first 1024 bytes to get packet size */
+ pos = url_ftell(Ctx->pb);
+ len = get_buffer(Ctx->pb, buf, sizeof(buf));
+ if (len != sizeof(buf)) PaketSize = 0;
+
+ for(int i = 0; i<DLNA_MPEG_TS_SIZE; i++){
+ if(buf[i]==0x47 && buf[i+DLNA_MPEG_TS_SIZE_ISO]==0x47){
+ MESSAGE(VERBOSE_METADATA, "AVDetector: MPEG TS ISO Video container found");
+ PaketSize = DLNA_MPEG_TS_SIZE_ISO;
+ VCP = DLNA_VCP_MPEG2_TS_ISO;
+ break;
+ }
+ else if(buf[i+4]==0x47 && buf[i+DLNA_MPEG_TS_SIZE]==0x47){
+ PaketSize = DLNA_MPEG_TS_SIZE;
+ if(buf[i]==0x00 && buf[i+1]==0x00 && buf[i+1]==0x00 && buf[i+1]==0x00){
+ MESSAGE(VERBOSE_METADATA, "AVDetector: MPEG TS DLNA with zero value time stamp found");
+ VCP = DLNA_VCP_MPEG2_TS_T;
+ break;
+ }
+ else {
+ MESSAGE(VERBOSE_METADATA, "AVDetector: MPEG TS DLNA with non-zero value time stamp found");
+ VCP = DLNA_VCP_MPEG2_TS;
+ break;
+ }
+ }
+ else {
+ VCP = DLNA_VCP_UNKNOWN;
+ }
+ }
+
+ // TODO: MPEG-PS-Header
+
+ return VCP;
+}
+
+VideoContainerProfile cContainerDetector::detectMPEG1Container(AVFormatContext* ){
+ return DLNA_VCP_UNKNOWN;
+}
+
+VideoContainerProfile cContainerDetector::detectMP4Container(AVFormatContext* ){
+ return DLNA_VCP_UNKNOWN;
+}
+
+#ifdef WITH_WINDOWS_MEDIA
+VideoContainerProfile cContainerDetector::detectWMFContainer(AVFormatContext* ){
+ return DLNA_VCP_UNKNOWN;
+}
+#endif \ No newline at end of file
diff --git a/dlna/profiles/jpeg.cpp b/dlna/profiles/jpeg.cpp
new file mode 100644
index 0000000..61e1149
--- /dev/null
+++ b/dlna/profiles/jpeg.cpp
@@ -0,0 +1,11 @@
+/*
+ * File: profiles_jpeg.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 12:59
+ */
+
+#include "profiles/jpeg.h"
+
+DLNAIconProfile DLNA_ICON_JPEG_SM_24 = { "image/jpeg", 48, 48, 24 };
+DLNAIconProfile DLNA_ICON_JPEG_LRG_24 = { "image/jpeg", 120, 120, 24 };
diff --git a/dlna/profiles/lpcm.cpp b/dlna/profiles/lpcm.cpp
new file mode 100644
index 0000000..d80b259
--- /dev/null
+++ b/dlna/profiles/lpcm.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_lpcm.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:07
+ */
+
+#include "profiles/lpcm.h" \ No newline at end of file
diff --git a/dlna/profiles/mpa.cpp b/dlna/profiles/mpa.cpp
new file mode 100644
index 0000000..09ba77b
--- /dev/null
+++ b/dlna/profiles/mpa.cpp
@@ -0,0 +1,121 @@
+/*
+ * File: profiles_mp3.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:08
+ */
+
+#include "profiles/mpa.h"
+#include "profiles/profile_data.h"
+#include "avdetector.h"
+
+DLNAProfile DLNA_PROFILE_MP3 = { "MP3" , "audio/mpeg" };
+DLNAProfile DLNA_PROFILE_MP3X = { "MP3X" , "audio/mpeg" };
+
+AcceptedBitrates DLNA_BITRATES_MPEG1_L1_DVB = { true, { Kbps(32), Kbps(448) }};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L2_DVB = { true, { Kbps(32), Kbps(384) }};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L3_VBR = { true, { Kbps(32), Kbps(320) }};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L3_CBR = { false, { Kbps(32), Kbps(40),
+ Kbps(48), Kbps(56),
+ Kbps(64), Kbps(80),
+ Kbps(96), Kbps(112),
+ Kbps(128), Kbps(160),
+ Kbps(192), Kbps(224),
+ Kbps(256), Kbps(320)}};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L3X_VBR = { true, { Kbps(8), Kbps(320) }};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L3X_CBR = { false, { Kbps(8), Kbps(16), Kbps(24),
+ Kbps(32), Kbps(40),
+ Kbps(48), Kbps(56),
+ Kbps(64), Kbps(80),
+ Kbps(96), Kbps(112),
+ Kbps(128), Kbps(160),
+ Kbps(192), Kbps(224),
+ Kbps(256), Kbps(320)}};
+AcceptedBitrates DLNA_BITRATES_MPEG1_L2 = { true, { Kbps(32), Kbps(384) }};
+
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L1_DVB = {{ KHz(16), KHz(22.05), KHz(24),
+ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L2 = {{ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L2_DVB = {{ KHz(16), KHz(22.05), KHz(24),
+ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L3 = {{ KHz(32), KHz(44.1), KHz(48) }};
+AcceptedSamplingRates DLNA_SAMPLINGRATES_MPEG1_L3X = {{ KHz(16), KHz(22.05), KHz(24),
+ KHz(32), KHz(44.1), KHz(48) }};
+
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L1_DVB = { 6, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20,
+ CHANNEL_LAYOUT_21, CHANNEL_LAYOUT_22,
+ CHANNEL_LAYOUT_30, CHANNEL_LAYOUT_31,
+ CHANNEL_LAYOUT_32, }, false };
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L2_DVB = { 6, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20,
+ CHANNEL_LAYOUT_21, CHANNEL_LAYOUT_22,
+ CHANNEL_LAYOUT_30, CHANNEL_LAYOUT_31,
+ CHANNEL_LAYOUT_32, }, false };
+
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L2 = { 2, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20 }, false };
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L3 = { 2, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20 }, false };
+AcceptedAudioChannels DLNA_AUDIOCHANNELS_MPEG1_L3X = { 2, { CHANNEL_LAYOUT_10, CHANNEL_LAYOUT_20 }, false };
+
+AudioPortionProfile cMPEGAudioProfiler::probeAudioProfile(AVFormatContext* FormatCtx){
+ AVCodecContext* AudioCodec = cCodecToolKit::getFirstCodecContext(FormatCtx, CODEC_TYPE_AUDIO);
+
+ if(AudioCodec->codec_id == CODEC_ID_MP1){
+ if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L1_DVB, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L1_DVB, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L1_DVB, AudioCodec)){
+ return DLNA_APP_MPEG1_L1;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+ }
+ else if(AudioCodec->codec_id == CODEC_ID_MP2){
+ if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L2, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L2, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L2, AudioCodec)){
+ return DLNA_APP_MPEG1_L2;
+ }
+ else if(cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L2_DVB, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L2_DVB, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L2_DVB, AudioCodec)){
+ return DLNA_APP_MPEG1_L2;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+ }
+ else if(AudioCodec->codec_id == CODEC_ID_MP3){
+ if((cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L3_VBR, AudioCodec) ||
+ cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L3_CBR, AudioCodec)) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L3, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L3, AudioCodec)){
+ return DLNA_APP_MPEG1_L3;
+ }
+ else if((cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L3X_VBR, AudioCodec) ||
+ cCodecToolKit::matchesAcceptedBitrates(DLNA_BITRATES_MPEG1_L3X_CBR, AudioCodec)) &&
+ cCodecToolKit::matchesAcceptedSamplingRates(DLNA_SAMPLINGRATES_MPEG1_L3X, AudioCodec) &&
+ cCodecToolKit::matchesAcceptedAudioChannels(DLNA_AUDIOCHANNELS_MPEG1_L3X, AudioCodec)){
+ return DLNA_APP_MPEG1_L3X;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+}
+
+DLNAProfile* cMPEGAudioProfiler::probeDLNAProfile(AVFormatContext* FormatCtx){
+ AudioPortionProfile Profile = MPEGAudioProfiler.probeAudioProfile(FormatCtx);
+ if(Profile == DLNA_APP_MPEG1_L3){
+ return &DLNA_PROFILE_MP3;
+ }
+ else if(Profile == DLNA_APP_MPEG1_L3X){
+ return &DLNA_PROFILE_MP3X;
+ }
+ else {
+ return NULL;
+ }
+}
+
+cMPEGAudioProfiler MPEGAudioProfiler; \ No newline at end of file
diff --git a/dlna/profiles/mpeg1.cpp b/dlna/profiles/mpeg1.cpp
new file mode 100644
index 0000000..9f2d67b
--- /dev/null
+++ b/dlna/profiles/mpeg1.cpp
@@ -0,0 +1,15 @@
+/*
+ * File: profiles_mpeg1.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:34
+ */
+
+#include "profiles/mpeg1.h"
+
+DLNAProfile DLNA_PROFILE_MPEG1 = { "MPEG1", "video/mpeg" };
+
+DLNAVideoMapping MPEG1_VIDEO_MAP[] =
+{
+ { &DLNA_PROFILE_MPEG1, DLNA_VCP_MPEG1, DLNA_VPP_MPEG1, DLNA_APP_MPEG1_L2 }
+}; \ No newline at end of file
diff --git a/dlna/profiles/mpeg2.cpp b/dlna/profiles/mpeg2.cpp
new file mode 100644
index 0000000..2816095
--- /dev/null
+++ b/dlna/profiles/mpeg2.cpp
@@ -0,0 +1,216 @@
+/*
+ * File: profiles_mpeg2.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:35
+ */
+
+#include "profiles/mpeg2.h"
+#include "profiles/container.h"
+#include "util.h"
+#include "profiles/ac3.h"
+#include "avdetector.h"
+
+AcceptedBitrates DLNA_VIDEOBITRATES_MPEG2_TS_NA_SYSTEM = { true, {1, Mbps(19.3927)}};
+AcceptedBitrates DLNA_VIDEOBITRATES_MPEG2_TS_EU = { true, {1, Mbps(15)}};
+AcceptedBitrates DLNA_VIDEOBITRATES_MPEG2_PS = { true, {1, Mbps(9.80)}};
+
+AcceptedResolution DLNA_RESOLUTIONS_MPEG2_PAL[] = { { 720, 576, 25, 1 },
+ { 704, 576, 25, 1 }, ///< compatibility mode for PAL
+ { 544, 576, 25, 1 },
+ { 480, 576, 25, 1 },
+ { 352, 576, 25, 1 },
+ { 352, 288, 25, 1 } };
+AcceptedResolution DLNA_RESOLUTIONS_MPEG2_NTSC_SD[] = { { 720, 480, 30, 1001},
+ { 704, 480, 30, 1001},
+ { 704, 480, 30, 1},
+ { 704, 480, 24, 1001},
+ { 704, 480, 24, 1},
+ { 640, 480, 30, 1001},
+ { 640, 480, 30, 1},
+ { 640, 480, 24, 1001},
+ { 640, 480, 24, 1},
+ { 544, 480, 30, 1001},
+ { 480, 480, 30, 1001},
+ { 352, 480, 30, 1001} };
+AcceptedResolution DLNA_RESOLUTIONS_MPEG2_NTSC_HD[] = { { 1920, 1080, 30, 1001},
+ { 1920, 1080, 30, 1},
+ { 1920, 1080, 24, 1001},
+ { 1920, 1080, 24, 1},
+ { 1280, 720, 30, 1001},
+ { 1280, 720, 30, 1},
+ { 1280, 720, 24, 1001},
+ { 1280, 720, 24, 1},
+ { 1440, 1080, 30, 1001},
+ { 1440, 1080, 30, 1},
+ { 1440, 1080, 24, 1001},
+ { 1440, 1080, 24, 1},
+ { 1280, 1080, 30, 1001},
+ { 1280, 1080, 30, 1},
+ { 1280, 1080, 24, 1001},
+ { 1280, 1080, 24, 1} };
+
+DLNAProfile DLNA_PROFILE_MPEG_PS_NTSC = { "MPEG_PS_NTSC", "video/mpeg" };
+DLNAProfile DLNA_PROFILE_MPEG_PS_NTSC_XAC3 = { "MPEG_PS_NTSC_XAC3", "video/mpeg" };
+DLNAProfile DLNA_PROFILE_MPEG_PS_PAL = { "MPEG_PS_PAL", "video/mpeg" };
+DLNAProfile DLNA_PROFILE_MPEG_PS_PAL_XAC3 = { "MPEG_PS_PAL_XAC3", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA = { "MPEG_TS_SD_NA", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_T = { "MPEG_TS_SD_NA_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_ISO = { "MPEG_TS_SD_NA_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA = { "MPEG_TS_HD_NA", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_T = { "MPEG_TS_HD_NA_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_ISO = { "MPEG_TS_HD_NA_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3 = { "MPEG_TS_SD_NA_XAC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_T = { "MPEG_TS_SD_NA_XAC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_ISO = { "MPEG_TS_SD_NA_XAC3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3 = { "MPEG_TS_HD_NA_XAC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_T = { "MPEG_TS_HD_NA_XAC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_ISO = { "MPEG_TS_HD_NA_XAC3_ISO", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU = { "MPEG_TS_SD_EU", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_T = { "MPEG_TS_SD_EU_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_SD_EU_ISO = { "MPEG_TS_SD_EU_ISO", "video/mpeg"};
+
+// The Korean profiles are almost identical to the north american profiles.
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO = { "MPEG_TS_SD_KO", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_T = { "MPEG_TS_SD_KO_T", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_ISO = { "MPEG_TS_SD_KO_ISO", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO = { "MPEG_TS_HD_KO", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_T = { "MPEG_TS_HD_KO_T", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_ISO = { "MPEG_TS_HD_KO_ISO", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3 = { "MPEG_TS_SD_KO_XAC3", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3_T = { "MPEG_TS_SD_KO_XAC3_T", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_SD_KO_XAC3_ISO = { "MPEG_TS_SD_KO_XAC3_ISO", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3 = { "MPEG_TS_HD_KO_XAC3", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3_T = { "MPEG_TS_HD_KO_XAC3_T", "video/vnd.dlna.mpeg-tts"};
+//DLNAProfile DLNA_PROFILE_MPEG_TS_HD_KO_XAC3_ISO = { "MPEG_TS_HD_KO_XAC3_ISO", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC = { "MPEG_TS_MP_LL_AAC", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC_T = { "MPEG_TS_MP_LL_AAC_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG_TS_MP_LL_AAC_ISO = { "MPEG_TS_MP_LL_AAC_ISO", "video/mpeg"};
+
+// The Elementary Stream profiles are currently not supported as they are only supported within RTP streaming
+//DLNAProfile DLNA_PROFILE_MPEG_ES_PAL = { "MPEG_ES_PAL", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_ES_NTSC = { "MPEG_ES_NTSC", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_ES_PAL_XAC3 = { "MPEG_ES_PAL_XAC3", "video/mpeg"};
+//DLNAProfile DLNA_PROFILE_MPEG_ES_NTSC_XAC3 = { "MPEG_ES_NTSC_XAC3", "video/mpeg"};
+
+DLNAVideoMapping MPEG2_VIDEO_MAP[] = {
+ { &DLNA_PROFILE_MPEG_PS_NTSC, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_LPCM},
+ { &DLNA_PROFILE_MPEG_PS_NTSC, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_PS_NTSC, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_PS_NTSC, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_PS_NTSC_XAC3, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_PS_PAL, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_LPCM},
+ { &DLNA_PROFILE_MPEG_PS_PAL, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_PS_PAL, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_PS_PAL, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_PS_PAL_XAC3, DLNA_VCP_MPEG2_PS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_XAC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_NA_XAC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_NTSC_SD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_XAC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_HD_NA_XAC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_NTSC_HD, DLNA_APP_XAC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L1},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L1},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L1},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG1_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_MPEG2_L2},
+ { &DLNA_PROFILE_MPEG_TS_SD_EU_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_PAL_SD, DLNA_APP_AC3},
+ { &DLNA_PROFILE_MPEG_TS_MP_LL_AAC, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG2_MP_LL, DLNA_APP_AAC},
+ { &DLNA_PROFILE_MPEG_TS_MP_LL_AAC_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG2_MP_LL, DLNA_APP_AAC},
+ { &DLNA_PROFILE_MPEG_TS_MP_LL_AAC_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG2_MP_LL, DLNA_APP_AAC},
+
+};
+
+DLNAProfile* cMPEG2Profiler::probeDLNAProfile(AVFormatContext* FormatCtx){
+ VideoContainerProfile VCP = MPEG2Profiler.probeContainerProfile(FormatCtx);
+ VideoPortionProfile VPP = MPEG2Profiler.probeVideoProfile(FormatCtx);
+ AudioPortionProfile APP = MPEG2Profiler.probeAudioProfile(FormatCtx);
+
+ MESSAGE(VERBOSE_METADATA, "VCP: %d, VPP: %d, APP: %d", VCP, VPP, APP);
+
+ for(int i=0; i < (int) (sizeof(MPEG2_VIDEO_MAP)/sizeof(DLNAVideoMapping)); i++){
+ if( MPEG2_VIDEO_MAP[i].VideoContainer == VCP &&
+ MPEG2_VIDEO_MAP[i].VideoProfile == VPP &&
+ MPEG2_VIDEO_MAP[i].AudioProfile == APP){
+ return MPEG2_VIDEO_MAP[i].Profile;
+ }
+ }
+
+ return NULL;
+}
+
+VideoPortionProfile cMPEG2Profiler::probeVideoProfile(AVFormatContext* FormatCtx){
+ AVCodecContext* VideoCodec = cCodecToolKit::getFirstCodecContext(FormatCtx, CODEC_TYPE_VIDEO);
+ AVStream* VideoStream = cCodecToolKit::getFirstStream(FormatCtx, CODEC_TYPE_VIDEO);
+
+ MESSAGE(VERBOSE_METADATA, "Codec-ID: %d", VideoCodec->codec_id);
+ MESSAGE(VERBOSE_METADATA, "Codec-Name: %s", VideoCodec->codec_name);
+ MESSAGE(VERBOSE_METADATA, "Codec Bitrate: %d", VideoCodec->bit_rate);
+ MESSAGE(VERBOSE_METADATA, "Codec width: %d", VideoCodec->coded_width);
+ MESSAGE(VERBOSE_METADATA, "Codec height: %d", VideoCodec->coded_height);
+ MESSAGE(VERBOSE_METADATA, "Codec Profile: %d", VideoCodec->profile);
+ MESSAGE(VERBOSE_METADATA, "Codec Level: %d", VideoCodec->level);
+ MESSAGE(VERBOSE_METADATA, "Codec Chroma: %d", VideoCodec->pix_fmt);
+ MESSAGE(VERBOSE_METADATA, "Stream aspect ratio %d:%d", VideoStream->sample_aspect_ratio.num, VideoStream->sample_aspect_ratio.den);
+ MESSAGE(VERBOSE_METADATA, "Stream fps %2.3f", av_q2d(VideoStream->r_frame_rate));
+
+ if(VideoCodec->codec_id == CODEC_ID_MPEG2VIDEO){
+ if(cCodecToolKit::matchesAcceptedResolutions(DLNA_RESOLUTIONS_MPEG2_PAL,
+ (int) (sizeof(DLNA_RESOLUTIONS_MPEG2_PAL)/sizeof(AcceptedResolution)) , VideoStream) &&
+ (cCodecToolKit::matchesAcceptedBitrates(DLNA_VIDEOBITRATES_MPEG2_TS_EU, VideoCodec) ||
+ cCodecToolKit::matchesAcceptedBitrates(DLNA_VIDEOBITRATES_MPEG2_PS, VideoCodec))){
+ return DLNA_VPP_MPEG2_PAL_SD;
+ }
+ else if(cCodecToolKit::matchesAcceptedResolutions(DLNA_RESOLUTIONS_MPEG2_NTSC_SD,
+ (int) (sizeof(DLNA_RESOLUTIONS_MPEG2_NTSC_SD)/sizeof(AcceptedResolution)), VideoStream) &&
+ (cCodecToolKit::matchesAcceptedSystemBitrate(DLNA_VIDEOBITRATES_MPEG2_TS_NA_SYSTEM, FormatCtx) ||
+ cCodecToolKit::matchesAcceptedBitrates(DLNA_VIDEOBITRATES_MPEG2_PS, VideoCodec))) {
+ return DLNA_VPP_MPEG2_NTSC_SD;
+ }
+ else if(cCodecToolKit::matchesAcceptedResolutions(DLNA_RESOLUTIONS_MPEG2_NTSC_HD,
+ (int) (sizeof(DLNA_RESOLUTIONS_MPEG2_NTSC_HD)/sizeof(AcceptedResolution)), VideoStream) &&
+ cCodecToolKit::matchesAcceptedSystemBitrate(DLNA_VIDEOBITRATES_MPEG2_TS_NA_SYSTEM, FormatCtx)) {
+ return DLNA_VPP_MPEG2_NTSC_HD;
+ }
+ }
+
+ return DLNA_VPP_UNKNOWN;
+}
+
+AudioPortionProfile cMPEG2Profiler::probeAudioProfile(AVFormatContext* FormatCtx){
+ AudioPortionProfile Profile;
+ if((Profile = AC3Profiler.probeAudioProfile(FormatCtx)) != DLNA_APP_UNKNOWN){
+ MESSAGE(VERBOSE_METADATA, "AC3: %d", Profile);
+ return Profile;
+ }
+ // First codec is not AC3... trying other codecs
+ else if((Profile = MPEGAudioProfiler.probeAudioProfile(FormatCtx)) != DLNA_APP_UNKNOWN){
+ MESSAGE(VERBOSE_METADATA, "MPA: %d", Profile);
+ return Profile;
+ }
+ else {
+ return DLNA_APP_UNKNOWN;
+ }
+}
+
+VideoContainerProfile cMPEG2Profiler::probeContainerProfile(AVFormatContext* FormatCtx){
+ return cContainerDetector::detect(FormatCtx);
+}
+
+cMPEG2Profiler MPEG2Profiler; \ No newline at end of file
diff --git a/dlna/profiles/mpeg4_p10.cpp b/dlna/profiles/mpeg4_p10.cpp
new file mode 100644
index 0000000..80e91b4
--- /dev/null
+++ b/dlna/profiles/mpeg4_p10.cpp
@@ -0,0 +1,148 @@
+/*
+ * File: profiles_mpeg4_p10.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:38
+ */
+
+#include "profiles/mpeg4_p10.h"
+
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5 = {"AVC_TS_MP_SD_AAC_MULT5", ""}; ///< AVC main profile AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5_T = {"AVC_TS_MP_SD_AAC_MULT5_T", ""}; ///< AVC main profile AAC 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_MULT5_ISO = {"AVC_TS_MP_SD_AAC_MULT5_ISO", ""}; ///< AVC main profile AAC 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2 = {"AVC_TS_MP_SD_HEAAC_L2", ""}; ///< AVC main profile HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2_T = {"AVC_TS_MP_SD_HEAAC_L2_T", ""}; ///< AVC main profile HEAAC L2 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_HEAAC_L2_ISO = {"AVC_TS_MP_SD_HEAAC_L2_ISO", ""}; ///< AVC main profile HEAAC L2 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3 = {"AVC_TS_MP_SD_MPEG1_L3", ""}; ///< AVC main profile MP3
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3_T = {"AVC_TS_MP_SD_MPEG1_L3_T", ""}; ///< AVC main profile MP3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_MPEG1_L3_ISO = {"AVC_TS_MP_SD_MPEG1_L3_ISO", ""}; ///< AVC main profile MP3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3 = {"AVC_TS_MP_SD_AC3", ""}; ///< AVC main profile AC3
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3_T = {"AVC_TS_MP_SD_AC3_T", ""}; ///< AVC main profile AC3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AC3_ISO = {"AVC_TS_MP_SD_AC3_ISO", ""}; ///< AVC main profile AC3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP = {"AVC_TS_MP_SD_AAC_LTP", ""}; ///< AVC main profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_T = {"AVC_TS_MP_SD_AAC_LTP_T", ""}; ///< AVC main profile AAC LTP with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_ISO = {"AVC_TS_MP_SD_AAC_LTP_ISO", ""}; ///< AVC main profile AAC LTP without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5 = {"AVC_TS_MP_SD_AAC_LTP_MULT5", ""}; ///< AVC main profile AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5_T = {"AVC_TS_MP_SD_AAC_LTP_MULT5_T", ""}; ///< AVC main profile AAC LTP 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT5_ISO = {"AVC_TS_MP_SD_AAC_LTP_MULT5_ISO", ""}; ///< AVC main profile AAC LTP 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7 = {"AVC_TS_MP_SD_AAC_LTP_MULT7", ""}; ///< AVC main profile AAC LTP 7.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7_T = {"AVC_TS_MP_SD_AAC_LTP_MULT7_T", ""}; ///< AVC main profile AAC LTP 7.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_AAC_LTP_MULT7_ISO = {"AVC_TS_MP_SD_AAC_LTP_MULT7_ISO", ""}; ///< AVC main profile AAC LTP 7.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC = {"AVC_TS_MP_SD_BSAC", ""}; ///< AVC main profile BSAC
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC_T = {"AVC_TS_MP_SD_BSAC_T", ""}; ///< AVC main profile BSAC with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_SD_BSAC_ISO = {"AVC_TS_MP_SD_BSAC_ISO", ""}; ///< AVC main profile BSAC without time stamp
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_MULT5 = {"AVC_MP4_MP_SD_AAC_MULT5", ""}; ///< AVC main profile MP4 AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_HEAAC_L2 = {"AVC_MP4_MP_SD_HEAAC_L2", ""}; ///< AVC main profile MP4 HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_MPEG1_L3 = {"AVC_MP4_MP_SD_MPEG1_L3", ""}; ///< AVC main profile MP4 MP3
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AC3 = {"AVC_MP4_MP_SD_AC3", ""}; ///< AVC main profile MP4 AC3
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP = {"AVC_MP4_MP_SD_AAC_LTP", ""}; ///< AVC main profile MP4 AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP_MULT5 = {"AVC_MP4_MP_SD_AAC_LTP_MULT5", ""}; ///< AVC main profile MP4 AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_AAC_LTP_MULT7 = {"AVC_MP4_MP_SD_AAC_LTP_MULT7", ""}; ///< AVC main profile MP4 AAC LTP 7.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_ATRAC3plus = {"AVC_MP4_MP_SD_ATRAC3plus", ""}; ///< AVC main profile MP4 ATRAC3+
+DLNAProfile DLNA_PROFILE_AVC_MP4_MP_SD_BSAC = {"AVC_MP4_MP_SD_BSAC", ""}; ///< AVC main profile MP4 BSAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3L_SD_AAC = {"AVC_MP4_BP_L3L_SD_AAC", ""}; ///< AVC baseline profile MP4 AAC
+DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3L_SD_HEAAC = {"AVC_MP4_BP_L3L_SD_HEAAC", ""}; ///< AVC baseline profile MP4 HEAAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BP_L3_SD_AAC = {"AVC_MP4_BP_L3_SD_AAC", ""}; ///< AVC baseline profile standard MP4 AAC
+
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5 = {"AVC_TS_BL_CIF30_AAC_MULT5", ""}; ///< AVC CIF30 baseline profile AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5_T = {"AVC_TS_BL_CIF30_AAC_MULT5_T", ""}; ///< AVC CIF30 baseline profile AAC 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_MULT5_ISO = {"AVC_TS_BL_CIF30_AAC_MULT5_ISO", ""}; ///< AVC CIF30 baseline profile AAC 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2 = {"AVC_TS_BL_CIF30_HEAAC_L2", ""}; ///< AVC CIF30 baseline profile HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2_T = {"AVC_TS_BL_CIF30_HEAAC_L2_T", ""}; ///< AVC CIF30 baseline profile HEAAC L2 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_HEAAC_L2_ISO = {"AVC_TS_BL_CIF30_HEAAC_L2_ISO", ""}; ///< AVC CIF30 baseline profile HEAAC L2 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3 = {"AVC_TS_BL_CIF30_MPEG1_L3", ""}; ///< AVC CIF30 baseline profile MP3
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3_T = {"AVC_TS_BL_CIF30_MPEG1_L3_T", ""}; ///< AVC CIF30 baseline profile MP3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_MPEG1_L3_ISO = {"AVC_TS_BL_CIF30_MPEG1_L3_ISO", ""}; ///< AVC CIF30 baseline profile MP3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3 = {"AVC_TS_BL_CIF30_AC3", ""}; ///< AVC CIF30 baseline profile AC3
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3_T = {"AVC_TS_BL_CIF30_AC3_T", ""}; ///< AVC CIF30 baseline profile AC3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AC3_ISO = {"AVC_TS_BL_CIF30_AC3_ISO", ""}; ///< AVC CIF30 baseline profile AC3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP = {"AVC_TS_BL_CIF30_AAC_LTP", ""}; ///< AVC CIF30 baseline profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_T = {"AVC_TS_BL_CIF30_AAC_LTP_T", ""}; ///< AVC CIF30 baseline profile AAC LTP with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_ISO = {"AVC_TS_BL_CIF30_AAC_LTP_ISO", ""}; ///< AVC CIF30 baseline profile AAC LTP without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5 = {"AVC_TS_BL_CIF30_AAC_LTP_MULT5", ""}; ///< AVC CIF30 baseline profile AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5_T = {"AVC_TS_BL_CIF30_AAC_LTP_MULT5_T", ""}; ///< AVC CIF30 baseline profile AAC LTP 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_LTP_MULT5_ISO = {"AVC_TS_BL_CIF30_AAC_LTP_MULT5_ISO", ""}; ///< AVC CIF30 baseline profile AAC LTP 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940 = {"AVC_TS_BL_CIF30_AAC_940", ""}; ///< AVC CIF30 baseline profile AAC 940
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940_T = {"AVC_TS_BL_CIF30_AAC_940_T", ""}; ///< AVC CIF30 baseline profile AAC 940 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF30_AAC_940_ISO = {"AVC_TS_BL_CIF30_AAC_940_ISO", ""}; ///< AVC CIF30 baseline profile AAC 940 without time stamp
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_MULT5 = {"AVC_MP4_BL_CIF30_AAC_MULT5", ""}; ///< AVC CIF30 baseline profile MP4 AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_HEAAC_L2 = {"AVC_MP4_BL_CIF30_HEAAC_L2", ""}; ///< AVC CIF30 baseline profile MP4 HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_MPEG1_L3 = {"AVC_MP4_BL_CIF30_MPEG1_L3", ""}; ///< AVC CIF30 baseline profile MP4 MP3
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AC3 = {"AVC_MP4_BL_CIF30_AC3", ""}; ///< AVC CIF30 baseline profile MP4 AC3
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_LTP = {"AVC_MP4_BL_CIF30_AAC_LTP", ""}; ///< AVC CIF30 baseline profile MP4 AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_AAC_LTP_MULT5 = {"AVC_MP4_BL_CIF30_AAC_LTP_MULT5", ""}; ///< AVC CIF30 baseline profile MP4 AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_BSAC = {"AVC_MP4_BL_CIF30_BSAC", ""}; ///< AVC CIF30 baseline profile BSAC
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF30_BSAC_MULT5 = {"AVC_MP4_BL_CIF30_BSAC_MULT5", ""}; ///< AVC CIF30 baseline profile BSAC 5.1
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L2_CIF30_AAC = {"AVC_MP4_BL_L2_CIF30_AAC", ""}; ///< AVC CIF30 baseline profile L2 AAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_HEAAC = {"AVC_MP4_BL_CIF15_HEAAC", ""}; ///< AVC CIF15 baseline profile HEAAC
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AMR = {"AVC_MP4_BL_CIF15_AMR", ""}; ///< AVC CIF15 baseline profile AMR
+
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5 = {"AVC_TS_MP_HD_AAC_MULT5", ""}; ///< AVC main profile AAC 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5_T = {"AVC_TS_MP_HD_AAC_MULT5_T", ""}; ///< AVC main profile AAC 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_MULT5_ISO = {"AVC_TS_MP_HD_AAC_MULT5_ISO", ""}; ///< AVC main profile AAC 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2 = {"AVC_TS_MP_HD_HEAAC_L2", ""}; ///< AVC main profile HEAAC L2
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2_T = {"AVC_TS_MP_HD_HEAAC_L2_T", ""}; ///< AVC main profile HEAAC L2 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_HEAAC_L2_ISO = {"AVC_TS_MP_HD_HEAAC_L2_ISO", ""}; ///< AVC main profile HEAAC L2 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3 = {"AVC_TS_MP_HD_MPEG1_L3", ""}; ///< AVC main profile MP3
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3_T = {"AVC_TS_MP_HD_MPEG1_L3_T", ""}; ///< AVC main profile MP3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_MPEG1_L3_ISO = {"AVC_TS_MP_HD_MPEG1_L3_ISO", ""}; ///< AVC main profile MP3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3 = {"AVC_TS_MP_HD_AC3", ""}; ///< AVC main profile AC3
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3_T = {"AVC_TS_MP_HD_AC3_T", ""}; ///< AVC main profile AC3 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AC3_ISO = {"AVC_TS_MP_HD_AC3_ISO", ""}; ///< AVC main profile AC3 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC = {"AVC_TS_MP_HD_AAC", ""}; ///< AVC main profile AAC
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_T = {"AVC_TS_MP_HD_AAC_T", ""}; ///< AVC main profile AAC with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_ISO = {"AVC_TS_MP_HD_AAC_ISO", ""}; ///< AVC main profile AAC without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP = {"AVC_TS_MP_HD_AAC_LTP", ""}; ///< AVC main profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_T = {"AVC_TS_MP_HD_AAC_LTP_T", ""}; ///< AVC main profile AAC LTP with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_ISO = {"AVC_TS_MP_HD_AAC_LTP_ISO", ""}; ///< AVC main profile AAC LTP without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5 = {"AVC_TS_MP_HD_AAC_LTP_MULT5", ""}; ///< AVC main profile AAC LTP 5.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5_T = {"AVC_TS_MP_HD_AAC_LTP_MULT5_T", ""}; ///< AVC main profile AAC LTP 5.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT5_ISO = {"AVC_TS_MP_HD_AAC_LTP_MULT5_ISO", ""}; ///< AVC main prpfile AAC LTP 5.1 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7 = {"AVC_TS_MP_HD_AAC_LTP_MULT7", ""}; ///< AVC main profile AAC LTP 7.1
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7_T = {"AVC_TS_MP_HD_AAC_LTP_MULT7_T", ""}; ///< AVC main profile AAC LTP 7.1 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_MP_HD_AAC_LTP_MULT7_ISO = {"AVC_TS_MP_HD_AAC_LTP_MULT7_ISO", ""}; ///< AVC main prpfile AAC LTP 7.1 without time stamp
+
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC = {"AVC_TS_BL_CIF15_AAC", ""}; ///< AVC baseline profile AAC
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_T = {"AVC_TS_BL_CIF15_AAC_T", ""}; ///< AVC baseline profile AAC with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_ISO = {"AVC_TS_BL_CIF15_AAC_ISO", ""}; ///< AVC baseline profile AAC without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540 = {"AVC_TS_BL_CIF15_AAC_540", ""}; ///< AVC baseline profile AAC 540
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540_T = {"AVC_TS_BL_CIF15_AAC_540_T", ""}; ///< AVC baseline profile AAC 540 with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_540_ISO = {"AVC_TS_BL_CIF15_AAC_540_ISO", ""}; ///< AVC baseline profile AAC 540 without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP = {"AVC_TS_BL_CIF15_AAC_LTP", ""}; ///< AVC baseline profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP_T = {"AVC_TS_BL_CIF15_AAC_LTP_T", ""}; ///< AVC baseline profile AAC LTP with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_AAC_LTP_IS0 = {"AVC_TS_BL_CIF15_AAC_LTP_IS0", ""}; ///< AVC baseline profile AAC LTP without time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC = {"AVC_TS_BL_CIF15_BSAC", ""}; ///< AVC baseline profile BSAC
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC_T = {"AVC_TS_BL_CIF15_BSAC_T", ""}; ///< AVC baseline profile BSAC with time stamp
+DLNAProfile DLNA_PROFILE_AVC_TS_BL_CIF15_BSAC_ISO = {"AVC_TS_BL_CIF15_BSAC_ISO", ""}; ///< AVC baseline profile BSAC without time stamp
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC = {"AVC_MP4_BL_CIF15_AAC", ""}; ///< AVC baseline profile AAC
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_520 = {"AVC_MP4_BL_CIF15_AAC_520", ""}; ///< AVC baseline profile AAC 520
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_LTP = {"AVC_MP4_BL_CIF15_AAC_LTP", ""}; ///< AVC baseline profile AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_AAC_LTP_520 = {"AVC_MP4_BL_CIF15_AAC_LTP_520", ""}; ///< AVC baseline profile AAC LTP 520
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_CIF15_BSAC = {"AVC_MP4_BL_CIF15_BSAC", ""}; ///< AVC baseline profile BSAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L12_CIF15_HEAAC = {"AVC_MP4_BL_L12_CIF15_HEAAC", ""}; ///< AVC baseline profile HEAAC
+
+DLNAProfile DLNA_PROFILE_AVC_MP4_BL_L1B_QCIF15_HEAAC = {"AVC_MP4_BL_L1B_QCIF15_HEAAC", ""}; ///< AVC baseline profile QCIF15
+
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_CIF30_AMR_WBplus = {"AVC_3GPP_BL_CIF30_AMR_WBplus", ""}; ///< AVC 3GPP baseline profile CIF30 AMR WB+
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_CIF15_AMR_WBplus = {"AVC_3GPP_BL_CIF15_AMR_WBplus", ""}; ///< AVC 3GPP baseline profile CIF15 AMR WB+
+
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AAC = {"AVC_3GPP_BL_QCIF15_AAC", ""}; ///< AVC 3GPP baseline profile QCIF15 AAC
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AAC_LTP = {"AVC_3GPP_BL_QCIF15_AAC_LTP", ""}; ///< AVC 3GPP baseline profile QCIF15 AAC LTP
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_HEAAC = {"AVC_3GPP_BL_QCIF15_HEAAC", ""}; ///< AVC 3GPP baseline profile QCIF15 HEAAC
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AMR_WBplus = {"AVC_3GPP_BL_QCIF15_AMR_WBplus", ""}; ///< AVC 3GPP baseline profile QCIF15 AMR WB+
+DLNAProfile DLNA_PROFILE_AVC_3GPP_BL_QCIF15_AMR = {"AVC_3GPP_BL_QCIF15_AMR", ""}; ///< AVC 3GPP baseline profile QCIF15 AMR
+
+DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU = {"AVC_TS_HD_EU", "video/vnd.dlna.mpeg-tts"}; ///< DLNA Profile for HD DVB Television broadcasts
+DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_T = {"AVC_TS_HD_EU_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_AVC_TS_HD_EU_ISO = {"AVC_TS_HD_EU_ISO", "video/mpeg"}; ///< DLNA Profile for HD DVB Television broadcasts without timestamp
+
+DLNAVideoMapping MPEG4_P10_VIDEO_MAP[] = {
+}; \ No newline at end of file
diff --git a/dlna/profiles/mpeg4_p2.cpp b/dlna/profiles/mpeg4_p2.cpp
new file mode 100644
index 0000000..5ed58ab
--- /dev/null
+++ b/dlna/profiles/mpeg4_p2.cpp
@@ -0,0 +1,129 @@
+/*
+ * File: profiles_mpeg4_p2.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:36
+ */
+
+#include "profiles/mpeg4_p2.h"
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC = { "MPEG4_P2_MP4_SP_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_HEAAC = { "MPEG4_P2_MP4_SP_HEAAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_ATRAC3plus = { "MPEG4_P2_MP4_SP_ATRAC3plus", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC_LTP = { "MPEG4_P2_MP4_SP_AAC_LTP", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AAC = { "MPEG4_P2_MP4_SP_L2_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AMR = { "MPEG4_P2_MP4_SP_L2_AMR", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_AAC = { "MPEG4_P2_MP4_SP_VGA_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_HEAAC = { "MPEG4_P2_MP4_SP_VGA_HEAAC", "video/mp4"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_AAC = { "MPEG4_P2_MP4_ASP_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC = { "MPEG4_P2_MP4_ASP_HEAAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC_MULT5 = { "MPEG4_P2_MP4_ASP_HEAAC_MULT5", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_ATRAC3plus = { "MPEG4_P2_MP4_ASP_ATRAC3plus", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_AAC = { "MPEG4_P2_MP4_ASP_L5_SO_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC = { "MPEG4_P2_MP4_ASP_L5_SO_HEAAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC_MULT5 = { "MPEG4_P2_MP4_ASP_L5_SO_HEAAC_MULT5", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_G726 = { "MPEG4_P2_MP4_ASP_L5_SO_G726", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_AAC = { "MPEG4_P2_MP4_ASP_L4_SO_AAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC = { "MPEG4_P2_MP4_ASP_L4_SO_HEAAC", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC_MULT5 = { "MPEG4_P2_MP4_ASP_L4_SO_HEAAC_MULT5", "video/mp4"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_G726 = { "MPEG4_P2_MP4_ASP_L4_SO_G726", "video/mp4"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC = { "MPEG4_P2_TS_SP_AAC", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_T = { "MPEG4_P2_TS_SP_AAC_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_ISO = { "MPEG4_P2_TS_SP_AAC_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3 = { "MPEG4_P2_TS_SP_MPEG1_L3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_T = { "MPEG4_P2_TS_SP_MPEG1_L3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_ISO = { "MPEG4_P2_TS_SP_MPEG1_L3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3 = { "MPEG4_P2_TS_SP_AC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_T = { "MPEG4_P2_TS_SP_AC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_ISO = { "MPEG4_P2_TS_SP_AC3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2 = { "MPEG4_P2_TS_SP_MPEG2_L2", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_T = { "MPEG4_P2_TS_SP_MPEG2_L2_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_IS0 = { "MPEG4_P2_TS_SP_MPEG2_L2_IS0", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3 = { "MPEG4_P2_TS_CO_AC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_T = { "MPEG4_P2_TS_CO_AC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_ISO = { "MPEG4_P2_TS_CO_AC3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2 = { "MPEG4_P2_TS_CO_MPEG2_L2", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_T = { "MPEG4_P2_TS_CO_MPEG2_L2_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_ISO = { "MPEG4_P2_TS_CO_MPEG2_L2_ISO", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC = { "MPEG4_P2_TS_ASP_AAC", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_T = { "MPEG4_P2_TS_ASP_AAC_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_ISO = { "MPEG4_P2_TS_ASP_AAC_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3 = { "MPEG4_P2_TS_ASP_MPEG1_L3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_T = { "MPEG4_P2_TS_ASP_MPEG1_L3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_ISO = { "MPEG4_P2_TS_ASP_MPEG1_L3_ISO", "video/mpeg"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3 = { "MPEG4_P2_TS_ASP_AC3", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_T = { "MPEG4_P2_TS_ASP_AC3_T", "video/vnd.dlna.mpeg-tts"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_ISO = { "MPEG4_P2_TS_ASP_AC3_ISO", "video/mpeg"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_SP_G726 = { "MPEG4_P2_ASF_SP_G726", "video/x-ms-asf"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_ASP_L5_SO_G726 = { "MPEG4_P2_ASF_ASP_L5_SO_G726", "video/x-ms-asf"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_ASF_ASP_L4_SO_G726 = { "MPEG4_P2_ASF_ASP_L4_SO_G726", "video/x-ms-asf"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC = { "MPEG4_H263_MP4_P0_L10_AAC", "video/3gpp"};
+DLNAProfile DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC_LTP = { "MPEG4_H263_MP4_P0_L10_AAC_LTP", "video/3gpp"};
+DLNAProfile DLNA_PROFILE_MPEG4_H263_3GPP_P0_L10_AMR_WBplus = { "MPEG4_H263_3GPP_P0_L10_AMR_WBplus", "video/3gpp"};
+DLNAProfile DLNA_PROFILE_MPEG4_H263_3GPP_P3_L10_AMR = { "MPEG4_H263_3GPP_P3_L10_AMR", "video/3gpp"};
+
+DLNAProfile DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AAC = { "MPEG4_P2_3GPP_SP_L0B_AAC", "video/3gpp"};
+DLNAProfile DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AMR = { "MPEG4_P2_3GPP_SP_L0B_AMR", "video/3gpp"};
+
+DLNAVideoMapping MPEG4_P2_VIDEO_MAP[] = {
+ { &DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AAC, DLNA_VCP_3GPP, DLNA_VPP_MPEG4_P2_SP_L0B, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_3GPP_SP_L0B_AMR, DLNA_VCP_3GPP, DLNA_VPP_MPEG4_P2_SP_L0B, DLNA_APP_AMR },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L2, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_L2_AMR, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L2, DLNA_APP_AMR },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_ATRAC3plus, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_ATRAC3plus },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_AAC_LTP, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC_LTP },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AAC, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AAC_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG1_L3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_MPEG2_L2_IS0, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_SP_AC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_ASF_SP_G726, DLNA_VCP_ASF, DLNA_VPP_MPEG4_P2_SP_L3, DLNA_APP_G726 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3_VGA, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_SP_VGA_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_SP_L3_VGA, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_HEAAC_MULT5, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_HEAAC_MULT5 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_ATRAC3plus, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_ATRAC3plus },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AAC_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_MPEG1_L3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_MPEG1_L3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_ASP_AC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_ASP_L5, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5_SO, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5_SO, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_HEAAC_MULT5, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5_SO, DLNA_APP_HEAAC_MULT5 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L5_SO_G726, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L5_SO, DLNA_APP_G726 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L4_SO, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L4_SO, DLNA_APP_HEAAC },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_HEAAC_MULT5, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L4_SO, DLNA_APP_HEAAC_MULT5 },
+ { &DLNA_PROFILE_MPEG4_P2_MP4_ASP_L4_SO_G726, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_ASP_L4_SO, DLNA_APP_G726 },
+ { &DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_H263_P0_L10, DLNA_APP_AAC },
+ { &DLNA_PROFILE_MPEG4_H263_MP4_P0_L10_AAC_LTP, DLNA_VCP_MP4, DLNA_VPP_MPEG4_P2_H263_P0_L10, DLNA_APP_AAC_LTP },
+ { &DLNA_PROFILE_MPEG4_H263_3GPP_P3_L10_AMR, DLNA_VCP_3GPP, DLNA_VPP_MPEG4_P2_H263_P3_L10, DLNA_APP_AMR },
+ { &DLNA_PROFILE_MPEG4_H263_3GPP_P0_L10_AMR_WBplus, DLNA_VCP_3GPP, DLNA_VPP_MPEG4_P2_H263_P0_L10, DLNA_APP_AMR_WBplus },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_AC3, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_AC3_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_AC3 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2, DLNA_VCP_MPEG2_TS, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_T, DLNA_VCP_MPEG2_TS_T, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_MPEG2_L2 },
+ { &DLNA_PROFILE_MPEG4_P2_TS_CO_MPEG2_L2_ISO, DLNA_VCP_MPEG2_TS_ISO, DLNA_VPP_MPEG4_P2_CO, DLNA_APP_MPEG2_L2 }
+}; \ No newline at end of file
diff --git a/dlna/profiles/png.cpp b/dlna/profiles/png.cpp
new file mode 100644
index 0000000..46ccc24
--- /dev/null
+++ b/dlna/profiles/png.cpp
@@ -0,0 +1,11 @@
+/*
+ * File: profiles_png.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:01
+ */
+
+#include "profiles/png.h"
+
+DLNAIconProfile DLNA_ICON_PNG_SM_24A = { "image/png", 48, 48, 24 };
+DLNAIconProfile DLNA_ICON_PNG_LRG_24A = { "image/png", 120, 120, 24 };
diff --git a/dlna/profiles/wma.cpp b/dlna/profiles/wma.cpp
new file mode 100644
index 0000000..3956d4c
--- /dev/null
+++ b/dlna/profiles/wma.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_wma.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 13:32
+ */
+
+#include "profiles/wma.h" \ No newline at end of file
diff --git a/dlna/profiles/wmv9.cpp b/dlna/profiles/wmv9.cpp
new file mode 100644
index 0000000..02e8de4
--- /dev/null
+++ b/dlna/profiles/wmv9.cpp
@@ -0,0 +1,8 @@
+/*
+ * File: profiles_wmv9.cpp
+ * Author: savop
+ *
+ * Created on 7. Dezember 2009, 14:53
+ */
+
+#include "profiles/wmv9.h" \ No newline at end of file