- In QqWidget::QqWidget, modified the FPS to be changed in percentage.
changed actualFps and normalFps to be taken as a float.
- In FPS:: , modified to use float instead of int.
- In oggmux_add_audio, limit the ratio to +- 10% resampling, which
is a lot ..... just in case of big drift.
- in oggmux_init, initialised the SRC_DATA struct.
In oggmux_add_audio, resample with src_process function.
In oggmux_flush, calculate the ratio in accordance with difference
between vorbis and theora.
There is some work to do to avoid sound distortion :)
- in QJackClient, modified sample rate parameter when creating the AudioCollector
object. This modify the vorbis speed when streaming.
Commented out ::chgSampleRate() since it is not used
- in init_info(), use again the skeleton.
- VideoEncoder::thread_loop(), shaws the shout delay for testing.
- In VideoEncoder, added bitrate calculation to ::thread_loop().
Added the ::getStreamRate method to ask for the value.
- In QEncoder, created a QTimer which ask VideoEncoder the average
streaming bitrate in KBps every 2 seconds.
Added the Birate field in the display.
- In V4L2CamLayer, multiplied by two the height parameter
in the ccvt_yuyv_bgr32 function .... tested on 3 different
v4l2 devices, and works fine. Added some devices parameter characteristics
displays.
- In TextLayer destructor, commented out close() method that was generated
a SEGFAULT.
- In QqWidget destructor now stop and delete the layer attached.
Text Layer can be closed and text disappears.
- In oggmux_init, sets back the average vorbis bit rate value
in the oggmux_info struct to be able to use it.
Now gets vorbis quality from oggmux_info. Replaced 48000 by oggmux_info
sample_rate.
- In struct oggmux_info, added aveVorBitRate to log the average audio
bit rate value, which depends on vorbis_quality.
- In OggTheoraEncoder::init, now calculates vorbis_quality so that it
is from -0.1 and 1.0 as in vorbis specification when input value is
in between 0 to 100. Added a method to get aveVorBitRate value.
- In QJackClient::init, suppressed the Jack m_SampleRate value
since it is already done by the AudioCollector constructor
- In QEncoder, now gets the bit rate from the OggTheoraEncoder after
launched.
- In VideoLayer::open, try to first use the r_frame_rate instead of the
time_base to calculate the frame rate. Frame rate was wrong (x10) on some
mp4 files (empirical).
- In QqWidget, no more need to test if fps is wrong .... I hope :)
In destructor, commented out ctx->rem_layer(qLayer); to avoid SEGFAULT
on close.
- In OggTheoraEncoder, added a function to change the audio mixing
coefficient.
- In QJackClient, added a slider to control mixing coefficient
between the Jack Input port and the video layer sound track.
Now deletes when closing the object.
- In Qfreej, added a function to put the QJackClient ptr to NULL;
- in OggTheoraEncoder, added a m_MixVal sound mix level coefficient.
Same change as previous commit, test how many channels there is
before copying audio data.
- in OggTheoraEncoder, remove rv attribute from the class, passes
it directly to the encode_audio function.
Sound was wrong when streaming a one channel audio, and now
should be fixed :)
In ::Mux tests if there is one or two channels
- in OggTheoraEncoder::init, sets to minimum one audio channel to be
encoded if there is audio.
- in QJackClient, shows the Jack number of inputs (only one for the moment).
From the constructor tells Qfreej audio is on.
- in Qfreej:: added capability to tell it there is audio or not.
- In QqFilterParam constructor setted WA_QuitOnClose to false
so that the filter window closes if the main window closes.
- Same for QqWidget
- Same for QEncoder
Erased some wrong delete :)
- in QqWidget, initialyse *m_qGeneLayer to NULL. Deleted some lines
commented out code.
Added a QLogger class for the future logs ... I hope
- in Qfreej, now connects Exit from the menu to the close() method
inherited by QWidget. Commented out setAttribute(Qt::WA_DeleteOnClose);
to avoid SEGFAULT.
- in QEncoder, moved creation of the OggTheoraEncoder object to
be able to take parameters changes into account.
Does not matter anymore in which order you open the QJackClient or the
QEncoder.
You can close to stop encoding and create again the QEncoder to
stream again, and change parameters if you want.
- in OggTheoraEncoder::init, now take audio channels from the JackClient.
Deletes some comments
- In QEncoder, now delete the encoder when clicking STOP button.
Opens it again to stream again.
Don't stream audio if QJackClient created after QEncoder
(as OggtheoraEncoder initialises his parameters in his constuctor,
and say no sound if there is no AudioCollector created ...normal)
Now can stream to an icecast server, dump to a file, or both.
- in QJackClient, records if it was launched before QEncoder or not.
- in Qfreej, replaced the Encode name in menu by Stream
- in QqWidget now creates as many Jack Output ports as there is in
the VideoLayer when QJackClient is launched and none already exists.
- QEncoder no longer herits from OggTheoraEncoder. It can move
in the future. Now deletes on close. Better communication with
QJackClient.
- in QJackClient, now can add Jack Outputs. Now creates the
AudioCollector needed for encoding. Better communication with
QEncoder.
- in JackClient::Process, controls if an encoder running before
filling the encoders ring buffers.
- in JSyncThread::_run, commented out me->_running = true, because
this variable can be accessed from the outside of the thread and
cause problems if stopping a JSyncThread just after created it.
Caused qfreej to hang up when opening creating QEncoder.
- in oggmux_close added some verifications on close to avoid SEGFAULT
- in VideoEncoder destructor, also added verifications.
In the new AudioCollector constructor, now passes the JackClient in
parameter to be stored.
In JackClient::Process now test if an encoder is connected
before filling the encoder ring buffer.
In OggTheoraEncoder::init now tels Jack there is an encoder.*
Now dumps, but with a big delay between audio and video.
Added an AudioCollector constructor that only creates buffers.
Added a filedump_close() method in VideoEncoder class.
In Qfreej setted m_QJack as private.
The results doesn't dump yet ;)
In QqWidget, creates the Jack audio output ports if jack is
connected.
In JackClient::, added a variable to know if there is need to put
audio in the encoder ring buffer.
In ViewPort::add_audio, now returns true if succeeded.