直接显示9个声子错误“引脚无法连接”

时间:2012-05-12 01:31:20

标签: qt directshow phonon

尝试在qt的声音框架中使用Direct Show 9后端时出现以下错误:

Pins cannot connect due to not supporting the same transport. (0x80040266)

有谁知道这个错误意味着什么和/或如何修复它?这是针对声子的Direct Show 9后端的问题吗?

1 个答案:

答案 0 :(得分:2)

显然问题与错误的元数据有关。如果Id3标签不正确,则直接显示9后端会阻塞它们。我通过编写以下函数解决了这个问题:

void removeTags(UDJ::DataStore::song_info_t& song){
  static int fileCount =0;
  if(song.source.fileName().endsWith(".mp3")){
    UDJ::Logger::instance()->log("On windows and got mp3, copying and striping metadata tags");
    QString tempCopy = QDesktopServices::storageLocation(QDesktopServices::TempLocation) + "/striped" + QString::number(fileCount) +".mp3";
    if(QFile::exists(tempCopy)){
      UDJ::Logger::instance()->log("Prevoius file existed, deleting now");
      if(QFile::remove(tempCopy)){
        UDJ::Logger::instance()->log("File removal worked");
      }
    }
    bool fileCopyWorked = QFile::copy(song.source.fileName(), tempCopy);
    if(!fileCopyWorked){
      UDJ::Logger::instance()->log("File copy didn't work");
      return;
    }

    TagLib::MPEG::File file(tempCopy.toStdString().c_str()); 
    file.strip();
    file.save();
    Phonon::MediaSource newSource(tempCopy);
    song.source = newSource;
    if(fileCount == 3){
      fileCount =0;
    }
    else{
      fileCount++;
    }
  }
}

song_info_t只是一个名为source的Phonon :: MediaSource成员的结构。该功能通过使用taglib去除歌曲的所有元数据并将新歌曲保存为临时文件来工作。该函数还旋转文件名用于临时文件,以便它不会创建无限数量的临时副本文件。我希望这可以帮助其他任何有此错误的人。