cococos 2 dx FileUtils読み取りオーディオファイル、win 32とアンドロイドの違い


グローバル暗号化のためのFileUtilsエージェントの設定
//    
FileUtils::getInstance()->setDelegate(getInstance());

win32
  • win 32の下の各デコーダはFileUtilsを使用して
  • を読み取る.
  • エージェント復号化できない
  • cocos2d-x-4.0\cocos\audio\win32

  • AudioDecoderMp3
  • mpg123_open
  • #include "mpg123.h"
    
    
    bool AudioDecoderMp3::open(const char* path)
    {
    	std::string fullPath = FileUtils::getInstance()->fullPathForFilename(path);
    	if (mpg123_open(_mpg123handle, FileUtils::getInstance()->getSuitableFOpen(fullPath).c_str()) != MPG123_OK
    		|| mpg123_getformat(_mpg123handle, &rate, &channel, &mp3Encoding) != MPG123_OK)
    	{
    		ALOGE("Trouble with mpg123: %s
    ", mpg123_strerror(_mpg123handle) ); break; }

    Ogg
  • ov_fopen
  • #include "vorbis/vorbisfile.h"
    
    bool AudioDecoderOgg::open(const char* path)
    {
    	std::string fullPath = FileUtils::getInstance()->fullPathForFilename(path);
    	if (0 == ov_fopen(FileUtils::getInstance()->getSuitableFOpen(fullPath).c_str(), &_vf))
    	{
    

    Android
  • アンドロイドはまたFileUtils読み取り
  • を使用した.
  • はwin 32とアンドロイドの表現が一致しない
  • を招いた.
  • cocos2d-x-4.0\cocos\audio\android\AudioDecoderMp3.cpp
  • //AudioDecoderMp3
    bool AudioDecoderMp3::decodeToPcm()
    {
        _fileData = FileUtils::getInstance()->getDataFromFile(_url);
        if (_fileData.isNull())
        {
            return false;
        }
    
    //AudioDecoderOgg
    bool AudioDecoderOgg::decodeToPcm()
    {
        _fileData = FileUtils::getInstance()->getDataFromFile(_url);
        if (_fileData.isNull())
        {
            return false;
        }
    
    //AudioDecoderWav
    bool AudioDecoderWav::decodeToPcm()
    {
        _fileData = FileUtils::getInstance()->getDataFromFile(_url);
    

    ソリューション
  • mp 3 ogg等のオーディオファイルの復号化
  • を一時的に排除する.
    問題を記録する