int main (int argc, char **argv) { dlna_t *dlna; dlna_profile_t *p; dlna_org_flags_t flags; if (argc < 2) { printf ("usage: %s media_filename\n", argv[0]); return -1; } flags = (dlna_org_flags_t) (DLNA_ORG_FLAG_STREAMING_TRANSFER_MODE | DLNA_ORG_FLAG_BACKGROUND_TRANSFERT_MODE | DLNA_ORG_FLAG_CONNECTION_STALL | DLNA_ORG_FLAG_DLNA_V15); printf ("Using %s\n", LIBDLNA_IDENT); dlna = dlna_init (); dlna_set_verbosity (dlna, 1); dlna_register_all_media_profiles (dlna); p = dlna_guess_media_profile (dlna, argv[1]); if (p) { char *protocol_info; printf ("ID: %s\n", p->id); printf ("MIME: %s\n", p->mime); printf ("Label: %s\n", p->label); printf ("Class: %d\n", p->class_); printf ("UPnP Object Item: %s\n", dlna_profile_upnp_object_item (p)); protocol_info = dlna_write_protocol_info (DLNA_PROTOCOL_INFO_TYPE_HTTP, DLNA_ORG_PLAY_SPEED_NORMAL, DLNA_ORG_CONVERSION_NONE, DLNA_ORG_OPERATION_RANGE, flags, p); printf ("Protocol Info: %s\n", protocol_info); free (protocol_info); } else printf ("Unknown format\n"); dlna_uninit (dlna); return 0; }
static int http_get_info (const char *filename, struct File_Info *info) { extern struct ushare_t *ut; struct upnp_entry_t *entry = NULL; struct stat st; int upnp_id = 0; char *content_type = NULL; char *protocol = NULL; if (!filename || !info) return -1; log_verbose ("http_get_info, filename : %s\n", filename); if (!strcmp (filename, CDS_LOCATION)) { set_info_file (info, CDS_DESCRIPTION_LEN, SERVICE_CONTENT_TYPE); return 0; } if (!strcmp (filename, CMS_LOCATION)) { set_info_file (info, CMS_DESCRIPTION_LEN, SERVICE_CONTENT_TYPE); return 0; } if (!strcmp (filename, MSR_LOCATION)) { set_info_file (info, MSR_DESCRIPTION_LEN, SERVICE_CONTENT_TYPE); return 0; } if (ut->use_presentation && !strcmp (filename, USHARE_PRESENTATION_PAGE)) { if (build_presentation_page (ut) < 0) return -1; set_info_file (info, ut->presentation->len, PRESENTATION_PAGE_CONTENT_TYPE); return 0; } if (ut->use_presentation && !strncmp (filename, USHARE_CGI, strlen (USHARE_CGI))) { if (process_cgi (ut, (char *) (filename + strlen (USHARE_CGI) + 1)) < 0) return -1; set_info_file (info, ut->presentation->len, PRESENTATION_PAGE_CONTENT_TYPE); return 0; } upnp_id = atoi (strrchr (filename, '/') + 1); entry = upnp_get_entry (ut, upnp_id); if (!entry) return -1; if (!entry->fullpath) return -1; if (stat (entry->fullpath, &st) < 0) return -1; if (access (entry->fullpath, R_OK) < 0) { if (errno != EACCES) return -1; info->is_readable = 0; } else info->is_readable = 1; /* file exist and can be read */ info->file_length = st.st_size; info->last_modified = st.st_mtime; info->is_directory = S_ISDIR (st.st_mode); protocol = #ifdef HAVE_DLNA entry->dlna_profile ? dlna_write_protocol_info (DLNA_PROTOCOL_INFO_TYPE_HTTP, DLNA_ORG_PLAY_SPEED_NORMAL, DLNA_ORG_CONVERSION_NONE, DLNA_ORG_OPERATION_RANGE, ut->dlna_flags, entry->dlna_profile) : #endif /* HAVE_DLNA */ mime_get_protocol (entry->mime_type); content_type = strndup ((protocol + PROTOCOL_TYPE_PRE_SZ), strlen (protocol + PROTOCOL_TYPE_PRE_SZ) - PROTOCOL_TYPE_SUFF_SZ); free (protocol); if (content_type) { info->content_type = ixmlCloneDOMString (content_type); free (content_type); } else info->content_type = ixmlCloneDOMString (""); return 0; }
int main (int argc, char **argv) { dlna_t *dlna; dlna_profile_t *p; dlna_org_flags_t flags; dlna_item_t *item; void *cookie; if (argc < 2) { printf ("usage: %s media_filename\n", argv[0]); return -1; } flags = DLNA_ORG_FLAG_STREAMING_TRANSFER_MODE | DLNA_ORG_FLAG_BACKGROUND_TRANSFERT_MODE | DLNA_ORG_FLAG_CONNECTION_STALL | DLNA_ORG_FLAG_DLNA_V15; printf ("Using %s\n", LIBDLNA_IDENT); dlna = dlna_init (); dlna_set_org_flags (dlna, flags); dlna_set_verbosity (dlna, DLNA_MSG_INFO); ffmpeg_profiler_register_all_media_profiles (); item = dlna_item_new (dlna, argv[1]); if (item) { if (item->properties) { printf ("Size: %lld bytes\n", item->filesize); printf ("Duration: %s\n", item->properties->duration); printf ("Bitrate: %d bytes/sec\n", item->properties->bitrate); printf ("SampleFrequency: %d Hz\n", item->properties->sample_frequency); printf ("BitsPerSample: %d\n", item->properties->bps); printf ("Channels: %d\n", item->properties->channels); printf ("Resolution: %s\n", item->properties->resolution); } if (item->metadata) { printf ("Title: %s\n", item->metadata->title); printf ("Artist: %s\n", item->metadata->author); printf ("Description: %s\n", item->metadata->comment); printf ("Album: %s\n", item->metadata->album); printf ("Track: %d\n", item->metadata->track); printf ("Genre: %s\n", item->metadata->genre); } dlna_item_free (item); } p = ffmpeg_profiler_guess_media_profile (argv[1], &cookie); if (p) { char *protocol_info; printf ("ID: %s\n", p->id); printf ("MIME: %s\n", p->mime); printf ("Label: %s\n", p->label); printf ("Class: %d\n", p->media_class); printf ("UPnP Object Item: %s\n", dlna_profile_upnp_object_item (p)); protocol_info = dlna_write_protocol_info (dlna, DLNA_PROTOCOL_INFO_TYPE_HTTP, DLNA_ORG_PLAY_SPEED_NORMAL, DLNA_ORG_CONVERSION_NONE, DLNA_ORG_OPERATION_RANGE, flags, p); printf ("Protocol Info: %s\n", protocol_info); free (protocol_info); } else printf ("Unknown format\n"); dlna_uninit (dlna); return 0; }