* Add PCM support, assuming defaults of 44.1K and 2 channels.
This commit is contained in:
parent
f3d9805d7b
commit
ecec767f17
@ -190,6 +190,11 @@ GetAudioMetadata(const char * path, char * name)
|
|||||||
strcpy(type, "ogg");
|
strcpy(type, "ogg");
|
||||||
strcpy(mime, "application/ogg");
|
strcpy(mime, "application/ogg");
|
||||||
}
|
}
|
||||||
|
else if( ends_with(path, ".pcm") )
|
||||||
|
{
|
||||||
|
strcpy(type, "pcm");
|
||||||
|
strcpy(mime, "audio/L16");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DPRINTF(E_WARN, L_GENERAL, "Unhandled file extension on %s\n", path);
|
DPRINTF(E_WARN, L_GENERAL, "Unhandled file extension on %s\n", path);
|
||||||
|
50
tagutils/tagutils-pcm.c
Normal file
50
tagutils/tagutils-pcm.c
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
//=========================================================================
|
||||||
|
// FILENAME : tagutils-pcm.c
|
||||||
|
// DESCRIPTION : Return default PCM values.
|
||||||
|
//=========================================================================
|
||||||
|
// Copyright (c) 2009 NETGEAR, Inc. All Rights Reserved.
|
||||||
|
// based on software from Ron Pedde's FireFly Media Server project
|
||||||
|
//=========================================================================
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int
|
||||||
|
_get_pcmfileinfo(char *filename, struct song_metadata *psong)
|
||||||
|
{
|
||||||
|
struct stat file;
|
||||||
|
uint32_t sec, ms;
|
||||||
|
|
||||||
|
if( stat(filename, &file) != 0 )
|
||||||
|
{
|
||||||
|
DPRINTF(E_WARN, L_SCANNER, "Could not stat %s\n", filename);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
psong->file_size = file.st_size;
|
||||||
|
psong->bitrate = 1411200;
|
||||||
|
psong->samplerate = 44100;
|
||||||
|
psong->channels = 2;
|
||||||
|
sec = psong->file_size / (psong->bitrate / 8);
|
||||||
|
ms = ((psong->file_size % (psong->bitrate / 8)) * 1000) / (psong->bitrate / 8);
|
||||||
|
psong->song_length = (sec * 1000) + ms;
|
||||||
|
psong->lossless = 1;
|
||||||
|
|
||||||
|
asprintf(&(psong->mime), "audio/L16;rate=%d;channels=%d", psong->samplerate, psong->channels);
|
||||||
|
asprintf(&(psong->dlna_pn), "LPCM");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
22
tagutils/tagutils-pcm.h
Normal file
22
tagutils/tagutils-pcm.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
//=========================================================================
|
||||||
|
// FILENAME : tagutils-pcm.h
|
||||||
|
//=========================================================================
|
||||||
|
// Copyright (c) 2009- NETGEAR, Inc. All Rights Reserved.
|
||||||
|
//=========================================================================
|
||||||
|
|
||||||
|
/* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int _get_pcmfileinfo(char *file, struct song_metadata *psong);
|
@ -106,6 +106,7 @@ char *winamp_genre[] = {
|
|||||||
#include "tagutils-flc.h"
|
#include "tagutils-flc.h"
|
||||||
#include "tagutils-asf.h"
|
#include "tagutils-asf.h"
|
||||||
#include "tagutils-wav.h"
|
#include "tagutils-wav.h"
|
||||||
|
#include "tagutils-pcm.h"
|
||||||
|
|
||||||
static int _get_tags(char *file, struct song_metadata *psong);
|
static int _get_tags(char *file, struct song_metadata *psong);
|
||||||
static int _get_fileinfo(char *file, struct song_metadata *psong);
|
static int _get_fileinfo(char *file, struct song_metadata *psong);
|
||||||
@ -128,6 +129,7 @@ static taghandler taghandlers[] = {
|
|||||||
{ "ogg", 0, _get_oggfileinfo },
|
{ "ogg", 0, _get_oggfileinfo },
|
||||||
{ "asf", 0, _get_asffileinfo },
|
{ "asf", 0, _get_asffileinfo },
|
||||||
{ "wav", _get_wavtags, _get_wavfileinfo },
|
{ "wav", _get_wavtags, _get_wavfileinfo },
|
||||||
|
{ "pcm", 0, _get_pcmfileinfo },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -141,6 +143,7 @@ static taghandler taghandlers[] = {
|
|||||||
#include "tagutils-flc.c"
|
#include "tagutils-flc.c"
|
||||||
#include "tagutils-asf.c"
|
#include "tagutils-asf.c"
|
||||||
#include "tagutils-wav.c"
|
#include "tagutils-wav.c"
|
||||||
|
#include "tagutils-pcm.c"
|
||||||
|
|
||||||
//*********************************************************************************
|
//*********************************************************************************
|
||||||
// freetags()
|
// freetags()
|
||||||
|
3
utils.c
3
utils.c
@ -196,7 +196,8 @@ is_audio(const char * file)
|
|||||||
ends_with(file, ".fla") || ends_with(file, ".flc") ||
|
ends_with(file, ".fla") || ends_with(file, ".flc") ||
|
||||||
ends_with(file, ".m4a") || ends_with(file, ".aac") ||
|
ends_with(file, ".m4a") || ends_with(file, ".aac") ||
|
||||||
ends_with(file, ".mp4") || ends_with(file, ".m4p") ||
|
ends_with(file, ".mp4") || ends_with(file, ".m4p") ||
|
||||||
ends_with(file, ".wav") || ends_with(file, ".ogg"));
|
ends_with(file, ".wav") || ends_with(file, ".ogg") ||
|
||||||
|
ends_with(file, ".pcm"));
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
Loading…
x
Reference in New Issue
Block a user