diff --git a/generators/poppler/generator_pdf.cpp b/generators/poppler/generator_pdf.cpp index 2ef597c85..234a75717 100644 --- a/generators/poppler/generator_pdf.cpp +++ b/generators/poppler/generator_pdf.cpp @@ -109,6 +109,30 @@ static void fillViewportFromLinkDestination( Okular::DocumentViewport &viewport, // } } +Okular::Sound* createSoundFromPopplerSound( const Poppler::SoundObject *popplerSound ) +{ + Okular::Sound *sound = popplerSound->soundType() == Poppler::SoundObject::Embedded ? new Okular::Sound( popplerSound->data() ) : new Okular::Sound( popplerSound->url() ); + sound->setSamplingRate( popplerSound->samplingRate() ); + sound->setChannels( popplerSound->channels() ); + sound->setBitsPerSample( popplerSound->bitsPerSample() ); + switch ( popplerSound->soundEncoding() ) + { + case Poppler::SoundObject::Raw: + sound->setSoundEncoding( Okular::Sound::Raw ); + break; + case Poppler::SoundObject::Signed: + sound->setSoundEncoding( Okular::Sound::Signed ); + break; + case Poppler::SoundObject::muLaw: + sound->setSoundEncoding( Okular::Sound::muLaw ); + break; + case Poppler::SoundObject::ALaw: + sound->setSoundEncoding( Okular::Sound::ALaw ); + break; + } + return sound; +} + static Okular::Action* createLinkFromPopplerLink(const Poppler::Link *popplerLink) { Okular::Action *link = 0; @@ -149,25 +173,7 @@ static Okular::Action* createLinkFromPopplerLink(const Poppler::Link *popplerLin { popplerLinkSound = static_cast(popplerLink); Poppler::SoundObject *popplerSound = popplerLinkSound->sound(); - Okular::Sound *sound = popplerSound->soundType() == Poppler::SoundObject::Embedded ? new Okular::Sound( popplerSound->data() ) : new Okular::Sound( popplerSound->url() ); - sound->setSamplingRate( popplerSound->samplingRate() ); - sound->setChannels( popplerSound->channels() ); - sound->setBitsPerSample( popplerSound->bitsPerSample() ); - switch ( popplerSound->soundEncoding() ) - { - case Poppler::SoundObject::Raw: - sound->setSoundEncoding( Okular::Sound::Raw ); - break; - case Poppler::SoundObject::Signed: - sound->setSoundEncoding( Okular::Sound::Signed ); - break; - case Poppler::SoundObject::muLaw: - sound->setSoundEncoding( Okular::Sound::muLaw ); - break; - case Poppler::SoundObject::ALaw: - sound->setSoundEncoding( Okular::Sound::ALaw ); - break; - } + Okular::Sound *sound = createSoundFromPopplerSound( popplerSound ); link = new Okular::SoundAction( popplerLinkSound->volume(), popplerLinkSound->synchronous(), popplerLinkSound->repeat(), popplerLinkSound->mix(), sound ); } break;