mirror of
https://github.com/owntone/owntone-server.git
synced 2025-01-25 21:53:17 -05:00
Add plugin for wma transcoding based on windows media format 9.5 SDK.
This commit is contained in:
parent
15ae458b87
commit
8f8a5a5cb7
@ -108,7 +108,7 @@ typedef struct tag_db_query {
|
|||||||
|
|
||||||
int playlist_id; /* for items query */
|
int playlist_id; /* for items query */
|
||||||
int totalcount; /* returned total count */
|
int totalcount; /* returned total count */
|
||||||
void *private;
|
void *priv;
|
||||||
} DB_QUERY;
|
} DB_QUERY;
|
||||||
|
|
||||||
|
|
||||||
|
28
src/plugin.c
28
src/plugin.c
@ -530,14 +530,14 @@ int plugin_auth_handle(WS_CONNINFO *pwsc, char *username, char *pw) {
|
|||||||
|
|
||||||
/* so functions must be a tag_plugin_output_fn */
|
/* so functions must be a tag_plugin_output_fn */
|
||||||
auth_fn=(ppi->pinfo->output_fns)->auth;
|
auth_fn=(ppi->pinfo->output_fns)->auth;
|
||||||
if(auth_fn) {
|
if(auth_fn) {
|
||||||
result=auth_fn(pwsc,username,pw);
|
result=auth_fn(pwsc,username,pw);
|
||||||
_plugin_unlock();
|
_plugin_unlock();
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
_plugin_unlock();
|
_plugin_unlock();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ppi = ppi->next;
|
ppi = ppi->next;
|
||||||
@ -642,7 +642,9 @@ int _plugin_ssc_copy(WS_CONNINFO *pwsc, PLUGIN_TRANSCODE_FN *pfn,
|
|||||||
|
|
||||||
while((bytes_read=pfn->ssc_read(vp,buffer,sizeof(buffer))) > 0) {
|
while((bytes_read=pfn->ssc_read(vp,buffer,sizeof(buffer))) > 0) {
|
||||||
total_bytes_read += bytes_read;
|
total_bytes_read += bytes_read;
|
||||||
ws_writebinary(pwsc,buffer,bytes_read);
|
if(ws_writebinary(pwsc,buffer,bytes_read) != bytes_read) {
|
||||||
|
return total_bytes_read;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(bytes_read < 0)
|
if(bytes_read < 0)
|
||||||
@ -794,7 +796,7 @@ int pi_db_enum_start(char **pe, DB_QUERY *pinfo) {
|
|||||||
return DB_E_MALLOC;
|
return DB_E_MALLOC;
|
||||||
}
|
}
|
||||||
memset(pqi,0,sizeof(DBQUERYINFO));
|
memset(pqi,0,sizeof(DBQUERYINFO));
|
||||||
pinfo->private = (void*)pqi;
|
pinfo->priv = (void*)pqi;
|
||||||
|
|
||||||
if(pinfo->filter) {
|
if(pinfo->filter) {
|
||||||
pqi->pt = sp_init();
|
pqi->pt = sp_init();
|
||||||
@ -854,7 +856,7 @@ int pi_db_enum_start(char **pe, DB_QUERY *pinfo) {
|
|||||||
|
|
||||||
int pi_db_enum_fetch_row(char **pe, char ***row, DB_QUERY *pinfo) {
|
int pi_db_enum_fetch_row(char **pe, char ***row, DB_QUERY *pinfo) {
|
||||||
return db_enum_fetch_row(pe, (PACKED_MP3FILE*)row,
|
return db_enum_fetch_row(pe, (PACKED_MP3FILE*)row,
|
||||||
(DBQUERYINFO*)pinfo->private);
|
(DBQUERYINFO*)pinfo->priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
int pi_db_enum_end(char **pe) {
|
int pi_db_enum_end(char **pe) {
|
||||||
@ -872,8 +874,8 @@ void pi_db_enum_dispose(char **pe, DB_QUERY *pinfo) {
|
|||||||
if(!pinfo)
|
if(!pinfo)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(pinfo->private) {
|
if(pinfo->priv) {
|
||||||
pqi = (DBQUERYINFO *)pinfo->private;
|
pqi = (DBQUERYINFO *)pinfo->priv;
|
||||||
if(pqi->pt) {
|
if(pqi->pt) {
|
||||||
sp_dispose(pqi->pt);
|
sp_dispose(pqi->pt);
|
||||||
pqi->pt = NULL;
|
pqi->pt = NULL;
|
||||||
|
@ -162,18 +162,18 @@ int plugin_auth(WS_CONNINFO *pwsc, char *username, char *password) {
|
|||||||
readpassword = _ppi->conf_alloc_string("general","password",NULL);
|
readpassword = _ppi->conf_alloc_string("general","password",NULL);
|
||||||
if(password == NULL) { /* testing to see if we need a pw */
|
if(password == NULL) { /* testing to see if we need a pw */
|
||||||
if((readpassword == NULL) || (strlen(readpassword)==0)) {
|
if((readpassword == NULL) || (strlen(readpassword)==0)) {
|
||||||
if(readpassword) free(readpassword);
|
if(readpassword) _ppi->conf_dispose_string(readpassword);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
free(readpassword);
|
_ppi->conf_dispose_string(readpassword);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(strcasecmp(password,readpassword)) {
|
if(strcasecmp(password,readpassword)) {
|
||||||
free(readpassword);
|
_ppi->conf_dispose_string(readpassword);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
} else {
|
} else {
|
||||||
free(readpassword);
|
_ppi->conf_dispose_string(readpassword);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -190,9 +190,12 @@ void plugin_handler(WS_CONNINFO *pwsc) {
|
|||||||
int index, part;
|
int index, part;
|
||||||
int found;
|
int found;
|
||||||
|
|
||||||
|
_ppi->log(E_DBG,"Getting uri...\n");
|
||||||
|
|
||||||
string = _ppi->ws_uri(pwsc);
|
string = _ppi->ws_uri(pwsc);
|
||||||
string++;
|
string++;
|
||||||
|
|
||||||
|
_ppi->log(E_DBG,"Mallocing privinfo...\n");
|
||||||
ppi = (PRIVINFO *)malloc(sizeof(PRIVINFO));
|
ppi = (PRIVINFO *)malloc(sizeof(PRIVINFO));
|
||||||
if(ppi) {
|
if(ppi) {
|
||||||
memset(ppi,0,sizeof(PRIVINFO));
|
memset(ppi,0,sizeof(PRIVINFO));
|
||||||
|
311
src/plugins/ssc-wma.cpp
Normal file
311
src/plugins/ssc-wma.cpp
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
/*
|
||||||
|
* $Id: $
|
||||||
|
*
|
||||||
|
* Win32-only transcoder for WMA using the Windows Media Format SDK.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define _WIN32_DCOM
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <wmsdk.h>
|
||||||
|
|
||||||
|
#include "ff-plugins.h"
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
# define TRUE 1
|
||||||
|
# define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct tag_ssc_handle {
|
||||||
|
int state;
|
||||||
|
IWMSyncReader *pReader;
|
||||||
|
int errnum;
|
||||||
|
|
||||||
|
int duration;
|
||||||
|
char wav_header[44];
|
||||||
|
int wav_offset;
|
||||||
|
|
||||||
|
INSSBuffer *pBuffer;
|
||||||
|
BYTE *pdata;
|
||||||
|
DWORD data_len;
|
||||||
|
int offset;
|
||||||
|
} SSCHANDLE;
|
||||||
|
|
||||||
|
#define STATE_DONE 0
|
||||||
|
#define STATE_OPEN 1
|
||||||
|
#define STATE_STREAMOPEN 2
|
||||||
|
|
||||||
|
#define SSC_WMA_E_SUCCESS 0
|
||||||
|
#define SSC_WMA_E_NOCOM 1
|
||||||
|
#define SSC_WMA_E_NOREADER 2
|
||||||
|
#define SSC_WMA_E_OPEN 3
|
||||||
|
#define SSC_WMA_E_READ 4
|
||||||
|
|
||||||
|
char *_ssc_wma_errors[] = {
|
||||||
|
"Success",
|
||||||
|
"Could not initialize COM",
|
||||||
|
"Could not create WMA reader",
|
||||||
|
"Could not open file",
|
||||||
|
"Error while reading file"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Forwards */
|
||||||
|
void *ssc_wma_init(void);
|
||||||
|
void ssc_wma_deinit(void *pv);
|
||||||
|
int ssc_wma_open(void *pv, char *file, char *codec, int duration);
|
||||||
|
int ssc_wma_close(void *pv);
|
||||||
|
int ssc_wma_read(void *pv, char *buffer, int len);
|
||||||
|
char *ssc_wma_error(void *pv);
|
||||||
|
|
||||||
|
PLUGIN_INFO *plugin_info(PLUGIN_INPUT_FN*);
|
||||||
|
|
||||||
|
/* Globals */
|
||||||
|
PLUGIN_TRANSCODE_FN _ptfn = {
|
||||||
|
ssc_wma_init,
|
||||||
|
ssc_wma_deinit,
|
||||||
|
ssc_wma_open,
|
||||||
|
ssc_wma_close,
|
||||||
|
ssc_wma_read,
|
||||||
|
ssc_wma_error
|
||||||
|
};
|
||||||
|
|
||||||
|
PLUGIN_INPUT_FN *_ppi;
|
||||||
|
|
||||||
|
PLUGIN_INFO _pi = {
|
||||||
|
PLUGIN_VERSION, /* version */
|
||||||
|
PLUGIN_TRANSCODE, /* type */
|
||||||
|
"ssc-wma/" VERSION, /* server */
|
||||||
|
NULL, /* url */
|
||||||
|
NULL, /* output fns */
|
||||||
|
NULL, /* event fns */
|
||||||
|
&_ptfn, /* fns */
|
||||||
|
NULL, /* rend info */
|
||||||
|
"wma,wmal,wmap,wmav" /* codeclist */
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return the string representation of the last error
|
||||||
|
*/
|
||||||
|
char *ssc_wma_error(void *pv) {
|
||||||
|
SSCHANDLE *handle = (SSCHANDLE*)pv;
|
||||||
|
|
||||||
|
return _ssc_wma_errors[handle->errnum];
|
||||||
|
}
|
||||||
|
|
||||||
|
PLUGIN_INFO *plugin_info(PLUGIN_INPUT_FN *ppi) {
|
||||||
|
_ppi = ppi;
|
||||||
|
return &_pi;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *ssc_wma_init(void) {
|
||||||
|
SSCHANDLE *handle;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
hr = CoInitializeEx(NULL,COINIT_MULTITHREADED);
|
||||||
|
if(FAILED(hr)) {
|
||||||
|
_ppi->log(E_INF,"Could not initialize COM, Error code: 0x%08X\n",hr);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
handle=(SSCHANDLE *)malloc(sizeof(SSCHANDLE));
|
||||||
|
if(handle) {
|
||||||
|
memset(handle,0,sizeof(SSCHANDLE));
|
||||||
|
}
|
||||||
|
|
||||||
|
return (void*)handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ssc_wma_deinit(void *vp) {
|
||||||
|
SSCHANDLE *handle = (SSCHANDLE *)vp;
|
||||||
|
ssc_wma_close(handle);
|
||||||
|
|
||||||
|
if(handle) {
|
||||||
|
free(handle);
|
||||||
|
CoUninitialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ssc_wma_open(void *vp, char *file, char *codec, int duration) {
|
||||||
|
SSCHANDLE *handle = (SSCHANDLE*)vp;
|
||||||
|
HRESULT hr = S_OK;
|
||||||
|
WCHAR fname[PATH_MAX];
|
||||||
|
|
||||||
|
if(!handle)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
handle->state = STATE_DONE;
|
||||||
|
handle->duration = duration;
|
||||||
|
|
||||||
|
hr = WMCreateSyncReader(NULL,0,&handle->pReader);
|
||||||
|
if(FAILED(hr)) {
|
||||||
|
_ppi->log(E_INF,"Could not create WMA reader. Error code: 0x%08X\n",hr);
|
||||||
|
handle->errnum = SSC_WMA_E_NOREADER;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* convert file name to wchar */
|
||||||
|
MultiByteToWideChar(GetACP(),0,file,-1,fname,sizeof(fname)/sizeof(fname[0]));
|
||||||
|
|
||||||
|
hr = handle->pReader->Open(fname);
|
||||||
|
if(FAILED(hr)) {
|
||||||
|
_ppi->log(E_INF,"Could not open file. Error code: 0x%08X\n",hr);
|
||||||
|
handle->errnum = SSC_WMA_E_OPEN;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
handle->state=STATE_OPEN;
|
||||||
|
|
||||||
|
hr = handle->pReader->SetRange(0,0);
|
||||||
|
if(FAILED(hr)) {
|
||||||
|
_ppi->log(E_INF,"Could not set range. Error code: 0x%08X\n",hr);
|
||||||
|
handle->errnum = SSC_WMA_E_OPEN;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr = handle->pReader->SetReadStreamSamples(1,0);
|
||||||
|
if(FAILED(hr)) {
|
||||||
|
_ppi->log(E_INF,"Could not stream samples. Error code: 0x%08X\n",hr);
|
||||||
|
handle->errnum = SSC_WMA_E_OPEN;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ssc_wma_close(void *vp) {
|
||||||
|
SSCHANDLE *handle = (SSCHANDLE *)vp;
|
||||||
|
|
||||||
|
if(!handle)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if(handle->state >= STATE_OPEN) {
|
||||||
|
handle->pReader->Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(handle->pReader)
|
||||||
|
handle->pReader->Release();
|
||||||
|
handle->pReader = NULL;
|
||||||
|
|
||||||
|
handle->state = STATE_DONE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int ssc_wma_read(void *vp, char *buffer, int len) {
|
||||||
|
SSCHANDLE *handle = (SSCHANDLE *)vp;
|
||||||
|
int bytes_returned = 0;
|
||||||
|
int bytes_to_copy;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
unsigned int channels, sample_rate, bits_per_sample;
|
||||||
|
unsigned int byte_rate, block_align, duration;
|
||||||
|
|
||||||
|
QWORD sample_time=0, sample_duration=0;
|
||||||
|
DWORD sample_len=0, flags=0, output_number=0;
|
||||||
|
|
||||||
|
/* if we have not yet sent the header, let's do that first */
|
||||||
|
if(handle->wav_offset != sizeof(handle->wav_header)) {
|
||||||
|
/* still have some to send */
|
||||||
|
if(!handle->wav_offset) {
|
||||||
|
/* Should pull this from format info in the wma file */
|
||||||
|
channels = 2;
|
||||||
|
sample_rate = 44100;
|
||||||
|
bits_per_sample = 16;
|
||||||
|
|
||||||
|
if(handle->duration)
|
||||||
|
duration = handle->duration;
|
||||||
|
|
||||||
|
sample_len = ((bits_per_sample * sample_rate * channels / 8) * (duration/1000));
|
||||||
|
byte_rate = sample_rate * channels * bits_per_sample / 8;
|
||||||
|
block_align = channels * bits_per_sample / 8;
|
||||||
|
|
||||||
|
_ppi->log(E_DBG,"Channels.......: %d\n",channels);
|
||||||
|
_ppi->log(E_DBG,"Sample rate....: %d\n",sample_rate);
|
||||||
|
_ppi->log(E_DBG,"Bits/Sample....: %d\n",bits_per_sample);
|
||||||
|
|
||||||
|
memcpy(&handle->wav_header[0],"RIFF",4);
|
||||||
|
*((unsigned int*)(&handle->wav_header[4])) = 36 + sample_len;
|
||||||
|
memcpy(&handle->wav_header[8],"WAVE",4);
|
||||||
|
memcpy(&handle->wav_header[12],"fmt ",4);
|
||||||
|
*((unsigned int*)(&handle->wav_header[16])) = 16;
|
||||||
|
*((unsigned short*)(&handle->wav_header[20])) = 1;
|
||||||
|
*((unsigned short*)(&handle->wav_header[22])) = channels;
|
||||||
|
*((unsigned int*)(&handle->wav_header[24])) = sample_rate;
|
||||||
|
*((unsigned int*)(&handle->wav_header[28])) = byte_rate;
|
||||||
|
*((unsigned short*)(&handle->wav_header[32])) = block_align;
|
||||||
|
*((unsigned short*)(&handle->wav_header[34])) = bits_per_sample;
|
||||||
|
memcpy(&handle->wav_header[36],"data",4);
|
||||||
|
*((unsigned int*)(&handle->wav_header[40])) = sample_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
bytes_to_copy = sizeof(handle->wav_header) - handle->wav_offset;
|
||||||
|
if(len < bytes_to_copy)
|
||||||
|
bytes_to_copy = len;
|
||||||
|
|
||||||
|
memcpy(buffer,&handle->wav_header[handle->wav_offset],bytes_to_copy);
|
||||||
|
handle->wav_offset += bytes_to_copy;
|
||||||
|
return bytes_to_copy;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* see if we have any leftover data */
|
||||||
|
if(handle->data_len) {
|
||||||
|
bytes_returned = handle->data_len;
|
||||||
|
if(bytes_returned > len) {
|
||||||
|
bytes_returned = len;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(buffer,handle->pdata + handle->offset,bytes_returned);
|
||||||
|
handle->offset += bytes_returned;
|
||||||
|
handle->data_len -= bytes_returned;
|
||||||
|
|
||||||
|
if(!handle->data_len) {
|
||||||
|
handle->pBuffer->Release();
|
||||||
|
handle->pBuffer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bytes_returned;
|
||||||
|
}
|
||||||
|
|
||||||
|
handle->offset = 0;
|
||||||
|
hr = handle->pReader->GetNextSample(1,&handle->pBuffer,&sample_time, &sample_duration, &flags, &output_number, NULL);
|
||||||
|
if(SUCCEEDED(hr)) {
|
||||||
|
hr = handle->pBuffer->GetBufferAndLength(&handle->pdata, &handle->data_len);
|
||||||
|
if(FAILED(hr)) {
|
||||||
|
_ppi->log(E_LOG,"Read error while transcoding file\n");
|
||||||
|
handle->errnum = SSC_WMA_E_READ;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ppi->log(E_DBG,"Read %d bytes\n",handle->data_len);
|
||||||
|
|
||||||
|
bytes_returned = handle->data_len;
|
||||||
|
if(bytes_returned > len)
|
||||||
|
bytes_returned = len;
|
||||||
|
|
||||||
|
memcpy(buffer,handle->pdata + handle->offset,bytes_returned);
|
||||||
|
handle->offset += bytes_returned;
|
||||||
|
handle->data_len -= bytes_returned;
|
||||||
|
|
||||||
|
if(!handle->data_len) {
|
||||||
|
handle->pBuffer->Release();
|
||||||
|
handle->pBuffer = NULL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bytes_returned;
|
||||||
|
}
|
@ -43,8 +43,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="..\versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
@ -91,8 +90,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="..\versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -19,6 +19,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FireflyShell", "FireflyShel
|
|||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssc-wma", "ssc-wma\ssc-wma.vcproj", "{C1EF5133-DFB3-4FEC-B999-3655DBB14785}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfiguration) = preSolution
|
GlobalSection(SolutionConfiguration) = preSolution
|
||||||
Debug = Debug
|
Debug = Debug
|
||||||
@ -45,6 +49,10 @@ Global
|
|||||||
{ED38F171-854B-4EA3-B3A0-7681648969FC}.Debug.Build.0 = Debug|Win32
|
{ED38F171-854B-4EA3-B3A0-7681648969FC}.Debug.Build.0 = Debug|Win32
|
||||||
{ED38F171-854B-4EA3-B3A0-7681648969FC}.Release.ActiveCfg = Release|Win32
|
{ED38F171-854B-4EA3-B3A0-7681648969FC}.Release.ActiveCfg = Release|Win32
|
||||||
{ED38F171-854B-4EA3-B3A0-7681648969FC}.Release.Build.0 = Release|Win32
|
{ED38F171-854B-4EA3-B3A0-7681648969FC}.Release.Build.0 = Release|Win32
|
||||||
|
{C1EF5133-DFB3-4FEC-B999-3655DBB14785}.Debug.ActiveCfg = Debug|Win32
|
||||||
|
{C1EF5133-DFB3-4FEC-B999-3655DBB14785}.Debug.Build.0 = Debug|Win32
|
||||||
|
{C1EF5133-DFB3-4FEC-B999-3655DBB14785}.Release.ActiveCfg = Release|Win32
|
||||||
|
{C1EF5133-DFB3-4FEC-B999-3655DBB14785}.Release.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
@ -47,8 +47,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
@ -99,8 +98,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
PreprocessorDefinitions="_WIN32;HAVE_CONFIG_H;ZLIB_DLL"
|
PreprocessorDefinitions="_WIN32;HAVE_CONFIG_H;ZLIB_DLL"
|
||||||
MinimalRebuild="TRUE"
|
MinimalRebuild="TRUE"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="3"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="TRUE"
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
@ -47,8 +47,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
@ -74,7 +73,7 @@
|
|||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
AdditionalIncludeDirectories="..\win32;.;..\src"
|
AdditionalIncludeDirectories="..\win32;.;..\src"
|
||||||
PreprocessorDefinitions="_WIN32;HAVE_CONFIG_H;ZLIB_DLL"
|
PreprocessorDefinitions="_WIN32;HAVE_CONFIG_H;ZLIB_DLL"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="2"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="TRUE"
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
@ -99,8 +98,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -46,8 +46,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
@ -97,8 +96,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
|
14
win32/ssc-wma/resource.h
Normal file
14
win32/ssc-wma/resource.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
//{{NO_DEPENDENCIES}}
|
||||||
|
// Microsoft Visual C++ generated include file.
|
||||||
|
// Used by ssc-wma.rc
|
||||||
|
|
||||||
|
// Next default values for new objects
|
||||||
|
//
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
#define _APS_NEXT_RESOURCE_VALUE 101
|
||||||
|
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||||
|
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||||
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
|
#endif
|
||||||
|
#endif
|
4
win32/ssc-wma/ssc-wma.def
Normal file
4
win32/ssc-wma/ssc-wma.def
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
LIBRARY ssc-wma
|
||||||
|
EXPORTS
|
||||||
|
plugin_info
|
||||||
|
|
103
win32/ssc-wma/ssc-wma.rc.templ
Normal file
103
win32/ssc-wma/ssc-wma.rc.templ
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
// Microsoft Visual C++ generated resource script.
|
||||||
|
//
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
|
//
|
||||||
|
#include "afxres.h"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// English (U.S.) resources
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
|
#ifdef _WIN32
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
#pragma code_page(1252)
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// TEXTINCLUDE
|
||||||
|
//
|
||||||
|
|
||||||
|
1 TEXTINCLUDE
|
||||||
|
BEGIN
|
||||||
|
"resource.h\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
2 TEXTINCLUDE
|
||||||
|
BEGIN
|
||||||
|
"#include ""afxres.h""\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
3 TEXTINCLUDE
|
||||||
|
BEGIN
|
||||||
|
"\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Version
|
||||||
|
//
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 1,0,0,$WCREV$
|
||||||
|
PRODUCTVERSION 1,0,0,$WCREV$
|
||||||
|
FILEFLAGSMASK 0x17L
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS 0x1L
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS 0x4L
|
||||||
|
FILETYPE 0x2L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Comments", "http://www.fireflymediaserver.org"
|
||||||
|
VALUE "CompanyName", "Ron Pedde"
|
||||||
|
VALUE "FileDescription", "WMA Transcoder Plugin"
|
||||||
|
VALUE "FileVersion", "1.0 svn-$WCREV$"
|
||||||
|
VALUE "InternalName", "ssc-wma"
|
||||||
|
VALUE "LegalCopyright", "Copyright (C) 2006 Ron Pedde"
|
||||||
|
VALUE "OriginalFilename", "ssc-wma.dll"
|
||||||
|
VALUE "ProductName", "Firefly Media Server"
|
||||||
|
VALUE "ProductVersion", "1.0 svn-$WCREV$"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1200
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif // English (U.S.) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 3 resource.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#endif // not APSTUDIO_INVOKED
|
||||||
|
|
149
win32/ssc-wma/ssc-wma.vcproj
Normal file
149
win32/ssc-wma/ssc-wma.vcproj
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="7.10"
|
||||||
|
Name="ssc-wma"
|
||||||
|
ProjectGUID="{C1EF5133-DFB3-4FEC-B999-3655DBB14785}"
|
||||||
|
Keyword="Win32Proj">
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"/>
|
||||||
|
</Platforms>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="..\Debug"
|
||||||
|
IntermediateDirectory="Debug"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..;..\..\src"
|
||||||
|
PreprocessorDefinitions="HAVE_CONFIG_H"
|
||||||
|
MinimalRebuild="TRUE"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
|
DebugInformationFormat="4"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="wmvcore.lib"
|
||||||
|
OutputFile="$(OutDir)/ssc-wma.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
ModuleDefinitionFile="ssc-wma.def"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/ssc-wma.pdb"
|
||||||
|
SubSystem="2"
|
||||||
|
ImportLibrary="$(OutDir)/ssc-wma.lib"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="..\Release"
|
||||||
|
IntermediateDirectory="Release"
|
||||||
|
ConfigurationType="2"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="..;..\..\src"
|
||||||
|
PreprocessorDefinitions="HAVE_CONFIG_H"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
|
DebugInformationFormat="3"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="wmvcore.lib"
|
||||||
|
OutputFile="$(OutDir)/ssc-wma.dll"
|
||||||
|
LinkIncremental="1"
|
||||||
|
ModuleDefinitionFile="ssc-wma.def"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
ImportLibrary="$(OutDir)/ssc-wma.lib"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\plugins\ssc-wma.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\ssc-wma.def">
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Header Files"
|
||||||
|
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||||
|
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||||
|
<File
|
||||||
|
RelativePath=".\resource.h">
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Resource Files"
|
||||||
|
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||||
|
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
|
||||||
|
<File
|
||||||
|
RelativePath=".\ssc-wma.rc">
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
@ -11,3 +11,4 @@ echo Fixing version info...
|
|||||||
%SUBWC% %0\..\.. %0\..\rsp.rc.templ %0\..\rsp.rc
|
%SUBWC% %0\..\.. %0\..\rsp.rc.templ %0\..\rsp.rc
|
||||||
%SUBWC% %0\..\.. %0\..\w32-event.rc.templ %0\..\w32-event.rc
|
%SUBWC% %0\..\.. %0\..\w32-event.rc.templ %0\..\w32-event.rc
|
||||||
%SUBWC% %0\..\.. %0\..\FireflyShell\version.h.templ %0\..\FireflyShell\version.h
|
%SUBWC% %0\..\.. %0\..\FireflyShell\version.h.templ %0\..\FireflyShell\version.h
|
||||||
|
%SUBWC% %0\..\.. %0\..\ssc-wma\ssc-wma.rc.templ %0\..\ssc-wma\ssc-wma.rc
|
||||||
|
@ -47,8 +47,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
@ -98,8 +97,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"/>
|
Name="VCPostBuildEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"/>
|
||||||
CommandLine="versionize.bat"/>
|
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreLinkEventTool"/>
|
Name="VCPreLinkEventTool"/>
|
||||||
<Tool
|
<Tool
|
||||||
|
Loading…
x
Reference in New Issue
Block a user