clients: Improve Samsung BD-J5500 support

From SF user Andrea Odetti:

The Samsung BD J5500 player does not accept some of the DLNA_PN values
used by minidlna for *.mp4 files.

For instance AVC_MP4_MP_HD_720p_AAC and AVC_MP4_BL_L31_HD_AAC are
problematic as the player would simply ignore the files and not show
them.

AVC_MP4_HP_HD_AAC works.

All the files play normally from a USB key.

I've noticed as well that NULL works always, and this is the approach I
have followed.

So I changed minidlna and added a flag to disable DLNA_PN, and this
flag is only used for a Samsung BD J5500 in order not to break other
players, which can handle DLNA_PN properly.

So when a J5500 is connected we simply set DLNA_PN to NULL and
everything works well.
This commit is contained in:
Justin Maggard 2017-05-01 17:49:16 -07:00
parent f816911f0c
commit d894885bc1
3 changed files with 12 additions and 1 deletions

View File

@ -63,6 +63,13 @@ struct client_type_s client_types[] =
EUserAgent EUserAgent
}, },
{ ESamsungBDJ5500,
FLAG_SAMSUNG | FLAG_DLNA | FLAG_NO_RESIZE | FLAG_CAPTION_RES | FLAG_SKIP_DLNA_PN,
"Samsung BD J5500",
"[BD]J5500",
EUserAgent
},
/* Samsung Series [CDE] BDPs and TVs must be separated, or some of our /* Samsung Series [CDE] BDPs and TVs must be separated, or some of our
* advertised extra features trigger a folder browsing bug on BDPs. */ * advertised extra features trigger a folder browsing bug on BDPs. */
/* User-Agent: DLNADOC/1.50 SEC_HHP_BD-D5100/1.0 */ /* User-Agent: DLNADOC/1.50 SEC_HHP_BD-D5100/1.0 */
@ -324,4 +331,3 @@ AddClientCache(struct in_addr addr, int type)
return NULL; return NULL;
} }

View File

@ -37,6 +37,7 @@
#define FLAG_AUDIO_ONLY 0x00000400 #define FLAG_AUDIO_ONLY 0x00000400
#define FLAG_FORCE_SORT 0x00000800 #define FLAG_FORCE_SORT 0x00000800
#define FLAG_CAPTION_RES 0x00001000 #define FLAG_CAPTION_RES 0x00001000
#define FLAG_SKIP_DLNA_PN 0x00002000 /* during browsing */
/* Response-related flags */ /* Response-related flags */
#define FLAG_HAS_CAPTIONS 0x80000000 #define FLAG_HAS_CAPTIONS 0x80000000
#define RESPONSE_FLAGS 0xF0000000 #define RESPONSE_FLAGS 0xF0000000
@ -69,6 +70,7 @@ enum client_types {
ESamsungSeriesB, ESamsungSeriesB,
ESamsungSeriesCDEBDP, ESamsungSeriesCDEBDP,
ESamsungSeriesCDE, ESamsungSeriesCDE,
ESamsungBDJ5500,
ESonyBDP, ESonyBDP,
ESonyBravia, ESonyBravia,
ESonyInternetTV, ESonyInternetTV,

View File

@ -905,6 +905,9 @@ callback(void *args, int argc, char **argv, char **azColName)
else else
dlna_flags |= DLNA_FLAG_TM_I; dlna_flags |= DLNA_FLAG_TM_I;
if( passed_args->flags & FLAG_SKIP_DLNA_PN )
dlna_pn = NULL;
if( dlna_pn ) if( dlna_pn )
snprintf(dlna_buf, sizeof(dlna_buf), "DLNA.ORG_PN=%s;" snprintf(dlna_buf, sizeof(dlna_buf), "DLNA.ORG_PN=%s;"
"DLNA.ORG_OP=01;" "DLNA.ORG_OP=01;"