summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancois Gouget <fgouget@codeweavers.com>2015-10-14 17:30:52 +0200
committerChristophe Fergeau <cfergeau@redhat.com>2015-10-30 15:35:47 +0100
commitfd451860df2df5a26d66a64c62b24afbe94c4e1b (patch)
tree04eed66a5d325956aa927abafb614461997973ef
parentc93d9fc1a230a9a7b3cf179a9b70511afcf37455 (diff)
downloadspice-fd451860df2df5a26d66a64c62b24afbe94c4e1b.tar.gz
spice-fd451860df2df5a26d66a64c62b24afbe94c4e1b.tar.xz
spice-fd451860df2df5a26d66a64c62b24afbe94c4e1b.zip
server: Move mjpeg_encoder_new() to the end of mjpeg_encoder.c
This also allows getting rid of a couple of forward definitions. Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
-rw-r--r--server/mjpeg_encoder.c74
1 files changed, 34 insertions, 40 deletions
diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
index 4d004549..3f8252ae 100644
--- a/server/mjpeg_encoder.c
+++ b/server/mjpeg_encoder.c
@@ -174,11 +174,6 @@ struct MJpegEncoder {
uint32_t num_frames;
};
-static inline void mjpeg_encoder_reset_quality(MJpegEncoder *encoder,
- int quality_id,
- uint32_t fps,
- uint64_t frame_enc_size);
-static uint32_t get_max_fps(uint64_t frame_size, uint64_t bytes_per_sec);
static void mjpeg_encoder_process_server_drops(MJpegEncoder *encoder);
static uint32_t get_min_required_playback_delay(uint64_t frame_enc_size,
uint64_t byte_rate,
@@ -189,41 +184,6 @@ static inline int rate_control_is_active(MJpegEncoder* encoder)
return encoder->cbs.get_roundtrip_ms != NULL;
}
-MJpegEncoder *mjpeg_encoder_new(uint64_t starting_bit_rate,
- MJpegEncoderRateControlCbs *cbs, void *opaque)
-{
- MJpegEncoder *enc;
-
- spice_assert(!cbs || (cbs && cbs->get_roundtrip_ms && cbs->get_source_fps));
-
- enc = spice_new0(MJpegEncoder, 1);
-
- enc->first_frame = TRUE;
- enc->rate_control.byte_rate = starting_bit_rate / 8;
- enc->starting_bit_rate = starting_bit_rate;
-
- if (cbs) {
- struct timespec time;
-
- clock_gettime(CLOCK_MONOTONIC, &time);
- enc->cbs = *cbs;
- enc->cbs_opaque = opaque;
- mjpeg_encoder_reset_quality(enc, MJPEG_QUALITY_SAMPLE_NUM / 2, 5, 0);
- enc->rate_control.during_quality_eval = TRUE;
- enc->rate_control.quality_eval_data.type = MJPEG_QUALITY_EVAL_TYPE_SET;
- enc->rate_control.quality_eval_data.reason = MJPEG_QUALITY_EVAL_REASON_RATE_CHANGE;
- enc->rate_control.warmup_start_time = ((uint64_t) time.tv_sec) * 1000000000 + time.tv_nsec;
- } else {
- enc->cbs.get_roundtrip_ms = NULL;
- mjpeg_encoder_reset_quality(enc, MJPEG_LEGACY_STATIC_QUALITY_ID, MJPEG_MAX_FPS, 0);
- }
-
- enc->cinfo.err = jpeg_std_error(&enc->jerr);
- jpeg_create_compress(&enc->cinfo);
-
- return enc;
-}
-
void mjpeg_encoder_destroy(MJpegEncoder *encoder)
{
free(encoder->cinfo.dest);
@@ -1277,3 +1237,37 @@ void mjpeg_encoder_get_stats(MJpegEncoder *encoder, MJpegEncoderStats *stats)
stats->cur_bit_rate = mjpeg_encoder_get_bit_rate(encoder);
stats->avg_quality = (double)encoder->avg_quality / encoder->num_frames;
}
+
+MJpegEncoder *mjpeg_encoder_new(uint64_t starting_bit_rate,
+ MJpegEncoderRateControlCbs *cbs,
+ void *cbs_opaque)
+{
+ MJpegEncoder *encoder = spice_new0(MJpegEncoder, 1);
+
+ spice_assert(!cbs || (cbs && cbs->get_roundtrip_ms && cbs->get_source_fps));
+
+ encoder->first_frame = TRUE;
+ encoder->rate_control.byte_rate = starting_bit_rate / 8;
+ encoder->starting_bit_rate = starting_bit_rate;
+
+ if (cbs) {
+ struct timespec time;
+
+ clock_gettime(CLOCK_MONOTONIC, &time);
+ encoder->cbs = *cbs;
+ encoder->cbs_opaque = cbs_opaque;
+ mjpeg_encoder_reset_quality(encoder, MJPEG_QUALITY_SAMPLE_NUM / 2, 5, 0);
+ encoder->rate_control.during_quality_eval = TRUE;
+ encoder->rate_control.quality_eval_data.type = MJPEG_QUALITY_EVAL_TYPE_SET;
+ encoder->rate_control.quality_eval_data.reason = MJPEG_QUALITY_EVAL_REASON_RATE_CHANGE;
+ encoder->rate_control.warmup_start_time = ((uint64_t) time.tv_sec) * 1000000000 + time.tv_nsec;
+ } else {
+ encoder->cbs.get_roundtrip_ms = NULL;
+ mjpeg_encoder_reset_quality(encoder, MJPEG_LEGACY_STATIC_QUALITY_ID, MJPEG_MAX_FPS, 0);
+ }
+
+ encoder->cinfo.err = jpeg_std_error(&encoder->jerr);
+ jpeg_create_compress(&encoder->cinfo);
+
+ return encoder;
+}