Logo

¡Bienvenido a Stratos!

Acceder

Foros



Problema al reproducir .ogg

Iniciado por Beyond, 27 de Febrero de 2008, 01:48:47 PM

« anterior - próximo »

Beyond

Hola a los expertos en programación de sonido (y los demás también :P)

Tenemos un problemilla a la hora de tratar el sonido, utilizando las librerías de Vorbis Ogg.

El tema viene a ser que cargamos un fichero y se reproduce sin problemas, hasta aquí todo bien.

Ahora, depende de en qué pc lo probemos da un error de windows justo en la función "ov_open".

Hemos investigado su documentación y dicen que en windows puede dar problemas, que una opción es utilizar "ov_open_callback".

Para cambiarlo hemos tenido algún problema al ver q el define de OV_CALLBACKS_DEFAULT no estaba donde tenía q estar (vorbisfile.h).
Después de encontrar el trozo de código q le faltaba a vorbis file, lo hemos logrado ejecutar y reproduce bien otra vez en algunos pcs pero en otros no hay forma.

Los equipos donde peta tienen los drivers de sonido actualizados y las mismas dlls q en los pcs donde funcionan.

He leido en otro hilo que alguien se enfrentó con el primer problema, y no se si lo pudo solucionar haciendo el cambio que proponen en la documentación.

Si alguien se ha tenido que pelear con esto y se acuerda de como, le agradeceriamos mucho su aportación.

Muchas gracias.
Xavi Sánchez
Evolution Dreams Studio
www.planetdelta.net
www.bombdisposalexpert.com

wereoffs

#1
Hola, yo lo tengo así

void ogg_stream::open ( string path )
{
   int result;

   if ( ! ( oggFile = fopen ( path.c_str(), "rb" ) ) )
      throw string ( "Could not open Ogg file." );

   if ( ( result = ov_open_callbacks ( oggFile, &oggStream, NULL, 0, OV_CALLBACKS_DEFAULT ) ) < 0 )
   {
      fclose ( oggFile );

      throw string ( "Could not open Ogg stream. " ) + errorString ( result );
   }

   vorbisInfo = ov_info ( &oggStream, -1 );
   vorbisComment = ov_comment ( &oggStream, -1 );

   if ( vorbisInfo->channels == 1 )
      format = AL_FORMAT_MONO16;
   else
      format = AL_FORMAT_STEREO16;


   alGenBuffers ( 2, buffers );
   check();
   alGenSources ( 1, &source );
   check();

   alSource3f ( source, AL_POSITION,        0.0, 0.0, 0.0 );
   alSource3f ( source, AL_VELOCITY,        0.0, 0.0, 0.0 );
   alSource3f ( source, AL_DIRECTION,       0.0, 0.0, 0.0 );
   alSourcef ( source, AL_ROLLOFF_FACTOR,  0.0 );
   alSourcei ( source, AL_SOURCE_RELATIVE, AL_TRUE );
   alSourcef(source, AL_GAIN, 0.1f);
}

Los include que tengo

#include <ogg/ogg.h>
#include <vorbis/vorbisfile.h>

A mi el define me venia donde tenia que venir :/ Estoy usando libogg-1.1.3 y libvorbis-1.2.0

Un saludo :)

wereoffs

Uf, el mensaje era de febrero! pos vaya, supongo que ya lo has solucionado :/

Prompt

Da igual mientras quede documentado en el foro una solución :)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.
Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.