Сообщения на форуме пользователя Andrey (190 стр.)
DirectShow: Проигрывание mp3, ну как поменять громкость музыки???? | 2 мар. 2006 | 21:04 | #7 |
---|
achumack
Спасибо заработало!!!!!!!!
Спасибо заработало!!!!!!!!
DirectShow: Проигрывание mp3, ну как поменять громкость музыки???? | 2 мар. 2006 | 19:28 | #5 |
---|
?
ну как никто не может ничего сказать?
А то сейчас буду OpenAL внедрять...
ну как никто не может ничего сказать?
А то сейчас буду OpenAL внедрять...
DirectShow: Проигрывание mp3, ну как поменять громкость музыки???? | 2 мар. 2006 | 17:48 | #4 |
---|
Antonz
Усе получил интерфейс...
только вот как теперь его использовать?
я вот попробовал установку громкости Прямо в метод проигрывания, но не работает:
вот что пишет утилита DirectX Error Lookup:
Усе получил интерфейс...
только вот как теперь его использовать?
я вот попробовал установку громкости Прямо в метод проигрывания, но не работает:
#define DSVOLUME_TO_B(volume) static_cast<DWORD>(- 20 * (100 - volume)) HRESULT Mp3Player::Play(PCWCH wFileName) { HRESULT hr = S_OK; IPin *pPin = NULL; IBasicAudio *audio = NULL; hr = g_pGraphBuilder -> QueryInterface(IID_IBasicAudio, reinterpret_cast<void **>(&audio)); if (!hr && audio) { hr = audio -> put_Volume(DSVOLUME_TO_B((App.soundVolume - 440) * 100 / 250)); Log::write("Set Volume: "); Log::write(DXGetErrorString9(hr)); } else { Log::write("QueryInterface IBasicAudio: "); Log::write(DXGetErrorString9(hr)); } ... } |
HRESULT: 0x80004001 (2147500033)
Name: E_NOTIMPL
Description: The function called is not supported at this time
Severity code: Failed
Facility Code: FACILITY_NULL (0)
Error Code: 0x4001 (16385)
Что не так? может громкость отдельно выставлять?
Правка: 2 мар. 2006 17:49
DirectShow: Проигрывание mp3, ну как поменять громкость музыки???? | 2 мар. 2006 | 17:21 | #3 |
---|
Antonz
>То есть драть его прямо от Граф Билдера и пробовать громкость менять. Если не поможет, то уже наверное через >системный микшер, то есть вообще без DirectShow. :-/
хм а не подскажешь как это интерфейс заполучить?
>То есть драть его прямо от Граф Билдера и пробовать громкость менять. Если не поможет, то уже наверное через >системный микшер, то есть вообще без DirectShow. :-/
хм а не подскажешь как это интерфейс заполучить?
Регистрация метода в lua | 2 мар. 2006 | 17:08 | #2 |
---|
ochelot
а ты попробуй объявить эту функцию в классе как static:
только вот с данными в классе придеться что-то делать static функция не может к ним обратиться т.к. не имее указателя this...
если такой геморой не нравиться то испольхую luabind
а ты попробуй объявить эту функцию в классе как static:
class main_win:public wxFrame { ... static int l_add_item_kadr( lua_State *l); // экспортировать в скрипт .... };
если такой геморой не нравиться то испольхую luabind
Перспектива OpenGL | 2 мар. 2006 | 16:15 | #76 |
---|
очегь хорошая темка...
OpenGL будет жить это точно.
OpenGL будет жить это точно.
DirectShow: Проигрывание mp3, ну как поменять громкость музыки???? | 2 мар. 2006 | 15:50 | #1 |
---|
Реализация:
Спасибо всем заранее.
С Уважением Андрей.
Mp3Player::~Mp3Player() { if(g_pMediaControl) g_pMediaControl->Stop(); SAFE_RELEASE(g_pSourceNext); SAFE_RELEASE(g_pSourceCurrent); SAFE_RELEASE(g_pMediaSeeking); SAFE_RELEASE(g_pMediaControl); SAFE_RELEASE(g_pGraphBuilder); // Clean up COM CoUninitialize(); return; } HRESULT Mp3Player::GraphInit() { HRESULT hr; if ( FAILED(hr = CoInitialize(NULL)) ) return hr; // Create DirectShow Graph if(FAILED(hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, reinterpret_cast<void **>(&g_pGraphBuilder)))) return hr; // Get the IMediaControl Interface if(FAILED(hr = g_pGraphBuilder->QueryInterface(IID_IMediaControl, reinterpret_cast<void **>(&g_pMediaControl)))) return hr; // Get the IMediaControl Interface if(FAILED(hr = g_pGraphBuilder->QueryInterface(IID_IMediaSeeking, reinterpret_cast<void **>(&g_pMediaSeeking)))) return hr; return S_OK; } HRESULT Mp3Player::Play(PCWCH wFileName) { HRESULT hr = S_OK; IPin *pPin = NULL; //WCHAR wFileName[MAX_PATH] = L"test.mp3"; //StrDup(wFileName, file_name.c_str() ); // OPTIMIZATION OPPORTUNITY // This will open the file, which is expensive. To optimize, this // should be done earlier, ideally as soon as we knew this was the // next file to ensure that the file load doesn't add to the // filter swapping time & cause a hiccup. // // Add the new source filter to the graph. (Graph can still be running) hr = g_pGraphBuilder->AddSourceFilter(wFileName, wFileName, &g_pSourceNext); // Get the first output pin of the new source filter. Audio sources // typically have only one output pin, so for most audio cases finding // any output pin is sufficient. if(SUCCEEDED(hr)) hr = g_pSourceNext->FindPin(L"Output", &pPin); else Log::write("File not found"); // Stop the graph if(SUCCEEDED(hr)) hr = g_pMediaControl->Stop(); // Break all connections on the filters. You can do this by adding // and removing each filter in the graph if(SUCCEEDED(hr)) { IEnumFilters *pFilterEnum = NULL; if(SUCCEEDED(hr = g_pGraphBuilder->EnumFilters(&pFilterEnum))) { int iFiltCount = 0; int iPos = 0; // Need to know how many filters. If we add/remove filters during the // enumeration we'll invalidate the enumerator while(S_OK == pFilterEnum->Skip(1)) iFiltCount++; // Allocate space, then pull out all of the IBaseFilter **ppFilters = reinterpret_cast<IBaseFilter **> (_alloca(sizeof(IBaseFilter *) * iFiltCount)); pFilterEnum->Reset(); while(S_OK == pFilterEnum->Next(1, &(ppFilters[iPos++]), NULL)); SAFE_RELEASE(pFilterEnum); for(iPos = 0; iPos < iFiltCount; iPos++) { g_pGraphBuilder->RemoveFilter(ppFilters[iPos]); // Put the filter back, unless it is the old source if(ppFilters[iPos] != g_pSourceCurrent) g_pGraphBuilder->AddFilter(ppFilters[iPos], NULL); SAFE_RELEASE(ppFilters[iPos]); } } } // We have the new output pin. Render it if(SUCCEEDED(hr)) { // Release the old source filter, if it exists SAFE_RELEASE(g_pSourceCurrent) hr = g_pGraphBuilder->Render(pPin); g_pSourceCurrent = g_pSourceNext; g_pSourceNext = NULL; } SAFE_RELEASE(pPin); SAFE_RELEASE(g_pSourceNext); // In case of errors // Re-seek the graph to the beginning if(SUCCEEDED(hr)) { LONGLONG llPos = 0; hr = g_pMediaSeeking->SetPositions(&llPos, AM_SEEKING_AbsolutePositioning, &llPos, AM_SEEKING_NoPositioning); } // Start the graph if(SUCCEEDED(hr)) hr = g_pMediaControl->Run(); return S_OK; } void Mp3Player::Stop() { g_pMediaControl->Stop(); } void Mp3Player::RePlay() { HRESULT hr = S_OK; if(SUCCEEDED(hr)) { LONGLONG llPos = 0; hr = g_pMediaSeeking->SetPositions(&llPos, AM_SEEKING_AbsolutePositioning, &llPos, AM_SEEKING_NoPositioning); } // Start the graph if(SUCCEEDED(hr)) hr = g_pMediaControl->Run(); } |
С Уважением Андрей.
Правка: 2 мар. 2006 15:51
DirectShow: Проигрывание mp3, ну как поменять громкость музыки???? | 2 мар. 2006 | 15:50 | #0 |
---|
Привет всем!!!
В проекте проигрывается музыка в формате mp3. С использованием DirectShow.
В настройках игры громкость музыки нужно менять. Как это реализовать? облазил все классы ничего подобного не встречал :(
вот готовый проигрыватель Mp3:
В проекте проигрывается музыка в формате mp3. С использованием DirectShow.
В настройках игры громкость музыки нужно менять. Как это реализовать? облазил все классы ничего подобного не встречал :(
вот готовый проигрыватель Mp3:
class Mp3Player { public: Mp3Player(); virtual ~Mp3Player(); HRESULT GraphInit(); HRESULT Play(PCWCH); void Stop(); void RePlay(); private: IGraphBuilder *g_pGraphBuilder; IMediaControl *g_pMediaControl; IMediaSeeking *g_pMediaSeeking; IBaseFilter *g_pSourceCurrent; IBaseFilter *g_pSourceNext; };
подтасовка файлов в Си | 2 мар. 2006 | 15:27 | #5 |
---|
crax
я думаю setvbuf тебе подойдет лучше всего прекрасно работает.
я думаю setvbuf тебе подойдет лучше всего прекрасно работает.
Direct3D: Артефакты при рендеринге. | 2 мар. 2006 | 15:13 | #7 |
---|
StingerX
все понятно спасибо буду пробовать...
все понятно спасибо буду пробовать...
Отслеживалие столкновений с объектами. | 2 мар. 2006 | 12:02 | #8 |
---|
Kavis
ну если сложность высокая то будешь ты изобретать велосипед не 1 год и что с него получиться незвестно...
ну если сложность высокая то будешь ты изобретать велосипед не 1 год и что с него получиться незвестно...
Direct3D: Артефакты при рендеринге. | 2 мар. 2006 | 11:48 | #5 |
---|
StingerX
>В фотошопе нужно более качественно почистить текстуру так, чтобы альфа была равномерная, тогда артифакты исчезнут.
короче я так понял что фотошоп глюченно сохранил?
>В фотошопе нужно более качественно почистить текстуру так, чтобы альфа была равномерная, тогда артифакты исчезнут.
короче я так понял что фотошоп глюченно сохранил?
Отслеживалие столкновений с объектами. | 2 мар. 2006 | 11:34 | #6 |
---|
0r@ngE
>ЗЫ. ТОМАКАКА - полный аЦЦтой
а поподробнее можно? просто я начал с него говорят исправлены ошибки в новой версии, да и скорость хорошоя говорят Newton медленнее.
>ЗЫ. ТОМАКАКА - полный аЦЦтой
а поподробнее можно? просто я начал с него говорят исправлены ошибки в новой версии, да и скорость хорошоя говорят Newton медленнее.
Direct3D: Артефакты при рендеринге. | 1 мар. 2006 | 21:37 | #3 |
---|
oistalker
>Сохраняй в png и не будет никаких артефактов.
формат нам менять нельзя...
Careless Angel
>D3DXCreateTextureFromFileEX с указанием реальных размеров картинок не помогает ???
не помогает пробовали.
All
еще варианты?
>Сохраняй в png и не будет никаких артефактов.
формат нам менять нельзя...
Careless Angel
>D3DXCreateTextureFromFileEX с указанием реальных размеров картинок не помогает ???
не помогает пробовали.
All
еще варианты?
Direct3D: Артефакты при рендеринге. | 1 мар. 2006 | 19:43 | #0 |
---|
Привет всем!!
При рендеринге текстур наблюдаются странные артефакты по краям.
Если сохранять в Photoshop'е то артефакты есть, при сохранении в 3DS Max'е их нет.
Код загрузки стандартный D3DXCreateTextureFromFile/D3DXCreateTextureFromFileInMemory.
На скриншоте видна текстура без артефакта(если смотреть InFanView) и с артефактом(если смотреть в проводнике windows)
Если не будет видно, то увеличьте изображение.
Спасибо всем заранее.
С Уважением Андрей.
При рендеринге текстур наблюдаются странные артефакты по краям.
Если сохранять в Photoshop'е то артефакты есть, при сохранении в 3DS Max'е их нет.
Код загрузки стандартный D3DXCreateTextureFromFile/D3DXCreateTextureFromFileInMemory.
На скриншоте видна текстура без артефакта(если смотреть InFanView) и с артефактом(если смотреть в проводнике windows)
Если не будет видно, то увеличьте изображение.
Спасибо всем заранее.
С Уважением Андрей.
Правка: 1 мар. 2006 19:45