Utilizator:
Parola:
Am uitat parola... | Cont nou!


Articole Resurse Echipe Competiții Proiecte Forum DevBlogs Locuri de muncă GDROMag Issue#1 GDROCon 2007

 
Forum » Programare » Sunet » Ogg Streaming




Pagina 1 din 1 [ 1 ]

Mesaj Info autor
    Postat la 05 Sep 2008 22:39:19    Subiect: Ogg Streaming
Deliverance info:

Deliverance:

Intentionez sa suprascriu functiile de citire din fisier a informatiilor ce urmeaza a fi decodate de libraria vorbis. Pentru asta folosesc ov_open_callbacks pusa la dispozitie de vorbis. Initial am folosit o structura de tip FILE,a mers like charmed, insa acum vreau sa folosesc un obiect de tip ifstream pentru citirea informatiilor. Am definit functiile ce mi le cere vorbis astfel:
Cod sursă:

size_t COggStream::VorbisRead(void *ptr,
                      size_t byteSize,
                      size_t sizeToRead,
                      void *datasource)
{
    COggStream *pOggStream = (COggStream*)datasource;
    pOggStream->oggFile.read((char*)ptr, byteSize*sizeToRead);
    int actuallyRead = pOggStream->oggFile.gcount();

    return actuallyRead;
}

int COggStream::VorbisSeek(void *datasource,
                   ogg_int64_t offset,
                   int whence)
{

    COggStream *pOggStream = (COggStream*)datasource;
    pOggStream->oggFile.seekg(offset, whence);

    return 0;
}

int COggStream::VorbisClose(void *datasource)
{
    COggStream *pOggStream = (COggStream*)datasource;
    pOggStream->oggFile.close();    

    return 1;
}

long COggStream::VorbisTell(void *datasource)
{
    COggStream *pOggStream = (COggStream*)datasource;
    long currentPos = pOggStream->oggFile.tellg();
    
    return currentPos;
}
 


Insa codul nu pare sa functioneze. ov_open_callbacks se blocheaza functia VorbisRead fiind apelata continuu. Ce imi scapa de nu functioneaza codul?

Ultima editare efectuată de Deliverance pe 05 Sep 2008 22:40:05; 1 editări în total


Status:
Înregistrat pe:
13 Oct 2006 10:05:37
Vârsta: 25 ani
Mesaje: 253
Locatie: Iasi , Romania
Programator

 
    Postat la 06 Sep 2008 09:24:40    Subiect: < fara subiect >
Dark info:

Dark:

In primul rind, de ce te complici cu iostreams? Biblioteca iostreams e cel mai atroce lucru imaginabil. Nu face nimic in plus fata de fopen() si fratii lui (de fapt e un wrapper peste ele in multe implementari) dar are o sintaxa absolut cretina (uite-te cum definesti manipulatori, daca nu ma crezi).

In al doilea rind, ai deschis stream-ul ala cu std::ios_base::binary si i-ai dat cu noskipws()?

"Am crezut ca esti ceva mai avansat" - Nekitu, 2008 A.D.
Autobaza


Status:
Înregistrat pe:
12 May 2007 20:12:30
Vârsta: ? ani
Mesaje: 740
Locatie:
Programator

 
    Postat la 06 Sep 2008 15:59:13    Subiect: < fara subiect >
Deliverance info:

Deliverance:

Am rezolvat fara iostream. Am gasit functia setvbuf care ma ajuta sa obtin ceea ce vreau Very Happy


Status:
Înregistrat pe:
13 Oct 2006 10:05:37
Vârsta: 25 ani
Mesaje: 253
Locatie: Iasi , Romania
Programator

 

Pagina 1 din 1 [ 1 ]


Server time: 06:48:26 24.05.2012



[ Termeni si conditii | Contact | F.A.Q. | Funny Pictures ]

© 2006 - 2012 Copyright 7thFACTOR Entertainment - All rights reserved