summaryrefslogtreecommitdiffstats
path: root/server/mjpeg_encoder.h
Commit message (Collapse)AuthorAgeFilesLines
* server: Hide the MJPEG encoder internals from red_worker.cFrancois Gouget2015-10-301-19/+7
| | | | Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* server: Move the MJPEG encoder functions to mjpeg_encoder.cFrancois Gouget2015-10-301-4/+2
| | | | | | | Note that this requires some adjustments to the encode_frame() parameters to avoid red_worker-specific types. Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
* server: Remove the rate_control_is_active field from MJpegEncoder.Francois Gouget2015-06-291-1/+1
| | | | It is redundant with the corresponding callbacks.
* mjpeg_encoder: add mjpeg_encoder_get_statsYonit Halperin2013-06-241-0/+7
|
* server/red_worker.c: use the bit rate of old streams as a start point for ↵Yonit Halperin2013-04-221-0/+2
| | | | | | | | new streams mjpeg_encoder modify the initial bit we supply it, according to the client feedback. If it reaches a bit rate which is higher than the initial one, we use the higher bit rate as the new bit rate estimation.
* mjpeg_encoder: move the control over frame drops to mjpeg_encoderYonit Halperin2013-04-221-7/+14
|
* mjpeg_encoder: update the client with estimations for the required playback ↵Yonit Halperin2013-04-221-0/+1
| | | | | | | | | | latency The required client playback latency is assessed based on the current estimation of the bit rate, the network latency, and the encoding size of the frames. When the playback delay that is reported by the client seems too small, or when the stream parameters change, we send the client an updated playback latency estimation.
* mjpeg_encoder: modify stream bit rate based on server side pipe congestionYonit Halperin2013-04-221-0/+10
| | | | | | Downgrading stream bit rate when the input frame rate in the server exceeds the output frame rate, and frames are being dropped from the output pipe.
* mjpeg_encoder: adjust the stream bit rate based on periodic client feedbackYonit Halperin2013-04-221-2/+22
| | | | | | | | mjpeg_encoder can receive periodic reports about the playback status on the client side. Then, mjpeg_encoder analyses the report and can increase or decrease the stream bit rate, depending on the report. When the bit rate is changed, the quality and frame rate of the stream are re-evaluated.
* mjpeg_encoder: configure mjpeg quality and frame rate according to a given ↵Yonit Halperin2013-04-221-1/+25
| | | | | | | | | | | | | | | bit rate Previously, the mjpeg quality was always 70. The frame rate was tuned according to the frames' congestion in the pipe. This patch sets the quality and frame rate according to a given bit rate and the size of the first encoded frames. The following patches will introduce an adaptive video streaming, in which the bit rate, the quality, and the frame rate, change in response to different parameters. Patches that make red_worker adopt this feature will also follow.
* server/mjpeg_encoder: Fix memory leak for the inital output buffer given for ↵Yonit Halperin2012-05-101-0/+5
| | | | each frame
* server/red_worker.c/video: add support for frames of different sizesYonit Halperin2012-05-031-1/+2
| | | | | | | | | | | | rhbz #813826 When playing a youtube video on Windows guest, the driver sometimes(**) sends images which contain the video frames, but also other parts of the screen (e.g., the youtube process bar). In order to prevent glitches, we send these images as part of the stream, using SPICE_MSG_DISPLAY_STREAM_DATA_SIZED. (**) It happens regularly with the you tube html5 player. With flash, it occurs when moving the cursor in the player area.
* mjpeg_encoder: remove unused functionsChristophe Fergeau2011-07-221-4/+0
| | | | | | After the refactoring to optionally use libjpeg-turbo, some of the functions that mjpeg-encoder used to provide are now no longer used. This commit removes them.
* mjpeg_encoder: add mjpeg_encoder_get_bytes_per_pixelChristophe Fergeau2011-07-221-0/+1
| | | | | Returns the number of bytes per pixel corresponding to the input data format.
* mjpeg_encoder: add mjpeg_encoder_encode_scanlineChristophe Fergeau2011-07-221-0/+5
| | | | | | This API is meant to allow us to move the pixel format conversion into MjpegEncoder. This will allow us to be able to use the additional pixel formats from libjpeg-turbo when available.
* mjpeg_encoder: rework output buffer allocationChristophe Fergeau2011-07-221-1/+1
| | | | | | | | | | When encoding a frame, red_worker passes an allocated buffer to libjpeg where it should encode the frame. When it fails, a new bigger buffer is allocated and the encoding is restarted from scratch. However, it's possible to use libjpeg to realloc this buffer if it gets too small during the encoding process. Make use of this feature, especially since it will make it easier to encore one line at a time instead of a full frame in subsequent commits.
* Relicense everything from GPL to LGPL 2.1+Alexander Larsson2010-04-131-9/+9
|
* Initialize _kill_mark so we don't get spurious valgrind warningsAlexander Larsson2010-04-081-0/+35