-Цитата от KEK$
братва, выручайте
установил новый фрукт, так в эдисоне драг не работает.
уже и в разных форматах сохранял и пихал в плейлист, и в сэмплер, и в аудиоклип, никуда не перетягивается. притом что из самого аудиоклипа весь кусок идет в плейлистЮ а из эдисона нет
Добавлено через 2 минуты 27 секунд
охохо, знаете что мне выдало:
error in acmstreamopen(). no acm filter found capable of decoding
сейчас пойду кодеки глядеть
ребят, проблему решить не могу никак
все та же ошибка
на различных форумах видел штуку про установку vorbis - нашел, установил, результата ноль
никакие плагині не зарускаются, сємплер не работает
система: windows 7x64
кто может, выручайте
Добавлено через 16 минут 56 секунд
я часто нахожу на англоязычных сайт какие-то коды, но ума не приложу куда их совать
вот на русском нашел
http://compression.ru/forum/messages/906.htm Код:
#include
#include
#include
#include
#include
#define WMA_BLOCK_SIZE 1000
#define SOURCE_WMA "d:wma_simple.wma"
#define OUTPUT_PCM_FILE "d:wma_simple.wav"
HACMDRIVERID WMADriverID[16];
int nWMADriverID=0;
BOOL CALLBACK acmDriverEnumCallback( HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport )
{
if( fdwSupport & ACMDRIVERDETAILS_SUPPORTF_CODEC )
{
MMRESULT mmr;
ACMDRIVERDETAILS details;
details.cbStruct = sizeof(ACMDRIVERDETAILS);
mmr = acmDriverDetails( hadid, &details, 0 );
HACMDRIVER driver;
mmr = acmDriverOpen( &driver, hadid, 0 );
for (int i = 0; i cbSize;i++)
{
printf("%02x ",*(wmaFormat+sizeof(WAVEFORMATEX)+i));
}
printf("\n");
}
convertWMA()
{
MMRESULT mmr;
acmDriverEnum( acmDriverEnumCallback, 0, 0 );
if(nWMADriverID == 0)
{
OutputDebugString( "No WMA decoders found!\n" );
return E_FAIL;
}
HACMDRIVER hWMADriver;
int index=1;
acmDriverOpen(&hWMADriver,WMADriverID[index],0);
DWORD maxFormatSize = 0;
mmr = acmMetrics( NULL, ACM_METRIC_MAX_SIZE_FORMAT, &maxFormatSize );
LPWAVEFORMATEX wmaFormat = (LPWAVEFORMATEX) LocalAlloc( LPTR, maxFormatSize );
memset(wmaFormat,0,maxFormatSize);
LPWAVEFORMATEX wavFormat = (LPWAVEFORMATEX) LocalAlloc( LPTR, maxFormatSize );
memset(wavFormat,0,maxFormatSize);
wavFormat->wFormatTag = WAVE_FORMAT_PCM;
wavFormat->nChannels = 2;
wavFormat->nSamplesPerSec = 44100;
wavFormat->nAvgBytesPerSec = 4 * 44100;
wavFormat->nBlockAlign = 4;
wavFormat->wBitsPerSample = 16;
wavFormat->cbSize = 0;
ChooseFormat(wmaFormat, wavFormat);
g_wmastream = NULL;
mmr = acmStreamOpen( &g_wmastream,
hWMADriver,
(LPWAVEFORMATEX) wmaFormat,
wavFormat,
NULL,
0,
0,
0
);
LocalFree( wmaFormat );
LocalFree( wavFormat );
switch( mmr )
{
case MMSYSERR_NOERROR:
break; // success!
case MMSYSERR_INVALPARAM:
assert( !"Invalid parameters passed to acmStreamOpen" );
return E_FAIL;
case ACMERR_NOTPOSSIBLE:
assert( !"No ACM filter found capable of decoding WMA" );
return E_FAIL;
default:
assert( !"Some error opening ACM decoding stream!" );
return E_FAIL;
}
// WMA stream converter opened correctly
// now, let's open a file, read in a bunch of WMA data, and convert it!
// open file
FILE *fpIn = fopen( SOURCE_WMA, "rb" );
if( fpIn == NULL )
{
assert( !"can't open input WMA file!" );
return E_FAIL;
}
// find out how big the decompressed buffer will be
unsigned long rawbufsize = 0;
mmr = acmStreamSize( g_wmastream, WMA_BLOCK_SIZE, &rawbufsize, ACM_STREAMSIZEF_SOURCE );
assert( mmr == 0 );
assert( rawbufsize > 0 );
// allocate our I/O buffers
LPBYTE wmabuf = (LPBYTE) LocalAlloc( LPTR, WMA_BLOCK_SIZE );
LPBYTE rawbuf = (LPBYTE) LocalAlloc( LPTR, rawbufsize );
// prepare the decoder
ACMSTREAMHEADER wmastreamHead;
ZeroMemory( &wmastreamHead, sizeof(ACMSTREAMHEADER ) );
wmastreamHead.cbStruct = sizeof(ACMSTREAMHEADER );
wmastreamHead.pbSrc = wmabuf;
wmastreamHead.cbSrcLength = WMA_BLOCK_SIZE;
wmastreamHead.pbDst = rawbuf;
wmastreamHead.cbDstLength = rawbufsize;
mmr = acmStreamPrepareHeader( g_wmastream, &wmastreamHead, 0 );
assert( mmr == 0 );
// let's dump this data off to disk (for debug checking!)
FILE *fpOut = fopen( OUTPUT_PCM_FILE, "wb" );
if( fpOut == NULL )
{
assert( !"can't open output PCM file!" );
return E_FAIL;
}
while(1)
{
// suck in some WMA data
int count = fread( wmabuf, 1, WMA_BLOCK_SIZE, fpIn );
if( count != WMA_BLOCK_SIZE )
break;
// convert the data
mmr = acmStreamConvert( g_wmastream, &wmastreamHead, ACM_STREAMCONVERTF_BLOCKALIGN );
switch( mmr )
{
case 0:
break; // success!
case ACMERR_BUSY:
printf( "acmStreamConvert FAILED\n" );
return E_FAIL;
case ACMERR_UNPREPARED:
printf( "acmStreamConvert FAILED\n" );
return E_FAIL;
case MMSYSERR_INVALFLAG:
printf( "acmStreamConvert FAILED\n" );
return E_FAIL;
case MMSYSERR_INVALHANDLE:
printf( "acmStreamConvert FAILED\n" );
return E_FAIL;
case MMSYSERR_INVALPARAM:
printf( "acmStreamConvert FAILED\n" );
return E_FAIL;
default:
assert( !"Some error opening ACM decoding stream!" );
return E_FAIL;
break;
}
// write the decoded PCM to disk
count = fwrite( rawbuf, 1, wmastreamHead.cbDstLengthUsed, fpOut );
assert( count == (int)wmastreamHead.cbDstLengthUsed );
};
// clean up after yourself like a good little boy
fclose( fpIn );
fclose( fpOut );
mmr = acmStreamUnprepareHeader( g_wmastream, &wmastreamHead, 0 );
assert( mmr == 0 );
LocalFree(rawbuf);
LocalFree(wmabuf);
mmr = acmStreamClose( g_wmastream, 0 );
assert( mmr == 0 );
return S_OK;
}
void main()
{
convertWMA();
}