
Recherche avancée
Médias (1)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
Autres articles (64)
-
Mise à jour de la version 0.1 vers 0.2
24 juin 2013, parExplications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...) -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)
Sur d’autres sites (7425)
-
The Ultimate List of Alternatives to Google Products
2 août 2022, par Erin — Privacy -
10 Matomo Features You Possibly Didn’t Know About
28 octobre 2022, par Erin -
Wave bytes to buffer
24 août 2016, par Mohammad Abu MusaI am encoding wav input from microphone which comes in four bytes format to ogg format. I think I have a problem shifting the bytes to the correct format here is the code I am using
To explain more I get the audio frames from Google Chrome where I get
data
asconst8
andchannels
, andsamples
.data
field is always in 4 bytes format.I copy the data to a vector of type
int16_t
then I loopuninterleave samples
which I think I am doing wrong. my question is how can I make sure the data is formatted correctly forogg
encoder to handle them correctly ?void EncoderInstance::OnGetBuffer(int32_t result, pp::AudioBuffer buffer) {
if (result != PP_OK)
return;
assert(buffer.GetSampleSize() == PP_AUDIOBUFFER_SAMPLESIZE_16_BITS);
const char* data = static_cast<const>(buffer.GetDataBuffer());
uint32_t channels = buffer.GetNumberOfChannels();
uint32_t samples = buffer.GetNumberOfSamples() / channels;
if (channel_count_ != channels || sample_count_ != samples) {
channel_count_ = channels;
sample_count_ = samples;
samples_.resize(sample_count_ * channel_count_);
// Try (+ 5) to ensure that we pick up a new set of samples between each
// timer-generated repaint.
timer_interval_ = (sample_count_ * 1000) / buffer.GetSampleRate() + 5;
// Start the timer for the first buffer.
if (first_buffer_) {
first_buffer_ = false;
ScheduleNextTimer();
}
}
if(is_audio_recording && is_audio_header_written_)
{
memcpy(samples_.data(), data,
sample_count_ * channel_count_ * sizeof(int16_t));
float **buffer=vorbis_analysis_buffer(&vd,samples);
/* uninterleave samples */
for(i=0;i4;i++)
{
buffer[0][i]=((samples_.at(i*4+1)<<8)|
(0x00ff&(int16_t)samples_.at(i*4)))/32768.f;
buffer[1][i]=((samples_.at(i*4+3)<<8)|
(0x00ff&(int16_t)samples_.at(i*4+2)))/32768.f;
}
vorbis_analysis_wrote(&vd,i);
while(vorbis_analysis_blockout(&vd,&vb)==1){
/* analysis, assume we want to use bitrate management */
vorbis_analysis(&vb,NULL);
vorbis_bitrate_addblock(&vb);
while(vorbis_bitrate_flushpacket(&vd,&op)){
/* weld the packet into the bitstream */
ogg_stream_packetin(&os,&op);
/* write out pages (if any) */
while(!eos){
int result=ogg_stream_pageout(&os,&og);
if(result==0)break;
glb_app_thread.message_loop().PostWork(callback_factory_.NewCallback(&EncoderInstance::writeAudioHeader));
if(ogg_page_eos(&og))eos=1;
}
}
}
}
audio_track_.RecycleBuffer(buffer);
audio_track_.GetBuffer(callback_factory_.NewCallbackWithOutput(
&EncoderInstance::OnGetBuffer));
}
</const>